The hessian matrix at the “mode” is not positive definite!

Hello.

I am trying to apply the model of Gerali et al (2010) to China

I used mode_compute=4 for the estimation. However, I encountered the following error message.
data0915.mat (3.6 KB)
estszz0915.mod (25.5 KB)

“POSTERIOR KERNEL OPTIMIZATION PROBLEM!
(minus) the hessian matrix at the “mode” is not positive definite!
=> posterior variance of the estimated parameters are not positive.
You should try to change the initial values of the parameters using
the estimated_params_init block, or use another optimization routine.”

I tried to use the estimated_params_init block, but it still failed.

So I use mode compute=6 instead. However, the estimated results do not converge, and the posterior distribution has multiple peaks.

This is true even if I select mh_replic=100000.

I don’t know what to do. Can someone help me?

I uploaded my mod files and data

Use the analytic_derivation of estimation.
estszz0915.mod (26.1 KB)

I succeeded according to your advice, thank you so much!

Dear jpfeifer,

When mh_replic does not take 0, the following error still occurs:

Error using ==> chol
The matrix must be positive definite.

Error posterior_sampler_initialization (line 77)
d = chol(vv);

What is the reason for this and what should be done? Thank you

Did you change anything? It works on my machine and runs the MCMC.

Dear Jpfeifer
I am really sorry that I added an extra shock to the model, and it returned to normal after I corrected it.
In addition, I would like to ask what led to the error of “The matrix must be positive definite.” I made the same mistake again after adding other shocks.

Before you added the shock, there was simply a numerical problem in the computation of the Hessian using two-sided finite differences. Using an analytic point derivative solved the issue.

Dear Jpfeifer

I reduced the number of shocks and selected varobs as varobs qhrateobs cpiobs consobs porateobs;
There will be the following error:

Error using chol
Matrix must be positive definite with real diagonal.

Error in posterior_sampler_initialization (line 77)
d = chol(vv);

I tried all kinds of methods, but still no solution, I am very confused. I’m asking you to help me again.

It is also worth mentioning that I found that qhrateobs in varobs worked successfully when replaced with gdpobs.

Thank you so much!

data0915.mat (8.0 KB)
estszz0919.mod (25.3 KB)

From what I can see, the main issue is that the data mean of porateobs does not match the steady state of the variable in the model.

Dear Jpfeifer

Thank you for helping me again and again.

I adjusted the porateobs and adjusted the estimated_params_init block value, but I found the mode check graph is strange, In particular, the variances of several shocks and the persistence parameters of interest rates. What is the reason for this?How should I modify it?

modecheck1.fig (2.9 MB)
modecheck2.fig (1.4 MB)

What do you mean with “strange”?