I'm estimating several inverse covariance matrices of a set of measurements across different subpopulations using an wishart prior in jags/rjags/R.

Instead of specifying a scale matrix and degrees of freedom on the inverse covariance matrix prior (the wishart distribution), I would like to use a hyperprior on the scale matrix and degrees of freedom, so they can be estimated from the variation across subpopulations.

I haven't found much literature on hyperpriors for the scale matrix and degrees of freedom. Most of the literature seems to stop the hierarchy at the choice of the prior to the covariance/inverse covariance and/or are focused on estimating a single covariance matrix rather than several covariance matrices across different populations.

Any suggestions as to how to go about this - what are the recommended hyperprior distributions to use for the scale matrix and degrees of freedom of the wishart distribution? Is there some literature on this that I'm missing?


1 Answer 1


R's DPpackage allows a hierarchy that goes as far as you are suggesting on the scale matrix in the function DPdensity. You can peek at what they do in their manual or in the associated vignette to get some ideas. Let $\Sigma$ be the covariance matrix. It sets $\Sigma \sim IW(\nu_1, \Psi_1)$ and $\Psi_1 \sim IW(\nu_2, \Psi_2)$ where $IW(\nu, \Psi)$ is inverse-Wishart with degrees of freedom $\nu$ and mean $\frac{\Psi^{-1}}{\nu - p - 1}$ where $p$ is the dimension of the data. This looked a little backwards to me at first, but if you play with the density you can see it is conjugate. The Wishart density doesn't look promising for putting anything analytical on $\nu$. You could always put just about anything on $\nu$ and use a Metropolis-Hastings step.

EDIT: I just noticed you are using jags. There's a good chance I think that it will puke if you try to put any prior on $\Psi_1$, even though inverse-Wishart is conjugate. BUGS implementations can be fickle about what they allow for their multivariate distributions, so it might not know how to do the conjugate update. I don't know for sure though.

  • $\begingroup$ Unfortunately, I think you're right about jags. I get a "Unable to find appropriate sampler" error when I put a prior on Phi1 that's an inverse() applied to a dwish() r.v. $\endgroup$
    – user4733
    Aug 28, 2012 at 17:24

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.