The Excel Sheet "IRF" displays the wrong values for the impulse response function in case of a structural identification scheme (IRFt==4 in my case) if the shock labels do not start for the first series (column c in the first screenshot). Screenshot 2 shows the computed IRF in Matlab and screenshot 3 the excel output.
I reckon the error occurs in a loop the function excelrecord4fcn.m.
for ii=1:n
tempcell={};
% loop over shocks (horizontal dimension)
for jj=1:identified
% create cell of IRF record for variable ii in response to shock jj
% if a sign restriction identification scheme has been used, use the structural shock labels
if IRFt==4||IRFt==5||IRFt==6
temp=['response of ' endo{ii,1} ' to ' strctident.signreslabels_shocks{jj,1} ' shocks'];
else
temp=['response of ' endo{ii,1} ' to ' endo{jj,1} ' shocks'];
end
irf_ij=[temp {''} {''} {''};{''} {''} {''} {''};{''} {'lw. bound'} {'median'} {'up. bound'};num2cell((1:IRFperiods)') num2cell((irf_estimates{ii,jj})')];
tempcell=[tempcell irf_ij vertspace];
end
jj=1:identified equals 1:1 in my case since the variable identified is identified=size(strctident.signreslabels_shocks,1) which is just one label in my case. So irf_ij computes the first coloum of irf_estimates( nxn matrix with n=number of endogenous variable=5 in my case) although in my case the third column contains the right IRFs. Screeshot four and five show IRF_estimates 1,1 and 1,3.
Hence, Excel output is only correct if the first x shocks are specified and named in the data sheet.
The Excel Sheet "IRF" displays the wrong values for the impulse response function in case of a structural identification scheme (IRFt==4 in my case) if the shock labels do not start for the first series (column c in the first screenshot). Screenshot 2 shows the computed IRF in Matlab and screenshot 3 the excel output. I reckon the error occurs in a loop the function excelrecord4fcn.m.
for ii=1:n tempcell={}; % loop over shocks (horizontal dimension) for jj=1:identified % create cell of IRF record for variable ii in response to shock jj % if a sign restriction identification scheme has been used, use the structural shock labels if IRFt==4||IRFt==5||IRFt==6 temp=['response of ' endo{ii,1} ' to ' strctident.signreslabels_shocks{jj,1} ' shocks']; else temp=['response of ' endo{ii,1} ' to ' endo{jj,1} ' shocks']; end irf_ij=[temp {''} {''} {''};{''} {''} {''} {''};{''} {'lw. bound'} {'median'} {'up. bound'};num2cell((1:IRFperiods)') num2cell((irf_estimates{ii,jj})')]; tempcell=[tempcell irf_ij vertspace]; end
jj=1:identified equals 1:1 in my case since the variable identified is identified=size(strctident.signreslabels_shocks,1) which is just one label in my case. So irf_ij computes the first coloum of irf_estimates( nxn matrix with n=number of endogenous variable=5 in my case) although in my case the third column contains the right IRFs. Screeshot four and five show IRF_estimates 1,1 and 1,3. Hence, Excel output is only correct if the first x shocks are specified and named in the data sheet.