Why is _steadystate.m important when estimating a model

Dear all,

My goal is to estimate a model.

  1. Why is _steadystate.m so important when the goal is to estimate the model? What is the disadvantage of just using initval; block in .mod file? I found that using the ss-file (attached) yields much slower estimation but good-looking posteriors, while using the initval; block yields faster computation but posteriors look degenerate, more like singletons.

  2. what does the check = 0; in _steadystate.m mean and why does it appear both at the beginning and the end of the ss-file? When I switched check=1; in the top of the file, dynare gave an error even though residuals from resid(1) were all zero. No error was given when check=1; was set at the bottom of the file.

  3. I have a Gelain(2010) model which seems to be linearized (attached); dynare finds ss-values to be zero. Given that information, may I just put ss-values equal to zero in the _steadystate.m file (as attached), or should I derive them?

  4. Is it possible to use _steadystate.m file to give initial ss-values and let dynare solve for ss-values?
    ea_ge10est2_steadystate.m (4.92 KB)
    ea_ge10est2.mod (18.8 KB)

  1. Using a steady state file is only the right option in two cases: First, if you have parameters that depend on estimated parameters and need to be updated. Let’s say you want to set the labor disutility parameter so that hours in steady state are always 0.2 and you estimate e.g. the Frisch elasticity of labor supply. Then the labor disutility parameter is a function of the Frisch elasticity and needs to be updated in every MCMC iteration. This can be easily done in a steady state file. However, an alternative would by to define the labor disutility as an expression instead of a parameter, i.e. using the pound operator # inside of the model-block. This gives the same updating. See [Bayesian Estimation and Steady State Updating)
    The second case is if you want to use a numerical solver like fsolve to compute your steady state.

  2. The check is an error indicator for Dynare’s internal steady state computation. This output is required for Dynare’s syntax, but is not needed for user-written steady state files. It appears at the beginning and end in two mutually exclusive cases, so it is only set once.

  3. If you don’t change parameters and the model is already linearized, put model(linear) and just omit the init_val-block. Dynare automatically sets the starting values to 0. Note that this does not work if constants were added to equations as is sometimes the case with Taylor rules. See also [External function in dynare 4.2)