Home > . > irf.m

irf

PURPOSE ^

SYNOPSIS ^

function y = irf(dr, e1, long, drop, replic, iorder)

DESCRIPTION ^

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function y = irf(dr, e1, long, drop, replic, iorder)
0002   global M_ oo_ options_
0003 
0004   temps = repmat(dr.ys,1,M_.maximum_lag);
0005   y    = 0;
0006   
0007   if iorder == 1
0008     y1 = repmat(dr.ys,1,long);
0009     ex2 = zeros(long,M_.exo_nbr);
0010     ex2(1,:) = e1';
0011     y2 = simult_(temps,dr,ex2,iorder);
0012     y = y2(:,M_.maximum_lag+1:end)-y1;
0013   else
0014     % eliminate shocks with 0 variance
0015     i_exo_var = setdiff([1:M_.exo_nbr],find(diag(M_.Sigma_e) == 0 ));
0016     nxs = length(i_exo_var);
0017     ex1 = zeros(long+drop,M_.exo_nbr);
0018     ex2 = ex1;
0019     chol_S = chol(M_.Sigma_e(i_exo_var,i_exo_var));
0020     for j = 1: replic
0021       randn('seed',j);
0022       ex1(:,i_exo_var) = randn(long+drop,nxs)*chol_S;
0023       ex2 = ex1;
0024       ex2(drop+1,:) = ex2(drop+1,:)+e1';   
0025       y1 = simult_(temps,dr,ex1,iorder);
0026       y2 = simult_(temps,dr,ex2,iorder);
0027       y = y+(y2(:,M_.maximum_lag+drop+1:end)-y1(:,M_.maximum_lag+drop+1:end));
0028     end
0029     y=y/replic;
0030   end

Generated on Fri 16-Jun-2006 09:09:06 by m2html © 2003