Main Content

arma2ma

Convert ARMA model to MA model

Description

ma = arma2ma(ar0,ma0) returns the coefficients of the truncated, infinite-order MA model approximation to an ARMA model with input AR and MA coefficients.

arma2ma:

  • Accepts:

  • Accommodates time series models that are univariate or multivariate (i.e., numVars variables compose the model), stationary or integrated, structural or in reduced form, and invertible.

  • Assumes that the model constant c is 0.

example

ma = arma2ma(ar0,ma0,numLags) returns the first nonzero numLags lag-term coefficients of the infinite-order MA model approximation of the ARMA model with the input coefficients.

example

Examples

collapse all

Find the lag coefficients of the truncated, MA approximation of this univariate, stationary, and invertible ARMA model

yt=0.2yt-1-0.1yt-2+εt+0.5εt-1.

The ARMA model is in difference-equation notation because the left side contains only yt and its coefficient 1. Create a vector containing the AR lag term coefficients in order starting from t - 1.

ar0 = [0.2 -0.1];

Alternatively, you can create a cell vector of the scalar coefficients.

Create a vector containing the MA lag term coefficient.

ma0 = 0.5;

Convert the ARMA model to an MA model by obtaining the coefficients of the truncated approximation of the infinite-lag polynomial.

ma = arma2ma(ar0,ma0)
ma = 1×4

    0.7000    0.0400   -0.0620   -0.0164

ma is a numeric vector because ar0 and ma0 are numeric vectors.

The approximate MA model truncated at 4 lags is

yt=εt+0.7εt-1+0.04εt-2-0.062εt-3-0.0164εt-4.

Find the first five lag coefficients of the MA approximation of this univariate and stationary AR(3) model

yt=-0.2yt-1+0.5yt-3+εt.

The AR model is in difference-equation notation because the left side contains only yt and its coefficient of 1. Create a cell vector containing the AR lag term coefficient in order starting from t - 1. Because the second lag term of the MA model is missing, specify a 0 for its coefficient.

ar0 = {-0.2 0 0.5};

Convert the AR model to an MA model with at most five lag coefficients of the truncated approximation of the infinite-lag polynomial. Because there is no MA contribution, specify an empty cell ({}) for the MA coefficients.

numLags = 5;
ma0 = {}; 
ma = arma2ma(ar0,ma0,numLags)
ma=1×5 cell array
    {[-0.2000]}    {[0.0400]}    {[0.4920]}    {[-0.1984]}    {[0.0597]}

ma is a cell vector of scalars because at least one of ar0 and ma0 is a cell vector.

The approximate MA(5) model is

yt=εt-0.2εt-1+0.04εt-2+0.492εt-3-0.1984εt-4+0.0597εt-5

Find the coefficients of the truncated, structural VMA equivalent of the structural, stationary, and invertible VARMA model

{[10.2-0.10.031-0.150.9-0.251]+[0.5-0.2-0.1-0.3-0.10.10.4-0.2-0.05]L4+[0.05-0.02-0.01-0.1-0.01-0.0010.04-0.02-0.005]L8}yt={[100010001]+[-0.020.030.30.0030.0010.010.30.010.01]L4}εt

where yt=[y1ty2ty3t] and εt=[ε1tε2tε3t].

The VARMA model is in lag operator notation because the response and innovation vectors are on opposite sides of the equation.

Create a cell vector containing the VAR matrix coefficients. Because this model is a structural model, start with the coefficient of yt and enter the rest in order by lag. Construct a vector that indicates the degree of the lag term for the corresponding coefficients.

var0 = {[1 0.2 -0.1; 0.03 1 -0.15; 0.9 -0.25 1],...
    [0.5 -0.2 -0.1; -0.3 -0.1 0.1; 0.4 -0.2 -0.05],...
    [0.05 -0.02 -0.01; -0.1 -0.01 -0.001; 0.04 -0.02 -0.005]};
var0Lags = [0 4 8];

Create a cell vector containing the VMA matrix coefficients. Because this model is a structural model, start with the coefficient of εt and enter the rest in order by lag. Construct a vector that indicates the degree of the lag term for the corresponding coefficients.

vma0 = {eye(3),...
    [-0.02 0.03 0.3; 0.003 0.001 0.01; 0.3 0.01 0.01]};
vma0Lags = [0 4];

arma2ma requires LagOp lag operator polynomials for input arguments that comprise structural VAR or VMA models. Construct separate LagOp polynomials that describe the VAR and VMA components of the VARMA model.

