Setting prior on Sigma for stan_glmer

I’m using rstanarm version 2.18.2 to do inference on a hierarchical binomial model. I have some non-default priors (using info from previous experiments), so I run it as:

fit = stan_glmer(
	data = a
	, family = binomial(link='logit')
	, formula = obs ~ condition + (1+condition|subj)
	, chains = 5
	, cores = 5
	, iter = 1e3
	, refresh = 0
	, prior_intercept = normal(qlogis(mean(a$obs)),1, autoscale = FALSE) #centering intercept prior on the observed mean with a reasonably narrow scale
	, prior = normal(0,1, autoscale = FALSE) #pretty sure the effects are small
	, prior_covariance = decov(4) #we're pretty confident there should be identity correlation matrix
	, prior_aux = normal(0,1, autoscale = FALSE) #pretty sure there's fairly low variability

I thought that setting prior_aux = normal(0,1,autoscale=FALSE) would give me half-normal priors on the Sigma parameters (reflecting the variability amongst latent intercept and condition parameter associated with each subject), but when I look at posterior_vs_prior(fit) the output seems to show very broad priors on two of the Sigma terms:

If I’m correct in interpreting this to mean my intended prior is not being used, what am I doing wrong?

The prior_aux pertains to the standard deviation of the error in the outcome. The prior on the dispersion in the intercept and coefficient on condition across subjects is controlled by the shape and scale arguments to decov, which govern the gamma prior on the scale.

1 Like

Ah, that makes sense then. So for family=binomial models, prior_aux isn’t pertinent at all, yes?

And if the default value for the scale parameter to the decov() function is 1, why do those two Sigma parameters seem to have such heavy tails in the prior plot?

There is also a constant scaling factor by the square root of the size of the covariance matrix and variability from the (uniform by default) Dirichlet prior on the variance proportions. It is supposed to be weak by default, but you can strengthen it.