Merge pull request #768 from JohannesPfeifer/model_diagnostics

Improvements to model diagnostics
time-shift
MichelJuillard 2014-11-21 22:09:08 +01:00
commit dc319a973c
1 changed files with 13 additions and 1 deletions

View File

@ -169,6 +169,18 @@ for b=1:nb
end
if singularity_problem
try
options_check=options;
options_check.noprint=1;
[eigenvalues_] = check(M, options_check, oo);
if any((abs(eigenvalues_)-1)<1e-6)
fprintf('MODEL_DIAGNOSTICS: The singularity seems to be (partly) caused by the presence of a unit root\n')
fprintf('MODEL_DIAGNOSTICS: as the absolute value of one eigenvalue is in the range of +-1e-6 to 1.\n')
fprintf('MODEL_DIAGNOSTICS: If the model is actually supposed to feature unit root behavior, such a warning is expected,\n')
fprintf('MODEL_DIAGNOSTICS: but you should nevertheless check whether there is an additional singularity problem.\n')
end
catch
end
fprintf('MODEL_DIAGNOSTICS: The presence of a singularity problem typically indicates that there is one\n')
fprintf('MODEL_DIAGNOSTICS: redundant equation entered in the model block, while another non-redundant equation\n')
fprintf('MODEL_DIAGNOSTICS: is missing. The problem often derives from Walras Law.\n')
@ -192,7 +204,7 @@ if options.order == 1
[junk,jacobia_] = feval([M.fname '_dynamic'],z(iyr0),exo_simul, ...
M.params, dr.ys, it_);
end;
elseif options.order == 2
elseif options.order >= 2
if (options.bytecode)
[chck, junk, loc_dr] = bytecode('dynamic','evaluate', z,exo_simul, ...
M.params, dr.ys, 1);