dynare/matlab/posterior_distribution.m

72 lines
2.5 KiB
Matlab

function [borneinf,bornesup,x1,x2,f1,f2,top,nam,texnam] = ...
posterior_distribution(indx,number_of_mh_files,first_mh_file,first_line,...
number_of_blocks,number_of_simulations,...
number_of_simulations_per_file,TeX);
% stephane.adjemian@cepremap.cnrs.fr [07-15-2004]
global M_ bayestopt_ estim_params_ options_
number_of_grid_points = 2^9; % 2^9 = 512 !... Must be a power of two.
bandwidth = 0; % Rule of thumb optimal bandwidth parameter.
kernel_function = 'gaussian'; % Gaussian kernel for Fast Fourrier Transform approximaton.
mcsimulations = zeros(number_of_simulations,1);
if number_of_blocks == 1
EndOfFile = number_of_simulations_per_file(first_mh_file+1)-first_line+1;
instr = [M_.fname '_mh' int2str(first_mh_file)];
eval(['load ' instr]);
clear post2 logpo2;
mcsimulations(1:EndOfFile) = x2(first_line:end,indx);
OldEndOfFile = EndOfFile;
for f = first_mh_file+1:number_of_mh_files
NewEndOfFile = number_of_simulations_per_file(f+1);
instr = [M_.fname '_mh' int2str(f)];
eval(['load ' instr]);
clear post2 logpo2;
mcsimulations(OldEndOfFile+1:OldEndOfFile+NewEndOfFile) = x2(:,indx);
OldEndOfFile = OldEndOfFile + NewEndOfFile;
end
clear x2;
else
EndOfFile = number_of_simulations_per_file(first_mh_file+1)-first_line+1;
NewStartLine = 0;
inst = [M_.fname '_mh' int2str(first_mh_file)];
for b = 1:number_of_blocks
instr = [inst '_blck' int2str(b)];
eval(['load ' instr]);
clear post2 logpo2;
mcsimulations(NewStartLine+1:NewStartLine+EndOfFile,1) = x2(first_line:end,indx);
NewStartLine = NewStartLine + EndOfFile;
end
for f = first_mh_file+1:number_of_mh_files
EndOfFile = number_of_simulations_per_file(f+1);
inst = [M_.fname '_mh' int2str(f)];
for B = 1:number_of_blocks
instr = [inst '_blck' int2str(b)];
eval(['load ' instr]);
clear post2 logpo2;
mcsimulations(NewStartLine+1:NewStartLine+EndOfFile,1) = x2(:,indx);
NewStartLine = NewStartLine + EndOfFile;
end
end
clear x2;
end
[nam,texnam] = get_the_name(indx,TeX);
%% Kernel estimator of the posterior density:
optimal_bandwidth = mh_optimal_bandwidth(mcsimulations,number_of_simulations,bandwidth,kernel_function);
[x1,f1] = kernel_density_estimate(mcsimulations,number_of_grid_points,...
optimal_bandwidth,kernel_function);
binf1 = x1(1);
bsup1 = x1(length(x1));
%% Prior density:
[x2,f2,abscissa,dens,binf2,bsup2] = draw_prior_density(indx);
clear abscissa dens;
borneinf = min(binf1,binf2);
bornesup = max(bsup1,bsup2);
top = max([max(f1);max(f2)]);