############## # WinBUGS code for variable selection example (Carlin and Louis, 2008, Example 2.18) # uses stack loss data once again... ############## model { # standardize x's and coefficients for (j in 1 : p) { pi[j] ~ dbern(0.5) b[j] <- beta[j] / sd(x[ , j ]) for (i in 1 : N){z[i,j] <- (x[i,j]- mean(x[,j]))/sd(x[,j])} } # statistical model for (i in 1 : N) { Y[i] ~ dnorm(mu[i], tau) mu[i] <- beta0 + pi[1]*beta[1]*z[i,1] + pi[2]*beta[2]*z[i,2] + pi[3]*beta[3]*z[i,3] } # priors beta0 ~ dnorm(0, 0.00001) for (j in 1 : p) {beta[j] ~ dnorm(0, 0.00001) } sigma ~ dunif(0.01,100) # vague Gelman prior for sigma tau<- 1/(sigma*sigma) } # DATA: list(p = 3, N = 21, Y = c(42,37,37,28,18,18,19,20,15,14,14,13,11,12,8,7,8,8,9,15,15), x = structure(.Data = c( 80, 27, 89, 80, 27, 88, 75, 25, 90, 62, 24, 87, 62, 22, 87, 62, 23, 87, 62, 24, 93, 62, 24, 93, 58, 23, 87, 58, 18, 80, 58, 18, 89, 58, 17, 88, 58, 18, 82, 58, 19, 93, 50, 18, 89, 50, 18, 86, 50, 19, 72, 50, 19, 79, 50, 20, 80, 56, 20, 82, 70, 20, 91), .Dim = c(21, 3))) INITS: list(beta0 = 10, beta = c(0,0,0), sigma = 1, pi = c(1,1,1))