diff --git a/matlab/CutSample.m b/matlab/CutSample.m
index 937ff413e..462aa070a 100644
--- a/matlab/CutSample.m
+++ b/matlab/CutSample.m
@@ -1,5 +1,5 @@
-function CutSample(M_, options_, estim_params_)
-% function CutSample(M_, options_, estim_params_)
+function CutSample(M_, options_, dispString)
+% function CutSample(M_, options_, dispString)
% Takes a subset from metropolis draws by storing the required information
% like the first MH-file to be loaded and the first line in that file to be
% loaded into the record structure saved on harddisk into the
@@ -8,7 +8,7 @@ function CutSample(M_, options_, estim_params_)
% INPUTS
% M_ [structure] Dynare model structure
% options_ [structure] Dynare options structure
-% estim_params_ [structure] Parameter structure
+% dispString [string] String to be displayed in the command window
%
% OUTPUTS
% none
@@ -33,8 +33,6 @@ function CutSample(M_, options_, estim_params_)
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see .
-dispString = 'Estimation::mcmc';
-
% Get the path to the metropolis files.
MetropolisFolder = CheckPath('metropolis',M_.dname);
diff --git a/matlab/PosteriorIRF.m b/matlab/PosteriorIRF.m
index b5356fd7b..61f7361d9 100644
--- a/matlab/PosteriorIRF.m
+++ b/matlab/PosteriorIRF.m
@@ -1,9 +1,10 @@
-function PosteriorIRF(type)
+function PosteriorIRF(type,dispString)
% Builds posterior IRFs after the MH algorithm.
%
% INPUTS
% o type [char] string specifying the joint density of the
% deep parameters ('prior','posterior').
+% o dispString [char] string to display in the console.
%
% OUTPUTS
% None (oo_ and plots).
@@ -36,8 +37,6 @@ function PosteriorIRF(type)
global options_ estim_params_ oo_ M_ bayestopt_ dataset_ dataset_info
-dispString = 'Estimation::mcmc';
-
% Set the number of periods
if isempty(options_.irf) || ~options_.irf
options_.irf = 40;
diff --git a/matlab/dynare_estimation_1.m b/matlab/dynare_estimation_1.m
index 29aa7842d..19c4a9de4 100644
--- a/matlab/dynare_estimation_1.m
+++ b/matlab/dynare_estimation_1.m
@@ -403,12 +403,12 @@ if (any(bayestopt_.pshape >0 ) && options_.mh_replic) || ...
if options_.mh_replic
ana_deriv_old = options_.analytic_derivation;
options_.analytic_derivation = 0;
- posterior_sampler(objective_function,posterior_sampler_options.proposal_distribution,xparam1,posterior_sampler_options,bounds,dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,oo_);
+ posterior_sampler(objective_function,posterior_sampler_options.proposal_distribution,xparam1,posterior_sampler_options,bounds,dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,oo_,dispString);
options_.analytic_derivation = ana_deriv_old;
end
end
%% Here I discard first mh_drop percent of the draws:
- CutSample(M_, options_, estim_params_);
+ CutSample(M_, options_, dispString);
if options_.mh_posterior_mode_estimation
[~,~,posterior_mode,~] = compute_mh_covariance_matrix(bayestopt_,M_.fname,M_.dname);
oo_=fill_mh_mode(posterior_mode',NaN(length(posterior_mode),1),M_,options_,estim_params_,bayestopt_,oo_,'posterior');
@@ -467,7 +467,7 @@ if (any(bayestopt_.pshape >0 ) && options_.mh_replic) || ...
if error_flag
error('%s: I cannot compute the posterior IRFs!',dispString)
end
- PosteriorIRF('posterior');
+ PosteriorIRF('posterior',dispString);
end
if options_.moments_varendo
if error_flag
@@ -499,7 +499,7 @@ if (any(bayestopt_.pshape >0 ) && options_.mh_replic) || ...
error('%s: I cannot compute the posterior statistics!',dispString)
end
if options_.order==1 && ~options_.particle.status
- prior_posterior_statistics('posterior',dataset_,dataset_info); %get smoothed and filtered objects and forecasts
+ prior_posterior_statistics('posterior',dataset_,dataset_info,dispString); %get smoothed and filtered objects and forecasts
else
error('%s: Particle Smoothers are not yet implemented.',dispString)
end
diff --git a/matlab/dynare_sensitivity.m b/matlab/dynare_sensitivity.m
index 07e440e81..4a3389d22 100644
--- a/matlab/dynare_sensitivity.m
+++ b/matlab/dynare_sensitivity.m
@@ -410,9 +410,9 @@ if options_gsa.rmse
end
end
- prior_posterior_statistics('gsa',dataset_, dataset_info);
+ prior_posterior_statistics('gsa',dataset_, dataset_info,'gsa::mcmc');
if options_.bayesian_irf
- PosteriorIRF('gsa');
+ PosteriorIRF('gsa','gsa::mcmc');
end
options_gsa.load_rmse=0;
% else
diff --git a/matlab/execute_prior_posterior_function.m b/matlab/execute_prior_posterior_function.m
index 3ac13f177..4967370e5 100644
--- a/matlab/execute_prior_posterior_function.m
+++ b/matlab/execute_prior_posterior_function.m
@@ -52,7 +52,7 @@ n_draws=options_.sampling_draws;
if strcmpi(type,'posterior')
% Get informations about the _posterior_draws files.
% discard first mh_drop percent of the draws:
- CutSample(M_, options_, estim_params_);
+ CutSample(M_, options_, 'prior_posterior_function');
% initialize metropolis draws
options_.sub_draws = n_draws; % set draws for sampling; changed value is not returned to base workspace
[error_flag, ~, options_] = metropolis_draw(1, options_, estim_params_, M_);
diff --git a/matlab/marginal_density.m b/matlab/marginal_density.m
index dc6826e59..e9e203686 100644
--- a/matlab/marginal_density.m
+++ b/matlab/marginal_density.m
@@ -69,14 +69,14 @@ end
parameter_names = bayestopt_.name;
save([M_.dname filesep outputFolderName filesep M_.fname '_mean.mat'],'xparam1','hh','parameter_names','SIGMA');
-fprintf('Estimation::marginal density: I''m computing the posterior log marginal density (modified harmonic mean)... ');
+fprintf('marginal density: I''m computing the posterior log marginal density (modified harmonic mean)... ');
try
% use this robust option to avoid inf/nan
logdetSIGMA = 2*sum(log(diag(chol(SIGMA))));
catch
% in case SIGMA is not positive definite
logdetSIGMA = nan;
- fprintf('Estimation::marginal density: the covariance of MCMC draws is not positive definite. You may have too few MCMC draws.');
+ fprintf('marginal density: the covariance of MCMC draws is not positive definite. You may have too few MCMC draws.');
end
invSIGMA = hh;
marginal = zeros(9,2);
@@ -111,18 +111,18 @@ while check_coverage
if abs((marginal(9,2)-marginal(1,2))/marginal(9,2)) > options_.marginal_data_density.harmonic_mean.tolerance || isinf(marginal(1,2))
fprintf('\n')
if increase == 1
- disp('Estimation::marginal density: The support of the weighting density function is not large enough...')
- disp('Estimation::marginal density: I increase the variance of this distribution.')
+ disp('marginal density: The support of the weighting density function is not large enough...')
+ disp('marginal density: I increase the variance of this distribution.')
increase = 1.2*increase;
linee = 0;
else
- disp('Estimation::marginal density: Let me try again.')
+ disp('marginal density: Let me try again.')
increase = 1.2*increase;
linee = 0;
if increase > 20
check_coverage = 0;
clear invSIGMA detSIGMA increase;
- disp('Estimation::marginal density: There''s probably a problem with the modified harmonic mean estimator.')
+ disp('marginal density: There''s probably a problem with the modified harmonic mean estimator.')
end
end
else
diff --git a/matlab/pm3.m b/matlab/pm3.m
index 658a58eb7..3800cd515 100644
--- a/matlab/pm3.m
+++ b/matlab/pm3.m
@@ -1,4 +1,4 @@
-function pm3(n1,n2,ifil,B,tit1,tit2,tit3,tit_tex,names1,names2,name3,DirectoryName,var_type)
+function pm3(n1,n2,ifil,B,tit1,tit2,tit3,tit_tex,names1,names2,name3,DirectoryName,var_type,dispString)
% Computes, stores and plots the posterior moment statistics.
%
@@ -19,6 +19,7 @@ function pm3(n1,n2,ifil,B,tit1,tit2,tit3,tit_tex,names1,names2,name3,DirectoryNa
% where to read
% var_type [string] suffix of the filename from which to load moment
% matrix
+% dispString [string] string to be displayes in the command window
% PARALLEL CONTEXT
% See also the comment in posterior_sampler.m funtion.
@@ -43,8 +44,6 @@ function pm3(n1,n2,ifil,B,tit1,tit2,tit3,tit_tex,names1,names2,name3,DirectoryNa
global options_ M_ oo_
-dispString = 'Estimation::mcmc';
-
nn = 3;
MaxNumberOfPlotsPerFigure = nn^2; % must be square
varlist = names2;
diff --git a/matlab/posterior_sampler.m b/matlab/posterior_sampler.m
index 8a98bfc24..37d9ee19e 100644
--- a/matlab/posterior_sampler.m
+++ b/matlab/posterior_sampler.m
@@ -1,5 +1,5 @@
-function posterior_sampler(TargetFun,ProposalFun,xparam1,sampler_options,mh_bounds,dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,oo_)
-% function posterior_sampler(TargetFun,ProposalFun,xparam1,sampler_options,mh_bounds,dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,oo_)
+function posterior_sampler(TargetFun,ProposalFun,xparam1,sampler_options,mh_bounds,dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,oo_,dispString)
+% function posterior_sampler(TargetFun,ProposalFun,xparam1,sampler_options,mh_bounds,dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,oo_,dispString)
% Random Walk Metropolis-Hastings algorithm.
%
% INPUTS
@@ -17,6 +17,7 @@ function posterior_sampler(TargetFun,ProposalFun,xparam1,sampler_options,mh_boun
% o estim_params_ [structure] estimated parameters structure
% o bayestopt_ [structure] prior specification structure
% o oo_ [structure] output structure
+% o dispString [string] string prependening the messages printed to the command window
%
% SPECIAL REQUIREMENTS
% None.
@@ -53,12 +54,10 @@ function posterior_sampler(TargetFun,ProposalFun,xparam1,sampler_options,mh_boun
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see .
-dispString = 'Estimation::mcmc';
-
vv = sampler_options.invhess;
% Initialization of the sampler
[ ix2, ilogpo2, ModelName, MetropolisFolder, fblck, fline, npar, nblck, nruns, NewFile, MAX_nruns, d, bayestopt_] = ...
- posterior_sampler_initialization(TargetFun, xparam1, vv, mh_bounds,dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,oo_);
+ posterior_sampler_initialization(TargetFun, xparam1, vv, mh_bounds,dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,oo_, dispString);
InitSizeArray = min([repmat(MAX_nruns,nblck,1) fline+nruns-1],[],2);
diff --git a/matlab/posterior_sampler_initialization.m b/matlab/posterior_sampler_initialization.m
index 36c308777..ab9ffe063 100644
--- a/matlab/posterior_sampler_initialization.m
+++ b/matlab/posterior_sampler_initialization.m
@@ -1,7 +1,7 @@
function [ ix2, ilogpo2, ModelName, MetropolisFolder, FirstBlock, FirstLine, npar, NumberOfBlocks, nruns, NewFile, MAX_nruns, d, bayestopt_] = ...
- posterior_sampler_initialization(TargetFun, xparam1, vv, mh_bounds,dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,oo_)
+ posterior_sampler_initialization(TargetFun, xparam1, vv, mh_bounds,dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,oo_, dispString)
% function [ ix2, ilogpo2, ModelName, MetropolisFolder, FirstBlock, FirstLine, npar, NumberOfBlocks, nruns, NewFile, MAX_nruns, d, bayestopt_] = ...
-% metropolis_hastings_initialization(TargetFun, xparam1, vv, mh_bounds,dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,oo_)
+% metropolis_hastings_initialization(TargetFun, xparam1, vv, mh_bounds,dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,oo_, dispString)
% Metropolis-Hastings initialization.
%
% INPUTS
@@ -17,6 +17,7 @@ function [ ix2, ilogpo2, ModelName, MetropolisFolder, FirstBlock, FirstLine, npa
% o estim_params_ estimated parameters structure
% o bayestopt_ estimation options structure
% o oo_ outputs structure
+% o dispString string to be displayed in the command window
%
% OUTPUTS
% o ix2 [double] (NumberOfBlocks*npar) vector of starting points for different chains
@@ -55,8 +56,6 @@ function [ ix2, ilogpo2, ModelName, MetropolisFolder, FirstBlock, FirstLine, npa
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see .
-dispString = 'Estimation::mcmc';
-
%Initialize outputs
ix2 = [];
ilogpo2 = [];
diff --git a/matlab/posterior_sampler_iteration.m b/matlab/posterior_sampler_iteration.m
index 185e990dd..65e44ed67 100644
--- a/matlab/posterior_sampler_iteration.m
+++ b/matlab/posterior_sampler_iteration.m
@@ -26,7 +26,7 @@ function [par, logpost, accepted, neval] = posterior_sampler_iteration(TargetFu
% SPECIAL REQUIREMENTS
% none
-% Copyright © 2015-18 Dynare Team
+% Copyright © 2015-2023 Dynare Team
%
% This file is part of Dynare.
%
diff --git a/matlab/prior_posterior_statistics.m b/matlab/prior_posterior_statistics.m
index ffba5567b..4bdddfd2d 100644
--- a/matlab/prior_posterior_statistics.m
+++ b/matlab/prior_posterior_statistics.m
@@ -1,5 +1,5 @@
-function prior_posterior_statistics(type,dataset,dataset_info)
-% function prior_posterior_statistics(type,dataset,dataset_info)
+function prior_posterior_statistics(type,dataset,dataset_info,dispString)
+% function prior_posterior_statistics(type,dataset,dataset_info,dispString)
% Computes Monte Carlo filter smoother and forecasts
%
% INPUTS
@@ -8,6 +8,7 @@ function prior_posterior_statistics(type,dataset,dataset_info)
% gsa
% dataset: data structure
% dataset_info: dataset structure
+% dispString: string to display in the command window
%
% OUTPUTS
% none
@@ -36,6 +37,10 @@ function prior_posterior_statistics(type,dataset,dataset_info)
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see .
+if nargin < 4
+ dispString = 'prior_posterior_statistics';
+end
+
global options_ estim_params_ oo_ M_ bayestopt_
localVars=[];
@@ -327,27 +332,27 @@ end
if options_.smoother
pm3(endo_nbr,gend,ifil(1),B,'Smoothed variables',...
'',varlist, M_.endo_names_tex,M_.endo_names,...
- varlist,'SmoothedVariables',DirectoryName,'_smooth');
+ varlist,'SmoothedVariables',DirectoryName,'_smooth',dispString);
pm3(exo_nbr,gend,ifil(2),B,'Smoothed shocks',...
'',M_.exo_names,M_.exo_names_tex,M_.exo_names,...
- M_.exo_names,'SmoothedShocks',DirectoryName,'_inno');
+ M_.exo_names,'SmoothedShocks',DirectoryName,'_inno',dispString);
pm3(endo_nbr,1,ifil(9),B,'Trend_coefficients',...
'',varlist,M_.endo_names_tex,M_.endo_names,...
- varlist,'TrendCoeff',DirectoryName,'_trend_coeff');
+ varlist,'TrendCoeff',DirectoryName,'_trend_coeff',dispString);
pm3(endo_nbr,gend,ifil(10),B,'Smoothed constant',...
'',varlist,M_.endo_names_tex,M_.endo_names,...
- varlist,'Constant',DirectoryName,'_smoothed_constant');
+ varlist,'Constant',DirectoryName,'_smoothed_constant',dispString);
pm3(endo_nbr,gend,ifil(11),B,'Smoothed trend',...
'',varlist,M_.endo_names_tex,M_.endo_names,...
- varlist,'Trend',DirectoryName,'_smoothed_trend');
+ varlist,'Trend',DirectoryName,'_smoothed_trend',dispString);
pm3(endo_nbr,gend,ifil(1),B,'Updated Variables',...
'',varlist,M_.endo_names_tex,M_.endo_names,...
varlist,'UpdatedVariables',DirectoryName, ...
- '_update');
+ '_update',dispString);
if smoothed_state_uncertainty
pm3(endo_nbr,endo_nbr,ifil(13),B,'State Uncertainty',...
'',varlist,M_.endo_names_tex,M_.endo_names,...
- varlist,'StateUncertainty',DirectoryName,'_state_uncert');
+ varlist,'StateUncertainty',DirectoryName,'_state_uncert',dispString);
end
if nvn
@@ -357,23 +362,23 @@ if options_.smoother
end
pm3(meas_err_nbr,gend,ifil(3),B,'Smoothed measurement errors',...
'',meas_error_names,texnames,meas_error_names,...
- meas_error_names,'SmoothedMeasurementErrors',DirectoryName,'_error')
+ meas_error_names,'SmoothedMeasurementErrors',DirectoryName,'_error',dispString)
end
end
if options_.filtered_vars
pm3(endo_nbr,gend,ifil(4),B,'One step ahead forecast (filtered variables)',...
'',varlist,M_.endo_names_tex,M_.endo_names,...
- varlist,'FilteredVariables',DirectoryName,'_filter_step_ahead');
+ varlist,'FilteredVariables',DirectoryName,'_filter_step_ahead',dispString);
end
if options_.forecast
pm3(endo_nbr,horizon,ifil(6),B,'Forecasted variables (mean)',...
'',varlist,M_.endo_names_tex,M_.endo_names,...
- varlist,'MeanForecast',DirectoryName,'_forc_mean');
+ varlist,'MeanForecast',DirectoryName,'_forc_mean',dispString);
pm3(endo_nbr,horizon,ifil(7),B,'Forecasted variables (point)',...
'',varlist,M_.endo_names_tex,M_.endo_names,...
- varlist,'PointForecast',DirectoryName,'_forc_point');
+ varlist,'PointForecast',DirectoryName,'_forc_point',dispString);
if ~isequal(M_.H,0) && ~isempty(intersect(options_.varobs,varlist))
texnames = cell(length(options_.varobs), 1);
obs_names = cell(length(options_.varobs), 1);
@@ -384,14 +389,14 @@ if options_.forecast
varlist_forecast_ME=intersect(options_.varobs,varlist);
pm3(meas_err_nbr,horizon,ifil(12),B,'Forecasted variables (point) with ME',...
'',varlist_forecast_ME,texnames,obs_names,...
- varlist_forecast_ME,'PointForecastME',DirectoryName,'_forc_point_ME')
+ varlist_forecast_ME,'PointForecastME',DirectoryName,'_forc_point_ME',dispString)
end
end
if options_.filter_covariance
pm3(endo_nbr,endo_nbr,ifil(8),B,'Filtered covariances',...
'',varlist,M_.endo_names_tex,M_.endo_names,...
- varlist,'FilterCovariance',DirectoryName,'_filter_covar');
+ varlist,'FilterCovariance',DirectoryName,'_filter_covar',dispString);
end
diff --git a/matlab/update_last_mh_history_file.m b/matlab/update_last_mh_history_file.m
index da75ca275..781290cb9 100644
--- a/matlab/update_last_mh_history_file.m
+++ b/matlab/update_last_mh_history_file.m
@@ -7,7 +7,7 @@ function update_last_mh_history_file(MetropolisFolder, ModelName, record)
% record [structure] structure storing the MH history
% Outputs: none
-% Copyright © 2013-2017 Dynare Team
+% Copyright © 2013-2023 Dynare Team
%
% This file is part of Dynare.
%
@@ -31,7 +31,7 @@ mh_history_files = dir([BaseName '_mh_history_*.mat']);
% Check the existence of mh-files (assuming version 2, ie dynare version greater than 4.3.x).
if isequal(length(mh_history_files),0)
- error(['Estimation::update_mh_file: I cannot find any mh-history file in ' MetropolisFolder '!'])
+ error(['update_last_mh_history_file: I cannot find any mh-history file in ' MetropolisFolder '!'])
end
BaseName = [BaseName '_mh_history_'];