* Added info=19 in resol.m (problem in the steady state file).
* Bug fix in prior_sampler. * Print more informations (BK conditions, steadys state or mjdgges * problems...) when running get_prior_info. git-svn-id: https://www.dynare.org/svn/dynare/trunk@2567 ac1d8469-bf42-47a9-8791-bf33cf982152time-shift
parent
25aa38f9c4
commit
6cb41e0252
|
@ -94,8 +94,16 @@ function get_prior_info(info)
|
||||||
M_.dname = M_.fname;
|
M_.dname = M_.fname;
|
||||||
|
|
||||||
if info% Prior simulations.
|
if info% Prior simulations.
|
||||||
results = prior_sampler(1,M_,bayestopt_,options_,oo_);
|
results = prior_sampler(0,M_,bayestopt_,options_,oo_);
|
||||||
results.prior.mass
|
disp(['Prior mass = ' num2str(results.prior.mass)])
|
||||||
|
disp(['BK indeterminacy share = ' num2str(results.bk.indeterminacy_share)])
|
||||||
|
disp(['BK unstability share = ' num2str(results.bk.unstability_share)])
|
||||||
|
disp(['BK singularity share = ' num2str(results.bk.singularity_share)])
|
||||||
|
disp(['Complex jacobian share = ' num2str(results.jacobian.problem_share)])
|
||||||
|
disp(['mjdgges crash share = ' num2str(results.dll.problem_share)])
|
||||||
|
disp(['Steady state problem share = ' num2str(results.ss.problem_share)])
|
||||||
|
disp(['Complex steady state share = ' num2str(results.ss.complex_share)])
|
||||||
|
disp(['Analytical steady state problem share = ' num2str(results.ass.problem_share)])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -42,17 +42,21 @@ function results = prior_sampler(drsave,M_,bayestopt_,options_,oo_)
|
||||||
count_bk_singularity = 0;
|
count_bk_singularity = 0;
|
||||||
count_static_var_def = 0;
|
count_static_var_def = 0;
|
||||||
count_no_steadystate = 0;
|
count_no_steadystate = 0;
|
||||||
|
count_steadystate_file_exit = 0;
|
||||||
count_dll_problem = 0;
|
count_dll_problem = 0;
|
||||||
|
count_complex_jacobian = 0;
|
||||||
|
count_complex_steadystate = 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);
|
||||||
NumberOfEndogenousVariables = size(M_.endo_names,1);
|
NumberOfEndogenousVariables = size(M_.endo_names,1);
|
||||||
NumberOfElementsPerFile = ceil(options_.MaxNumberOfBytes/NumberOfParameters/NumberOfEndogenousVariables/8) ;
|
NumberOfElementsPerFile = ceil(options_.MaxNumberOfBytes/NumberOfParameters/NumberOfEndogenousVariables/8) ;
|
||||||
|
|
||||||
if NumberOfSimulations <= NumberOfElementsPerFile
|
if NumberOfSimulations <= NumberOfElementsPerFile
|
||||||
TableOfInformations = [ 1 , NumberOfSimulations , 1] ;
|
TableOfInformations = [ 1 , NumberOfSimulations , 1] ;
|
||||||
else
|
else
|
||||||
NumberOfFiles = fix(NumberOfSimulations/NumberOfElementsPerFile) ;
|
NumberOfFiles = fix(NumberOfSimulations/NumberOfElementsPerFile) ;
|
||||||
NumberOfElementsInTheLastFile = NumberOfSimulations - NumberOfElementsPerFile*NumberOfFiles ;
|
NumberOfElementsInTheLastFile = NumberOfSimulations - NumberOfElementsPerFile*(NumberOfFiles-1) ;
|
||||||
if ~isint(NumberOfSimulations/NumberOfElementsPerFile)
|
if ~isint(NumberOfSimulations/NumberOfElementsPerFile)
|
||||||
NumberOfFiles = NumberOfFiles + 1 ;
|
NumberOfFiles = NumberOfFiles + 1 ;
|
||||||
end
|
end
|
||||||
|
@ -63,11 +67,11 @@ function results = prior_sampler(drsave,M_,bayestopt_,options_,oo_)
|
||||||
TableOfInformations(1,3) = 1;
|
TableOfInformations(1,3) = 1;
|
||||||
TableOfInformations(2:end,3) = cumsum(TableOfInformations(2:end,2))+1;
|
TableOfInformations(2:end,3) = cumsum(TableOfInformations(2:end,2))+1;
|
||||||
end
|
end
|
||||||
|
|
||||||
pdraws = cell(TableOfInformations(1,2),drsave+1) ;
|
pdraws = cell(TableOfInformations(1,2),drsave+1) ;
|
||||||
sampled_prior_expectation = zeros(NumberOfParameters,1);
|
sampled_prior_expectation = zeros(NumberOfParameters,1);
|
||||||
sampled_prior_covariance = zeros(NumberOfParameters,NumberOfParameters);
|
sampled_prior_covariance = zeros(NumberOfParameters,NumberOfParameters);
|
||||||
|
|
||||||
|
|
||||||
% Simulations.
|
% Simulations.
|
||||||
while iteration <= NumberOfSimulations
|
while iteration <= NumberOfSimulations
|
||||||
loop_indx = loop_indx+1;
|
loop_indx = loop_indx+1;
|
||||||
|
@ -100,10 +104,14 @@ function results = prior_sampler(drsave,M_,bayestopt_,options_,oo_)
|
||||||
count_bk_singularity = count_bk_singularity + 1 ;
|
count_bk_singularity = count_bk_singularity + 1 ;
|
||||||
case 20
|
case 20
|
||||||
count_no_steadystate = count_no_steadystate + 1 ;
|
count_no_steadystate = count_no_steadystate + 1 ;
|
||||||
|
case 19
|
||||||
|
count_steadystate_file_exit = count_steadystate_file_exit + 1 ;
|
||||||
|
case 6
|
||||||
|
count_complex_jacobian = count_complex_jacobian + 1 ;
|
||||||
|
case 21
|
||||||
|
count_complex_steadystate = count_complex_steadystate + 1 ;
|
||||||
otherwise
|
otherwise
|
||||||
% To be checked...
|
|
||||||
count_unknown_problem = count_unknown_problem + 1 ;
|
count_unknown_problem = count_unknown_problem + 1 ;
|
||||||
continue
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -116,18 +124,23 @@ function results = prior_sampler(drsave,M_,bayestopt_,options_,oo_)
|
||||||
results.bk.singularity_share = count_bk_singularity/loop_indx;
|
results.bk.singularity_share = count_bk_singularity/loop_indx;
|
||||||
results.dll.problem_share = count_dll_problem/loop_indx;
|
results.dll.problem_share = count_dll_problem/loop_indx;
|
||||||
results.ss.problem_share = count_no_steadystate/loop_indx;
|
results.ss.problem_share = count_no_steadystate/loop_indx;
|
||||||
results.garbage_share = results.bk.indeterminacy_share + ...
|
results.ss.complex_share = count_complex_steadystate/loop_indx;
|
||||||
|
results.ass.problem_share = count_steadystate_file_exit/loop_indx;
|
||||||
|
results.jacobian.problem_share = count_complex_jacobian/loop_indx;
|
||||||
|
results.garbage_share = ...
|
||||||
|
results.bk.indeterminacy_share + ...
|
||||||
results.bk.unstability_share + ...
|
results.bk.unstability_share + ...
|
||||||
results.bk.singularity_share + ...
|
results.bk.singularity_share + ...
|
||||||
results.dll.problem_share + ...
|
results.dll.problem_share + ...
|
||||||
results.ss.problem_share + ...
|
results.ss.problem_share + ...
|
||||||
(count_unknown_problem/loop_indx) ;
|
results.ass.problem_share + ...
|
||||||
|
results.jacobian.problem_share + ...
|
||||||
|
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;
|
||||||
results.prior.mass = 1-results.garbage_share;
|
results.prior.mass = 1-results.garbage_share;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function [mu,sigma] = recursive_prior_moments(m0,s0,newobs,iter)
|
function [mu,sigma] = recursive_prior_moments(m0,s0,newobs,iter)
|
||||||
% Recursive estimation of order one and two moments (expectation and
|
% Recursive estimation of order one and two moments (expectation and
|
||||||
% covariance matrix). newobs should be a row vector. I do not use the
|
% covariance matrix). newobs should be a row vector. I do not use the
|
||||||
|
|
|
@ -15,6 +15,7 @@ function [dr,info]=resol(ys,check_flag)
|
||||||
% info=4: Blanchard Kahn conditions are not satisfied:'...' indeterminacy
|
% info=4: Blanchard Kahn conditions are not satisfied:'...' indeterminacy
|
||||||
% info=5: Blanchard Kahn conditions are not satisfied:'...' indeterminacy due to rank failure
|
% info=5: Blanchard Kahn conditions are not satisfied:'...' indeterminacy due to rank failure
|
||||||
% info=6: The jacobian evaluated at the steady state is complex.
|
% info=6: The jacobian evaluated at the steady state is complex.
|
||||||
|
% info=19: The steadystate file did not compute the steady state (inconsistent deep parameters).
|
||||||
% info=20: can't find steady state info(2) contains sum of sqare residuals
|
% info=20: can't find steady state info(2) contains sum of sqare residuals
|
||||||
% info=21: steady state is complex
|
% info=21: steady state is complex
|
||||||
% info(2) contains sum of sqare of
|
% info(2) contains sum of sqare of
|
||||||
|
@ -92,13 +93,14 @@ else
|
||||||
end
|
end
|
||||||
% testing for problem
|
% testing for problem
|
||||||
if check1
|
if check1
|
||||||
info(1)= 20;
|
|
||||||
if options_.steadystate_flag
|
if options_.steadystate_flag
|
||||||
|
info(1)= 19;
|
||||||
resid = check1 ;
|
resid = check1 ;
|
||||||
else
|
else
|
||||||
|
info(1)= 20;
|
||||||
resid = feval(fh,ys,oo_.exo_steady_state, M_.params);
|
resid = feval(fh,ys,oo_.exo_steady_state, M_.params);
|
||||||
end
|
end
|
||||||
info(2) = resid'*resid ; % penalty...
|
info(2) = resid'*resid ;
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue