1) stock parameters for sensitivity analysis purposes;

2) corrected bugs in saving figures 
(fignumber in figure names; and check for subplotnum>0)

git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@730 ac1d8469-bf42-47a9-8791-bf33cf982152
time-shift
ratto 2006-05-04 08:49:44 +00:00
parent f873b4e28f
commit 72ea3ac220
1 changed files with 52 additions and 30 deletions

View File

@ -18,6 +18,7 @@ else
MhDirectoryName = CheckPath('prior');
end
MAX_nirfs = ceil(options_.MaxNumberOfBytes/(options_.irf*length(oo_.steady_state)*M_.exo_nbr)/8)+50;
MAX_nruns = ceil(options_.MaxNumberOfBytes/(npar+2)/8);
if strcmpi(type,'posterior')
load([ MhDirectoryName '/' M_.fname '_mh_history'])
@ -27,16 +28,23 @@ else% type = 'prior'
NumberOfDraws = 500;
end
B = min([round(.5*NumberOfDraws),500]); options_.B = B;
try delete([MhDirectoryName '/' M_.fname '_IRFs*']);
try delete([MhDirectoryName '\' M_.fname '_IRFs*']);
catch disp('No _IRFs files to be deleted!')
end
irun = 0;
irun2 = 0;
NumberOfIRFfiles = 1;
ifil2 = 1;
if strcmpi(type,'posterior')
h = waitbar(0,'Bayesian (posterior) IRFs...');
else
h = waitbar(0,'Bayesian (prior) IRFs...');
end
if B <= MAX_nruns
stock_param = zeros(B, npar);
else
stock_param = zeros(MAX_nruns, npar);
end
if B >= MAX_nirfs
stock_irf = zeros(options_.irf,M_.endo_nbr,M_.exo_nbr,MAX_nirfs);
else
@ -44,7 +52,9 @@ else
end
for b=1:B
irun = irun+1;
irun2 = irun2+1;
deep = GetOneDraw(type);
stock_param(irun2,:) = deep;
set_parameters(deep);
dr = resol(oo_.steady_state,0);
SS(M_.exo_names_orig_ord,M_.exo_names_orig_ord) = M_.Sigma_e+1e-14*eye(M_.exo_nbr);
@ -53,12 +63,12 @@ for b=1:B
if SS(i,i) > 1e-13
y=irf(dr,SS(M_.exo_names_orig_ord,i), options_.irf, options_.drop,options_.replic,options_.order);
if options_.relative_irf
y = 100*y/cs(i,i);
y = 100*y/cs(i,i);
end
for j = 1:M_.endo_nbr
if max(y(j,:)) - min(y(j,:)) > 1e-10
stock_irf(:,j,i,irun) = transpose(y(j,:));
end
if max(y(j,:)) - min(y(j,:)) > 1e-10
stock_irf(:,j,i,irun) = transpose(y(j,:));
end
end
end
end
@ -70,9 +80,19 @@ for b=1:B
NumberOfIRFfiles = NumberOfIRFfiles+1;
irun = 0;
end
if irun2 > MAX_nruns | b == B
if b == B
stock_param = stock_param(1:irun2,:);
end
stock = stock_param;
save([MhDirectoryName '/' M_.fname '_param_irf' int2str(ifil2)],'stock');
ifil2 = ifil2 + 1;
irun2 = 1;
end
waitbar(b/B,h);
end
NumberOfIRFfiles = NumberOfIRFfiles-1;
ifil2 = ifil2-1;
close(h);
ReshapeMatFiles('irf')
@ -115,7 +135,7 @@ for file = 1:NumberOfIRFfiles
for k = 1:size(STOCK_IRF,1)
kk = k+kdx;
[MeanIRF(kk,j,i),MedianIRF(kk,j,i),VarIRF(kk,j,i),HPDIRF(kk,:,j,i),DistribIRF(kk,:,j,i)] = ...
posterior_moments(squeeze(STOCK_IRF(k,SelecVariables(j),i,:)),0);
posterior_moments(squeeze(STOCK_IRF(k,SelecVariables(j),i,:)),0);
end
end
end
@ -145,13 +165,13 @@ if options_.TeX
titTeX(M_.exo_names_orig_ord,:) = M_.exo_names_tex;
end
%%
figunumber = 0;
subplotnum = 0;
for i=1:M_.exo_nbr
NAMES = [];
if options_.TeX
TEXNAMES = [];
end
figunumber = 0;
for j=1:nvar
if max(abs(MeanIRF(:,j,i))) > 10^(-6)
subplotnum = subplotnum+1;
@ -173,7 +193,7 @@ for i=1:M_.exo_nbr
plot([1 options_.irf],[0 0],'-r','linewidth',0.5);
hold on
for k = 1:9
plot(1:options_.irf,DistribIRF(:,k,j,i),'-g','linewidth',0.5)
plot(1:options_.irf,DistribIRF(:,k,j,i),'-g','linewidth',0.5)
end
plot(1:options_.irf,MeanIRF(:,j,i),'-k','linewidth',1)
xlim([1 options_.irf]);
@ -181,34 +201,36 @@ for i=1:M_.exo_nbr
name = deblank(varlist(j,:));
NAMES = strvcat(NAMES,name);
if options_.TeX
texname = deblank(varlist_TeX(j,:));
TEXNAMES = strvcat(TEXNAMES,['$' texname '$']);
texname = deblank(varlist_TeX(j,:));
TEXNAMES = strvcat(TEXNAMES,['$' texname '$']);
end
title(name,'Interpreter','none')
end
if subplotnum == MaxNumberOfPlotPerFigure | j == nvar
eval(['print -depsc2 ' DirectoryName '/' M_.fname '_Bayesian_IRF_' deblank(tit(i,:))]);
eval(['print -dpdf ' DirectoryName '/' M_.fname '_Bayesian_IRF_' deblank(tit(i,:))]);
saveas(hh,[DirectoryName '/' M_.fname '_Bayesian_IRF_' deblank(tit(i,:)) '.fig']);
if subplotnum == MaxNumberOfPlotPerFigure | (j == nvar & subplotnum>0)
figunumber = figunumber+1;
set(hh,'visible','on')
eval(['print -depsc2 ' DirectoryName '/' M_.fname '_Bayesian_IRF_' deblank(tit(i,:)) '_' int2str(figunumber)]);
eval(['print -dpdf ' DirectoryName '/' M_.fname '_Bayesian_IRF_' deblank(tit(i,:)) '_' int2str(figunumber)]);
saveas(hh,[DirectoryName '/' M_.fname '_Bayesian_IRF_' deblank(tit(i,:)) '_' int2str(figunumber) '.fig']);
set(hh,'visible','off')
if options_.nograph, close(hh), end
if options_.TeX
fprintf(fidTeX,'\\begin{figure}[H]\n');
for jj = 1:size(TEXNAMES,1)
fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{%s}\n'],deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
end
fprintf(fidTeX,'\\centering \n');
fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Bayesian_IRF_%s}\n',M_.fname,deblank(tit(i,:)));
if options_.relative_irf
fprintf(fidTeX,['\\caption{Bayesian relative IRF.}']);
else
fprintf(fidTeX,'\\caption{Bayesian IRF.}');
end
fprintf(fidTeX,'\\label{Fig:BayesianIRF:%s}\n',deblank(tit(i,:)));
fprintf(fidTeX,'\\end{figure}\n');
fprintf(fidTeX,' \n');
fprintf(fidTeX,'\\begin{figure}[H]\n');
for jj = 1:size(TEXNAMES,1)
fprintf(fidTeX,['\\psfrag{%s}[1][][0.5][0]{%s}\n'],deblank(NAMES(jj,:)),deblank(TEXNAMES(jj,:)));
end
fprintf(fidTeX,'\\centering \n');
fprintf(fidTeX,'\\includegraphics[scale=0.5]{%s_Bayesian_IRF_%s}\n',M_.fname,deblank(tit(i,:)));
if options_.relative_irf
fprintf(fidTeX,['\\caption{Bayesian relative IRF.}']);
else
fprintf(fidTeX,'\\caption{Bayesian IRF.}');
end
fprintf(fidTeX,'\\label{Fig:BayesianIRF:%s}\n',deblank(tit(i,:)));
fprintf(fidTeX,'\\end{figure}\n');
fprintf(fidTeX,' \n');
end
subplotnum = 0;
figunumber = figunumber+1;
end
end% loop over selected endo_var
end% loop over exo_var
@ -217,4 +239,4 @@ if options_.TeX
fprintf(fidTeX,'%% End of TeX file.\n');
fclose(fidTeX);
end
fprintf('MH: Posterior IRFs, done!\n');
fprintf('MH: Posterior IRFs, done!\n');