################ # WinBUGS code for Finite Mixture model (Carlin and Louis, 2008, Example 2.19) # data are "eyes" data from WinBUGS manual ################ model { for( i in 1 : N ) { y[i] ~ dnorm(mu[i], tau) mu[i] <- lambda[T[i]] T[i] ~ dcat(P[]) } P[1:2] ~ ddirch(alpha[]) theta ~ dnorm(0.0, 1.0E-6) I(0.0, ) lambda[2] <- lambda[1] + theta lambda[1] ~ dnorm(0.0, 1.0E-6) Ystar1 ~ dnorm(lambda[1], tau) Ystar2 ~ dnorm(lambda[2], tau) Tstar ~ dcat(P[]); astar <- Tstar-1 Ystar <- Ystar1*(1-astar) + Ystar2*astar sigma ~ dunif(0.01,100) # vague Gelman prior for sigma tau<- 1/(sigma*sigma) } DATA: list(y = c(529.0, 530.0, 532.0, 533.1, 533.4, 533.6, 533.7, 534.1, 534.8, 535.3, 535.4, 535.9, 536.1, 536.3, 536.4, 536.6, 537.0, 537.4, 537.5, 538.3, 538.5, 538.6, 539.4, 539.6, 540.4, 540.8, 542.0, 542.8, 543.0, 543.5, 543.8, 543.9, 545.3, 546.2, 548.8, 548.7, 548.9, 549.0, 549.4, 549.9, 550.6, 551.2, 551.4, 551.5, 551.6, 552.8, 552.9,553.2), N = 48, alpha = c(1, 1), T = c(1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 2)) INITS (two sets): list(lambda = c(535, NA), theta = 5, sigma = 1.0, P=c(0.5, 0.5)) list(lambda = c(535, NA), theta =15, sigma = 5.0, P=c(0.2, 0.8))