# How can I estimate the precision of a normal using a Gibbs sampler?

I am trying to estimate the precision $\tau$ of a normal distribution with either WinBUGS or OpenBUGS:

$c \sim \text{normal}(\mu,\tau)$

$\mu \rightarrow \lambda \cdot t^{-\beta}$

$\tau \sim \text{gamma}(0.1,0.001)$

I tried using a standard approach here by setting $\tau\sim \text{gamma}(0.001,0.001)$ but WinBUGS and OpenBUGS both stop with an error message. WinBUGS basically tells me to increase the parameters for the gamma prior.

However, if I do that, the MCMC chains of $\tau$ act strangely, even if I run 200.000 iterations with thin=200:

As you can see, the chains have spikes of up to 3000and in other cases even more. I'm not very experienced but I think this shouldn't be the case. The parameter $c$ is in the range of [0;1] so I'm worried about precision estimates of above 400.

This question seems to address my issue. It says that Gibbs samplers (like WinBUGS) have problems estimating the precision of a normal if the parameters of the gamma distribution are close to zero (which is not exactly true for my case, but they are fairly small). Playing around with the parameters of the gamma distribution does help but I thought the whole purpose of using a gamma prior is to approximate a uniform which is close to zero.

I have also tried estimating the precision indirectly by estimating the standard deviation as a uniform distribution first but the result was more or less the same.

Any help is highly appreciated.

• Some quick comments: it would be helpful to know how much data you put into it and what type of model you are fittig (i.e. what role do lambda, t, and beta play? is this some sort of decay model?). Otherwise remember that if your posterior sd is close to zero your precision will automatically vary a lot. Actually look at the sd might be rather comforting. For example, having an sd that varies between 0.1 and 0.01 means that the precision will vary between 100 and 1000.
– Erik
Commented Nov 13, 2013 at 15:43
• Yes, this is a power function fit of memory decay. I'm not sure what you mean by how much data but there are nine time (t) intervalls at which participants respond. For each t there are approximately 300 responses. The original paper didn't report any sd for c. If I directly estimate the sd it varies between 0 and 10 so this seems to be okay, then. Commented Nov 13, 2013 at 15:57
• Independently of your question, using a gamma distribution for $\tau$ is a bit depreceated (see e.g. stats.stackexchange.com/questions/6493/…). Moreover in your case, I guess that you could use the Jeffreys prior for $\tau$. Commented Nov 14, 2013 at 8:09
• Since, I'm using BUGS, this should pose a problem. As far as I understand, the Jeffreys prior is improper and Bugs usually requires proper priors. Commented Nov 14, 2013 at 16:43
• @peuhp the resource you link is studying priors for variance, not precision ($\tau$). $\tau = 1/var$. Using dgamma prior for $\tau$ is perfectly OK and will hardly become obsolete :) Commented Nov 26, 2013 at 23:23

I had exactly the same with specifying dgamma(0.001, 0.001) for WinBUGS! Jags can actually take it (and I recommend you to use Jags if you don't need advanced WinBUGS features; and even if you want to use WinBUGS, it comes in handy for debugging, because Jags has much more comprehensible error reporting), but for WinBUGS, you must do:

 x[..] ~ dnorm(mean[..], tau)

tau ~ dgamma(0.01, 0.01)


Don't be afraid, dgamma is a good choice. You just have to tweak the parameters. Follow this resource which perfectly explains gamma parameters and prior choice! http://www.unc.edu/courses/2010fall/ecol/563/001/docs/lectures/lecture14.htm#precision

Also note that it might come in handy to normalize the input variables - it makes parameter estimation (and prior choice) much more smooth and easier, because the basic priors will work perfectly with the usual constants.

• What exactly do you mena by normalize? Commented Mar 20, 2014 at 13:07
• I mean, I have an idea what this means in general but "normalizing the input variables" is a new concept for me. Commented Mar 20, 2014 at 14:20
• Also, I have tried using JAGS and it also runs into numerical problems with this prior. I'm estimating quite a few parameters. Basically, I'm estimating task performance at different intervals in the first step. In the second step, I'm using these parameters to do non-linear regression. Commented Mar 20, 2014 at 14:25