This post raises essentially the same issue.
auto.arima
selects a model by comparison of the AIC, AICc or BIC across different tentative models. The model with the minimum value for the selected criterion is chosen. By default, with monthly series auto.arima
considers the possibility of seasonal terms in the ARIMA model. In this case, it turns out that the chosen model contains a moving-average (MA) of seasonal order.
The Canova-Hansen (1995) test for the null hypothesis of deterministic seasonality and the Osborn-Chui-Smith-Birchenhall (1988) test for the null that a seasonal unit root exists can be selected in auto.arima
(by default the latter is applied). No seasonal seasonal differencing filter is chosen in the
model chosen in your example. Thus, basically no major seasonal pattern has been detected.
Maybe the author of the forecast
package @Rob Hyndman can confirm whether the above description is a correct sketch of the model selection procedure in auto.arima
.
Now, looking at the output of your fitted model. The moving average of the model that is shown in your output does not contain seasonal cycles.
These are, by definition, the seasonal frequencies in a monthly series:
round(Arg(c(0.5*(sqrt(3) + 1i), 0.5*(sqrt(3) - 1i),
0.5*(1 + sqrt(3)*1i), 0.5*(1 - sqrt(3)*1i), 1i, -1i,
-0.5*(1 + sqrt(1i)*1i), -0.5*(1 - sqrt(1i)*1i),
-0.5*(sqrt(3) + 1i), -0.5*(sqrt(3) - 1i), -1)), 6)
# [1] 0.523599 -0.523599 1.047198 -1.047198 1.570796 -1.570796 -1.963495
# [8] 2.748894 -2.617994 2.617994 3.141593
And these are the frequencies of the cycles that are generated by the moving average of the chosen model:
require("polynom")
pma <- polynomial(c(1,-0.7888)) * polynomial(c(1,rep(0,11),-0.157,rep(0,11), 0.0918))
round(Arg(polyroot(pma)), 6)
# [1] 0.938138 2.508934 -2.203455 -0.414539 1.156257 2.727054 -1.985335
# [8] 0.109060 1.461737 -2.508934 -1.461737 0.414539 1.679856 -2.727054
# [15] -1.156257 0.632659 1.985335 -3.032533 -0.938138 -0.109060 2.203455
# [22] -1.679856 -0.632659 0.000000 3.032533
The are two cycles of frequencies close to those of the seasonal cycles but we can say that the moving average of the selected model does not generate cycles at the seasonal frequencies. This is in agreement with the fact that the data were previously seasonally adjusted.
Interestingly, if we omitted the second seasonal moving average (which is not significant) then we would end up with a model that contains seasonal cycles (frequencies 1.047198 and 3.141593):
pma2 <- polynomial(c(1,-0.7888)) * polynomial(c(1,rep(0,11),-0.157))
round(Arg(polyroot(pma2)), 6)
# [1] 1.047198 2.617994 -2.094395 -0.523599 1.570796 3.141593 -1.570796
# [8] 0.000000 2.094395 -2.617994 -1.047198 0.523599 0.000000
This explains the role of the second MA parameter. It is not explicitly intentional that the searching procedure adds this parameter in order to get a model without seasonal cycles, but it is nice to see how the rule of minimum
AIC (or AICc, BIC) yields a model that agrees with the somewhat more elaborated
reasoning that we made knowing the nature of the data.
When working with seasonally adjusted data it is judicious to do some general checks (e.g. look at the autocorrelation or the periodogram) to confirm the lack of seasonal cycles, but I would say that you could safely stick to non-seasonal ARIMA models (to do so you can set in the function auto.arima
the argument seasonal=FALSE
).