Seeking help with Bayesian Estimation

Hi everyone,
I’m trying to do Bayesian Estimation for my model. The simulation/IRFs work well, but when I run the attached estimation codes, the following pops up and I couldn’t get the posterior (only the prior). Attached file wxirf is for IRFs, simudata1 is the datafile for varobs and wxirfsimu is the estimation codes. I’d sincerely appreciate some help! Thank you!

"There are 21 eigenvalue(s) larger than 1 in modulus
for 21 forward-looking variable(s)

The rank condition is verified.

You did not declare endogenous variables after the estimation/calib_smoother command.
Loading 500 observations from simudata1.m

Initial value of the log posterior (or likelihood): 7103.4895

SOLVE: maxit has been reached

SOLVE: maxit has been reached
bad gradient ------------------------


f at the beginning of new iteration, -7103.4894707395
Predicted improvement: 0.000000000
lambda = 1; f = -7103.4894707
Norm of dx 0

SOLVE: maxit has been reached

SOLVE: maxit has been reached
bad gradient ------------------------
Cliff. Perturbing search direction.
Predicted improvement: 0.000000000
lambda = 1; f = -7103.4894707
Norm of dx 0

SOLVE: maxit has been reached

SOLVE: maxit has been reached
bad gradient ------------------------

Improvement on iteration 1 = 0.000000000
improvement < crit termination
Objective function at mode: -7103.489471

SOLVE: maxit has been reached

SOLVE: maxit has been reached

RESULTS FROM POSTERIOR MAXIMIZATION
parameters
prior mean mode s.d. t-stat prior pstdev

d 0.200 0.2000 0.0070 28.7453 norm 0.0500

Log data density [Laplace approximation] is 7099.440496.

MH: Multiple chains mode.
MH: Old metropolis.log file successfully erased!
MH: Creation of a new metropolis.log file.
MH: Searching for initial values…

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached

SOLVE: maxit has been reached
MH: I couldn’t get a valid initial value in 100 trials.
MH: You should Reduce mh_init_scale…
MH: Parameter mh_init_scale is equal to 0.400000.
MH: Enter a new value… "
wxirfsimu.mod (7.87 KB)
wxirf.mod (7.81 KB)
simudata1.m (353 KB)

Dynare has a hard time finding the steady state given your initval-block. Please upgrade to 4.4.2 and replace

by

steady(solve_algo=4);
This uses a trust-region solver and performs better in your case.

[quote=“jpfeifer”]Dynare has a hard time finding the steady state given your initval-block. Please upgrade to 4.4.2 and replace

by

steady(solve_algo=4);
This uses a trust-region solver and performs better in your case.[/quote]

Hi jpfeifer,
Thank you so much! But I use macbook and it seems that 4.4.2 is only available for Windows users? Can I use 4.4.0 on Macbook? Thanks.

[quote=“jpfeifer”]Dynare has a hard time finding the steady state given your initval-block. Please upgrade to 4.4.2 and replace

by

steady(solve_algo=4);
This uses a trust-region solver and performs better in your case.[/quote]

Dear jpfeifer,
May I ask that if you tried my codes on 4.4.2 and they worked? I just upgraded to 4.4.0 on macbook (4.4.2 is not available for macbook), but I still get the same response. In particular, I don’t understand why it says ‘You did not declare endogenous variables after the estimation/calib_smoother command’. I’d be grateful for your help. Thank you very much!

is an unrelated warning. Ignore it.

Your codes worked with 4.4.2. What you can do if you only have 4.4.0 is the following: replace the dynare_solve.m with the one from github.com/DynareTeam/dynare/blob/master/matlab/dynare_solve.m and add the trust_region.m from github.com/DynareTeam/dynare/blob/master/matlab/trust_region.m
That should yield the 4.4.2 functionality you need.

[quote=“jpfeifer”]

is an unrelated warning. Ignore it.

Your codes worked with 4.4.2. What you can do if you only have 4.4.0 is the following: replace the dynare_solve.m with the one from github.com/DynareTeam/dynare/blob/master/matlab/dynare_solve.m and add the trust_region.m from github.com/DynareTeam/dynare/blob/master/matlab/trust_region.m
That should yield the 4.4.2 functionality you need.[/quote]

Dear jpfeifer,
Thank you so much for your suggestions! It worked, but there’s something less ideal about my posterior distribution. Normally, I’d expect the posterior to be tighter than the prior distribution, but in my case, they are of similar width and even have the same mean. It seems that posterior isn’t very much different from the prior. Does it mean bayesian estimation isn’t very useful in my case? What could be potential problems here? Thanks a lot!

To find that out, use the various diagnostics provided by Dynare. mode_check, convergence diagnostics, identification, etc.

Dear jpfeifer,
I’m new to Dynare. Would you point to the right direction for me as to how to implement such diagnostics? Thank you!

See the manual. Just search for the things. For mode_check, you need to specify this option in the estimation-command. Convergence Diagnostics should be computed by default. In your case, use two chains.