Specify distribution of a vector of parameters

Hi All,

I am working on a multi-level model with a vector of parameters that are random slopes, and I would like to assign a prior to the distribution of these parameters. Whenever I run the model, the distribution of the mean estimates for these random effect parameters ends up being normal, but I have an a priori reason to expect that they would be non-negative with a positive skew. So, is it possible to treat this expectation as a prior on the distribution of parameters (or at least their estimated means)?

When I specify the parameter, I use:

parameters {
     vector[Num_levels] theta;
}

However, specifying a distribution in the model block, like theta ~ normal(0, 1); or theta ~ chi_square(1); only affects the distribution of the estimates for each individual parameter in the vector, not the distribution of parameters across the vector. The best I can do is to specify the lower bound of the vector, ie

parameters{
    vector<lower=0>[Num_levels] theta;
}

But this is unsatisfying, as the distribution is still normal, and it is more of a constraint than a prior. Is there a way to specify the distribution of parameter means in a vector of parameters as a hyperparameter?

Hi,
I am not sure I completely understand what you are trying to achieve.

That sounds very much like a prior that affects each parameter individually (e.g. with theta ~ skew_normal(2, 2, 4);).

That should be easy, for example: (code not tested, just a sketch):

parameters {
  vector[Num_levels] theta;
  real theta_mean;
}

model {
  theta ~ normal(theta_mean, 1);
  theta_mean ~ normal(5, 5);
}

If this is not what you need than I don’t know what you are after :-) It is often useful to think of the probabilistic model as a way to generate new data. How would you draw new samples from the prior on theta? (in R,Python - whatever language you use).