Default value is 1 (initialization with the ergodic variance of the reduced
form solution of the model approximated at order one).
If the model has unit roots, the user must use `nonlinear_filter_initialization=3`,
which select an identity matrix for the initial covariance matrix of the state variables.
A side effect of this option is to temporarily change the value of options_.qz_criterium to
a value above one (ie 1+1e-6) so that the unit roots are not rejected. If the
model has unit roots and if the and if the option
nonlinear_filter_initialization has a value less than 3, the evaluation of the
likelihood will fail, because by default the unit root is counted as an
unstable root.
+ Code factorization.
+ Added an option for using the penalized objective when computing numerically
the hessian at the mode.
Previous behaviour (introduced with penalty_hessian routine) was to compute the
hessian matrix at the mode with the penalized objective function (instead of
the original objective function). This behaviour hides problematic situations,
where the computed hessian (using the original objective) would not be full
rank. For instance, if the estimation ends up with a parameter on (or very
close to) the bounds of its possible values (which is often not a desirable
outcome), the estimated posterior variance would be zero for this
parameter (with the original objective) because the hessian is not finite in
this direction, while the posterior variance would be positive if the penalized
objective is used instead. But this estimate would not be reliable by
construction of the penalty which is quite ad-hoc (more fundamentally I do not
think that there exists any rational for approximating the covariance matrix
with the inverse of the hessian matrix if the mode is on the border of the set
of possible values).
This commit restore the behaviour previous to 2446ab02ba4b3ed88c9c5021aced076078d96007.
An option is available for computing the hessian with the penalized
objective function.
This approach only requires one evaluation of the dynamic model (and its
jacobian) instead of T (the number of perdiods). Also (because the model
is linear) the equilibrium paths are obtained by inverting the jacobian
of the stacked equations (no need for a Newton algorithm).
Only available with stack_solve_algo==0 (which is the default algorithm
for solving perfect foresight models).
If possible, the option is triggered automatically if the model is
declared linear.
TODO:
* Write a linear version of perfect_foresight_problem routine.
* Evaluate the approxilation error (just need to evaluate the system of
stacked non linear equations).