I have come to understand that a moving average process of order $q$, $MA(q)$, has no autocorrelation if the lag, $k$ is greater than $q$.

An example of an $MA(1)$ process that I saw was the following: $X_{t} = w_{t} - 0.8w_{t-1}$ where each $w_{t}$ were white noise events.

I immediately questioned this, as surely this $MA$ process has some recursive property, or memory of sorts?

$X_{t-1}$ can be written as $w_{t-1} - 0.8(X_{t-2})$.

$X_{t-2}$ can then be written as $w_{t-2} - 0.8(X_{t-3})$ and so on.

I even wrote some dummy code and it confirms my suspicions.

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 

x = [np.random.normal(0,2)] 

for i in range(1, 100):
    x.append(np.random.normal(0,2) - 0.8*x[i-1]) 

df = pd.DataFrame(x, columns = ['data'])


This produced the following graph, when the lag is above the order, $k > q$, there is still non-zero autocorrelation.

enter image description here

I was wondering if someone could explain why there is still autocorrelation here, even though theory of moving average processes tells us that there shouldn't be?

Many thanks in advance.

  • 4
    $\begingroup$ Hi: I don't use python but I think your python code represents an AR model rather than an MA model because you are using the previous value of the series on the right side. That's not what an MA model does. It uses the previous value of the noise term. $\endgroup$
    – mlofton
    Mar 24, 2021 at 13:03
  • 1
    $\begingroup$ Also, what is zero is the population autocorrelations (the "true" value) for lags beyond $q$. That you will find nonzero sample autocorrelations does not contradict the result. $\endgroup$ Mar 24, 2021 at 14:27


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.