A question about how Dynare does parameter estimation

I’ll start with a little background on my model. Among my parameters are p, muln, and sigmaln, and one of my endogenous variables is z. The nonstochastic steady-state value of z is logninv(p,muln,sigmaln), where logninv is the lognormal inverse cumulative distribution function in MATLAB.

It turns out I need the nonstochastic steady-state value of z in my model block. However, as we know logninv is not one of the allowed functions in the model block. To get around this, I created an additional parameter z_ss and assigned z_ss = logninv(p,muln,sigmaln) in the parameter block. (Apparently arbitrary functions are allowed in the parameter block.)

My question is: how would Dynare pick new parameters during parameter estimation step? Does it change the parameter vector as a whole by epsilon without regard for the structure of the parameters? That is, as Dynare runs some sort of minimization routine, it picks new parameters independently so it picks a new z_ss that is not logninv(p,muln,sigmaln). Or is it the case that Dynare runs through the parameter step first so any z_ss goes into the minimization routine would satisfy the condition z_ss = logninv(p,muln,sigmaln)?

Thank you very much for your time!



As you did it, Dynare will pick up arbitrary values of z_ss: it will be considered as a parameter, to be optimized over, without respecting the constraint that is imposed by the steady state relationship.

You can solve this problem in two possible ways:
] use the STEADY_STATE operator: instead of creating a new parameter z_ss, replace every occurrence of z_ss by STEADY_STATE(z). This should do what you want, provided that the estimation routine succeeds in recomputing the steady state every time the parameters are changed. You may find it useful to write a steady state file./:m]
] in the snapshot (unstable) version of Dynare, we now have some support for external functions. You may then use the logninv() function directly in the model. See dynare.org/DynareWiki/ExternalFunctions . Note that this feature is not in Dynare 4.1, you need to download the snapshot./:m][/ul]


Thanks a bunch, Sébastien!