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

Hi,

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 {
}
model {
//priors
to_vector(Theta) ~ normal(0, 10);
tau ~ cauchy(0, 2.5);
Omega ~ lkj_corr(2);
//likelihood
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.