www.gusucode.com > econ 案例源码程序 matlab代码 > econ/ConvertStructuralVARModelToVECModelUsingLagExample.m

    %% Convert Structural VAR Model to VEC Model Using Lag Operator Polynomials
% Consider converting the following structural VAR(2) model to a structural
% VEC(1) model.
%
% $$\left[ {\begin{array}{*{20}{c}}
% {0.54}&{ - 2.26}\\
% {1.83}&{0.86}
% \end{array}} \right]{y_t} = \left[ {\begin{array}{*{20}{c}}
% {0.32}&{ - 0.43}\\
% { - 1.31}&{0.34}
% \end{array}} \right]{y_{t - 1}} + \left[ {\begin{array}{*{20}{c}}
% {0.07}&{0.07}\\
% { - 0.01}&{ - 0.02}
% \end{array}} \right]{y_{t - 2}} + {\varepsilon _t}.$$
%
%%
% Specify the autoregressive coefficient matrices $A_0$, $A_1$, and $A_2$.

% Copyright 2015 The MathWorks, Inc.

A0 = [0.54 -2.26;
      1.83  0.86];
A1 = [0.32 -0.43
     -1.31  0.34];
A2 = [0.07  0.07
     -0.01 -0.02];
%%
% Pack the matrices into separate cells of a 3 dimensional cell vector.  Put |A0|
% into the first cell, |A1| into the second cell, and |A2| into the third
% cell. Negate the coefficients corresponding to all nonzero lag terms.
VARCoeff = {A0; -A1; -A2};
%%
% Create a lag operator polynomial that encompasses the autoregressive
% terms in the VAR(2) model.
VAR = LagOp(VARCoeff)
%%
% |VAR| is a |LagOp| lag operator polynomial.  |VAR| specifies the VAR(2) 
% model in lag operator notation, as in this equation
%
% $$(A_0 - A_1L - A_2L^2)y_t = \varepsilon_t.$$
%
% $L$ is the lag operator.  If you expand the quantity and solve for $y_t$,
% then the result is the VAR(2) model in difference-equation notation.
%%
% Compute the coefficient matrices of $\Delta y_{t}$ and $\Delta y_{t}$,
% and the error-correction coefficient matrix of the equivalent VEC(1)
% model.
[VEC,C] = var2vec(VAR)
%%
% |VAR.Coefficients{0}| is $A_0$, the coefficient matrix of $y_t$.
% Subsequent elements in |VAR.Coefficients| correspond to subsequent lags
% in |VAR.Lags|.
%%
% |VEC| is the VEC(1) equivalent of the VAR(2) model.  Because the VAR(2)
% model is structural, the equivalent VEC(1) model is as well.  That is,
% |VEC.Coefficients{0}| is the coefficient of $\Delta y_{t}$, and
% subsequent elements correspond to subsequent lags in |VEC.Lags|.
%%
% Display the VEC model coefficients in difference-equation notation.
B0 = VEC.Coefficients{0}
B1 = -VEC.Coefficients{1}
C
%%
% The resulting VEC(1) model is
%
% $$\left[ {\begin{array}{*{20}{c}}
% {0.54}&{ - 2.26}\\
% {1.83}&{0.86}
% \end{array}} \right]\Delta {y_t} = \left[ {\begin{array}{*{20}{c}}
% {-0.07}&{-0.07}\\
% {0.01}&{0.02}
% \end{array}} \right]\Delta {y_{t - 1}} + \left[ {\begin{array}{*{20}{c}}
% { - 0.15}&{1.9}\\
% { - 3.15}&{ - 0.54}
% \end{array}} \right]{y_{t - 1}} + {\varepsilon _t}.$$
%
%%
% Alternatively, reflect the lag operator polynomial |VEC| around lag
% 0 to obtain the difference-equation notation coefficients.
DiffEqnCoeffs = reflect(VEC);
B = toCellArray(DiffEqnCoeffs);
B{1} == B0
B{2} == B1
%%
% Both methods produce the same coefficients.