Stan - 法线的混合
Stan - Mixture of Normals
我正在使用 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]。我该怎么做?
感谢您的帮助
Stan 中有一个有序类型。将 mu
声明为 ordered[K] mu
.
我正在使用 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]。我该怎么做?
感谢您的帮助
Stan 中有一个有序类型。将 mu
声明为 ordered[K] mu
.