Introduction
The arimaFit
function is a convenient tool for estimating the parameters of any ARIMA model, including:
- ARMA models.
- Purely AR models.
- Purely MA models.
It will compute parameter estimates and standard errors for a time series model with ARMA errors using exact maximum likelihood.
arimaFit for Matrix Inputs
Below are the inputs to arimaFit
when passing the time series as a GAUSS matrix:
- y
- N x 1 vector, containing the time series.
- p
- Scalar, the autoregressive order.
- d
- Optional scalar, the order of differencing. Default = 0.
- q
- Optional scalar, the moving average order. Default = 0.
- ctl
- Optional control structure. Contains additional settings for the estimation, such as optimization tolerances, and starting values as well as control over printed output and more.
Estimation Requirements
- The specified model must include sequential, ordered lags. For example, it will estimate the parameters for the first through fourth lag but will not estimate a model that includes ONLY the first and fourth lag.
- The time series data must be stationary and invertible.
Estimating ARIMA Models with Matrix Input
Example AR(2) Model
Let's consider estimating an AR(2) model using the same data from our previous tutorials. Assuming the data series, y_sim
, is still in memory we can estimate the AR(2) models with a single line of code:
call arimaFit(y_sim, 2);
The output printed to screen reads
================================================================================ Model: ARIMA(2,0,0) Dependent variable: Y_ar2 Time Span: Unknown Valid cases: 200 SSE: 177.754 Degrees of freedom: 198 Log Likelihood: 702.328 RMSE: 0.943 AIC: 702.328 SEE: 0.947 SBC: -1394.059 Durbin-Watson: 1.909 R-squared: 0.630 Rbar-squared: 0.626 ================================================================================ Coefficient Estimate Std. Err. T-Ratio Prob |>| t ================================================================================ AR[1,1] 0.549 0.045 12.101 0.000 AR[2,1] -0.770 0.045 -17.015 0.000 Constant 1.773 0.951 1.864 0.064 ================================================================================ Total Computation Time: 0.04 (seconds) MA Roots and Moduli: --------------------------------------------- Real : 0.35674 0.35674 Imag. : 1.08266 -1.08266 Mod. : 1.13992 1.13992
The estimated coefficients, 0.54960 and -0.76906, are reasonable estimates given the coefficients used to simulate the series y_sim
(0.5 and -0.8).
Example ARIMA(2,1,0) Model
Now, for the sake of demonstration, consider estimating an ARIMA(2,1,0) model. Because the order of differencing is now different from zero, both the AR order and the differencing must be specified as inputs to arimaFit
. However, because the MA order is still zero, it is not required:
call arimaFit(y_sim, 2, 1);
The output printed to screen reads
================================================================================ Model: ARIMA(2,1,0) Dependent variable: Y_ar2 Time Span: Unknown Valid cases: 199 SSE: 287.379 Degrees of freedom: 197 Log Likelihood: 746.618 RMSE: 1.202 AIC: 746.618 SEE: 1.208 SBC: -1482.650 Durbin-Watson: 2.595 R-squared: 0.565 Rbar-squared: 0.561 ================================================================================ Coefficient Estimate Std. Err. T-Ratio Prob |>| t ================================================================================ AR[1,1] 0.279 0.047 5.882 0.000 AR[2,1] -0.746 0.047 -15.771 0.000 Constant 0.017 1.214 0.014 0.989 ================================================================================ Total Computation Time: 0.01 (seconds) MA Roots and Moduli: --------------------------------------------- Real : 0.18710 0.18710 Imag. : 1.14270 -1.14270 Mod. : 1.15791 1.15791
Now, because of the improperly specified model, the coefficient estimates at 0.27909 and -0.74585 are no longer as accurate.
Example ARIMA(2,0,1) Model
Suppose that we now wish to estimate an ARIMA(2,0,1). In this model, the MA order differs from the default value of zero, but the differencing order is equal to the default value. However, because the optional arguments must be specified in the order p, d, q, both the differencing order and MA order must be included as inputs:
call arimaFit(y_sim, 2, 0, 1);
The ARIMA(2,0,1) estimates printed to screen reads
================================================================================ Model: ARIMA(2,0,1) Dependent variable: Y_ar2 Time Span: Unknown Valid cases: 200 SSE: 177.095 Degrees of freedom: 197 Log Likelihood: 701.956 RMSE: 0.941 AIC: 701.956 SEE: 0.948 SBC: -1388.017 Durbin-Watson: 2.002 R-squared: 0.631 Rbar-squared: 0.625 ================================================================================ Coefficient Estimate Std. Err. T-Ratio Prob |>| t ================================================================================ AR[1,1] 0.517 0.060 8.665 0.000 AR[2,1] -0.759 0.048 -15.764 0.000 MA[1,1] -0.079 0.091 -0.865 0.388 Constant 1.804 0.952 1.896 0.059 ================================================================================ Total Computation Time: 0.08 (seconds) MA Roots and Moduli: --------------------------------------------- Real : 0.34047 0.34047 Imag. : 1.09589 -1.09589 Mod. : 1.14755 1.14755 MA Roots and Moduli: ------------------------------ Real : -12.65466 Imag. : 0.00000 Mod. : 12.65466
The table now includes three estimates, two AR estimates and one MA estimate.
Conclusion
You have learned the basics of estimating ARIMA models with the arimaFit
function in GAUSS. The next tutorial in this series shows how to create and customize a time series plot.
For your convenience, the entire code is available here.