## Create Regression Models with AR Errors

These examples show how to create regression models with AR errors using `regARIMA`. For details on specifying regression models with AR errors using the Econometric Modeler app, see Specify Regression Model with ARMA Errors Using Econometric Modeler App.

### Default Regression Model with AR Errors

This example shows how to apply the shorthand `regARIMA(p,D,q)` syntax to specify a regression model with AR errors.

Specify the default regression model with AR(3) errors:

`$\begin{array}{l}{y}_{t}=c+{X}_{t}\beta +{u}_{t}\\ {u}_{t}={a}_{1}{u}_{t-1}+{a}_{2}{u}_{t-2}+{a}_{3}{u}_{t-3}+{\epsilon }_{t}.\end{array}$`

`Mdl = regARIMA(3,0,0)`
```Mdl = regARIMA with properties: Description: "ARMA(3,0) Error Model (Gaussian Distribution)" Distribution: Name = "Gaussian" Intercept: NaN Beta: [1×0] P: 3 Q: 0 AR: {NaN NaN NaN} at lags [1 2 3] SAR: {} MA: {} SMA: {} Variance: NaN ```

The software sets the innovation distribution to `Gaussian`, and each parameter to `NaN`. The AR coefficients are at lags 1 through 3.

Pass `Mdl` into `estimate` with data to estimate the parameters set to `NaN`. Though `Beta` is not in the display, if you pass a matrix of predictors (${X}_{t}$) into `estimate`, then `estimate` estimates `Beta`. The `estimate` function infers the number of regression coefficients in `Beta` from the number of columns in ${X}_{t}$.

Tasks such as simulation and forecasting using `simulate` and `forecast` do not accept models with at least one `NaN` for a parameter value. Use dot notation to modify parameter values.

### AR Error Model Without an Intercept

This example shows how to specify a regression model with AR errors without a regression intercept.

Specify the default regression model with AR(3) errors:

`$\begin{array}{l}{y}_{t}={X}_{t}\beta +{u}_{t}\\ {u}_{t}={a}_{1}{u}_{t-1}+{a}_{2}{u}_{t-2}+{a}_{3}{u}_{t-3}+{\epsilon }_{t}.\end{array}$`

` Mdl = regARIMA('ARLags',1:3,'Intercept',0)`
```Mdl = regARIMA with properties: Description: "ARMA(3,0) Error Model (Gaussian Distribution)" Distribution: Name = "Gaussian" Intercept: 0 Beta: [1×0] P: 3 Q: 0 AR: {NaN NaN NaN} at lags [1 2 3] SAR: {} MA: {} SMA: {} Variance: NaN ```

The software sets `Intercept` to 0, but all other estimable parameters in `Mdl` are `NaN` values by default.

Since `Intercept` is not a `NaN`, it is an equality constraint during estimation. In other words, if you pass `Mdl` and data into `estimate`, then `estimate` sets `Intercept` to 0 during estimation.

You can modify the properties of `Mdl` using dot notation.

### AR Error Model with Nonconsecutive Lags

This example shows how to specify a regression model with AR errors, where the nonzero AR terms are at nonconsecutive lags.

Specify the regression model with AR(4) errors:

`$\begin{array}{l}{y}_{t}=c+{X}_{t}\beta +{u}_{t}\\ {u}_{t}={a}_{1}{u}_{t-1}+{a}_{4}{u}_{t-4}+{\epsilon }_{t}.\end{array}$`

`Mdl = regARIMA('ARLags',[1,4])`
```Mdl = regARIMA with properties: Description: "ARMA(4,0) Error Model (Gaussian Distribution)" Distribution: Name = "Gaussian" Intercept: NaN Beta: [1×0] P: 4 Q: 0 AR: {NaN NaN} at lags [1 4] SAR: {} MA: {} SMA: {} Variance: NaN ```

The AR coefficients are at lags 1 and 4.

Verify that the AR coefficients at lags 2 and 3 are 0.

`Mdl.AR`
```ans=1×4 cell array {[NaN]} {[0]} {[0]} {[NaN]} ```

The software displays a 1-by-4 cell array. Each consecutive cell contains the corresponding AR coefficient value.

Pass `Mdl` and data into `estimate`. The software estimates all parameters that have the value `NaN`. Then, `estimate` holds ${a}_{2}$ = 0 and ${a}_{3}$ = 0 during estimation.

### Known Parameter Values for a Regression Model with AR Errors

This example shows how to specify values for all parameters of a regression model with AR errors.

Specify the regression model with AR(4) errors:

`$\begin{array}{l}{y}_{t}={X}_{t}\left[\begin{array}{l}-2\\ 0.5\end{array}\right]+{u}_{t}\\ {u}_{t}=0.2{u}_{t-1}+0.1{u}_{t-4}+{\epsilon }_{t},\end{array}$`

where ${\epsilon }_{t}$ is Gaussian with unit variance.

```Mdl = regARIMA('AR',{0.2,0.1},'ARLags',[1,4], ... 'Intercept',0,'Beta',[-2;0.5],'Variance',1)```
```Mdl = regARIMA with properties: Description: "Regression with ARMA(4,0) Error Model (Gaussian Distribution)" Distribution: Name = "Gaussian" Intercept: 0 Beta: [-2 0.5] P: 4 Q: 0 AR: {0.2 0.1} at lags [1 4] SAR: {} MA: {} SMA: {} Variance: 1 ```

There are no `NaN` values in any `Mdl` properties, and therefore there is no need to estimate `Mdl` using `estimate`. However, you can simulate or forecast responses from `Mdl` using `simulate` or `forecast`.

### Regression Model with AR Errors and t Innovations

This example shows how to set the innovation distribution of a regression model with AR errors to a $t$ distribution.

Specify the regression model with AR(4) errors:

`$\begin{array}{l}{y}_{t}={X}_{t}\left[\begin{array}{l}-2\\ 0.5\end{array}\right]+{u}_{t}\\ {u}_{t}=0.2{u}_{t-1}+0.1{u}_{t-4}+{\epsilon }_{t},\end{array}$`

where ${\epsilon }_{t}$ has a $t$ distribution with the default degrees of freedom and unit variance.

```Mdl = regARIMA('AR',{0.2,0.1},'ARLags',[1,4],... 'Intercept',0,'Beta',[-2;0.5],'Variance',1,... 'Distribution','t')```
```Mdl = regARIMA with properties: Description: "Regression with ARMA(4,0) Error Model (t Distribution)" Distribution: Name = "t", DoF = NaN Intercept: 0 Beta: [-2 0.5] P: 4 Q: 0 AR: {0.2 0.1} at lags [1 4] SAR: {} MA: {} SMA: {} Variance: 1 ```

The default degrees of freedom is `NaN`. If you don't know the degrees of freedom, then you can estimate it by passing `Mdl` and the data to `estimate`.

Specify a ${t}_{10}$ distribution.

`Mdl.Distribution = struct('Name','t','DoF',10)`
```Mdl = regARIMA with properties: Description: "Regression with ARMA(4,0) Error Model (t Distribution)" Distribution: Name = "t", DoF = 10 Intercept: 0 Beta: [-2 0.5] P: 4 Q: 0 AR: {0.2 0.1} at lags [1 4] SAR: {} MA: {} SMA: {} Variance: 1 ```

You can simulate or forecast responses using `simulate` or `forecast` because `Mdl` is completely specified.

In applications, such as simulation, the software normalizes the random $t$ innovations. In other words, `Variance` overrides the theoretical variance of the $t$ random variable (which is `DoF`/(`DoF` - 2)), but preserves the kurtosis of the distribution.