MATLAB Examples

Generate VEC Model Impulse Responses

This example shows how to generate impulse responses from this VEC(3) model (docid:econ_ug.brz_lcd, Ch. 6.7):

$$\begin{array}{*{20}{rcl}} \Delta {y_t} &=& \left[ {\begin{array}{*{20}{c}}
{0.24}&{ - 0.08}\\
0&{ - 0.31}
\end{array}} \right]\Delta {y_{t - 1}} + \left[ {\begin{array}{*{20}{c}}
0&{ - 0.13}\\
0&{ - 0.37}
\end{array}} \right]\Delta {y_{t - 2}} + \left[ {\begin{array}{*{20}{c}}
{0.20}&{ - 0.06}\\
0&{ - 0.34}
\end{array}} \right]\Delta {y_{t - 3}}\\ &+& \left[ \begin{array}{*{20}{c}}
{ - 0.07}\\{0.17}\end{array}\right]\left[\begin{array}{*{20}{c}}{1}&{ -4}\end{array}
\right]{y_{t - 1}} + {\varepsilon _t}\end{array}$$

$y_t$ is a 2 dimensional time series. $\Delta y_{t} = y_{t} - y_{t-1}$. $\varepsilon_t$ is a 2 dimensional series of mean zero, Gaussian innovations with covariance matrix

$$\Sigma = 10^{-5}\left[ {\begin{array}{*{20}{rcl}}
{2.61}&{ - 0.15}\\
-0.15&{  2.31}
\end{array}} \right].$$

Specify the VEC(3) model autoregressive coefficient matrices $B_1$, $B_2$, and $B_3$, the error-correction coefficient matrix $C$, and the innovations covariance matrix $\Sigma$.

B1    = [0.24 -0.08;
         0.00 -0.31];
B2    = [0.00 -0.13;
         0.00 -0.37];
B3    = [0.20 -0.06;
         0.00 -0.34];
C     = [-0.07; 0.17]*[1 -4];
Sigma = [ 2.61 -0.15;
         -0.15  2.31]*1e-5;

Compute the autoregressive coefficient matrices that compose the VAR(4) model that is equivalent to the VEC(3) model.

B = {B1; B2; B3};
A = vec2var(B,C);

A is a 4-by-1 cell vector containing the 2-by-2, VAR(4) model autoregressive coefficient matrices. Cell A{j} contains the coefficient matrix for lag j in difference-equation notation. The VAR(4) is in terms of $y_t$ rather than $\Delta y_t$.

Compute the forecast error impulse responses (FEIR) for the VAR(4) representation. That is, accept the default identity matrix for the innovations covariance. Specify to return the impulse responses for the first 20 periods.

numObs = 20;
IR = cell(2,1); % Preallocation
IR{1} = armairf(A,[],'NumObs',numObs);

To compute impulse responses, armairf filters an innovation standard deviation shock from one series to itself and all other series. In this case, the magnitude of the shock is 1 for each series.

Compute orthogonalized impulse responses by supplying the innovations covariance matrix. Specify to return the impulse responses for the first 20 periods.

IR{2} = armairf(A,[],'InnovCov',Sigma,'NumObs',numObs);

For orthogonalized impulse responses, the innovations covariance governs the magnitude of the filtered shock.

Plot the FEIR and the orthogonalized impulse responses for all series.

type = {'FEIR','Orthogonalized'};
for j = 1:2;
    figure;
    imp = IR{j};
    subplot(2,2,1);
    plot(imp(:,1,1))
    title(sprintf('%s: y_{1,t}',type{j}));
    ylabel('y_{1,t}');
    xlabel('Period');
    subplot(2,2,2);
    plot(imp(:,1,2))
    title(sprintf('%s: y_{1,t} \\rightarrow y_{2,t}',type{j}));
    ylabel('y_{2,t}');
    xlabel('Period');
    subplot(2,2,3);
    plot(imp(:,2,1))
    title(sprintf('%s: y_{2,t} \\rightarrow y_{1,t}',type{j}));
    ylabel('y_{1,t}');
    xlabel('Period');
    subplot(2,2,4);
    plot(imp(:,2,2))
    title(sprintf('%s: y_{2,t}',type{j}));
    ylabel('y_{2,t}');
    xlabel('Period');
end

Because the innovations covariance is almost diagonal, the FEIR and orthogonalized impulse responses have similar dynamic behaviors (docid:econ_ug.brz_lcd, Ch. 6.7). However, the scale of the plots are markedly different.