0

我正在使用 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]。我怎样才能做到这一点?

谢谢你的帮助

4

1 回答 1

1

Stan 中有一个有序的类型。声明muordered[K] mu

于 2015-11-06T12:44:19.973 回答