I am working on monthly seasonally adjusted data. To the best of my knowledge (maybe I'm wrong), data is seasonally adjusted to take out any form of seasonality.

After doing an ACF of the second difference of my data with R, I saw a spike from the lag one point that crosses the horizontal dashed line. This led me to suggest a nonseasonal MA(1) component. I then saw a lag from the 12th point that lies right on the horizontal dashed line. Can this mean there is a seasonal MA(1) component with period 12? And if so, can monthly seasonally adjusted data still exhibit seasonality?

  • 4
    $\begingroup$ Yes, data adjusted for a particular kind of seasonality of a particular period can still have a seasonal pattern. But in any case, beware of over-interpreting every little spike in an ACF or PACF. After all, you except a fraction of those ACF values to exceed the bounds even when nothing but noise is going on. Don't keep trying to adjust for what is probably just noise, you'll drive yourself mad as one thing after another moves to sit around the 95% (or whatever) marks. $\endgroup$
    – Glen_b
    Jun 21 '13 at 0:01
  • $\begingroup$ @ Glen_b: That was helpful. So will it be write to just ignore this spike which falls just on the 95% mark? is there any way i could analyse or test around this spike or point? $\endgroup$
    – b2amen
    Jun 21 '13 at 0:15
  • $\begingroup$ I'd almost always ignore one which went a little over the mark, let alone one right on it. I'm not sure what you intend by 'analyse or test around'. $\endgroup$
    – Glen_b
    Jun 21 '13 at 0:32
  • 1
    $\begingroup$ @Glen's right. But what was the estimate for the lag one autocorrelation? Large & negative means you may be over-differencing. To see what I mean, try acf(diff(diff((rnorm(100))))). I know that wasn't your question, but seeing 'second difference' & 'MA(1)' always sets off alarm bells for me $\endgroup$ Jun 21 '13 at 8:40
  • 1
    $\begingroup$ @Scortchi excellent points ... though diff(x, d=2) would be a little faster to run than diff(diff(x)) on big data. $\endgroup$
    – Glen_b
    Jun 21 '13 at 10:22

First point. Yes, seasonally adjusted data can still exhibit seasonality. As noted on page 112 in Enders (1995):

Suppose you collect a data set that the U.S. Bureau of the Census has "seasonally adjusted" using its X-11 method. In principle, your seasonally adjusted data should have the seasonal pattern removed. [...] Even if you use seasonally adjusted data, a seasonal pattern might remain. This is particularly true if you do not use the entire span of data; the portion of the data in your study can display more (or less) seasonality than the overall span.

Second point. You ought to be careful when using the acf() function in R at the identification stage of ARIMA analysis! The reason being is that the horizontal blue dashed-line that you are referring to is not based on Bartlett's approximations - unless you specify the argument ci.type="ma".

The estimated standard error derived by Bartlett is calculated as: \begin{equation} s(r_{k}) = \left( 1 + 2 \sum_{j=1}^{k-1} r_{j}^{2} \right)^{1/2} n^{-1/2} \end{equation} where $r_{k}$ is the estimated autocorrelation coefficient at lag $k$ and $n$ is the number of observations (see Pankratz 1983, p.68-74).

As far as I am aware, (unless you specify the argument ci.type="ma") the horizontal blue dashed-line in the acf() plot is based on the formula: \begin{equation} s(r_{k}) = n^{-1/2} \end{equation} and while this standard error is fine for testing the statistical significance of partial autocorrelation coefficients at the identification stage, it is not, however, appropriate for testing the statistical significance of autocorrelation coefficients at the identification stage.

To see this in action, consider the following ACF and PACF generated using acf() and pacf() in R.

enter image description here

The data is not of importance, but in case you're wondering, it is quarterly change in business inventories (a better description can be found at end of this answer).

From the ACF, it seems to be the case that the autocorrelation coefficients at lags 1-6 and at lags 10-13 are statistically significant. From the PACF, there appears to be one significant spike at the first lag. This reading is only partially true, however. It is correct that there is a single spike in the PACF at the first lag, but the ACF reading is erroneous and here's why.

The ACF and PACF shown below is for the exact same data except this time I have plotted a solid red line based on Bartlett's approximations to the ACF. The solid red line on the PACF is the same as before since there is nothing wrong with it.

enter image description here

We get a far clearer reading this time by using Bartlett's standard errors. The ACF decays to statistical insignificance rather quickly. Only the first three autocorrelations are significantly different from zero at about the 5% level. That is, only the first three spikes extend beyond the solid red line (not 1-6 and 10-13!). Coupled with the fact that there is only one significant spike in the PACF at lag 1, we can tentatively identify an AR(1) model for this data.

This is just one example and I could supply others (perhaps more illustrative ones), but if you continue to use acf() (without specifying ci.type="ma") at the identification stage of ARIMA analysis, expect to draw inappropriate conclusions from the ACF when identifying tentative models.

My concluding suggestion would be to replace the horizontal blue dashed-line on your ACF with one like the solid red-line that I've plotted in the ACF above. You can do this by specifying the argument ci.type="ma". If you have trouble doing that, let me know or post your data and I'll do it for you. Also, I doubt the autocorrelation at lag 12 of your data is statistically significant; as a general rule, the red solid line widens as lag length increases and it also lies beyond the blue dashed line.

Note: the default usage of acf() is actually fine at the diagnostic checking stage!


Bartlett, M.S. (1946) On the theoretical specification and sampling properties of autocorrelated time series. Supplement to the Journal of the Royal Statistical Society 8 27-41.

Enders, W. (1995) Applied Econometric Time Series, New York, NY: John Wiley and Sons.

Pankratz, Alan (1983) Forecasting with univariate Box–Jenkins models: concepts and cases, New York: John Wiley & Sons.

Data details:

Quarterly change in business inventories as appears in a case study of Pankratz (1983). The original series can be found in Business Conditions Digest, November 1979, p.97. The data is also available at http://robjhyndman.com/tsdldata/books/pankratz.dat and the case study itself can be downloaded from the Wiley Online Library.

  • $\begingroup$ +1 This is a really clear, comprehensive, and well referenced answer. I wish I could upvote you more than once. $\endgroup$
    – Ellie
    Jun 21 '13 at 21:06
  • $\begingroup$ @Graeme Walsh: thanks a lot. That was just a clear explanation of what i really need. Thanks a lot. I posted this problem too. Could you clink on the link below just to see if you can be of any assistance stats.stackexchange.com/questions/62237/… $\endgroup$
    – b2amen
    Jun 21 '13 at 21:39
  • $\begingroup$ @b2amen Thank you b2amen and thank you too, Azula R. I have your other question on the backburner for the moment, but I hope to address it soon. In my answer I forgot to recommend STATA's acf command. STATA's acf command automatically plots confidence bands based on Bartlett's approximations. If you have access to STATA you can use that rather than go about tweaking acf() in R. Here is what an ACF plot looks like in STATA. Note the reference to Bartlett's formula and see how the confidence bands expand as lag length increases (as I mentioned). $\endgroup$ Jun 21 '13 at 21:58
  • $\begingroup$ +1 on Stata (and that is the correct spelling, please!). $\endgroup$
    – Nick Cox
    Jun 21 '13 at 22:09
  • 3
    $\begingroup$ You don't have to "tweak R". You can use the argument ci.type="ma" to get Bartlett standard errors. $\endgroup$ Jun 21 '13 at 23:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.