Main Content

You can express all stationary stochastic processes in the general linear form [2]

$${y}_{t}=\mu +{\epsilon}_{t}+{\displaystyle \sum _{i=1}^{\infty}{\psi}_{i}{\epsilon}_{t-i}.}$$

The innovation process, $${\epsilon}_{t}$$, is an uncorrelated—but not necessarily independent—mean zero process with a known distribution.

In Econometrics Toolbox™, the general form for the innovation process is $${\epsilon}_{t}={\sigma}_{t}{z}_{t}$$. Here, *z _{t}* is an independent and identically distributed (iid) series with mean 0 and variance 1, and $${\sigma}_{t}^{2}$$ is the variance of the innovation process at time

`arima`

model objects have two properties for storing information about the innovation process:

`Variance`

stores the form of $${\sigma}_{t}^{2}$$`Distribution`

stores the parametric form of the distribution of*z*_{t}

If $${\sigma}_{t}^{2}={\sigma}_{\epsilon}^{2}$$ for all times

*t*, then $${\epsilon}_{t}$$ is an independent process with constant variance, $${\sigma}_{\epsilon}^{2}$$.The default value for

`Variance`

is`NaN`

, meaning constant variance with unknown value. You can alternatively assign`Variance`

any positive scalar value, or estimate it using`estimate`

.A time series can exhibit

*volatility clustering*, meaning a tendency for large changes to follow large changes, and small changes to follow small changes. You can model this behavior with a conditional variance model—a dynamic model describing the evolution of the process variance, $${\sigma}_{t}^{2}$$, conditional on past innovations and variances.Set

`Variance`

equal to one of the three conditional variance model objects available in Econometrics Toolbox (`garch`

,`egarch`

, or`gjr`

). This creates a composite conditional mean and variance model variable.

The available distributions for *z _{t}* are:

Standardized Gaussian

Standardized Student’s

*t*with*ν*> 2 degrees of freedom,$${z}_{t}=\sqrt{\frac{\nu -2}{\nu}}{T}_{\nu},$$

where $${T}_{\nu}$$ follows a Student’s

*t*distribution with*ν*> 2 degrees of freedom.

The *t* distribution is useful for modeling time series with more extreme values than expected under a Gaussian distribution. Series with larger values than expected under normality are said to have *excess kurtosis*.

**Tip**

It is good practice to assess the distributional properties of model residuals to determine if a Gaussian innovation distribution (the default distribution) is appropriate for your data.

The property `Distribution`

in a model stores the distribution name (and degrees of freedom for the *t* distribution). The data type of `Distribution`

is a `struct`

array. For a Gaussian innovation distribution, the data structure has only one field: `Name`

. For a Student's *t* distribution, the data structure must have two fields:

`Name`

, with value`'t'`

`DoF`

, with a scalar value larger than two (`NaN`

is the default value)

If the innovation distribution is Gaussian, you do not need to assign a value to `Distribution`

. `arima`

creates the required data structure.

To illustrate, consider specifying an MA(2) model with an iid Gaussian innovation process:

Mdl = arima(0,0,2)

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

The model output shows that `Distribution`

is a `struct`

array with one field, `Name`

, with the value `'Gaussian'`

.

When specifying a Student's *t* innovation distribution, you can specify the distribution with either unknown or known degrees of freedom. If the degrees of freedom are unknown, you can simply assign `Distribution`

the value `'t'`

. By default, the property `Distribution`

has a data structure with field `Name`

equal to `'t'`

, and field `DoF`

equal to `NaN`

. When you input the model to `estimate`

, the degrees of freedom are estimated along with any other unknown model parameters.

For example, specify an MA(2) model with an iid Student's *t* innovation distribution, with unknown degrees of freedom:

Mdl = arima('MALags',1:2,'Distribution','t')

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

The output shows that `Distribution`

is a data structure with two fields. Field `Name`

has the value `'t'`

, and field `DoF`

has the value `NaN`

.

If the degrees of freedom are known, and you want to set an equality constraint, assign a `struct`

array to `Distribution`

with fields `Name`

and `DoF`

. In this case, if the model is input to `estimate`

, the degrees of freedom won't be estimated (the equality constraint is upheld).

Specify an MA(2) model with an iid Student's *t* innovation process with eight degrees of freedom:

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

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

The output shows the specified innovation distribution.

After a model exists in the Workspace, you can modify its `Distribution`

property using dot notation. You cannot modify the fields of the `Distribution`

data structure directly. For example, `Mdl.Distribution.DoF = 8`

is not a valid assignment. However, you can get the individual fields.

Start with an MA(2) model:

Mdl = arima(0,0,2);

To change the distribution of the innovation process in an existing model to a Student's *t* distribution with unknown degrees of freedom, type:

`Mdl.Distribution = 't'`

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

To change the distribution to a *t* distribution with known degrees of freedom, use a data structure:

Mdl.Distribution = struct('Name','t','DoF',8)

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

You can get the individual `Distribution`

fields:

DistributionDoF = Mdl.Distribution.DoF

DistributionDoF = 8

To change the innovation distribution from a Student's *t* back to a Gaussian distribution, type:

`Mdl.Distribution = 'Gaussian'`

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

The `Name`

field is updated to `'Gaussian'`

, and there is no longer a `DoF`

field.

[1] Box, G. E. P., G. M. Jenkins, and G. C. Reinsel. *Time Series Analysis: Forecasting and Control*. 3rd ed. Englewood Cliffs, NJ: Prentice Hall, 1994.

[2] Wold, H. *A Study in the Analysis of Stationary Time Series*. Uppsala, Sweden: Almqvist and Wiksell, 1938.

- Specify t Innovation Distribution Using Econometric Modeler App
- Specify Conditional Mean Models
- Modify Properties of Conditional Mean Model Objects
- Specify Conditional Mean and Variance Models