initial_estimation_checks.m: Add proper check for stochastic singularity

time-shift
Johannes Pfeifer 2016-10-02 12:54:36 +02:00
parent 68bc9cb9bb
commit 3f907efbcd
1 changed files with 13 additions and 1 deletions

View File

@ -130,7 +130,19 @@ ana_deriv = DynareOptions.analytic_derivation;
DynareOptions.analytic_derivation=0;
if ~isequal(DynareOptions.mode_compute,11) || ...
(isequal(DynareOptions.mode_compute,11) && isequal(DynareOptions.order,1))
[fval,info] = feval(objective_function,xparam1,DynareDataset,DatasetInfo,DynareOptions,Model,EstimatedParameters,BayesInfo,BoundsInfo,DynareResults);
%shut off potentially automatic switch to diffuse filter for the
%purpose of checking stochastic singularity
use_univariate_filters_if_singularity_is_detected_old=DynareOptions.use_univariate_filters_if_singularity_is_detected;
DynareOptions.use_univariate_filters_if_singularity_is_detected=0;
[fval,info] = feval(objective_function,xparam1,DynareDataset,DatasetInfo,DynareOptions,Model,EstimatedParameters,BayesInfo,BoundsInfo,DynareResults);
if info(1)==50
fprintf('\ninitial_estimation_checks:: The forecast error variance in the multivariate Kalman filter became singular.\n')
fprintf('initial_estimation_checks:: This is often a sign of stochastic singularity, but can also sometimes happen by chance\n')
fprintf('initial_estimation_checks:: for a particular combination of parameters and data realizations.\n')
error('initial_estimation_checks:: The forecast error variance in the multivariate Kalman filter became singular.')
end
%reset options
DynareOptions.use_univariate_filters_if_singularity_is_detected=use_univariate_filters_if_singularity_is_detected_old;
else
info=0;
fval = 0;