Various bug corrections & new field options_.B specifying the number of draws from the posterior or prior distributions used to build the IRFs.

git-svn-id: https://www.dynare.org/svn/dynare/dynare_v4@684 ac1d8469-bf42-47a9-8791-bf33cf982152
time-shift
adjemian 2006-03-17 11:20:25 +00:00
parent dcf7e1938e
commit 7b4807632c
4 changed files with 23 additions and 56 deletions

View File

@ -21,12 +21,12 @@ MAX_nirfs = ceil(options_.MaxNumberOfBytes/(options_.irf*length(oo_.steady_state
if strcmpi(type,'posterior')
load([ MhDirectoryName '/' M_.fname '_mh_history'])
TotalNumberOfMhDraws = sum(record.MhDraws(:,1));
NumberOfDraws = TotalNumberOfMhDraws-floor(options_.mh_drop*TotalNumberOfMhDraws);
TotalNumberOfMhDraws = sum(record.MhDraws(:,1));
NumberOfDraws = TotalNumberOfMhDraws-floor(options_.mh_drop*TotalNumberOfMhDraws);
else% type = 'prior'
NumberOfDraws = 500;
end
B = min([round(.5*NumberOfDraws),500]);
B = min([round(.5*NumberOfDraws),500]); options_.B = B;
try delete([MhDirectoryName '/' M_.fname '_IRFs*']);
catch disp('No _IRFs files to be deleted!')
end
@ -75,41 +75,7 @@ end
ifil = ifil-1;
close(h);
%% Now I reshape the _irf files...
IRFfiles = dir([MhDirectoryName '/' M_.fname '_irf*']);
NumberOfIRFfiles = length(IRFfiles);
if NumberOfIRFfiles>1
NumberOfPeriodsPerIRFfiles = ceil(options_.irf/NumberOfIRFfiles);
reste = options_.irf-NumberOfPeriodsPerIRFfiles*(NumberOfIRFfiles-1);
idx = 0;
jdx = 0;
for f1=1:NumberOfIRFfiles-1
STOCK_IRF = zeros(NumberOfPeriodsPerIRFfiles,M_.endo_nbr,M_.exo_nbr,B);
for f2 = 1:NumberOfIRFfiles
load([MhDirectoryName '/' M_.fname '_irf' int2str(f2)]);
STOCK_IRF(:,:,:,idx+1:idx+size(stock_irf,4)) = stock_irf(jdx+1:jdx+NumberOfPeriodsPerIRFfiles,:,:,:);
idx = idx+size(stock_irf,4);
end
save([MhDirectoryName '/' M_.fname '_IRFs' int2str(f1)],'STOCK_IRF');
jdx = jdx + NumberOfPeriodsPerIRFfiles;
idx = 0;
end
STOCK_IRF = zeros(reste,M_.endo_nbr,M_.exo_nbr,B);
for f2 = 1:NumberOfIRFfiles
load([MhDirectoryName '/' M_.fname '_irf' int2str(f2)]);
STOCK_IRF(:,:,:,idx+1:idx+size(stock_irf,4)) = stock_irf(jdx+1:jdx+reste,:,:,:);
idx = idx+size(stock_irf,4);
end
save([MhDirectoryName '/' M_.fname '_IRFs' int2str(NumberOfIRFfiles)],'STOCK_IRF');
else
load([MhDirectoryName '/' M_.fname '_irf1']);
STOCK_IRF = stock_irf;
save([MhDirectoryName '/' M_.fname '_IRFs' int2str(1)],'STOCK_IRF');
end
for file = 1:NumberOfIRFfiles
delete([MhDirectoryName '/' M_.fname '_irf' int2str(file) '.mat'])
end
%% ... Done!
ReshapeMatFiles('irf')
varlist = options_.varlist;
if isempty(varlist)

View File

@ -40,29 +40,29 @@ function ReshapeMatFiles(type)
TYPEsize = [ M_.endo_nbr , options_.forecast ];
TYPEarray = 3;
otherwise
disp('ReshapeMatFiles :: Unknown format!')
disp('ReshapeMatFiles :: Unknown argument!')
return
end
TYPEfiles = dir([MhDirectoryName M_.fname '_' type '*']);
NumberOfTYPEfiles = length(TYPEfiles);
B = options_.B;
switch TYPEarray
case 4
if NumberOfTYPEfiles>1
if NumberOfTYPEfiles > 1
NumberOfPeriodsPerTYPEfiles = ceil(TYPEsize(1)/NumberOfTYPEfiles);
reste = TYPEsize(1)-NumberOfPeriodsPerTYPEfiles*(NumberOfTYPEfiles-1);
idx = 0;
jdx = 0;
for f1=1:NumberOfTYPEfiles-1
eval(['STOCK_' CAPtype ' = zeros(NumberOfPeriodsPerTYPEfiles,TYPEsize(2),TYPEsize(3),B);'])
for f2 = 1:NumberOfIRFfiles
for f2 = 1:NumberOfTYPEfiles
load([MhDirectoryName M_.fname '_' type int2str(f2)]);
eval(['STOCK_' CAPtype '(:,:,:,idx+1:idx+size(stock_ ' type ',4))=stock_' type ...
'(jdx+1:jdx+NumberOfPeriodsPerTYPEfiles,:,:,:);'])
eval(['STOCK_' CAPtype '(:,:,:,idx+1:idx+size(stock_' type ',4))=stock_' type '(jdx+1:jdx+NumberOfPeriodsPerTYPEfiles,:,:,:);'])
eval(['idx = idx + size(stock_' type ',4);'])
end
eval(['STOCK_' CAPtype ' = sort(STOCK_ ' CAPtype ',4);'])
eval(['STOCK_' CAPtype ' = sort(STOCK_' CAPtype ',4);'])
save([MhDirectoryName M_.fname '_' CAPtype 's' int2str(f1)],['STOCK_' CAPtype]);
jdx = jdx + NumberOfPeriodsPerTYPEfiles;
idx = 0;
@ -70,17 +70,17 @@ function ReshapeMatFiles(type)
eval(['STOCK_' CAPtype ' = zeros(reste,TYPEsize(2),TYPEsize(3),B);'])
for f2 = 1:NumberOfTYPEfiles
load([MhDirectoryName M_.fname '_' type int2str(f2)]);
eval(['STOCK_' CAPtype '(:,:,:,idx+1:idx+size(stock_ ' type ',4))=stock_' type '(jdx+1:jdx+reste,:,:,:);'])
eval(['STOCK_' CAPtype '(:,:,:,idx+1:idx+size(stock_' type ',4))=stock_' type '(jdx+1:jdx+reste,:,:,:);'])
eval(['idx = idx + size(stock_' type ',4);'])
end
eval(['STOCK_' CAPtype ' = sort(STOCK_ ' CAPtype ',4);'])
eval(['STOCK_' CAPtype ' = sort(STOCK_' CAPtype ',4);'])
save([MhDirectoryName M_.fname '_' CAPtype 's' int2str(NumberOfTYPEfiles)],['STOCK_' CAPtype]);
else
load([MhDirectoryName M_.fname '_' type '1']);
eval(['STOCK_' CAPtype ' = sort(stock_' type ',4);'])
save([MhDirectoryName M_.fname '_' CAPtype 's' int2str(1)],['STOCK_' CAPtype ]);
end
for file = 1:NumberOfIRFfiles
for file = 1:NumberOfTYPEfiles
delete([MhDirectoryName M_.fname '_' type int2str(file) '.mat'])
end
case 3
@ -89,14 +89,14 @@ function ReshapeMatFiles(type)
reste = TYPEsize(2)-NumberOfPeriodsPerTYPEfiles*(NumberOfTYPEfiles-1);
idx = 0;
jdx = 0;
for f1=1:NumberOfIRFfiles-1
for f1=1:NumberOfTYPEfiles-1
eval(['STOCK_' CAPtype ' = zeros(TYPEsize(1),NumberOfPeriodsPerTYPEfiles,B);'])
for f2 = 1:NumberOfIRFfiles
for f2 = 1:NumberOfTYPEfiles
load([MhDirectoryName M_.fname '_' type int2str(f2)]);
eval(['STOCK_' CAPtype '(:,:,idx+1:idx+size(stock_ ' type ',3))=stock_' type '(:,jdx+1:jdx+NumberOfPeriodsPerTYPEfiles,:);'])
eval(['idx = idx + size(stock_' type ',3);'])
end
eval(['STOCK_' CAPtype ' = sort(STOCK_ ' CAPtype ',3);'])
eval(['STOCK_' CAPtype ' = sort(STOCK_' CAPtype ',3);'])
save([MhDirectoryName M_.fname '_' CAPtype 's' int2str(f1)],['STOCK_' CAPtype]);
jdx = jdx + NumberOfPeriodsPerTYPEfiles;
idx = 0;
@ -104,10 +104,10 @@ function ReshapeMatFiles(type)
eval(['STOCK_' CAPtype ' = zeros(TYPEsize(1),reste,B);'])
for f2 = 1:NumberOfTYPEfiles
load([MhDirectoryName M_.fname '_' type int2str(f2)]);
eval(['STOCK_' CAPtype '(:,:,idx+1:idx+size(stock_ ' type ',3))=stock_' type '(:,jdx+1:jdx+reste,:);'])
eval(['STOCK_' CAPtype '(:,:,idx+1:idx+size(stock_' type ',3))=stock_' type '(:,jdx+1:jdx+reste,:);'])
eval(['idx = idx + size(stock_' type ',3);'])
end
eval(['STOCK_' CAPtype ' = sort(STOCK_ ' CAPtype ',3);'])
eval(['STOCK_' CAPtype ' = sort(STOCK_' CAPtype ',3);'])
save([MhDirectoryName M_.fname '_' CAPtype 's' int2str(NumberOfTYPEfiles)],['STOCK_' CAPtype]);
else
load([MhDirectoryName M_.fname '_' type '1']);
@ -115,6 +115,6 @@ function ReshapeMatFiles(type)
save([MhDirectoryName M_.fname '_' CAPtype 's' int2str(1)],['STOCK_' CAPtype ]);
end
for file = 1:NumberOfTYPEfiles
delete([MhDirectoryName M_.fname '_' type ' int2str(file) '.mat'])
delete([MhDirectoryName M_.fname '_' type int2str(file) '.mat'])
end
end

View File

@ -689,8 +689,9 @@ if (any(bayestopt_.pshape >0 ) & options_.mh_replic) | ...
%%
GetPosteriorParametersStatistics;
PlotPosteriorDistributions;
metropolis_draw(1);
if options_.bayesian_irf
PosteriorIRF;
PosteriorIRF('posterior');
end
return

View File

@ -9,8 +9,8 @@ function xparams=metropolis_draw(init)
ncn = estim_params_.ncn;
np = estim_params_.np ;
npar = nvx+nvn+ncx+ncn+np;
DirectoryName = CheckPath('metropolis');
fname = [ DirectoryName '/' M_.fname];
MhDirectoryName = CheckPath('metropolis');
fname = [ MhDirectoryName '/' M_.fname];
load([ fname '_mh_history']);
FirstMhFile = record.KeepedDraws.FirstMhFile;
FirstLine = record.KeepedDraws.FirstLine;