VARLag = LagOp(var0,'Lags',var0Lags);
VMALag = LagOp(vma0,'Lags',vma0Lags);

VARLags and VMALags are LagOp lag operator polynomials that describe the VAR and VMA components of the VARMA model.

Convert the VARMA model to a VMA model by obtaining the coefficients of the truncated approximation of the infinite-lag polynomial. Specify to return at most 12 lagged terms.

numLags = 12;
VMA = arma2ma(VARLag,VMALag,numLags)
VMA = 
    3-D Lag Operator Polynomial:
    -----------------------------
        Coefficients: [Lag-Indexed Cell Array with 4 Non-Zero Coefficients]
                Lags: [0 4 8 12]
              Degree: 12
           Dimension: 3

VMA is a LagOP lag operator polynomial. All coefficients except those corresponding to lags 0, 4, 8, and 12 are 3-by-3 matrices of zeros.

Display the nonzero coefficients of the resulting VMA model.

lag2Idx = VMA.Lags + 1; % Lags start at 0.  Add 1 to convert to indices.
vmaCoeff = toCellArray(VMA);

for j = 1:numel(lag2Idx)
    fprintf('___________Lag %d__________\n',lag2Idx(j) - 1)
    fprintf('%8.3f %8.3f %8.3f \n',vmaCoeff{lag2Idx(j)})
    fprintf    ('__________________________\n')
end
___________Lag 0__________
   0.943   -0.162   -0.889 
  -0.172    1.068    0.421 
   0.069    0.144    0.974 
__________________________
___________Lag 4__________
  -0.650    0.460    0.546 
   0.370    0.000   -0.019 
   0.383   -0.111   -0.312 
__________________________
___________Lag 8__________
   0.431   -0.138   -0.089 
  -0.170    0.122    0.065 
  -0.260    0.165    0.089 
__________________________
___________Lag 12__________
  -0.216    0.078    0.047 
   0.099   -0.013   -0.011 
   0.153   -0.042   -0.026 
__________________________

Find the lag coefficients and constant of the truncated MA approximation of this univariate, stationary, and invertible ARMA model

yt=1.5+0.2yt-1-0.1yt-2+εt+0.5εt-1.

The ARMA model is in difference-equation notation because the left side contains only yt and its coefficient of 1. Create separate vectors for the AR and MA lag term coefficients in order starting from t - 1.

ar0 = [0.2 -0.1];
ma0 = 0.5;

Convert the ARMA model to an MA model by obtaining the first five coefficients of the truncated approximation of the infinite-lag polynomial.

numLags = 5;
ar = arma2ma(ar0,ma0,numLags)
ar = 1×5

    0.7000    0.0400   -0.0620   -0.0164    0.0029

To compute the constant of the MA model, consider the ARMA model in lag operator notation.

(1-0.2L+0.1L2)yt=1.5+(1+0.5L)εt

or

Φ(L)yt=1.5+Θ(L)εt

Part of the conversion involves premultiplying both sides of the equation by the inverse of the AR lag operator polynomial, as in this equation.

yt=Φ-1(L)1.5+Φ-1(L)Θ(L)εt

To compute the inverse of AR lag operator polynomial, use the lag operator left-division object function mldivide.

Phi = LagOp([1 -0.2 0.1]);
PhiInv = mldivide(Phi,1,'RelTol',1e-5);

PhiInv is a LagOp lag operator polynomial.

The application of lag operator polynomials to constants results in the product of the constant with the sum of the coefficients. Apply PhiInv to the ARMA model constant to obtain the MA model constant.

maConstant = 1.5*sum(cell2mat(toCellArray(PhiInv)))
maConstant = 
1.6667

The approximate MA model is

yt=1.667+0.7εt-1+0.04εt-2-0.062εt-3-0.0164εt-4+0.0029εt-5+εt.

Since the unconditional expected value of all innovations is 0, the unconditional expected value (or mean) of the response series is

E(yt)=1.667.

Input Arguments

collapse all

