斯坦 - 法线混合

时间:2015-11-06 06:06:19

标签: rstan

我使用RStan来拟合两个法线的混合。

data {
 int<lower = 1> K;
 int<lower = 1> N;
 real y[N];
}
parameters {
 simplex[K] theta;
 real mu[K];
 real<lower = 0> sigma;
}
model{
 real ps[K]; // place-holder for log component densities
 sigma ~ uniform(0.5, 1.5);
 mu ~ normal(0, 10);
 for (n in 1:N){
  for (k in 1:K) {
   ps[k] <- log(theta[k]) + normal_log(y[n], mu[k], sigma);
  }
  increment_log_prob(log_sum_exp(ps)); // log_sum_exp(lp1,lp2) =    log(exp(lp1) + exp(lp2))
  }
}

我想添加mu [1]小于mu [2]的条件。我怎么能这样做?

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

斯坦有一个有序的类型。将mu声明为ordered[K] mu