diff --git a/doc/manual/source/the-model-file.rst b/doc/manual/source/the-model-file.rst index 107a91c5272427736cbcebc6cf7f494d16d6fde5..5976044bff05253ae7a8a0d6160e42c587f7ba95 100644 --- a/doc/manual/source/the-model-file.rst +++ b/doc/manual/source/the-model-file.rst @@ -4870,6 +4870,11 @@ All of these elements are discussed in the following. to NaN and the standard deviation of the associated shock set to 0 for the corresponding periods using the ``heteroskedastic_shocks``-block. + Note that models with unit roots will require the user to specify the ``diffuse_filter``-option as + otherwise Blanchard-Kahn errors will be triggered. For the piecewise Kalman filter, the + initialization steps in the diffuse filter will always rely on the model solved for the baseline + regime, without checking whether this is the actual regime in the first period(s). + *Example* :: @@ -4978,7 +4983,8 @@ All of these elements are discussed in the following. .. option:: likelihood_piecewise_kalman_filter Employ the piecewise Kalman filter of *Giovannini, Pfeiffer, and Ratto (2021)* when estimating - the model. Default: enabled. + the model. Note that this filter is incompatible with univariate Kalman filters, i.e. ``kalman_algo=2,4``. + Default: enabled. .. option:: likelihood_max_kalman_iterations @@ -6991,7 +6997,9 @@ block decomposition of the model (see :opt:`block`). Koopman (2012)* and *Koopman and Durbin (2003)* for the multivariate and *Koopman and Durbin (2000)* for the univariate filter) to estimate models with non-stationary observed - variables. + variables. This option will also reset the ``qz_criterium`` to + count unit root variables towards the stable variables. Trying to estimate + a model with unit roots will otherwise result in a Blanchard-Kahn error. When ``diffuse_filter`` is used the ``lik_init`` option of ``estimation`` has no effect. diff --git a/matlab/initial_estimation_checks.m b/matlab/initial_estimation_checks.m index 9cf98c82f89fa5c993bd6ad84b0af1179c9f4357..27717a15aecef72b84c461fc40d1995dbdc10572 100644 --- a/matlab/initial_estimation_checks.m +++ b/matlab/initial_estimation_checks.m @@ -20,7 +20,7 @@ function DynareResults = initial_estimation_checks(objective_function,xparam1,Dy % SPECIAL REQUIREMENTS % none -% Copyright (C) 2003-2018 Dynare Team +% Copyright © 2003-2022 Dynare Team % % This file is part of Dynare. % @@ -80,6 +80,12 @@ if DynareOptions.occbin.likelihood.status || DynareOptions.occbin.smoother.statu if DynareOptions.prefilter error('initial_estimation_checks:: Occbin is incompatible with the prefilter option due to the sample mean generally not corresponding to the steady state with an occasionally binding constraint.') end + if ~DynareOptions.occbin.likelihood.inversion_filter && (DynareOptions.kalman_algo==2 || DynareOptions.kalman_algo==4) + error('initial_estimation_checks:: Occbin is incompatible with the selected univariate Kalman filter.') + end + if DynareOptions.fast_kalman_filter + error('initial_estimation_checks:: Occbin is incompatible with the fast Kalman filter.') + end end if (DynareOptions.occbin.likelihood.status && DynareOptions.occbin.likelihood.inversion_filter) || (DynareOptions.occbin.smoother.status && DynareOptions.occbin.smoother.inversion_filter) @@ -323,4 +329,4 @@ end function evaluate_expression(expression,M_,oo_) % function evaluate_expression(expression,M_,oo_) %evaluates expressions relying on M_ and oo_ having their original names -eval(expression); \ No newline at end of file +eval(expression);