diff --git a/matlab/initial_estimation_checks.m b/matlab/initial_estimation_checks.m index 967390309..819b72cd2 100644 --- a/matlab/initial_estimation_checks.m +++ b/matlab/initial_estimation_checks.m @@ -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;