// The input data required to fit the model data { int n; // number of observations int K; vector[n] y; // observations } // The parameters of our model parameters { simplex[K] alpha; // mixing proportions ordered[K] mu; // means of components real sigma; // standard deviations of components } // The posterior specification model { // priors target += inv_gamma_lpdf(sigma^2 | 3, 600^2); target += normal_lpdf(mu | 4000, 1500); target += dirichlet_lpdf(alpha | rep_vector(1, K)); // likelihood for(i in 1:n){ vector[K] temp = log(alpha); for(k in 1:K){ temp[k] += normal_lpdf(y[i] | mu[k], sigma); } target += log_sum_exp(temp); } }