Skip to content
Snippets Groups Projects
Commit 9d21b16e authored by Stéphane Adjemian's avatar Stéphane Adjemian
Browse files

Merge branch 'smc' into 'master'

SMC: Add support for generate_trace_plots.m

Closes #1932

See merge request Dynare/dynare!2311
parents d2065889 c4404764
Branches
No related tags found
No related merge requests found
......@@ -41,7 +41,11 @@ if ishssmc(options_)
% Load draws from the posterior distribution
pfiles = dir(sprintf('%s/hssmc/particles-*.mat', dname));
posterior = load(sprintf('%s/hssmc/particles-%u-%u.mat', dname, length(pfiles), length(pfiles)));
if column==0
draws = posterior.tlogpostkernel;
else
draws = transpose(posterior.particles(column,:));
end
elseif isdime(options_)
posterior = load(sprintf('%s%s%s%schains.mat', dname, filesep(), 'dime', filesep()));
tune = posterior.tune;
......
......@@ -86,8 +86,7 @@ end
if pshape(indx) ~= 5
[~,k1] = max(dens);
if k1 == 1 || k1 == length(dens)
k = find(dens > 10);
dens(k) = NaN;
dens(dens > 10) = NaN;
end
end
binf = abscissa(1);
......
......@@ -30,16 +30,22 @@ function generate_trace_plots(chain_number)
global M_ options_ estim_params_
if issmc(options_)
error('generate_trace_plots:: SMC methods do not support trace plots')
end
if ~issmc(options_)
% Get informations about the posterior draws:
MetropolisFolder = CheckPath('metropolis', M_.dname);
record=load_last_mh_history_file(MetropolisFolder, M_.fname);
if max(chain_number)>record.Nblck
error('generate_trace_plots:: chain number is bigger than existing number of chains')
end
else
if ishssmc(options_)
if max(chain_number)>1
error('generate_trace_plots:: HSSMC only has one chain')
end
elseif isdime(options_)
error('generate_trace_plots:: DIME does not support generate_trace_plots')
end
end
trace_plot(options_, M_, estim_params_, 'PosteriorDensity', chain_number)
......
......@@ -74,8 +74,6 @@ BaseName = [MetropolisFolder filesep ModelName];
record=load_last_mh_history_file(MetropolisFolder, ModelName);
FirstMhFile = record.KeepedDraws.FirstMhFile;
FirstLine = record.KeepedDraws.FirstLine;
TotalNumberOfMhFiles = sum(record.MhDraws(:,2));
LastMhFile = TotalNumberOfMhFiles;
TotalNumberOfMhDraws = sum(record.MhDraws(:,1));
NumberOfDraws = TotalNumberOfMhDraws-floor(options_.mh_drop*TotalNumberOfMhDraws);
MAX_nruns = ceil(options_.MaxNumberOfBytes/(npar+2)/8);
......
......@@ -85,7 +85,6 @@ function dime(TargetFun, init_x, mh_bounds, dataset_, dataset_info, options_, M_
t0 = tic;
[x, ~, lprob] = ...
smc_samplers_initialization(funobj, 'dime', nchain, Prior, SimulationFolder, opts.niter);
tt = toc(t0);
x = ptransform(x', bounds, true);
disp_verbose(sprintf('Estimation:dime: log-posterior standard deviation (post.std) of a multivariate normal would be %.2f.\n', sqrt(0.5*ndim)), options_.verbosity);
......@@ -164,7 +163,7 @@ function dime(TargetFun, init_x, mh_bounds, dataset_, dataset_info, options_, M_
% be informative
tt = toc(t0);
if iter == 1 | ~mod(iter,15)
if iter == 1 || ~mod(iter,15)
disp_verbose(' #iter. post.mode post.std %accept lapsed', options_.verbosity)
disp_verbose(' ------ --------- -------- ------- ------', options_.verbosity)
end
......
......@@ -43,7 +43,6 @@ else
end
graphFolder = CheckPath('graphs',M_.dname);
latexFolder = CheckPath('latex',M_.dname);
hh_fig = dyn_figure(options_.nodisplay,'Name','DIME Convergence Diagnostics');
hold on
......
......@@ -52,6 +52,7 @@ if isempty(column)
return
end
if ~issmc(options_)
% Get informations about the posterior draws:
MetropolisFolder = CheckPath('metropolis',M_.dname);
record=load_last_mh_history_file(MetropolisFolder, M_.fname);
......@@ -64,10 +65,22 @@ TotalNumberOfMhDraws = sum(record.MhDraws(:,1));
clear record;
n_nblocks_to_plot=length(blck);
else
if ishssmc(options_)
n_nblocks_to_plot=1;
elseif isdime(options_)
error('trace_plot:: DIME does not support the trace_plot command')
end
end
if n_nblocks_to_plot==1
% Get all the posterior draws:
if ishssmc(options_)
PosteriorDraws = GetAllPosteriorDraws(options_, M_.dname,[],column);
TotalNumberOfMhDraws=length(PosteriorDraws);
else
PosteriorDraws = GetAllPosteriorDraws(options_, M_.dname,M_.fname,column, FirstMhFile, FirstLine, TotalNumberOfMhFiles, TotalNumberOfMhDraws, mh_nblck, blck);
end
else
PosteriorDraws=NaN(TotalNumberOfMhDraws,n_nblocks_to_plot);
save_string='';
......
......@@ -91,3 +91,5 @@ estimation(order=1, datafile='../fsdat_simul.m', nobs=192, loglinear,
'target', .25),
bayesian_irf, smoother, moments_varendo,consider_all_endogenous
);
generate_trace_plots(1);
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment