I corrected my data to being mean zero, measured as (log) percentage deviations from the steady-state (and thereby having observation equations in which [data = variable], eliminating the need for explicit observation equations), but I’m running into three different, related (I believe) errors depending on which shocks I choose to use in the model.

Summary: I have five observed variables in my model, and the original model specification has seven shocks. To avoid stochastic singularity, I select exactly five of these at a time to incorporate in the model. Depending on which ones I select, I either get immediate errors telling me the matrix is singular to machine precision (but the estimation process continues), an error after about an hour telling me that the cholesky input matrix must be positive definite, or an error after the mh_blocks process telling me the log posterior likelihood is -inf, that there is a problem with the modified harmonic mean estimator and (if I let it keep running) that the habit formation parameter is equal to unity (which is impossible, since that necessarily implies a divide-by-zero error in the MRS equation (line 108, equation 13). I believe all of these errors are in some way linked to the model attempting to set the value of the household’s habit formation to values centered at or near unity, but I don’t understand why it is attempting to do that.

Clearly something is wrong, but after trying the set of suggestions here I am at something of a loss. I tested with up to 120,000 replications across 15 blocks using mode_compute=6, mode_compute=9 doesn’t solve the problem, I am at least relatively certain that the data matches the model, and I tried updating the parameters to match the estimated values from one of my very few completed estimations (the values of which are likely spurious, but I had to see if that would help convergence, which it didn’t).

What am I missing?

Seeing as Dynare is a popular and robust estimation framework (and the model of interest was originally estimated in Dynare) I’m guessing that the problem rests in the model or the data. I’ve successfully run the model using stoch_simul and the results seemed reasonable (though I am uncertain over which variable to force to “end of time period” conventions to match # of eigenvalues and # of forward looking variables; see lines 75-78), so that leaves the data. Is 52 observations enough to estimate 24 parameters? Does the low number of observations necessitate stronger priors for identification, or is there something else I’m not aware of?

Which diagnostic commands will be particularly useful for helping with this?

(files are attached)

Thank you in advance for your comments!

Edit: Just ran the model with one observed variable (y_GDP), one shock (epsilon_ppistar), 20,000 iterations and 8 mh_blocks as a test, and got the following error message under the identification analysis: “The number of moments with non-zero derivative is smaller than the number of parameters up to 10 lags: check your model

Either further increase ar or reduce the list of estimated parameters.” What specifically are these moments associated with (i.e. the data? or the parameters?), how are they defined, and what is their relation to the data being used for the observed variables? Does this imply that I don’t have a long enough data series?

Thanks again!

varobs3.m (5.73 KB)

EstimationTest2.mod (7.07 KB)