## Create Moving Average Models

These examples show how to create various moving average (MA) models
by using the `arima`

function.

### Default MA Model

This example shows how to use the shorthand `arima(p,D,q)`

syntax to specify the default MA

$${y}_{t}=c+{\epsilon}_{t}+{\theta}_{1}{\epsilon}_{t-1}+\dots +{\theta}_{q}{\epsilon}_{t-q}.$$

By default, all parameters in the created model object have unknown values, and the innovation distribution is Gaussian with constant variance.

Specify the default MA(3) model:

Mdl = arima(0,0,3)

Mdl = arima with properties: Description: "ARIMA(0,0,3) Model (Gaussian Distribution)" SeriesName: "Y" Distribution: Name = "Gaussian" P: 0 D: 0 Q: 3 Constant: NaN AR: {} SAR: {} MA: {NaN NaN NaN} at lags [1 2 3] SMA: {} Seasonality: 0 Beta: [1×0] Variance: NaN

The output shows that the created model object, `Mdl`

, has `NaN`

values for all model parameters: the constant term, the MA coefficients, and the variance. You can modify the created model object using dot notation, or input it (along with data) to `estimate`

.

### MA Model with No Constant Term

This example shows how to specify an MA(*q*) model with constant term equal to zero. Use name-value syntax to specify a model that differs from the default model.

Specify an MA(2) model with no constant term,

$${y}_{t}={\epsilon}_{t}+{\theta}_{1}{\epsilon}_{t-1}+{\theta}_{2}{\epsilon}_{t-2},$$

where the innovation distribution is Gaussian with constant variance.

Mdl = arima('MALags',1:2,'Constant',0)

Mdl = arima with properties: Description: "ARIMA(0,0,2) Model (Gaussian Distribution)" SeriesName: "Y" Distribution: Name = "Gaussian" P: 0 D: 0 Q: 2 Constant: 0 AR: {} SAR: {} MA: {NaN NaN} at lags [1 2] SMA: {} Seasonality: 0 Beta: [1×0] Variance: NaN

The `MALags`

name-value argument specifies the lags corresponding to nonzero MA coefficients. The property `Constant`

in the created model object is equal to `0`

, as specified. The model object has default values for all other properties, including `NaN`

values as placeholders for the unknown parameters: the MA coefficients and scalar variance.

You can modify the created model variable, or input it (along with data) to `estimate`

.

### MA Model with Nonconsecutive Lags

This example shows how to specify an MA(*q*) model with nonzero coefficients at nonconsecutive lags.

Specify an MA(4) model with nonzero MA coefficients at lags 1 and 4 (an no constant term),

$${y}_{t}={\epsilon}_{t}+{\theta}_{1}{\epsilon}_{t-1}+{\theta}_{12}{\epsilon}_{t-12},$$

where the innovation distribution is Gaussian with constant variance.

Mdl = arima('MALags',[1,4],'Constant',0)

Mdl = arima with properties: Description: "ARIMA(0,0,4) Model (Gaussian Distribution)" SeriesName: "Y" Distribution: Name = "Gaussian" P: 0 D: 0 Q: 4 Constant: 0 AR: {} SAR: {} MA: {NaN NaN} at lags [1 4] SMA: {} Seasonality: 0 Beta: [1×0] Variance: NaN

The output shows the nonzero AR coefficients at lags 1 and 4, as specified. The property `Q`

is equal to `4`

, the number of presample innovations needed to initialize the MA model. The unconstrained parameters are equal to `NaN`

.

Display the value of `MA`

:

Mdl.MA

`ans=`*1×4 cell array*
{[NaN]} {[0]} {[0]} {[NaN]}

The `MA`

cell array returns four elements. The first and last elements (corresponding to lags 1 and 4) have value `NaN`

, indicating these coefficients are nonzero and need to be estimated or otherwise specified by the user. `arima`

sets the coefficients at interim lags equal to zero to maintain consistency with MATLAB® cell array indexing.

### MA Model with Known Parameter Values

This example shows how to specify an MA(*q*) model with known parameter values. You can use such a fully specified model as an input to `simulate`

or `forecast`

.

Specify the MA(4) model

$${y}_{t}=0.1+{\epsilon}_{t}+0.7{\epsilon}_{t-1}+0.2{\epsilon}_{t-4},$$

where the innovation distribution is Gaussian with constant variance 0.15.

Mdl = arima('Constant',0.1,'MA',{0.7,0.2},... 'MALags',[1,4],'Variance',0.15)

Mdl = arima with properties: Description: "ARIMA(0,0,4) Model (Gaussian Distribution)" SeriesName: "Y" Distribution: Name = "Gaussian" P: 0 D: 0 Q: 4 Constant: 0.1 AR: {} SAR: {} MA: {0.7 0.2} at lags [1 4] SMA: {} Seasonality: 0 Beta: [1×0] Variance: 0.15

All parameter values are specified, that is, no object property is `NaN`

-valued.

### MA Model with t Innovation Distribution

This example shows how to specify an MA(*q*) model with a Student's *t* innovation distribution.

Specify an MA(2) model with no constant term,

$${y}_{t}={\epsilon}_{t}+{\theta}_{1}{\epsilon}_{t-1}+{\theta}_{2}{\epsilon}_{t-2},$$

where the innovation process follows a Student's *t* distribution with eight degrees of freedom.

tdist = struct('Name','t','DoF',8); Mdl = arima('Constant',0,'MALags',1:2,'Distribution',tdist)

