model {
# This section is the priors for the dirichlet...this is exactly the same as MixSIR
# region-specific means
p[1:num.prey] ~ ddirch(alpha[]);
for(i in 1:num.prey) {
p2[i] <- p[i]*p[i]; # these are weights for variances
}
# v.n = v.0 + n, sig2|y ~ Inv-X2(v.n, s2)
# to simulate, draw X from X2(v.n), theta=v.n*s2/X
# the noninformative prior has v.0 = 0
for(prey in 1:num.prey) {
for(iso in 1:num.iso) {
# this is the variance parameter
# described Gelman p480 ("Inverse Chi-Square")
temp.X[prey,iso] ~ dchisqr(sigma.v0.n[prey,iso]);
bayes.sig2[prey,iso] <- sigma.v0.n[prey,iso]*sigma2.n[prey,iso]/temp.X[prey,iso];
# calculate precision as reciprocal of variance
bayes.iSig2[prey,iso] <- 1/bayes.sig2[prey,iso];
# this is the scale parameter...below 3.7, Gelman p72
k.n[prey,iso] <- u.scale[prey,iso] + samp.size[prey,iso];
# this is just the equation for u.n, u below is the observed sample mean
u.n[prey,iso] <- (u.scale[prey,iso]/k.n[prey,iso])*u.loc[prey,iso] + (samp.size[prey,iso]/k.n[prey,iso])*u[prey,iso];
temp.isig2[prey,iso] <- k.n[prey,iso]/sigma2[prey,iso];
# this is equation 3.8, Gelman p72
bayes.mu[prey,iso] ~ dnorm(u.n[prey,iso], temp.isig2[prey,iso]);
}
}
# include variation in the mean and variance
for(iso in 1:num.iso) {
mix.mu[iso] <- inprod(bayes.mu[1:num.prey,iso],p[1:num.prey]);
mix.var[iso] <- inprod(bayes.iSig2[1:num.prey,iso],p2[1:num.prey]);
mix.prcsn[iso] <- 1/(mix.var[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]);
}
}
}