Autoregressive coefficients of the ARMA(p,q) model, specified as a numeric vector, cell vector of square, numeric matrices, or a LagOp lag operator polynomial object. If ar0 is a vector (numeric or cell), then the coefficient of yt is the identity. To specify a structural AR polynomial (i.e., the coefficient of yt is not the identity), use LagOp lag operator polynomials.

  • For univariate time series models, ar0 is a numeric vector, cell vector of scalars, or a one-dimensional LagOp lag operator polynomial. For vectors, ar0 has length p and the elements correspond to lagged responses composing the AR polynomial in difference-equation notation. That is, ar0(j) or ar0{j} is the coefficient of yt-j.

  • For numVars-dimensional time series models, ar0 is a cell vector of numVars-by-numVars numeric matrices or a numVars-dimensional LagOp lag operator polynomial. For cell vectors:

    • ar0 has length p.

    • ar0 and ma0 must contain numVars-by-numVars matrices.

    • The elements of ar0 correspond to the lagged responses composing the AR polynomial in difference equation notation. That is, ar0{j} is the coefficient matrix of yt-j.

    • Row k of an AR coefficient matrix contains the AR coefficients in the equation of the variable yk. Subsequently, column k must correspond to variable yk, and the column and row order of all autoregressive and moving average coefficients must be consistent.

  • For LagOp lag operator polynomials:

    • The first element of the Coefficients property corresponds to the coefficient of yt (to accommodate structural models). All other elements correspond to the coefficients of the subsequent lags in the Lags property.

    • To construct a univariate model in reduced form, specify 1 for the first coefficient. For numVars-dimensional multivariate models, specify eye(numVars) for the first coefficient.

    • When you work from a model in difference-equation notation, negate the AR coefficient of the lagged terms to construct the lag-operator polynomial equivalent. For example, consider yt=0.5yt10.8yt2+εt0.6εt1+0.08εt2. The model is in difference-equation notation. To convert to an MA model, enter the following into the command window.

      ma = arma2ma([0.5 -0.8], [-0.6 0.08]);

      The ARMA model in lag operator notation is (10.5L+0.8L2)yt=(10.6L+0.08L2)εt. The AR coefficients of the lagged responses are negated compared to the corresponding coefficients in difference-equation format. In this form, to obtain the same result, enter the following into the command window.

      ar0 = LagOp({1 -0.5 0.8});
      ma0 = LagOp({1 -0.6 0.08});
      ma = arma2ma(ar0, ma0);

It is a best practice for ar0 to constitute a stationary or unit-root stationary (integrated) time series model.

Moving average coefficients of the ARMA(p,q) model, specified as a numeric vector, cell vector of square, numeric matrices, or a LagOp lag operator polynomial object. If ma0 is a vector (numeric or cell), then the coefficient of εt is the identity. To specify a structural MA polynomial (i.e., the coefficient of εt is not the identity), use LagOp lag operator polynomials.

  • For univariate time series models, ma0 is a numeric vector, cell vector of scalars, or a one-dimensional LagOp lag operator polynomial. For vectors, ma0 has length q and the elements correspond to lagged innovations composing the AR polynomial in difference-equation notation. That is, ma0(j) or ma0{j} is the coefficient of εt-j.

  • For numVars-dimensional time series models, ma0 is a cell vector of numeric numVars-by-numVars numeric matrices or a numVars-dimensional LagOp lag operator polynomial. For cell vectors:

    • ma0 has length q.

    • ar0 and ma0 must both contain numVars-by-numVars matrices.

    • The elements of ma0 correspond to the lagged responses composing the AR polynomial in difference equation notation. That is, ma0{j} is the coefficient matrix of yt-j.

  • For LagOp lag operator polynomials:

    • The first element of the Coefficients property corresponds to the coefficient of εt (to accommodate structural models). All other elements correspond to the coefficients of the subsequent lags in the Lags property.

    • To construct a univariate model in reduced form, specify 1 for the first coefficient. For numVars-dimensional multivariate models, specify eye(numVars) for the first coefficient.

If the ARMA model is strictly an AR model, then specify [] or {}.

It is a best practice for ma0 to constitute an invertible time series model.

Maximum number of lag-term coefficients to return, specified as a positive integer.

If you specify 'numLags', then arma2ma truncates the output polynomial at a maximum of numLags lag terms, and then returns the remaining coefficients. As a result, the output vector has numLags elements or is at most a degree numLags LagOp lag operator polynomial.

By default, arma2ma determines the number of lag coefficients to return by the stopping criteria of mldivide.

Data Types: double

Output Arguments

collapse all

Lag-term coefficients of the truncated MA model approximation of the ARMA model, returned as a numeric vector, cell vector of square, numeric matrices, or a LagOp lag operator polynomial object. ma has numLags elements, or is at most a degree numLags LagOp lag operator polynomial.

