Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 4.3
  • 4.4
  • 4.5
  • 4.6
  • 5.x
  • 6.x
  • asm
  • aux_func
  • benchmark-ec
  • clang+openmp
  • covariance-quadratic-approximation
  • dates-and-dseries-improvements
  • declare_vars_in_model_block
  • dmm
  • dprior
  • dragonfly
  • dynamic-striated
  • dynare_minreal
  • eigen
  • ep-sparse
  • error_msg_undeclared_model_vars
  • estim_params
  • exceptions
  • exo_steady_state
  • filter_initial_state
  • gpm-optimal-policy
  • julia
  • kalman_mex
  • master
  • mex-GetPowerDeriv
  • mr#2134
  • new-samplers
  • newton-quadratic-equation-solver
  • nlf-fixes
  • nlf-fixes-r
  • nls-fixes
  • nonlinear-filter-fixes
  • occbin
  • pac-mce-with-composite-target
  • parfor
  • penalty
  • rebase-1
  • remove-persistent-variables
  • remove-priordens
  • reset-seed-in-unit-tests
  • rmExtraExo
  • sep
  • sep-fixes
  • separateM_
  • silicon
  • silicon-new-samplers
  • slice
  • sphinx-doc-experimental
  • static_aux_vars
  • time-varying-information-set
  • use-dprior
  • various_fixes
  • 3.062
  • 3.063
  • 4.0.0
  • 4.0.1
  • 4.0.2
  • 4.0.3
  • 4.0.4
  • 4.1-alpha1
  • 4.1-alpha2
  • 4.1.0
  • 4.1.1
  • 4.1.2
  • 4.1.3
  • 4.2.0
  • 4.2.1
  • 4.2.2
  • 4.2.3
  • 4.2.4
  • 4.2.5
  • 4.3.0
  • 4.3.1
  • 4.3.2
  • 4.3.3
  • 4.4-beta1
  • 4.4.0
  • 4.4.1
  • 4.4.2
  • 4.4.3
  • 4.5.0
  • 4.5.1
  • 4.5.2
  • 4.5.3
  • 4.5.4
  • 4.5.5
  • 4.5.6
  • 4.5.7
  • 4.6-beta1
  • 4.6.0
  • 4.6.0-rc1
  • 4.6.0-rc2
  • 4.6.1
  • 4.6.2
  • 4.6.3
  • 4.6.4
  • 4.7-beta1
  • 4.7-beta2
  • 4.7-beta3
  • 5.0
  • 5.0-rc1
  • 5.1
  • 5.2
  • 5.3
  • 5.4
  • 5.5
111 results

Target

Select target project
  • giovanma/dynare
  • giorgiomas/dynare
  • Vermandel/dynare
  • Dynare/dynare
  • normann/dynare
  • MichelJuillard/dynare
  • wmutschl/dynare
  • FerhatMihoubi/dynare
  • sebastien/dynare
  • lnsongxf/dynare
  • rattoma/dynare
  • CIMERS/dynare
  • FredericKarame/dynare
  • SumuduK/dynare
  • MinjeJeon/dynare
  • camilomrch/dynare
  • DoraK/dynare
  • avtishin/dynare
  • selma/dynare
  • claudio_olguin/dynare
  • jeffjiang07/dynare
  • EthanSystem/dynare
  • stepan-a/dynare
  • wjgatt/dynare
  • JohannesPfeifer/dynare
  • gboehl/dynare
  • ebenetce/dynare
  • chskcau/dynare-doc-fixes
