Revision 50ba237b7e9aa8c9312414f80dfbf6bebcab894b authored by Imad Ali on 16 October 2019, 04:02:51 UTC, committed by Imad Ali on 16 October 2019, 04:02:51 UTC
1 parent 45f93c8
Raw File
normal_mixture.stan
// normal mixture, unknown proportion and means, known variance
// p(y|mu,theta) = theta * Normal(y|mu[1],1) + (1-theta) * Normal(y|mu[2],1);

data {
  int<lower=0>  N;
  real y[N];
}
parameters {
  real<lower=0,upper=1> theta;
  real mu[2];
}
transformed parameters {
  real log_theta;
  real log_one_minus_theta;

  log_theta <- log(theta);
  log_one_minus_theta <- log(1.0 - theta);
}
model {
  theta ~ uniform(0,1); // equivalently, ~ beta(1,1);
  for (k in 1:2)
    mu[k] ~ normal(0,10);
  for (n in 1:N)
    increment_log_prob(log_sum_exp(log_theta
                                     + normal_log(y[n],mu[1],1.0),
                                   log_one_minus_theta 
                                     + normal_log(y[n],mu[2],1.0)));
}
back to top