The data types and orientations of ar0 and ma0 determine the data type and orientation of ma. If ar0 or ma0 are of the same data type or have the same orientation, then ma shares the common data type or orientation. If at least one of ar0 or ma0 is a LagOp lag operator polynomial, then ma is a LagOp lag operator polynomial. Otherwise, if at least one of ar0 or ma0 is a cell vector, then ma is a cell vector. If ar0 and ma0 are cell or numeric vectors and at least one is a row vector, then ma is a row vector.

If ma is a cell or numeric vector, then the order of the elements of ma corresponds to the order of the coefficients of the lagged innovations in difference-equation notation starting with the coefficient of εt-1. The resulting MA model is in reduced form.

If ma is a LagOp lag operator polynomial, then the order of the coefficients of ma corresponds to the order of the coefficients of the lagged innovations in lag operator notation starting with the coefficient of εt. If Θ0InumVars, then the resulting MA model is structural.

More About

collapse all

Difference-Equation Notation

A linear time series model written in difference-equation notation positions the present value of the response and its structural coefficient on the left side of the equation. The right side of the equation contains the sum of the lagged responses, present innovation, and lagged innovations with corresponding coefficients.

In other words, a linear time series written in difference-equation notation is

Φ0yt=c+Φ1yt1+...+Φpytp+Θ0εt+Θ1εt1+...+Θqεtq,

where

  • yt is a numVars-dimensional vector representing the responses of numVars variables at time t, for all t and for numVars ≥ 1.

  • εt is a numVars-dimensional vector representing the innovations at time t.

  • Φj is the numVars-by-numVars matrix of AR coefficients of the response yt-j, for j = 0,...,p.

  • Θk is the numVars-by-numVars matrix of MA coefficients of the innovation εt-k., k = 0,...,q.

  • c is the n-dimensional model constant.

  • Φ0 = Θ0 = InumVars, which is the numVars-dimensional identity matrix, for models in reduced form.

Lag Operator Notation

A time series model written in lag operator notation positions a p-degree lag operator polynomial on the present response on the left side of the equation. The right side of the equation contains the model constant and a q-degree lag operator polynomial on the present innovation.

In other words, a linear time series model written in lag operator notation is

Φ(L)yt=c+Θ(L)εt,

where

  • yt is a numVars-dimensional vector representing the responses of numVars variables at time t, for all t and for numVars ≥ 1.

  • Φ(L)=Φ0Φ1LΦ2L2...ΦpLp, which is the autoregressive, lag operator polynomial.

  • L is the back-shift operator, in other words, Ljyt=ytj.

  • Φj is the numVars-by-numVars matrix of AR coefficients of the response yt-j, for j = 0,...,p.

  • εt is a numVars-dimensional vector representing the innovations at time t.

  • Θ(L)=Θ0+Θ1L+Θ2L2+...+ΘqLq, which is the moving average, lag operator polynomial.

  • Θk is the numVars-by-numVars matrix of MA coefficients of the innovation εt-k., k = 0,...,q.

  • c is the numVars-dimensional model constant.

  • Φ0 = Θ0 = InumVars, which is the numVars-dimensional identity matrix, for models in reduced form.

When comparing lag operator notation to difference-equation notation, the signs of the lagged AR coefficients appear negated relative to the corresponding terms in difference-equation notation. The signs of the moving average coefficients are the same and appear on the same side.

For more details on lag operator notation, see Lag Operator Notation.

Tips

  • To accommodate structural ARMA models, specify the input arguments ar0 and ma0 as LagOp lag operator polynomials.

  • To access the cell vector of the lag operator polynomial coefficients of the output argument ma, enter toCellArray(ma).

Algorithms

  • The software computes the infinite-lag polynomial of the resulting MA model according to this equation in lag operator notation:

    yt=Φ1(L)Θ(L)εt

    where Φ(L)=j=0pΦjLj and Θ(L)=k=0qΘkLk.

  • arma2ma approximates the MA model coefficients whether ar0 and ma0 compose a stable polynomial (a polynomial that is stationary or invertible). To check for stability, use isStable.

    isStable requires a LagOp lag operator polynomial as input. For example, if ar0 is a vector, enter the following code to check ar0 for stationarity.

    ar0LagOp = LagOp([1 -ar0]);
    isStable(ar0LagOp)

    A 0 indicates that the polynomial is not stable.

    You can similarly check whether the MA approximation to the ARMA model (ma) is invertible.

References

[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] Hamilton, J. D. Time Series Analysis. Princeton, NJ: Princeton University Press, 1994.

[3] Lutkepohl, H. New Introduction to Multiple Time Series Analysis. Springer-Verlag, 2007.

Version History

Introduced in R2015a