model {
p[1:num.prey] ~ ddirch(alpha[]); # these are weights for means
for(i in 1:num.prey) {
p2[i] <- p[i]*p[i]; # these are weights for variances
}
# for each isotope and population, calculate the predicted mixtures
for(iso in 1:num.iso) {
resid.sigma[iso] ~ dunif(0,100);
resid2[iso] <- (resid.sigma[iso]*resid.sigma[iso]);
mix.mu[iso] <- inprod(u[,iso],p[]);
mix.var[iso] <- inprod(sigma2[,iso],p2[]);
mix.totalVar[iso] <- mix.var[iso] + resid2[iso];
mix.prcsn[iso] <- 1/(mix.totalVar[iso]);
}
# This section does the likelihood / posterior, N data points
for(i in 1:N) {
for(iso in 1:num.iso) {
X[i,iso] ~ dnorm(mix.mu[iso], mix.prcsn[iso]);
}
}
}