Non-negative (or non-positive) constrained prior for coefficients in Hierarchical multinomial logit model


I use Stan to run hierarchical multinomial logit model. The Stan code is pasted below.

The individual-level coefficients are multi-variate normally distributed and the population means and variance-covariance matrix follow the standard priors.

Now I want to constrain the coefficients so that they are either always non-negative or non-positive. This is usually when I am dealing with a coefficient like price.

What kind of priors I should use in this situation? Thanks.

data {
  int<lower=2> C; // # of alternatives (choices) in each scenario
  int<lower=1> K; // # of covariates of alternatives
  int<lower=1> R; // # of respondents
  int<lower=1> S; // # of scenarios per respondent
  int<lower=0> G; // # of respondent covariates 
  int<lower=1,upper=C> Y[R, S]; // observed choices
  matrix[C, K] X[R, S]; // matrix of attributes for each obs
  matrix[G, R] Z; // vector of covariates for each respondent
parameters {
  matrix[K, R] Beta;
  matrix[K, G] Theta;
  corr_matrix[K] Omega;
  vector<lower=0>[K] tau;
transformed parameters {
  cov_matrix[K] Sigma = quad_form_diag(Omega, tau);
model {
  to_vector(Theta) ~ normal(0, 10);
  tau ~ cauchy(0, 2.5); 
  Omega ~ lkj_corr(2);
  for (r in 1:R) {
    Beta[,r] ~ multi_normal(Theta*Z[,r], Sigma);	
    for (s in 1:S)
      Y[r,s] ~ categorical_logit(X[r,s]*Beta[,r]);

The simplest solution is to constrain Beta (e.g. matrix<lower=0>[K, R] Beta;) - this forces all Beta to be positive and the prior will be the multivariete normal truncated to the all positive section of \mathtt{R}^N. AFAIK there are no special priors for truncated multivariete variables.

Good to know! I will give this a shot. Thank you.