I'm trying to understand how exactly prior bounds are implemented (I'm on dynare 4.4.3 / Win 7 btw,), ultimately with an eye to correctly computing the corresponding prior modes.
In the manual (p.50) LOWER_BOUND and UPPER_BOUND are mentioned in the context of maximum likelihood estimation only. But the plot of priors generated by my Mickey Mouse Bayesian file (attached below):
suggests that they are also taken into account when running Bayesian estimation. So my working assumption is that prior bounds matter for Bayesian as well.
Which brings me to the weird behaviour mentioned in the topic subject. The attached mod file has the following line:
- Code: Select all
stderr ex,1,0.1,7,INV_GAMMA_PDF,0.05,2;
According to the manual, the things after the PRIOR_SHAPE are the PRIOR_MEAN and PRIOR_STANDARD_ERROR. So basically, with the command above, I'm setting up an inverse gamma distribution with a mean of 0.05 and std error of 2. At the same time I'm truncating the support to [0.1,7] (again, according to the manual, the first parameter is the initial value, while the second and third i.e. 0.1 and 7 are the lower and upper bounds respectively). Which should imply that the mean exceeds 0.1 (i.e. the lower bound of support), right?
So I would have thought this command should crash telling me I'm being stupid (the mean can't both equal 0.05 and be >0.1). And yet it doesn't, which I find suspicious (are bounds not taken into account after all?)...
As I mentioned, ultimately what I'm after is the prior mode when the upper and lower bounds are specified. My working assumption would be that the prior density function gets shifted upwards to ensure that things integrate to one following the truncation. If that's not the case, I'd be grateful if someone would clarify what exactly happens.
And either way, I was wondering if there's a quick way of figuring the prior mode out? I've had a quick look at the compute_prior_mod.m file in the distributions directory, but unless I'm mistaken that doesn't take bounds into account... If I'm right about the truncation, I could just compute the prior at the unconstrained mode, and the prior values at the upper and lower bound and take the argmax. But that may not work if something else is done to the truncated density. Or there may be a simpler way...
Any thoughts / suggestions will begratefully received.
Thanks
Pawel