What are Moving Average Processes?

One-time shock

T<-c(1:100)
e<-c(rep(0,49),100,rep(0,50))
Y<-0
for (i in 2:length(T)){
  Y[i]=e[i]+0.55*e[i-1]
}
Yts<-ts(Y,start = 1,frequency = 1)
plot(Yts)

Yts
Time Series:
Start = 1 
End = 100 
Frequency = 1 
  [1]   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 [25]   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 [49]   0 100  55   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 [73]   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
 [97]   0   0   0   0

Shock from normal distribution:

T<-c(1:100)
e<-rnorm(length(T),mean = 0,sd=10)
Y1<-0
Y2<-0
Y2[2]<-10
for (i in 2:length(T)){
  Y1[i]=e[i]+0.55*e[i-1]
}
for (i in 3:length(T)){
  Y2[i]=e[i]+0.55*e[i-1] +0.75*e[i-2]
}

Y1ts<-ts(Y1,start = 1,frequency = 1)
Y2ts<-ts(Y2,start = 1,frequency = 1)
plot(Y1ts)
points(Y2ts,type = "l",col=2,lty=2)

= ## The mathematics behind the MA process

Consider the MA(1): \[ y_t = e_t + m_1e_{t-1}\]

where \(e\) is a zero mean white noise process.

Is it covariance stationary?

\[ E[y_t]=E[e_t]+m_1E[e_{t-1}]=0\]

\[ \gamma_h = E[y_ty_{t-h}]=E[(e_t+m_1e_{t-1})(e_{t-h}+m_1e_{t-h-1})]\]

\[ = E[e_te_{t-h}+m_1e_{t-1}e_{t-h}+m_1e_te_{t-h-1}+m_1^2e_{t-1}e_{t-h-1}]\]

\[ \gamma_0 = E[e_t^2] + m_1^2E[e_{t-1}^2]=(1+m_1^2)\sigma_e^2\]

\[\gamma_1 = m_1E[e_{t-1}^2]=m_1\sigma_e^2\]

\[\gamma_2 =0\]

And \(\gamma_h=0\) for all \(h\geq2\).

What is the autocorrelation functions?

acf(Y1ts,lag.max = 50)

Invertability

Invertability: The MA process is algebraically equivalent to an converging infinite order AR process (i.e., the AR parameters converge to 0)

Using Lag Operators

\[ y_t = e_t + m_1 e_{t-1}=(1+m_1L)e_t=m(L)e_t\]

If the MA(p) is invertable, we can write:

\[ m(L)^{-1}y_t = \alpha(L) y_t = y_t -\sum_{j=1}^\infty \alpha_jy_{t-j} = e_t\]

For the MA(1) process, we need:

\[\frac{1}{1+m_1L} y_t = e_t\]

If \(|m_1|<1\), then we can write:

\[\frac{1}{1-(-m_1)L} y_t = (1 + (-m_1)L+(-m_1)^2L^2+ \cdots)y_t =y_t+\sum_{j=1}^\infty (-m_1)^jy_{t-j}=e_t\]

So we can write \[y_t = - \sum_{j=1}^\infty (-m_1)^jy_{t-j} + e_t\]

Long story short, \(|m_1|<1\) in order for the MA process to be invertable and therefore one we can estimate.

In general, we need \(m(z)\neq 0\) for \(|z|\leq 1\) (i.e. there are no roots of the characteristic equation that fall within the unit circle) for the process to be invertable.

Question: Is the MA(1) process below invertable? \[ y_t = e_t - 1.2e_{t-1}\]

Estimating an MA process

Unfortunately, the MA process is nonlinear in the parameters (recall, you can write it as the above infinite order MA model). However, we can still utilize maximum likelihood estimation.

Watch this video for a brief discussion of maximum likelihood estimation: https://youtu.be/93fPFOf547Q

Example: True DGP is \(y_t = e_t + 0.55e_{t-1}\)

Estimates:

arima(Y1ts,order = c(0,0,1), include.mean = F)

