|
library(R2WinBUGS)
library(lattice)
library(coda)
dat=read.csv("c:/data.csv")
attach(dat)
setwd("c:/")
sink("lme.model2.txt")
cat("
model {
# Priors
for (i in 1:6){
alpha[i] ~ dnorm(mu.int, tau.int) # Random intercepts
beta[i] ~ dnorm(mu.slope, tau.slope)# Random slopes
}
mu.int ~ dnorm(0, 0.001) # Mean hyperparameter for random intercepts
tau.int <- 1 / (sigma.int * sigma.int)
sigma.int ~ dunif(0, 100) # SD hyperparameter for random intercepts
mu.slope ~ dnorm(0, 0.001) # Mean hyperparameter for random slopes
tau.slope <- 1 / (sigma.slope * sigma.slope)
sigma.slope ~ dunif(0, 100) # SD hyperparameter for slopes
tau <- 1 / ( sigma * sigma) # Residual precision
sigma ~ dunif(0, 100) # Residual standard deviation
# Likelihood
for (i in 1:n) {
mass[i] ~ dnorm(mu[i], tau)
mu[i] <- alpha[pop[i]] + beta[pop[i]]* length[i]
}
}
",fill=TRUE)
sink()
# Bundle data
win.data <- list(mass = as.numeric(mass), pop = pop,
length = length, n =length(mass))
# Inits function
inits <- function(){ list(alpha = rnorm(6, 0, 2), beta = rnorm(6, 10, 2),
mu.int = rnorm(1, 0, 1), sigma.int = rlnorm(1), mu.slope = rnorm(1, 0, 1),
sigma.slope = rlnorm(1), sigma = rlnorm(1))}
# Parameters to estimate
parameters <- c("alpha", "beta", "mu.int", "sigma.int", "mu.slope", "sigma.slope", "sigma")
# MCMC settings
ni <- 2000
nb <- 500
nt <- 2
nc <- 3
# Start Gibbs sampling
out <- bugs(win.data, inits, parameters, "lme.model2.txt", n.thin=nt,
n.chains=nc, n.burnin=nb, n.iter=ni, debug = TRUE)
print(out, dig = 2)
|