Estimation can't take place because too many shocks have been calibrated with a zero variance!

CST.zip (133.3 KB)

I want to estimate a DSGE model, but I get next message:

Estimation can’t take place because too many shocks have been calibrated with a zero variance!

So I suspect problem is in setting shocks, I am activating these in block estimated params; but I am getting same message, so my question is where should I put values of variances of my shocks? ¿Should be there in block of shocks;? or ¿they should be there after declared model;?

Please how could solve this?

Hi,

I did not manage to run your file (issue with the dataset).As you suspected, your problem is related to the number of shocks, which should equal or greater than the number of observed variable. Otherwise you have a stochastic singularity (i.e. we can find at least one linear combination of the forecast errors of the observed variables that has zero variance).

I don’t know what you changed from the original mod file, but clearly they are inconsistencies. The exogenous variables are defined as follows:

a_t = \rho_a a_{t-1} + \sigma_a \varepsilon_{a,t}

The variance of the innovation of this stochastic process is controlled by \sigma_a, and with this representation you have to set \mathbb V[\varepsilon_{a,t}]=1, since \sigma_a and the variance of \varepsilon_{a,t} cannot be identified simultaneously. There is no problem with this representation of the shocks, but what you write in the estimated_params block is not consistent with this representation. You define priors on \sigma_a and \mathbb V[\varepsilon_{a,t}]. Instead you should declare the variance of the \varepsilon in a shocks block before the estimation command. Because your priors on \varepsilon are centered on zero (which is really weird), and because Dynare use the prior mean as the initial condition, your shocks are not activated and you have the stochastic singularity. You should also remove the deterministic shocks, if you use this file for estimation.

Best,
Stéphane.