Call:
arima(x = Y1ts, order = c(0, 0, 1), include.mean = F)

Coefficients:
         ma1
      0.6302
s.e.  0.0872

sigma^2 estimated as 98.69:  log likelihood = -371.75,  aic = 747.49

Example: True DGP is \(y_t = e_t + 0.55e_{t-1}+0.75e_{t-1}\)

arima(Y2ts,order = c(0,0,2),include.mean = F)

Call:
arima(x = Y2ts, order = c(0, 0, 2), include.mean = F)

Coefficients:
         ma1     ma2
      0.5244  0.6189
s.e.  0.0796  0.0878

sigma^2 estimated as 105:  log likelihood = -375.13,  aic = 756.25

Example of using MA with real data

library(fredr)
CPI<-fredr(series_id = "CPIAUCSL")
Error:
! FRED API key must be set. See `?fredr_set_key`.
Backtrace:
 1. fredr::fredr(series_id = "CPIAUCSL")
 3. fredr (local) `<fn>`(endpoint = "series/observations", series_id = "CPIAUCSL")

The ARIMA model

The ARIMA(p,d,q) model includes \(p\) lags of the variable, differences the data \(d\) times (e.g., d=2 is a second difference), and includes \(q\) MA lags.

Including Seasonality

Suppose we have monthly data. We could anticipate that there are patterns in the data (higher than average travel in July for example) and we can anticipate these in the model by including a seasonal component:

\[y_t = e_t + e_{t-12}\]

Example:

\[ AP_t = \mu + e_t + m_1e_{t-1}+ m_{12}e_{t-12}\]

We could also have seasonality in differencing and AR terms:

\[ (Y_t-Y_{t-1})-Y_{t-12} = \alpha_1 Y_{t-1} + \alpha_{12} Y_{t-12} + e_t + m_1e_{t-1}+m_{12}e_{t-12}\]

In general, a seasonal arima model is denoted ARIMA(p,d,q)(P,D,Q)[m] where m is the frequency of the data, P is the number of seasonal parameters for the AR component (e.g., P=2 when m=12 means we would include \(Y_{t-12}\) and \(Y_{t-24}\)), D is the number of differences from the seasonal component (e.g. \(D=1\) would mean that we would take the difference \(Y_t-Y_{t-12}\)), and Q is the number of MA seasonal components (e.g., Q=1 means we would include \(e_{t-12}\)).

Example:

Using auto.arima()

Forecasting Preview:

