What does this X-13ARIMA-SEATS results mean?

I want to seasonally adjust my time series, with obvious end-of-year seasonal effect (aggregate consumption).

For that purpose I used X-13ARIMA-SEATS from the seasonal package, this is the call and summary() of the model:

>summary(seas(X, transform.function="none"))

seas(x = X, 
    transform.function = "none")

         Estimate Std. Error z value Pr(>|z|)    
Constant   1415.7      109.3   12.95  < 2e-16 ***
LS2015.4  -2067.0      412.5   -5.01 5.43e-07 ***
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

SEATS adj.  ARIMA: (0 0 0)(0 1 0)  Obs.: 61  Transform: none
AICc: 929.6, BIC: 935.3  QS (no seasonality in final):    0  
Box-Ljung (no autocorr.):  22.2   Shapiro (normality): 0.9512 *

My question is whether these results seem plausible, since I only apart from the constant, the LS2015.4 is a "level shifter" for what I can tell from the documentation and which is kind of visible in the fourth period of 2015. But particularly, I expected to have some AR-Seasonal-04 or MA-Seasonal-04coefficient for the clearly visible mentioned component. Is something wrong? If so I suspect that a solution would be to manually set an non-zero seasonal ARIMA part, which indeed appear in the topfivemods.


I am far from an expert on X-13ARIMA-SEATS, but have worked with ARIMA models.

Consider this simple quarterly time series: 1, 2, 3, 14, 5, 6,7,18, 9, 10, 11, 22, ...

There is a linear trend of +1 in each quarter and a seasonal effect of +10 every Q4. What happens if you take a first seasonal difference? 5-1=4, 6-2=4, 7-3=4, 18-14=4, 9-5=4,... , which is stationary (both the trend and seasonality have been removed). In the ARIMA notation, this is the 1 in (0, 0, 0)(0, 1, 0). For your data, a first seasonal differencing was sufficient to achieve stationarity (required to identify and estimate the AR and MA patterns) and there are no AR or MA patterns in the differenced data.

The seasonality appears to be a percentage rather than an amount, which suggests a log transformation. Try seas() without transform.function = "none" and it will decide whether to use a log pre-transformation or not.

1 Like

This topic was automatically closed 21 days after the last reply. New replies are no longer allowed.

If you have a query related to it or one of the replies, start a new topic and refer back with a link.