Make prior.m function account for endogenous prior restrictions
parent
d5bdc19e19
commit
fec7455555
|
@ -62,6 +62,12 @@ end
|
||||||
|
|
||||||
% Fill or update bayestopt_ structure
|
% Fill or update bayestopt_ structure
|
||||||
[xparam1, EstimatedParams, BayesOptions, lb, ub, Model] = set_prior(estim_params_, M_, options_);
|
[xparam1, EstimatedParams, BayesOptions, lb, ub, Model] = set_prior(estim_params_, M_, options_);
|
||||||
|
% Set restricted state space
|
||||||
|
options_plot_priors_old=options_.plot_priors;
|
||||||
|
options_.plot_priors=0;
|
||||||
|
[~,~,~,~, M_, options_, oo_, EstimatedParams, BayesOptions] = ...
|
||||||
|
dynare_estimation_init(M_.endo_names, M_.fname, 1, M_, options_, oo_, estim_params_, bayestopt_);
|
||||||
|
options_.plot_priors=options_plot_priors_old;
|
||||||
|
|
||||||
|
|
||||||
% Temporarly change qz_criterium option value
|
% Temporarly change qz_criterium option value
|
||||||
|
@ -102,7 +108,8 @@ if ismember('simulate', varargin) % Prior simulations (BK).
|
||||||
disp(['Complex jacobian share = ' num2str(results.jacobian.problem_share)])
|
disp(['Complex jacobian share = ' num2str(results.jacobian.problem_share)])
|
||||||
disp(['mjdgges crash share = ' num2str(results.dll.problem_share)])
|
disp(['mjdgges crash share = ' num2str(results.dll.problem_share)])
|
||||||
disp(['Steady state problem share = ' num2str(results.ss.problem_share)])
|
disp(['Steady state problem share = ' num2str(results.ss.problem_share)])
|
||||||
disp(['Complex steady state share = ' num2str(results.ss.complex_share)])
|
disp(['Complex steady state share = ' num2str(results.ss.complex_share)])
|
||||||
|
disp(['Endogenous prior violation share = ' num2str(results.endogenous_prior_violation_share)])
|
||||||
if options_.loglinear
|
if options_.loglinear
|
||||||
disp(['Nonpositive steady state share = ' num2str(results.ss.nonpositive_share)])
|
disp(['Nonpositive steady state share = ' num2str(results.ss.nonpositive_share)])
|
||||||
end
|
end
|
||||||
|
@ -130,10 +137,13 @@ if ismember('moments', varargin) % Prior simulations (2nd order moments).
|
||||||
oo__ = oo_;
|
oo__ = oo_;
|
||||||
oo__.dr = set_state_space(oo__.dr, Model, options_);
|
oo__.dr = set_state_space(oo__.dr, Model, options_);
|
||||||
% Solve model
|
% Solve model
|
||||||
[dr, info, Model , options__ , oo__] = resol(0, Model , options_ ,oo__);
|
[T,R,~,info,Model , options__ , oo__] = dynare_resolve(Model , options_ ,oo__,'restrict');
|
||||||
|
if ~info(1)
|
||||||
|
info=endogenous_prior_restrictions(T,R,Model , options__ , oo__);
|
||||||
|
end
|
||||||
if info
|
if info
|
||||||
skipline()
|
skipline()
|
||||||
disp(sprintf('Cannot solve the model on the prior mode (info = %s, %s)', num2str(info(1)), interpret_resol_info(info)));
|
fprintf('Cannot solve the model on the prior mode (info = %s, %s)\n', num2str(info(1)), interpret_resol_info(info));
|
||||||
skipline()
|
skipline()
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
|
@ -50,6 +50,7 @@ count_nan_steadystate = 0;
|
||||||
count_nan_params = 0;
|
count_nan_params = 0;
|
||||||
count_complex_params = 0;
|
count_complex_params = 0;
|
||||||
count_nonpositive_steadystate = 0;
|
count_nonpositive_steadystate = 0;
|
||||||
|
count_endogenous_prior_violation = 0;
|
||||||
count_unknown_problem = 0;
|
count_unknown_problem = 0;
|
||||||
NumberOfSimulations = options_.prior_mc;
|
NumberOfSimulations = options_.prior_mc;
|
||||||
NumberOfParameters = length(bayestopt_.p1);
|
NumberOfParameters = length(bayestopt_.p1);
|
||||||
|
@ -95,7 +96,11 @@ while iteration < NumberOfSimulations
|
||||||
loop_indx = loop_indx+1;
|
loop_indx = loop_indx+1;
|
||||||
params = prior_draw();
|
params = prior_draw();
|
||||||
M_ = set_all_parameters(params,estim_params_,M_);
|
M_ = set_all_parameters(params,estim_params_,M_);
|
||||||
[dr,INFO,M_,options_,oo_] = resol(work,M_,options_,oo_);
|
[T,R,~,INFO,M_,options_,oo_] = dynare_resolve(M_,options_,oo_,'restrict');
|
||||||
|
dr=oo_.dr;
|
||||||
|
if ~INFO(1)
|
||||||
|
INFO=endogenous_prior_restrictions(T,R,M_,options_,oo_);
|
||||||
|
end
|
||||||
file_line_number = file_line_number + 1;
|
file_line_number = file_line_number + 1;
|
||||||
iteration = iteration + 1;
|
iteration = iteration + 1;
|
||||||
if drsave
|
if drsave
|
||||||
|
@ -138,6 +143,8 @@ while iteration < NumberOfSimulations
|
||||||
count_nan_params = count_nan_params + 1 ;
|
count_nan_params = count_nan_params + 1 ;
|
||||||
case 26
|
case 26
|
||||||
count_nonpositive_steadystate = count_nonpositive_steadystate + 1;
|
count_nonpositive_steadystate = count_nonpositive_steadystate + 1;
|
||||||
|
case 49
|
||||||
|
count_endogenous_prior_violation = count_endogenous_prior_violation + 1;
|
||||||
otherwise
|
otherwise
|
||||||
count_unknown_problem = count_unknown_problem + 1 ;
|
count_unknown_problem = count_unknown_problem + 1 ;
|
||||||
end
|
end
|
||||||
|
@ -167,6 +174,7 @@ results.ss.complex_share = count_complex_steadystate/loop_indx;
|
||||||
results.ass.problem_share = count_steadystate_file_exit/loop_indx;
|
results.ass.problem_share = count_steadystate_file_exit/loop_indx;
|
||||||
results.ss.nonpositive_share = count_nonpositive_steadystate/loop_indx;
|
results.ss.nonpositive_share = count_nonpositive_steadystate/loop_indx;
|
||||||
results.jacobian.problem_share = count_complex_jacobian/loop_indx;
|
results.jacobian.problem_share = count_complex_jacobian/loop_indx;
|
||||||
|
results.endogenous_prior_violation_share = count_endogenous_prior_violation/loop_indx;
|
||||||
results.garbage_share = ...
|
results.garbage_share = ...
|
||||||
results.bk.indeterminacy_share + ...
|
results.bk.indeterminacy_share + ...
|
||||||
results.bk.unstability_share + ...
|
results.bk.unstability_share + ...
|
||||||
|
@ -177,6 +185,7 @@ results.garbage_share = ...
|
||||||
results.ss.complex_share + ...
|
results.ss.complex_share + ...
|
||||||
results.ss.nonpositive_share + ...
|
results.ss.nonpositive_share + ...
|
||||||
results.jacobian.problem_share + ...
|
results.jacobian.problem_share + ...
|
||||||
|
results.endogenous_prior_violation_share + ...
|
||||||
count_unknown_problem/loop_indx ;
|
count_unknown_problem/loop_indx ;
|
||||||
results.prior.mean = sampled_prior_expectation;
|
results.prior.mean = sampled_prior_expectation;
|
||||||
results.prior.variance = sampled_prior_covariance;
|
results.prior.variance = sampled_prior_covariance;
|
||||||
|
|
|
@ -97,6 +97,8 @@ y_obs,R_obs(@{ilag}), -; //[ccf]
|
||||||
y_obs,pie_obs(@{ilag}), -; //[ccf]
|
y_obs,pie_obs(@{ilag}), -; //[ccf]
|
||||||
@#endfor
|
@#endfor
|
||||||
end;
|
end;
|
||||||
|
prior simulate;
|
||||||
|
prior moments(distribution);
|
||||||
|
|
||||||
if isoctave()
|
if isoctave()
|
||||||
dynare_sensitivity(prior_range=0, nodisplay, graph_format=(eps));
|
dynare_sensitivity(prior_range=0, nodisplay, graph_format=(eps));
|
||||||
|
|
Loading…
Reference in New Issue