If I fit a time series with a AR model, I can tell if this fit is valid by checking the residual correlation (valid if not correlated).

But if I fit it with a MA model, how do I tell if this fit is valid or not? In R, when I specify to fit the time series with, say MA(1), it will automatically use white noise for epsilon, right?

$y_t = \epsilon_t + \text{coefficient} \cdot \epsilon_{t-1}$




The first diagnostic check that you can perform is to investigate whether or not the MA model is invertible.

Consider an MA(1) model which can be written in difference notation as: \begin{equation} y_{t} = C - \theta_{1} a_{t-1} + a_{t} \end{equation} where $C$ is a constant and $a_{t}$ is an error term.

The invertibility condition for this MA(1) model is $|\theta_{1}| < 1$. If this condition is not satisfied, you'd ought to try to find a different model.

Residual Autocorrelation function

A second diagnostic check involves investigating the residual autocorrelation function. The residual autocorrelation coefficients will not be statistically significant for a model that provides an adequate representation of the data generating mechanism.

Visual inspection

There are essentially two ways of performing this diagnostic check. The first is to visually inspect the residual autocorrelation function. You can do this in R using the acf() function and applying it to the residuals of the model. On the acf() plot, if none of the spikes exceed the blue-dashed line then this indicates that none of the residual autocorrelation coefficients are statistically significant.


The second way is to calculate t-values for each of the residual autocorrelation coefficients. The practical warning level is a t-value of 1.25. If none of the t-values of the residual autocorrelation coefficients exceed 1.25 then you've found a good model (by saying "good model", I really mean that you've found a candidate for the final model).

Joint test (Q or Q*)

You can also test that the residual autocorrelation coefficients are not jointly statistically significant by using a test such as the Box-Pierce (Q) or Ljung-Box test (Q*). From the stats package, you can do this by using the Box.test() function.

Residual plot

A fourth check is to actually plot the residuals themselves. What you should look for in this plot is that the residuals have constant mean and constant variance.

Final comments

Those are some general pointers, but you should be aware that for MA models of higher order there are additional invertibility conditions. Also, take note that if there are any AR terms in your model then you should check whether or not the model satisfies the stationarity conditions. Notice that pure MA models are always stationary since they contain no AR terms.


You will still look at residual autocorrelation, normality, heteroskedasticity, and independence (Box-Ljung test).

I think it may be confusing because an AR(1) process has 1 disturbance term and and MA(1) process has 2. These disturbances are not the residuals that you will be checking to see are normal, homoskedastic, and independent.

When you model a series as an MA(1) process, this means that you are assuming that the disturbances $\epsilon_{t} + \theta \epsilon_{t-1}$ are the terms that drive or generate the series $X$. The residuals we want to look at are the differences between the actual series $X$ and the series that we generate or estimate using the MA(1) process.

Thus, you look to see whether the observations created by the difference of these two series are normal, homoskedastic, and independent; or any other tests mentioned by @Graeme.


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.