LS0tCnRpdGxlOiAiTW92aW5nIEF2ZXJhZ2UgREdQIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCgojIyBXaGF0IGFyZSBNb3ZpbmcgQXZlcmFnZSBQcm9jZXNzZXM/CgojIyMgT25lLXRpbWUgc2hvY2sKCmBgYHtyfQpUPC1jKDE6MTAwKQplPC1jKHJlcCgwLDQ5KSwxMDAscmVwKDAsNTApKQpZPC0wCmZvciAoaSBpbiAyOmxlbmd0aChUKSl7CiAgWVtpXT1lW2ldKzAuNTUqZVtpLTFdCn0KWXRzPC10cyhZLHN0YXJ0ID0gMSxmcmVxdWVuY3kgPSAxKQpwbG90KFl0cykKWXRzCmBgYAoKIyMjIFNob2NrIGZyb20gbm9ybWFsIGRpc3RyaWJ1dGlvbjoKCmBgYHtyfQpUPC1jKDE6MTAwKQplPC1ybm9ybShsZW5ndGgoVCksbWVhbiA9IDAsc2Q9MTApClkxPC0wClkyPC0wClkyWzJdPC0xMApmb3IgKGkgaW4gMjpsZW5ndGgoVCkpewogIFkxW2ldPWVbaV0rMC41NSplW2ktMV0KfQpmb3IgKGkgaW4gMzpsZW5ndGgoVCkpewogIFkyW2ldPWVbaV0rMC41NSplW2ktMV0gKzAuNzUqZVtpLTJdCn0KClkxdHM8LXRzKFkxLHN0YXJ0ID0gMSxmcmVxdWVuY3kgPSAxKQpZMnRzPC10cyhZMixzdGFydCA9IDEsZnJlcXVlbmN5ID0gMSkKcGxvdChZMXRzKQpwb2ludHMoWTJ0cyx0eXBlID0gImwiLGNvbD0yLGx0eT0yKQpgYGAKCj0KIyMgVGhlIG1hdGhlbWF0aWNzIGJlaGluZCB0aGUgTUEgcHJvY2VzcwoKQ29uc2lkZXIgdGhlIE1BKDEpOiAKJCQgeV90ID0gZV90ICsgbV8xZV97dC0xfSQkCgp3aGVyZSAkZSQgaXMgYSB6ZXJvIG1lYW4gd2hpdGUgbm9pc2UgcHJvY2Vzcy4KCiMjIyBJcyBpdCBjb3ZhcmlhbmNlIHN0YXRpb25hcnk/IAoKJCQgRVt5X3RdPUVbZV90XSttXzFFW2Vfe3QtMX1dPTAkJAoKJCQgXGdhbW1hX2ggPSBFW3lfdHlfe3QtaH1dPUVbKGVfdCttXzFlX3t0LTF9KShlX3t0LWh9K21fMWVfe3QtaC0xfSldJCQKCiQkID0gRVtlX3RlX3t0LWh9K21fMWVfe3QtMX1lX3t0LWh9K21fMWVfdGVfe3QtaC0xfSttXzFeMmVfe3QtMX1lX3t0LWgtMX1dJCQKCiQkIFxnYW1tYV8wID0gRVtlX3ReMl0gKyBtXzFeMkVbZV97dC0xfV4yXT0oMSttXzFeMilcc2lnbWFfZV4yJCQKCiQkXGdhbW1hXzEgPSBtXzFFW2Vfe3QtMX1eMl09bV8xXHNpZ21hX2VeMiQkCgokJFxnYW1tYV8yID0wJCQKCkFuZCAkXGdhbW1hX2g9MCQgZm9yIGFsbCAkaFxnZXEyJC4gCgpXaGF0IGlzIHRoZSBhdXRvY29ycmVsYXRpb24gZnVuY3Rpb25zPyAKCgpgYGB7cn0KYWNmKFkxdHMsbGFnLm1heCA9IDUwKQpgYGAKCgojIyMgSW52ZXJ0YWJpbGl0eQoKKipJbnZlcnRhYmlsaXR5Kio6IFRoZSBNQSBwcm9jZXNzIGlzIGFsZ2VicmFpY2FsbHkgZXF1aXZhbGVudCB0byBhbiAgY29udmVyZ2luZyBpbmZpbml0ZSBvcmRlciBBUiBwcm9jZXNzIChpLmUuLCB0aGUgQVIgcGFyYW1ldGVycyBjb252ZXJnZSB0byAwKQoKVXNpbmcgTGFnIE9wZXJhdG9ycwoKJCQgeV90ID0gZV90ICsgbV8xIGVfe3QtMX09KDErbV8xTCllX3Q9bShMKWVfdCQkIAoKSWYgdGhlIE1BKHApIGlzIGludmVydGFibGUsIHdlIGNhbiB3cml0ZTogCgokJCBtKEwpXnstMX15X3QgPSBcYWxwaGEoTCkgeV90ID0geV90IC1cc3VtX3tqPTF9XlxpbmZ0eSBcYWxwaGFfanlfe3Qtan0gPSBlX3QkJCAKCkZvciB0aGUgTUEoMSkgcHJvY2Vzcywgd2UgbmVlZDogCgokJFxmcmFjezF9ezErbV8xTH0geV90ID0gZV90JCQgCgoKSWYgJHxtXzF8PDEkLCB0aGVuIHdlIGNhbiB3cml0ZTogCgokJFxmcmFjezF9ezEtKC1tXzEpTH0geV90ID0gKDEgKyAoLW1fMSlMKygtbV8xKV4yTF4yKyBcY2RvdHMpeV90ID15X3QrXHN1bV97aj0xfV5caW5mdHkgKC1tXzEpXmp5X3t0LWp9PWVfdCQkCgpTbyB3ZSBjYW4gd3JpdGUgJCR5X3QgPSAtIFxzdW1fe2o9MX1eXGluZnR5ICgtbV8xKV5qeV97dC1qfSArIGVfdCQkCgpMb25nIHN0b3J5IHNob3J0LCAkfG1fMXw8MSQgaW4gb3JkZXIgZm9yIHRoZSBNQSBwcm9jZXNzIHRvIGJlIGludmVydGFibGUgYW5kIHRoZXJlZm9yZSBvbmUgd2UgY2FuIGVzdGltYXRlLiAKCkluIGdlbmVyYWwsIHdlIG5lZWQgJG0oeilcbmVxIDAkIGZvciAkfHp8XGxlcSAxJCAoaS5lLiB0aGVyZSBhcmUgbm8gcm9vdHMgb2YgdGhlIGNoYXJhY3RlcmlzdGljIGVxdWF0aW9uIHRoYXQgZmFsbCB3aXRoaW4gdGhlIHVuaXQgY2lyY2xlKSBmb3IgdGhlIHByb2Nlc3MgdG8gYmUgaW52ZXJ0YWJsZS4gCgoqKlF1ZXN0aW9uOiBJcyB0aGUgTUEoMSkgcHJvY2VzcyBiZWxvdyBpbnZlcnRhYmxlPyoqCiQkIHlfdCA9IGVfdCAtIDEuMmVfe3QtMX0kJAoKCiMjIyBFc3RpbWF0aW5nIGFuIE1BIHByb2Nlc3MgCgpVbmZvcnR1bmF0ZWx5LCB0aGUgTUEgcHJvY2VzcyBpcyBub25saW5lYXIgaW4gdGhlIHBhcmFtZXRlcnMgKHJlY2FsbCwgeW91IGNhbiB3cml0ZSBpdCBhcyB0aGUgYWJvdmUgaW5maW5pdGUgb3JkZXIgTUEgbW9kZWwpLiBIb3dldmVyLCB3ZSBjYW4gc3RpbGwgdXRpbGl6ZSBtYXhpbXVtIGxpa2VsaWhvb2QgZXN0aW1hdGlvbi4KCldhdGNoIHRoaXMgdmlkZW8gZm9yIGEgYnJpZWYgZGlzY3Vzc2lvbiBvZiBtYXhpbXVtIGxpa2VsaWhvb2QgZXN0aW1hdGlvbjogaHR0cHM6Ly95b3V0dS5iZS85M2ZQRk9mNTQ3UQoKKipFeGFtcGxlOioqIFRydWUgREdQIGlzICR5X3QgPSBlX3QgKyAwLjU1ZV97dC0xfSQgCgpFc3RpbWF0ZXM6IApgYGB7cn0KYXJpbWEoWTF0cyxvcmRlciA9IGMoMCwwLDEpLCBpbmNsdWRlLm1lYW4gPSBGKQpgYGAKCioqRXhhbXBsZToqKiAgVHJ1ZSBER1AgaXMgJHlfdCA9IGVfdCArIDAuNTVlX3t0LTF9KzAuNzVlX3t0LTF9JCAKCmBgYHtyfQphcmltYShZMnRzLG9yZGVyID0gYygwLDAsMiksaW5jbHVkZS5tZWFuID0gRikKYGBgCgojIEV4YW1wbGUgb2YgdXNpbmcgTUEgd2l0aCByZWFsIGRhdGEKCmBgYHtyfQpsaWJyYXJ5KGZyZWRyKQpDUEk8LWZyZWRyKHNlcmllc19pZCA9ICJDUElBVUNTTCIpCkNQSTwtdHMoQ1BJJHZhbHVlLHN0YXJ0PWMoMTk0NywxKSxlbmQ9YygyMDIxLDMpLGZyZXF1ZW5jeSA9IDEyKQpJbmZsYXRpb25SYXRlPC0oQ1BJLWxhZyhDUEksaz0tMTIpKS9sYWcoQ1BJLGs9LTEyKQpwbG90KEluZmxhdGlvblJhdGUpCmBgYAoKYGBge3J9CmZvciAoaSBpbiAxOjEwKXsKICByZXN1bHRzPC1hcmltYShJbmZsYXRpb25SYXRlLG9yZGVyID0gYygwLDAsaSksaW5jbHVkZS5tZWFuID0gVCwgbWV0aG9kID0gIk1MIikKICBwcmludCgiTUE6IikKICBwcmludChpKQogIHByaW50KCJBSUM6IikKICBwcmludChyZXN1bHRzJGFpYykKfQpgYGAKCiMgVGhlIEFSSU1BIG1vZGVsIAoKVGhlIEFSSU1BKHAsZCxxKSBtb2RlbCBpbmNsdWRlcyAkcCQgbGFncyBvZiB0aGUgdmFyaWFibGUsIGRpZmZlcmVuY2VzIHRoZSBkYXRhICRkJCB0aW1lcyAoZS5nLiwgZD0yIGlzIGEgc2Vjb25kIGRpZmZlcmVuY2UpLCBhbmQgaW5jbHVkZXMgJHEkIE1BIGxhZ3MuIAoKYGBge3J9CmFyaW1hKGxvZyhBUCksb3JkZXIgPSBjKDEsMSwxKSkKYGBgCgoKIyMgSW5jbHVkaW5nIFNlYXNvbmFsaXR5CgpTdXBwb3NlIHdlIGhhdmUgbW9udGhseSBkYXRhLiBXZSBjb3VsZCBhbnRpY2lwYXRlIHRoYXQgdGhlcmUgYXJlIHBhdHRlcm5zIGluIHRoZSBkYXRhIChoaWdoZXIgdGhhbiBhdmVyYWdlIHRyYXZlbCBpbiBKdWx5IGZvciBleGFtcGxlKSBhbmQgd2UgY2FuIGFudGljaXBhdGUgdGhlc2UgaW4gdGhlIG1vZGVsIGJ5IGluY2x1ZGluZyBhIHNlYXNvbmFsIGNvbXBvbmVudDogCgokJHlfdCA9IGVfdCArIGVfe3QtMTJ9JCQgCgpFeGFtcGxlOiAKCiQkIEFQX3QgPSBcbXUgKyBlX3QgKyBtXzFlX3t0LTF9KyBtX3sxMn1lX3t0LTEyfSQkIAoKV2UgY291bGQgYWxzbyBoYXZlIHNlYXNvbmFsaXR5IGluIGRpZmZlcmVuY2luZyBhbmQgQVIgdGVybXM6CgokJCAoWV90LVlfe3QtMX0pLVlfe3QtMTJ9ID0gXGFscGhhXzEgWV97dC0xfSArIFxhbHBoYV97MTJ9IFlfe3QtMTJ9ICsgZV90ICsgbV8xZV97dC0xfSttX3sxMn1lX3t0LTEyfSQkCgpJbiBnZW5lcmFsLCBhIHNlYXNvbmFsIGFyaW1hIG1vZGVsIGlzIGRlbm90ZWQgQVJJTUEocCxkLHEpKFAsRCxRKVttXSB3aGVyZSBtIGlzIHRoZSBmcmVxdWVuY3kgb2YgdGhlIGRhdGEsIFAgaXMgdGhlIG51bWJlciBvZiBzZWFzb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgQVIgY29tcG9uZW50IChlLmcuLCBQPTIgd2hlbiBtPTEyIG1lYW5zIHdlIHdvdWxkIGluY2x1ZGUgJFlfe3QtMTJ9JCBhbmQgJFlfe3QtMjR9JCksIEQgaXMgdGhlIG51bWJlciBvZiBkaWZmZXJlbmNlcyBmcm9tIHRoZSBzZWFzb25hbCBjb21wb25lbnQgKGUuZy4gJEQ9MSQgd291bGQgbWVhbiB0aGF0IHdlIHdvdWxkIHRha2UgdGhlIGRpZmZlcmVuY2UgJFlfdC1ZX3t0LTEyfSQpLCBhbmQgUSBpcyB0aGUgbnVtYmVyIG9mIE1BIHNlYXNvbmFsIGNvbXBvbmVudHMgKGUuZy4sIFE9MSBtZWFucyB3ZSB3b3VsZCBpbmNsdWRlICRlX3t0LTEyfSQpLgoKCiMjIyBFeGFtcGxlOiAKCmBgYHtyfQpkYXRhKCJBaXJQYXNzZW5nZXJzIikKQVA8LUFpclBhc3NlbmdlcnMKYGBgCgoKYGBge3J9CnNlYXNvbmFsbW9kZWw8LWFyaW1hKGxvZyhBUCksb3JkZXI9YygwLDEsMSksc2Vhc29uYWw9YygwLDEsMSkpCnJlc2lkdWFscyA8LSByZXNpZHVhbHMoc2Vhc29uYWxtb2RlbCkKQVBmaXR0ZWQgPC0gQVAtcmVzaWR1YWxzCmBgYAoKYGBge3J9CnRzLnBsb3QoQVApCnBvaW50cyhBUGZpdHRlZCx0eXBlID0gImwiLGNvbD0yLGx0eT0yKQpgYGAKCgojIFVzaW5nIGBhdXRvLmFyaW1hKClgCgpgYGB7cn0KI2luc3RhbGwucGFja2FnZXMoImZvcmVjYXN0IikKbGlicmFyeShmb3JlY2FzdCkKYGBgCgpgYGB7cn0KYXV0by5hcmltYShsb2coQVApLGQ9MSkKYGBgCgpgYGB7cn0KYXV0by5hcmltYShZMXRzKQpgYGAKCmBgYHtyfQphcmltYWluZmxhdGlvbjwtYXV0by5hcmltYShJbmZsYXRpb25SYXRlKQphcmltYWluZmxhdGlvbgpgYGAKCmBgYHtyfQppbmZfcmVzaWR1YWxzIDwtIHJlc2lkdWFscyhhcmltYWluZmxhdGlvbikKaW5mZml0dGVkIDwtIEluZmxhdGlvblJhdGUtaW5mX3Jlc2lkdWFscwp0cy5wbG90KEluZmxhdGlvblJhdGUpCnBvaW50cyhpbmZmaXR0ZWQsdHlwZSA9ICJsIixjb2w9MixsdHk9MikKYGBgCgojIyBGb3JlY2FzdGluZyBQcmV2aWV3OgoKYGBge3J9CnBsb3QoZm9yZWNhc3QoYXJpbWFpbmZsYXRpb24pKQpgYGAKCmBgYHtyfQpVUjwtZnJlZHIoc2VyaWVzX2lkID0gIlVOUkFURSIpClVSPC10cyhVUiR2YWx1ZSwgc3RhcnQgPSBjKDE5NDgsMSksZW5kID0gYygyMDIxLDMpLGZyZXF1ZW5jeSA9IDEyKQpgYGAKCmBgYHtyfQpVUmFyaW1hPC1hdXRvLmFyaW1hKFVSKQpmb3JlY2FzdChVUmFyaW1hKQpwbG90KGZvcmVjYXN0KFVSYXJpbWEpKQpgYGAKCmBgYHtyfQpVUl9yZXNpZHVhbHMgPC0gcmVzaWR1YWxzKFVSYXJpbWEpClVSZml0dGVkIDwtIFVSLVVSX3Jlc2lkdWFscwp0cy5wbG90KFVSKQpwb2ludHMoVVJmaXR0ZWQsdHlwZSA9ICJsIixjb2w9MixsdHk9MikKYGBgCgo=