Mdl = arima with properties: Description: "ARIMA(0,0,2) Model (t Distribution)" SeriesName: "Y" Distribution: Name = "t", DoF = 8 P: 0 D: 0 Q: 2 Constant: 0 AR: {} SAR: {} MA: {NaN NaN} at lags [1 2] SMA: {} Seasonality: 0 Beta: [1×0] Variance: NaN

The value of `Distribution`

is a `struct`

array with field `Name`

equal to `'t'`

and field `DoF`

equal to `8`

. When you specify the degrees of freedom, they aren't estimated if you input the model to `estimate`

.

### Specify MA Model Using Econometric Modeler App

In the Econometric
Modeler app, you can specify the lag structure, presence of a constant,
and innovation distribution of an MA(*q*) model by following these
steps. All specified coefficients are unknown but estimable parameters.

At the command line, open the Econometric Modeler app.

econometricModeler

Alternatively, open the app from the apps gallery (see Econometric Modeler).

In the

**Time Series**pane, select the response time series to which the model will be fit.On the

**Econometric Modeler**tab, in the**Models**section, click**MA**.The

**MA Model Parameters**dialog box appears.Specify the lag structure. To specify an MA(

*q*) model that includes all MA lags from 1 through*q*, use the**Lag Order**tab. For the flexibility to specify the inclusion of particular lags, use the**Lag Vector**tab. For more details, see Specifying Univariate Lag Operator Polynomials Interactively. Regardless of the tab you use, you can verify the model form by inspecting the equation in the**Model Equation**section.

For example:

To specify an MA(3) model that includes a constant, includes the first lag, and has a Gaussian innovation distribution, set

**Moving Average Order**to`3`

.To specify an MA(2) model that includes the first lag, has a Gaussian distribution, but does not include a constant:

Set

**Moving Average Order**to`2`

.Clear the

**Include Constant Term**check box.

To specify an MA(4) model containing nonconsecutive lags

$${y}_{t}={\epsilon}_{t}+{\theta}_{1}{\epsilon}_{t-1}+{\theta}_{4}{\epsilon}_{t-4},$$

where

*ε*is a series of IID Gaussian innovations:_{t}Click the

**Lag Vector**tab.Set

**Moving Average Order**to`1 4`

.Clear the

**Include Constant Term**check box.

To specify an MA(2) model that includes the first lag, includes a constant term, and has

*t*-distributed innovations:Set

**Moving Average Lags**to`2`

.Click the

**Innovation Distribution**button, then select`t`

.

The degrees of freedom parameter of the

*t*distribution is an unknown but estimable parameter.

After you specify a model, click **Estimate** to
estimate all unknown parameters in the model.

### What Are Moving Average Models?

#### MA(*q*) Model

The moving average (MA) model captures serial autocorrelation in a time series
*y _{t}* by expressing the conditional
mean of

*y*as a function of past innovations, $${\epsilon}_{t-1},{\epsilon}_{t-2},\dots ,{\epsilon}_{t-q}$$. An MA model that depends on

_{t}*q*past innovations is called an MA model of degree

*q*, denoted by MA(

*q*).

The form of the MA(*q*) model in Econometrics Toolbox™ is

$${y}_{t}=c+{\epsilon}_{t}+{\theta}_{1}{\epsilon}_{t-1}+\dots +{\theta}_{q}{\epsilon}_{t-q},$$ | (1) |

*y*is

_{t}*μ*=

*c*.

In lag operator polynomial notation, $${L}^{i}{y}_{t}={y}_{t-i}$$. Define the degree *q* MA lag operator polynomial $$\theta (L)=(1+{\theta}_{1}L+\dots +{\theta}_{q}{L}^{q}).$$ You can write the MA(*q*) model as

$${y}_{t}=\mu +\theta (L){\epsilon}_{t}.$$

#### Invertibility of the MA Model

By Wold’s decomposition [2], an MA(*q*) process is always stationary because $$\theta (L)$$ is a finite-degree polynomial.

For a given process, however, there is no unique MA polynomial—there is
always a *noninvertible* and *invertible*
solution [1]. For uniqueness, it is conventional to impose invertibility constraints on the MA
polynomial. Practically speaking, choosing the invertible solution implies the
process is *causal*. An invertible MA process can be expressed
as an infinite-degree AR process, meaning only past events (not future events)
predict current events. The MA operator polynomial $$\theta (L)$$ is invertible if all its roots lie outside the unit circle.

Econometrics Toolbox enforces invertibility of the MA polynomial. When you specify an MA
model using `arima`

, you get an error if you enter coefficients
that do not correspond to an invertible polynomial. Similarly,
`estimate`

imposes invertibility constraints during
estimation.

## References

[1] Hamilton, James D. *Time Series Analysis*. Princeton, NJ: Princeton University Press, 1994.

[2] Wold, Herman. "A Study in the Analysis of Stationary Time
Series." *Journal of the Institute of Actuaries* 70 (March 1939): 113–115.
https://doi.org/10.1017/S0020268100011574.

## See Also

### Apps

### Objects

### Functions

## Related Topics

- Analyze Time Series Data Using Econometric Modeler
- Specifying Univariate Lag Operator Polynomials Interactively
- Creating Univariate Conditional Mean Models
- Modify Properties of Conditional Mean Model Objects
- Specify Conditional Mean Model Innovation Distribution
- Plot the Impulse Response Function of Conditional Mean Model