28 results
Select Git revision
  • 4.3
  • 4.4
  • 4.5
  • 4.6
  • 5.x
  • 6.x
  • asm
  • aux_func
  • clang+openmp
  • dates-and-dseries-improvements
  • declare_vars_in_model_block
  • dmm
  • dragonfly
  • dynare_minreal
  • eigen
  • error_msg_undeclared_model_vars
  • estim_params
  • exo_steady_state
  • gpm-optimal-policy
  • julia
  • madysson
  • master
  • mex-GetPowerDeriv
  • penalty
  • separateM_
  • slice
  • sphinx-doc-experimental
  • static_aux_vars
  • time-varying-information-set
  • various_fixes
  • 3.062
  • 3.063
  • 4.0.0
  • 4.0.1
  • 4.0.2
  • 4.0.3
  • 4.0.4
  • 4.1-alpha1
  • 4.1-alpha2
  • 4.1.0
  • 4.1.1
  • 4.1.2
  • 4.1.3
  • 4.2.0
  • 4.2.1
  • 4.2.2
  • 4.2.3
  • 4.2.4
  • 4.2.5
  • 4.3.0
  • 4.3.1
  • 4.3.2
  • 4.3.3
  • 4.4-beta1
  • 4.4.0
  • 4.4.1
  • 4.4.2
  • 4.4.3
  • 4.5.0
  • 4.5.1
  • 4.5.2
  • 4.5.3
  • 4.5.4
  • 4.5.5
  • 4.5.6
  • 4.5.7
  • 4.6-beta1
  • 4.6.0
  • 4.6.0-rc1
  • 4.6.0-rc2
  • 4.6.1
  • 4.6.2
  • 4.6.3
  • 4.6.4
  • 4.7-beta1
  • 4.7-beta2
  • 4.7-beta3
  • 5.0
  • 5.0-rc1
  • 5.1
  • 5.2
  • 5.3
  • 5.4
  • 5.5
  • 6-beta1
  • 6-beta2
  • 6.0
  • 6.1
  • 6.2
  • 6.3
  • 6.4
