arimaFit#

Purpose#

Estimates coefficients of a univariate time series model with autoregressive-moving average errors. Model may include fixed regressors.

Format#

amo = arimaFit(y, p[, d, q, amc])#
amo = arimaFit(data, var, p[, d, q, amc])
Parameters:
  • y (Nx1 vector or dataframe.) – Data, if metadata is included date vectors will be automatically detected, as well as variable names.

  • data (string) – name of data set or null string.

  • var (string) – formula string of the model. E.g. "y ~ X1 + X2", y is the name of dependent variable, X1 and X2 are names of independent variables; E.g. "y ~ .", ‘.’ means including all variables except dependent variable y;

  • p (Scalar) – the autoregressive order.

  • d (scalar) – Optional input, the order of differencing. Default = 0.

  • q (scalar) – Optional input, the moving average order. Default = 0.

  • amc (struct) –

    Optional input. An instance of an arimamtControl structure. The following members of amc are referenced within this routine:

    amc.const

    If fixed regressors: NxM matrix, N must be the same as y after it has been differenced.

    Else: Scalar, if 1, a constant is estimated; 0 otherwise. Default = 1.

    amc.itol

    Matrix, 3x1 , controls the convergence criterion.

    1

    Maximum number of iterations. Default = 100.

    2

    Minimum percentage change in the sum of squared errors. Default = 1e-8.

    3

    Minimum percentage change in the parameter values. Default = 1e-6.

    amc.output

    Scalar, controls printing of output.

    0

    Nothing will be printed by arimaFit().

    2

    Final results are printed. (Default)

    3

    Final results, iterations results, residual autocorrelations, Box-Ljung statistic, and covariance and correlation matrices are printed.

    amc.ranktol

    Scalar, the tolerance used in determining if any of the singular values are effectively zero when computing the rank of a matrix.

    Default = 1e-13.

    amc.start

    vector of starting values in order of AR, MA, and Constant; or a scalar, 0, which instructs arimaFit to compute starting values;

    Default = 0.

    amc.varn

    Character, 1x(M+1) vector of parameter names. This is used for models with fixed regressors. The first element contains the name of the independent variable; the second through \(Mth\) elements contain the variable names for the fixed regressors. If amc.varn = 0, the fixed regressors labeled as \(X_0, X_1, ..., X_M\). Not necessary if data input is a dataframe.

    Default = 0.

Returns:

amo (struct) –

An instance of an arimamtOut structure containing the following members:

amo.b

Kx1 vector, estimated model coefficients.

amo.e

Nx1 vector, residual from fitted model.

amo.ll

Scalar, the value of the log likelihood function.

amo.sbc

Scalar, value of the Schwartz Bayesian criterion.

amo.aic

Scalar, value of the Akaike information criterion.

amo.vcb

KxK matrix, the covariance matrix of estimated model coefficients.

amo.tsmtDesc

An instance of the tsmtModelDesc structure containing the following members:

tsmtDesc.depvar

Kx1 string array, names of endogenous variables.

tsmtDesc.indvars

Mx1 string array, names of exogenous variables.

tsmtDesc.timepsan

2x1 string array, range of the time series. Available if date vector is passed as part of a dataframe input.

tsmtDesc.ncases

Scalar, number of observations.

tsmtDesc.df

Scalar, degrees of freedom.

tsmtDesc.model_name

String, model name.

amo.sumStats

An instance of the tsmtSummaryStats structure containing the following members:

sumStats.sse

Kx1 vector, sum of the squared errors of estimates for endogenous variables in the model.

sumStats.mse

Mx1 vector, mean squared errors of estimates for endogenous variables in the model.

sumStats.rmse

Mx1 vector, root mean squared errors of estimates for endogenous variables in the model.

sumStats.see

Mx1 vector, standard error of the estimates for endogenous variables in the model.

sumStats.rsq

Mx1 vector, r-squared of estimates for endogenous variables in the model.

sumStats.AdjRsq

String, adjusted r-squared of estimates for endogenous variables in the model.

sumStats.ssy

String, total sum of the squares for endogenous variables in the model.

sumStats.DW

String, Durbin-Watson statistic for residauls from the estimates for endogenous variables in the model.

Examples#

AR(1)#

In this example, the default settings are used to estimate an AR(1) model of simulated data.

new;
cls;
library tsmt;

//Simulate data
seed = 423458;
y = simarmamt(.3, 1, 0, 2, 0, 250, 1, .5, seed);

