## Create Regression Models with SARIMA Errors

### SARMA Error Model Without an Intercept

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

Specify the default regression model with $SARMA\left(1,1\right)×\left(2,1,1{\right)}_{4}$ errors:

`$\begin{array}{c}{y}_{t}={X}_{t}\beta +{u}_{t}\\ \left(1-{a}_{1}L\right)\left(1-{A}_{4}{L}^{4}-{A}_{8}{L}^{8}\right)\left(1-{L}^{4}\right){u}_{t}=\left(1+{b}_{1}L\right)\left(1+{B}_{4}{L}^{4}\right){\epsilon }_{t}.\end{array}$`

```Mdl = regARIMA('ARLags',1,'SARLags',[4, 8],... 'Seasonality',4,'MALags',1,'SMALags',4,'Intercept',0)```
```Mdl = regARIMA with properties: Description: "ARMA(1,1) Error Model Seasonally Integrated with Seasonal AR(8) and MA(4) (Gaussian Distribution)" Distribution: Name = "Gaussian" Intercept: 0 Beta: [1×0] P: 13 Q: 5 AR: {NaN} at lag [1] SAR: {NaN NaN} at lags [4 8] MA: {NaN} at lag [1] SMA: {NaN} at lag [4] Seasonality: 4 Variance: NaN ```

The name-value pair argument:

• `'ARLags',1` specifies which lags have nonzero coefficients in the nonseasonal autoregressive polynomial, so $a\left(L\right)=\left(1-{a}_{1}L\right)$.

• `'SARLags',[4 8]` specifies which lags have nonzero coefficients in the seasonal autoregressive polynomial, so $A\left(L\right)=\left(1-{A}_{4}{L}^{4}-{A}_{8}{L}^{8}\right)$.

• `'MALags',1` specifies which lags have nonzero coefficients in the nonseasonal moving average polynomial, so $b\left(L\right)=\left(1+{b}_{1}L\right)$.

• `'SMALags',4` specifies which lags have nonzero coefficients in the seasonal moving average polynomial, so $B\left(L\right)=\left(1+{B}_{4}{L}^{4}\right)$.

• `'Seasonality',4` specifies the degree of seasonal integration and corresponds to $\left(1-{L}^{4}\right)$.

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

Property `P` = p + D + ${p}_{s}$ + s = 1 + 0 + 8 + 4 = 13, and property `Q` = q + ${q}_{s}$ = 1 + 4 = 5. Therefore, the software requires at least 13 presample observation to initialize `Mdl`.

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.

Be aware that the regression model intercept (`Intercept`) is not identifiable in regression models with ARIMA errors. If you want to estimate `Mdl`, then you must set `Intercept` to a value using, for example, dot notation. Otherwise, `estimate` might return a spurious estimate of `Intercept`.

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

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

Specify the regression model with $SARIMA\left(1,1,1\right)×\left(1,1,0{\right)}_{12}$ errors:

`$\begin{array}{c}{y}_{t}={X}_{t}\beta +{u}_{t}\\ \left(1-0.2L\right)\left(1-L\right)\left(1-0.25{L}^{12}-0.1{L}^{24}\right)\left(1-{L}^{12}\right){u}_{t}=\left(1+0.15L\right){\epsilon }_{t},\end{array}$`

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

```Mdl = regARIMA('AR',0.2,'SAR',{0.25, 0.1},'SARLags',[12 24],... 'D',1,'Seasonality',12,'MA',0.15,'Intercept',0,'Variance',1)```
```Mdl = regARIMA with properties: Description: "ARIMA(1,1,1) Error Model Seasonally Integrated with Seasonal AR(24) (Gaussian Distribution)" Distribution: Name = "Gaussian" Intercept: 0 Beta: [1×0] P: 38 D: 1 Q: 1 AR: {0.2} at lag [1] SAR: {0.25 0.1} at lags [12 24] MA: {0.15} at lag [1] SMA: {} Seasonality: 12 Variance: 1 ```

The parameters in `Mdl` do not contain `NaN` values, and therefore there is no need to estimate `Mdl`. However, you can simulate or forecast responses by passing `Mdl` to `simulate` or `forecast`.

### Regression Model with SARIMA Errors and t Innovations

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

Specify the regression model with $SARIMA\left(1,1,1\right)×\left(1,1,0{\right)}_{12}$ errors:

`$\begin{array}{c}{y}_{t}={X}_{t}\beta +{u}_{t}\\ \left(1-0.2L\right)\left(1-L\right)\left(1-0.25{L}^{12}-0.1{L}^{24}\right)\left(1-{L}^{12}\right){u}_{t}=\left(1+0.15L\right){\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,'SAR',{0.25, 0.1},'SARLags',[12 24],... 'D',1,'Seasonality',12,'MA',0.15,'Intercept',0,... 'Variance',1,'Distribution','t')```
```Mdl = regARIMA with properties: Description: "ARIMA(1,1,1) Error Model Seasonally Integrated with Seasonal AR(24) (t Distribution)" Distribution: Name = "t", DoF = NaN Intercept: 0 Beta: [1×0] P: 38 D: 1 Q: 1 AR: {0.2} at lag [1] SAR: {0.25 0.1} at lags [12 24] MA: {0.15} at lag [1] SMA: {} Seasonality: 12 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: "ARIMA(1,1,1) Error Model Seasonally Integrated with Seasonal AR(24) (t Distribution)" Distribution: Name = "t", DoF = 10 Intercept: 0 Beta: [1×0] P: 38 D: 1 Q: 1 AR: {0.2} at lag [1] SAR: {0.25 0.1} at lags [12 24] MA: {0.15} at lag [1] SMA: {} Seasonality: 12 Variance: 1 ```

You can simulate or forecast responses by passing `Mdl` to `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.