91 results
Show changes
Showing
with 141 additions and 101 deletions
......@@ -44,7 +44,7 @@ m(non_stationary_vars) = NaN;
i1 = find(abs(diag(oo_.gamma_y{1})) > 1e-12);
s2 = diag(oo_.gamma_y{1});
sd = sqrt(s2);
if options_.order == 2
if options_.order == 2 && ~M_.hessian_eq_zero
m = m+oo_.gamma_y{options_.ar+3};
end
......@@ -123,7 +123,8 @@ if length(i1) == 0
end
if options_.nocorr == 0 && size(stationary_vars, 1) > 0
corr = oo_.gamma_y{1}(i1,i1)./(sd(i1)*sd(i1)');
corr=NaN(size(oo_.gamma_y{1}));
corr(i1,i1) = oo_.gamma_y{1}(i1,i1)./(sd(i1)*sd(i1)');
if options_.contemporaneous_correlation
oo_.contemporaneous_correlation = corr;
end
......@@ -138,12 +139,12 @@ if options_.nocorr == 0 && size(stationary_vars, 1) > 0
labels = deblank(M_.endo_names(ivar(i1),:));
headers = char('Variables',labels);
lh = size(labels,2)+2;
dyntable(options_,title,headers,labels,corr,lh,8,4);
dyntable(options_,title,headers,labels,corr(i1,i1),lh,8,4);
if options_.TeX
labels = deblank(M_.endo_names_tex(ivar(i1),:));
headers=char('Variables',labels);
lh = size(labels,2)+2;
dyn_latex_table(M_,options_,title,'th_corr_matrix',headers,labels,corr,lh,8,4);
dyn_latex_table(M_,options_,title,'th_corr_matrix',headers,labels,corr(i1,i1),lh,8,4);
end
end
end
......
......@@ -206,7 +206,7 @@ end
%$
%$ try
%$ if isoctave
%$ s = quadv(density, .0000000001, 100000,1e-10);
%$ s = quadl(density, .0000000001, 100000, 1e-10);
%$ else
%$ s = integral(density, 0, 100000);
%$ end
......@@ -229,7 +229,7 @@ end
%$
%$ try
%$ if isoctave
%$ s = quadv(density, .0000000001, 100000,1e-10);
%$ s = quadl(density, .0000000001, 100000, 1e-10);
%$ else
%$ s = integral(density, 0, 100000);
%$ end
......@@ -252,7 +252,7 @@ end
%$
%$ try
%$ if isoctave
%$ s = quadv(density, .0000000001, 100000,1e-10)
%$ s = quadl(density, .0000000001, 100000, 1e-10);
%$ else
%$ s = integral(density, 0, 100000);
%$ end
......@@ -279,7 +279,7 @@ end
%$
%$ try
%$ if isoctave
%$ s = quadv(xdens, .0000000001, 20,1e-10)
%$ s = quadgk(xdens, .0000000001, 100000, 1e-10);
%$ else
%$ s = integral(xdens, 0, 100000);
%$ end
......@@ -302,7 +302,7 @@ end
%$
%$ try
%$ if isoctave
%$ s = quadv(xdens, .0000000001, 100000,1e-10)
%$ s = quadl(xdens, .0000000001, 100000, 1e-10);
%$ else
%$ s = integral(xdens, 0, 100000);
%$ end
......@@ -325,7 +325,7 @@ end
%$
%$ try
%$ if isoctave
%$ s = quadv(xdens, .0000000001, 100000,1e-10)
%$ s = quadl(xdens, .0000000001, 100000, 1e-10);
%$ else
%$ s = integral(xdens, 0, 100000);
%$ end
......@@ -351,7 +351,7 @@ end
%$ s = NaN(n, 1);
%$ for i=1:n
%$ if isoctave()
%$ s(i) = quadv(density, .0000000001, .1*i,1e-10)
%$ s(i) = quadl(density, .0000000001, .1*i, 1e-10);
%$ else
%$ s(i) = integral(density, 0, .1*i);
%$ end
......@@ -382,7 +382,7 @@ end
%$ s = NaN(n, 1);
%$ for i=1:n
%$ if isoctave()
%$ s(i) = quadv(density, .0000000001, .1*i,1e-10)
%$ s(i) = quadl(density, .0000000001, .1*i, 1e-10);
%$ else
%$ s(i) = integral(density, 0, .1*i);
%$ end
......@@ -413,7 +413,7 @@ end
%$ s = NaN(n, 1);
%$ for i=1:n
%$ if isoctave()
%$ s(i) = quadv(density, .0000000001, .1*i,1e-10)
%$ s(i) = quadl(density, .0000000001, .1*i, 1e-10);
%$ else
%$ s(i) = integral(density, 0, .1*i);
%$ end
......
......@@ -115,7 +115,7 @@ function [fval,info,exit_flag,DLIK,Hess,SteadyState,trend_coeff,Model,DynareOpti
%! @end deftypefn
%@eod:
% Copyright (C) 2004-2017 Dynare Team
% Copyright (C) 2004-2018 Dynare Team
%
% This file is part of Dynare.
%
......@@ -146,20 +146,6 @@ Hess = [];
% Ensure that xparam1 is a column vector.
xparam1 = xparam1(:);
if DynareOptions.estimation_dll
[fval,exit_flag,SteadyState,trend_coeff,info,params,H,Q] ...
= logposterior(xparam1,DynareDataset, DynareOptions,Model, ...
EstimatedParameters,BayesInfo,DynareResults);
mexErrCheck('logposterior', exit_flag);
Model.params = params;
if ~isequal(Model.H,0)
Model.H = H;
end
Model.Sigma_e = Q;
DynareResults.dr.ys = SteadyState;
return
end
% Set flag related to analytical derivatives.
analytic_derivation = DynareOptions.analytic_derivation;
......@@ -372,7 +358,7 @@ switch DynareOptions.lik_init
error(['The model requires Diffuse filter, but you specified a different Kalman filter. You must set options_.kalman_algo ' ...
'to 0 (default), 3 or 4'])
end
[Pstar,Pinf] = compute_Pinf_Pstar(Z,T,R,Q,DynareOptions.qz_criterium,[1:length(T)]);
[Pstar,Pinf] = compute_Pinf_Pstar(Z,T,R,Q,DynareOptions.qz_criterium);
Z =zeros(length(BayesInfo.mf),size(T,1));
for i = 1:length(BayesInfo.mf)
Z(i,BayesInfo.mf(i))=1;
......
......@@ -109,10 +109,10 @@ for file = 1:NumberOfDrawsFiles
for linee = 1:NumberOfDraws
linea = linea+1;
if isdrsaved
set_parameters(pdraws{linee,1});% Needed to update the covariance matrix of the state innovations.
M_=set_parameters_locally(M_,pdraws{linee,1});% Needed to update the covariance matrix of the state innovations.
dr = pdraws{linee,2};
else
set_parameters(pdraws{linee,1});
M_=set_parameters_locally(M_,pdraws{linee,1});
[dr,info,M_,options_,oo_] = resol(0,M_,options_,oo_);
end
if first_call
......
......@@ -104,9 +104,10 @@ for file = 1:NumberOfDrawsFiles
for linee = 1:NumberOfDraws
linea = linea+1;
if isdrsaved
M_=set_parameters_locally(M_,pdraws{linee,1});% Needed to update the covariance matrix of the state innovations.
dr = pdraws{linee,2};
else
set_parameters(pdraws{linee,1});
M_=set_parameters_locally(M_,pdraws{linee,1});
[dr,info,M_,options_,oo_] = resol(0,M_,options_,oo_);
end
tmp = th_autocovariances(dr,ivar,M_,options_,nodecomposition);
......
......@@ -103,9 +103,10 @@ for file = 1:NumberOfDrawsFiles
for linee = 1:NumberOfDraws
linea = linea+1;
if isdrsaved
M_=set_parameters_locally(M_,pdraws{linee,1});% Needed to update the covariance matrix of the state innovations.
dr = pdraws{linee,2};
else
set_parameters(pdraws{linee,1});
M_=set_parameters_locally(M_,pdraws{linee,1});
[dr,info,M_,options_,oo_] = resol(0,M_,options_,oo_);
end
tmp = th_autocovariances(dr,ivar,M_,options_,nodecomposition);
......
......@@ -54,7 +54,7 @@ end
if posterior
delete_stale_file([M_.dname '/metropolis/' M_.fname '_PosteriorVarianceDecomposition*']);
else
delete_stale_file([M_.dname '/prior/moments/' M_.fname '_PosteriorVarianceDecomposition*']);
delete_stale_file([M_.dname '/prior/moments/' M_.fname '_PriorVarianceDecomposition*']);
end
% Set varlist (vartan)
......@@ -111,9 +111,10 @@ for file = 1:NumberOfDrawsFiles
for linee = 1:NumberOfDraws
linea = linea+1;
if isdrsaved
M_=set_parameters_locally(M_,pdraws{linee,1});% Needed to update the covariance matrix of the state innovations.
dr = pdraws{linee,2};
else
set_parameters(pdraws{linee,1});
M_=set_parameters_locally(M_,pdraws{linee,1});
[dr,info,M_,options_,oo_] = resol(0,M_,options_,oo_);
end
if file==1 && linee==1
......
......@@ -236,7 +236,6 @@ else
else
dr.full_rank = 1;
end
return
end
if nba ~= nsfwrd
......@@ -251,6 +250,9 @@ else
info(2) = temp'*temp;
return
end
if task==1, return, end
%First order approximation
indx_stable_root = 1: (nd - nsfwrd); %=> index of stable roots
indx_explosive_root = npred + nboth + 1:nd; %=> index of explosive roots
......
......@@ -151,12 +151,17 @@ else
elseif horizon <= exo_det_length
ex = zeros(exo_det_length,M.exo_nbr);
end
if options.linear
iorder = 1;
else
iorder = options.order;
end
if isequal(M.H,0)
[yf,int_width] = simultxdet(y0,ex,oo.exo_det_simul,...
options.order,var_list,M,oo,options);
iorder,var_list,M,oo,options);
else
[yf,int_width,int_width_ME] = simultxdet(y0,ex,oo.exo_det_simul,...
options.order,var_list,M,oo,options);
iorder,var_list,M,oo,options);
end
end
......
......@@ -50,9 +50,9 @@ change_path_flag = true;
% Filter out some options.
if nargin>1
id = strfind(varargin,'nopathchange');
if ~isempty(id)
if ~all(cellfun(@isempty, id))
change_path_flag = false;
varargin(id{1}) = [];
varargin(cellfun(@isempty, id) == 0) = [];
end
end
......@@ -65,8 +65,20 @@ dynareroot = dynare_config;
warning_config()
if isoctave
if octave_ver_less_than('3.6.0')
warning('This version of Dynare has only been tested on Octave 3.6.0 and above. Since your Octave version is older than that, Dynare may fail to run, or give unexpected results. Consider upgrading your Octave installation.');
% The supported_octave_version.m file is not in git nor in the source
% package, it is manually added in binary packages distributed on dynare.org
if exist('supported_octave_version', 'file') && ~strcmp(supported_octave_version, version)
skipline()
warning(['This version of Octave is not supported. Consider installing ' ...
'version %s of Octave\n' ...
'from www.octave.org, otherwise m files will be used instead ' ...
'of precompiled mex files and some\nfeatures, like solution ' ...
'of models approximated at third order, will not be available.'], supported_octave_version())
skipline()
elseif octave_ver_less_than('3.6') % Should match the test in mex/build/octave/configure.ac
skipline()
warning(['This version of Dynare has only been tested on Octave 3.6 and above. Dynare may fail to run or give unexpected result. Consider upgrading your version of Octave.'])
skipline()
end
else
if matlab_ver_less_than('7.5')
......
......@@ -75,39 +75,25 @@ p = {'/distributions/' ; ...
% For functions that exist only under some Octave versions
% or some MATLAB versions, and for which we provide some replacement functions
% Replacements for rows(), columns(), vec() and issquare() (inexistent under MATLAB)
if ~isoctave
% Replacements for rows(), columns() and issquare() (inexistent under MATLAB)
p{end+1} = '/missing/rows_columns';
p{end+1} = '/missing/issquare';
% Replacement for vec() (inexistent under MATLAB)
p{end+1} = '/missing/vec';
if ~user_has_matlab_license('statistics_toolbox')
% Replacements for functions of the stats toolbox
p{end+1} = '/missing/stats/';
end
end
% ordeig() doesn't exist in Octave
if isoctave
% ordeig() doesn't exist in Octave < 5
if isoctave && octave_ver_less_than('5')
p{end+1} = '/missing/ordeig';
end
if isoctave && ~isequal(supported_octave_version(), version())
skipline()
warning(['This version of Octave is not supported. Consider installing ' ...
'version %s of Octave,\notherwise m files will be used instead ' ...
'of precompiled mex files and some features, like solution\n' ...
'of models approximated at third order, will not be available.'], supported_octave_version())
skipline()
end
% ilu is missing in Octave < 4.0
if isoctave && octave_ver_less_than('4.0')
p{end+1} = '/missing/ilu';
end
% corrcoef with two outputs is missing in Octave (ticket #796)
if isoctave && ~user_has_octave_forge_package('nan')
% corrcoef with two outputs is missing in Octave < 4.4 (ticket #796)
if isoctave && octave_ver_less_than('4.4') && ~user_has_octave_forge_package('nan')
p{end+1} = '/missing/corrcoef';
end
......@@ -118,11 +104,36 @@ if (isoctave && ~user_has_octave_forge_package('statistics')) ...
p{end+1} = '/missing/nanmean';
end
% Replacements for functions of the MATLAB statistics toolbox
% These functions were part of Octave < 4.4, they are now in the statistics Forge package
if (isoctave && ~octave_ver_less_than('4.4') && ~user_has_octave_forge_package('statistics')) ...
|| (~isoctave && ~user_has_matlab_license('statistics_toolbox'))
p{end+1} = '/missing/stats/';
if ~isoctave
p{end+1} = '/missing/stats-matlab/';
end
end
% Check if struct2array is available.
if ~exist('struct2array')
p{end+1} = '/missing/struct2array';
end
% isfile is missing in Octave < 5 and Matlab < R2017b
if (isoctave && octave_ver_less_than('5')) || (~isoctave && matlab_ver_less_than('9.3'))
p{end+1} = '/missing/isfile';
end
% strsplit is missing in Matlab<R2013a
if ~isoctave && matlab_ver_less_than('8.1')
p{end+1} = '/missing/strsplit';
end
% isrow, iscolumn and ismatrix are missing in Matlab<R2010b
if ~isoctave && matlab_ver_less_than('7.11')
p{end+1} = '/missing/is-row-column-matrix';
end
P = cellfun(@(c)[dynareroot(1:end-1) c], p, 'uni',false);
% Get mex files folder(s)
......
......@@ -235,7 +235,7 @@ if ~isequal(options_.mode_compute,0) && ~options_.mh_posterior_mode_estimation
[junk1, junk2,junk3, junk4, hh] = feval(objective_function,xparam1, ...
dataset_,dataset_info,options_,M_,estim_params_,bayestopt_,bounds,oo_);
options_.analytic_derivation = ana_deriv_old;
elseif ~isnumeric(options_.mode_compute) || ~(isequal(options_.mode_compute,5) && newratflag~=1)
elseif ~isnumeric(options_.mode_compute) || ~(isequal(options_.mode_compute,5) && newratflag~=1 && strcmp(func2str(objective_function),'dsge_likelihood'))
% with flag==0, we force to use the hessian from outer product gradient of optimizer 5
if options_.hessian.use_penalized_objective
penalized_objective_function = str2func('penalty_objective_function');
......@@ -419,6 +419,7 @@ end
if (any(bayestopt_.pshape >0 ) && options_.mh_replic) || ...
(any(bayestopt_.pshape >0 ) && options_.load_mh_file) %% not ML estimation
bounds = prior_bounds(bayestopt_, options_.prior_trunc); %reset bounds as lb and ub must only be operational during mode-finding
outside_bound_pars=find(xparam1 < bounds.lb | xparam1 > bounds.ub);
if ~isempty(outside_bound_pars)
for ii=1:length(outside_bound_pars)
......@@ -519,7 +520,7 @@ if (any(bayestopt_.pshape >0 ) && options_.mh_replic) || ...
end
prior_posterior_statistics('posterior',dataset_,dataset_info);
end
xparam1 = get_posterior_parameters('mean');
xparam1 = get_posterior_parameters('mean',M_,estim_params_,oo_,options_);
M_ = set_all_parameters(xparam1,estim_params_,M_);
end
end
......@@ -609,10 +610,10 @@ if (~((any(bayestopt_.pshape > 0) && options_.mh_replic) || (any(bayestopt_.psha
if nvn
number_of_plots_to_draw = 0;
index = [];
for i=1:n_varobs
if max(abs(measurement_error)) > 0.000000001
for obs_iter=1:n_varobs
if max(abs(measurement_error(obs_iter,:))) > 0.0000001
number_of_plots_to_draw = number_of_plots_to_draw + 1;
index = cat(1,index,i);
index = cat(1,index,obs_iter);
end
end
if ~options_.nograph
......@@ -627,7 +628,7 @@ if (~((any(bayestopt_.pshape > 0) && options_.mh_replic) || (any(bayestopt_.psha
fh = dyn_figure(options_.nodisplay,'Name','Smoothed observation errors');
NAMES = [];
if options_.TeX, TeXNAMES = []; end
nstar0=min(nstar,number_of_plots_to_draw-(nbplt-1)*nstar);
nstar0=min(nstar,number_of_plots_to_draw-(plt-1)*nstar);
if gend==1
marker_string{1,1}='-ro';
marker_string{2,1}='-ko';
......
......@@ -50,6 +50,7 @@ function [dataset_, dataset_info, xparam1, hh, M_, options_, oo_, estim_params_,
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
hh = [];
xparam1 = [];
if isempty(gsa_flag)
gsa_flag = 0;
......@@ -311,6 +312,10 @@ if options_.use_calibration_initialization %set calibration as starting values
end
end
if ~isempty(bayestopt_) && all(bayestopt_.pshape==0) && any(isnan(xparam1))
error('ML estimation requires all estimated parameters to be initialized, either in an estimated_params or estimated_params_init-block ')
end
if ~isempty(estim_params_) && ~(all(strcmp(fieldnames(estim_params_),'full_calibration_detected')) || (isfield(estim_params_,'nvx') && sum(estim_params_.nvx+estim_params_.nvn+estim_params_.ncx+estim_params_.ncn+estim_params_.np)==0))
if ~isempty(bayestopt_) && any(bayestopt_.pshape > 0)
% Plot prior densities.
......@@ -556,7 +561,7 @@ end
[oo_.steady_state, params,info] = evaluate_steady_state(oo_.steady_state,M,options_,oo_,steadystate_check_flag);
if info(1)
fprintf('\ndynare_estimation_init:: The steady state at the initial parameters cannot be computed.')
fprintf('\ndynare_estimation_init:: The steady state at the initial parameters cannot be computed.\n')
print_info(info, 0, options_);
end
......
......@@ -271,15 +271,15 @@ if iload <=0
case 'posterior_mode'
parameters_TeX = 'Posterior mode';
disp('Testing posterior mode')
params(1,:) = get_posterior_parameters('mode');
params(1,:) = get_posterior_parameters('mode',M_,estim_params_,oo_,options_);
case 'posterior_mean'
parameters_TeX = 'Posterior mean';
disp('Testing posterior mean')
params(1,:) = get_posterior_parameters('mean');
params(1,:) = get_posterior_parameters('mean',M_,estim_params_,oo_,options_);
case 'posterior_median'
parameters_TeX = 'Posterior median';
disp('Testing posterior median')
params(1,:) = get_posterior_parameters('median');
params(1,:) = get_posterior_parameters('median',M_,estim_params_,oo_,options_);
case 'prior_mode'
parameters_TeX = 'Prior mode';
disp('Testing prior mode')
......
......@@ -93,6 +93,9 @@ if ~isempty(options_gsa.datafile) || isempty(bayestopt_) || options_gsa.rmse
disp('must be specified for RMSE analysis!');
error('Sensitivity anaysis error!')
end
if ~isempty(options_.nobs) && length(options_.nobs)~=1
error('dynare_sensitivity does not support recursive estimation. Please specify nobs as a scalar, not a vector.')
end
options_.datafile = options_gsa.datafile;
if isfield(options_gsa,'first_obs')
options_.first_obs=options_gsa.first_obs;
......
function [nodes,weights,nnodes] = setup_integration_nodes(EpOptions,pfm)
if EpOptions.stochastic.order
% Compute weights and nodes for the stochastic version of the extended path.
switch EpOptions.IntegrationAlgorithm
switch EpOptions.stochastic.IntegrationAlgorithm
case 'Tensor-Gaussian-Quadrature'
% Get the nodes and weights from a univariate Gauss-Hermite quadrature.
[nodes0,weights0] = gauss_hermite_weights_and_nodes(EpOptions.stochastic.quadrature.nodes);
......
function [llik,parameters] = evaluate_likelihood(parameters)
function [llik,parameters] = evaluate_likelihood(parameters,M_,estim_params_,oo_,options_,bayestopt_)
% Evaluate the logged likelihood at parameters.
%
% INPUTS
% o parameters a string ('posterior mode','posterior mean','posterior median','prior mode','prior mean') or a vector of values for
% the (estimated) parameters of the model.
%
% o M_ [structure] Definition of the model
% o estim_params_ [structure] characterizing parameters to be estimated
% o oo_ [structure] Storage of results
% o options_ [structure] Options
% o bayestopt_ [structure] describing the priors
%
% OUTPUTS
% o ldens [double] value of the sample logged density at parameters.
......@@ -35,8 +39,6 @@ function [llik,parameters] = evaluate_likelihood(parameters)
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
global options_ M_ bayestopt_ oo_ estim_params_
persistent dataset dataset_info
if nargin==0
......@@ -46,11 +48,11 @@ end
if ischar(parameters)
switch parameters
case 'posterior mode'
parameters = get_posterior_parameters('mode');
parameters = get_posterior_parameters('mode',M_,estim_params_,oo_,options_);
case 'posterior mean'
parameters = get_posterior_parameters('mean');
parameters = get_posterior_parameters('mean',M_,estim_params_,oo_,options_);
case 'posterior median'
parameters = get_posterior_parameters('median');
parameters = get_posterior_parameters('median',M_,estim_params_,oo_,options_);
case 'prior mode'
parameters = bayestopt_.p5(:);
case 'prior mean'
......@@ -72,5 +74,5 @@ end
options_=select_qz_criterium_value(options_);
llik = -dsge_likelihood(parameters,dataset,dataset_info,options_,M_,estim_params_,bayestopt_,prior_bounds(bayestopt_,options_.prior_trunc),oo_);
ldens = evaluate_prior(parameters);
ldens = evaluate_prior(parameters,M_,estim_params_,oo_,options_,bayestopt_);
llik = llik - ldens;
\ No newline at end of file
function lpkern = evaluate_posterior_kernel(parameters,llik)
% Evaluate the prior density at parameters.
function lpkern = evaluate_posterior_kernel(parameters,M_,estim_params_,oo_,options_,bayestopt_,llik)
% Evaluate the evaluate_posterior_kernel at parameters.
%
% INPUTS
% o parameters a string ('posterior mode','posterior mean','posterior median','prior mode','prior mean') or a vector of values for
% the (estimated) parameters of the model.
%
% o M_ [structure] Definition of the model
% o estim_params_ [structure] characterizing parameters to be estimated
% o oo_ [structure] Storage of results
% o options_ [structure] Options
% o bayestopt_ [structure] describing the priors
% o llik [double] value of the logged likelihood if it
% should not be computed
%
% OUTPUTS
% o lpkern [double] value of the logged posterior kernel.
......@@ -34,8 +40,8 @@ function lpkern = evaluate_posterior_kernel(parameters,llik)
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
[ldens,parameters] = evaluate_prior(parameters);
if nargin==1
llik = evaluate_likelihood(parameters);
[ldens,parameters] = evaluate_prior(parameters,M_,estim_params_,oo_,options_,bayestopt_);
if nargin==6 %llik provided as an input
llik = evaluate_likelihood(parameters,M_,estim_params_,oo_,options_,bayestopt_);
end
lpkern = ldens+llik;
\ No newline at end of file
function [ldens,parameters] = evaluate_prior(parameters)
function [ldens,parameters] = evaluate_prior(parameters,M_,estim_params_,oo_,options_,bayestopt_)
% Evaluate the prior density at parameters.
%
% INPUTS
% o parameters a string ('posterior mode','posterior mean','posterior median','prior mode','prior mean') or a vector of values for
% the (estimated) parameters of the model.
% o M_ [structure] Definition of the model
% o oo_ [structure] Storage of results
% o options_ [structure] Options
% o bayestopt_ [structure] describing the priors
% o estim_params_ [structure] characterizing parameters to be estimated
%
%
% OUTPUTS
......@@ -33,8 +38,6 @@ function [ldens,parameters] = evaluate_prior(parameters)
% You should have received a copy of the GNU General Public License
% along with Dynare. If not, see <http://www.gnu.org/licenses/>.
global bayestopt_
if nargin==0
parameters = 'posterior mode';
end
......@@ -42,11 +45,11 @@ end
if ischar(parameters)
switch parameters
case 'posterior mode'
parameters = get_posterior_parameters('mode');
parameters = get_posterior_parameters('mode',M_,estim_params_,oo_,options_);
case 'posterior mean'
parameters = get_posterior_parameters('mean');
parameters = get_posterior_parameters('mean',M_,estim_params_,oo_,options_);
case 'posterior median'
parameters = get_posterior_parameters('median');
parameters = get_posterior_parameters('median',M_,estim_params_,oo_,options_);
case 'prior mode'
parameters = bayestopt_.p5(:);
case 'prior mean'
......
......@@ -73,13 +73,13 @@ end
if ischar(parameters)
switch parameters
case 'posterior_mode'
parameters = get_posterior_parameters('mode');
parameters = get_posterior_parameters('mode',M_,estim_params_,oo_,options_);
case 'posterior_mean'
parameters = get_posterior_parameters('mean');
parameters = get_posterior_parameters('mean',M_,estim_params_,oo_,options_);
case 'posterior_median'
parameters = get_posterior_parameters('median');
parameters = get_posterior_parameters('median',M_,estim_params_,oo_,options_);
case 'mle_mode'
parameters = get_posterior_parameters('mode','mle_');
parameters = get_posterior_parameters('mode',M_,estim_params_,oo_,options_,'mle_');
case 'prior_mode'
parameters = bayestopt_.p5(:);
case 'prior_mean'
......