//Declare arima out structures
struct arimamtOut amo;

//Set AR order
p = 1;

//Estimate model
amo = arimaFit(y, p);

The results are stored in the amo structure and the following is printed to the Command Window screen:

================================================================================
Model:                 ARIMA(1,0,0)          Dependent variable:              Y1
Time Span:                  Unknown          Valid cases:                    250
SSE:                         71.849          Degrees of freedom:             249
Log Likelihood:             764.556          RMSE:                         0.536
AIC:                        764.556          SEE:                          0.537
SBC:                      -1523.590          Durbin-Watson:                1.918
R-squared:                    0.103          Rbar-squared:                 0.100
================================================================================
Coefficient                Estimate      Std. Err.        T-Ratio     Prob |>| t
================================================================================

AR[1,1]                       0.323          0.060          5.363          0.000
Constant                      1.301          0.538          2.420          0.016
================================================================================

Total Computation Time: 0.01 (seconds)

MA Roots and Moduli:
------------------------------

     Real :        3.09571
    Imag. :        0.00000
     Mod. :        3.09571

Integrated AR(1)#

For integrated data, the optional differencing input can be included.

new;
cls;
library tsmt;

// Simulate data
seed = 423458;
y = simarmamt(.3, 1, 0, 2, 0, 250, 1, .5, seed);

// Integrated series
z = cumsumc(y);

// Declare arima out structures
struct arimamtOut amo;

// Set AR order
p = 1;

// Set order of differencing
d = 1;

// Estimate model
amo = arimaFit(z, p, d);
================================================================================
Model:                 ARIMA(1,1,0)          Dependent variable:              Y1
Time Span:                  Unknown          Valid cases:                    249
SSE:                         71.829          Degrees of freedom:             248
Log Likelihood:             761.464          RMSE:                         0.537
AIC:                        761.464          SEE:                          0.538
SBC:                      -1517.410          Durbin-Watson:                1.917
R-squared:                    0.103          Rbar-squared:                 0.099
================================================================================
Coefficient                Estimate      Std. Err.        T-Ratio     Prob |>| t
================================================================================

AR[1,1]                       0.323          0.060          5.345          0.000
Constant                      1.302          0.539          2.416          0.016
================================================================================

Total Computation Time: 0.01 (seconds)

MA Roots and Moduli:
------------------------------

       Real :        3.09431
      Imag. :        0.00000
       Mod. :        3.09431

AR(2) Using dataset and formula string#

new;
cls;
library tsmt;

// Filename
fname = getGAUSSHome("pkgs/tsmt/examples/enders_sim2.dat");

// Declare arima out structures
struct arimamtOut amo;

// Set AR order
p = 2;

// Run arima estimation
amo = arimaFit(fname, "ar2", p);

The example above prints the following results:

================================================================================
Model:                 ARIMA(2,0,0)          Dependent variable:             ar2
Time Span:                  Unknown          Valid cases:                    100
SSE:                          8.632          Degrees of freedom:              98
Log Likelihood:             200.167          RMSE:                         0.294
AIC:                        200.167          SEE:                          0.297
SBC:                       -391.124          Durbin-Watson:                1.981
R-squared:                    0.400          Rbar-squared:                 0.387
================================================================================
Coefficient                Estimate      Std. Err.        T-Ratio     Prob |>| t
================================================================================

AR[1,1]                       0.691          0.088          7.889          0.000
AR[2,1]                      -0.485          0.088         -5.520          0.000
Constant                     -0.018          0.298         -0.061          0.951
================================================================================

Total Computation Time: 0.02 (seconds)

MA Roots and Moduli:
---------------------------------------------

       Real :        0.71296        0.71296
      Imag. :        1.24695       -1.24695
       Mod. :        1.43638        1.43638

Remarks#

There are other members of the arimamtControl structure which are used by the arimaFit() likelihood function but need not be set by the user: amc.b, amc.y, amc.n, amc.e, amc.k, amc.m, amc.inter.

arimaFit() forces the autoregressive coefficients to be invertible (in other words, the autoregressive roots have modulus greater than one). The moving average roots will have modulus one or greater. If a moving average root is one, arimaFit() reports a missing value for the moving average coefficient’s standard deviation, t-statistic and p-value. This is because these values are meaningless when one of the moving average roots is equal to one. A moving average root equal to one suggests that the data may have been over-differenced.

Library#

tsmt

Source#

arimamt.src

See also

Functions autoregFit(), arimaSS(), simarmamt()