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]); } } }