Documentation Center

  • Trials
  • Product Updates


Vector autoregression (VAR) to vector error-correction model (VEC)


[VEC,C] = vartovec(VAR)


Given a vector autoregression (VAR) model, [VEC,C] = vartovec(VAR) converts VAR to an equivalent vector error-correction (VEC) model. A VAR(p) model of a time series y(t) has the form:

The equivalent VEC(q) model, with q = p − 1, has the form:

where z(t) = y(t) − y(t − 1) and C is the error-correction coefficient.

Input Arguments


The VAR(p) model to be converted to an equivalent VEC(q) model, with q = p − 1. VAR is specified by a (p + 1)-element cell vector of square matrices {A0 A1 ... Ap} associated with coefficients at lags 0, 1, ..., p. To represent a univariate model, VAR may be specified as a double-precision vector. Alternatively, VAR may be specified as a LagOp object or a vgxset object.

Output Arguments


The VEC representation of the input VAR model. The data type and orientation of VEC is consistent with that of VAR


The error-correction coefficient. C is a square matrix the same size as the coefficients of the associated VEC.


Convert a VAR Model to a VEC Model

Specify a VAR(2) model of time series yt:

The coefficients are:

Enter the coefficients from the difference equation directly into a cell array:

VAR = {eye(2)  [-0.1 0.3 ; 0.2 -0.1] ...
      [-0.2 0.8 ; -0.7 -0.4]};

Use vartovec to convert the VAR(2) model to an equivalent VEC(1) model:

[VEC, C] = vartovec(VAR);

Since the original VAR model was specified as a cell array, the VEC model is also a cell array. The error correction coefficient argument is a matrix.

You can express the same VAR(2) model as a lag operator polynomial:

Specify the model with the LagOp constructor:

VAR_LAG = LagOp({eye(2)  [0.1 -0.3 ; -0.2 0.1] ...
                [0.2 -0.8 ; 0.7 0.4]});

Use vartovec to convert the VAR(2) model to an equivalent VEC(1) model:

[VEC_LAG, C_LAG] = vartovec(VAR_LAG)

    2-D Lag Operator Polynomial:
        Coefficients: [Lag-Indexed Cell Array with 2 Non-Zero Coefficients]
                Lags: [0 1]
              Degree: 1
           Dimension: 2


   -1.3000    1.1000
   -0.5000   -1.5000

Since the input model is a lag operator polynomial the output model is also is a lag operator polynomial. See Specify Lag Operator Polynomials for more information on lag operator polynomials.

More About

expand all


  • Written as a polynomial in the lag operator Ly(t) = y(t − 1), a VAR(p) model has the form:

    The equivalent VEC(q) model has the form:

    Thus, if VAR is specified as a LagOp object A, coefficients of lagged values of y(t) must be represented by the opposite of their values in standard difference-equation form, and the output VEC will follow a similar sign convention

  • If VAR is specified as a vgxset object, the conversion involves only the AR0, AR, and nAR components of the model. Other model components are unaffected.


[1] Hamilton, J. D. "Time Series Analysis." Princeton, NJ: Princeton University Press, 1994.

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

See Also

| |

Was this topic helpful?