Install JAGS from https://sourceforge.net/projects/mcmc-jags/?source=typ_redirect

setwd("~/Documents/Web/Teaching/PBIO_294/Exercises/11.1.2017")

Some required libraries:


### If not already installed:
install.packages("rjags")
install.packages("runjags")
install.packages("coda")

Generating some data to recapture using a linear regression

N <- 1000
x <- 1:N
epsilon <- rnorm(N, 0, 1)
y <- x + epsilon

# or below for replicates

nReps<-10
x<-seq(from=0,to=100,by=1)
x<-rep(x,nReps)
b0<-1.0; b1<-0.2
ymean<-b0+b1*x
y<-rnorm(n=length(ymean),mean=ymean,sd=1.5)
N<-length(y)

Writing simulated data to external file

write.table(data.frame(X = x, Y = y),
            file = 'lm_example1.data',
            row.names = FALSE,
            col.names = TRUE)

JAGS model

modelString<-"
model {
  for (i in 1:N){
    y[i] ~ dnorm(y.hat[i], tau)
    y.hat[i] <- a + b * x[i]
  }
  a ~ dnorm(0, .0001)
  b ~ dnorm(0, .0001)
  tau <- pow(sigma, -2)
  sigma ~ dunif(0, 100)
}
"
writeLines(modelString, con='LM_ex1.txt')

Compiling model

require('rjags')

jags <- jags.model('LM_ex1.txt',
                   data = list('x' = x,
                               'y' = y,
                               'N' = N),
                   inits<-list(
                       list('a'=1,'b'=2,'sigma'=5),
                       list('a'=1,'b'=.2,'sigma'=0.5),
                       list('a'=.1,'b'=2,'sigma'=7),
                       list('a'=2,'b'=5,'sigma'=1)),
                   n.chains = 4,
                   n.adapt = 100)

Updating model

update(jags, 1000)

Sampoling from model

codaSamples<-coda.samples(jags, c('a','b','sigma'), 1000, 1)

Examining fit using CODA

require(coda)
plot(codaSamples, trace = FALSE, density = TRUE)
summary(codaSamples)
traceplot(codaSamples)

Compared to b0 = 1.0; b1 = 0.2, sd=1.5

Exercise 1: Fit the same model as above using the library runjags wih 4 parallel chains. See K 8.7 for guidance.

Exercise 2: Fit a linear model to the height vs weight data (e.g., model wt<-b0 + b1*ht) from 6 Sep 2017 using JAGS.

LS0tCnRpdGxlOiAiSkFHUyIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKIyBJbnN0YWxsIEpBR1MgZnJvbSBodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9tY21jLWphZ3MvP3NvdXJjZT10eXBfcmVkaXJlY3QKCmBgYHtyfQpzZXR3ZCgifi9Eb2N1bWVudHMvV2ViL1RlYWNoaW5nL1BCSU9fMjk0L0V4ZXJjaXNlcy8xMS4xLjIwMTciKQpgYGAKCgojIyMgU29tZSByZXF1aXJlZCBsaWJyYXJpZXM6CgpgYGB7cn0KCiMjIyBJZiBub3QgYWxyZWFkeSBpbnN0YWxsZWQ6Cmluc3RhbGwucGFja2FnZXMoInJqYWdzIikKaW5zdGFsbC5wYWNrYWdlcygicnVuamFncyIpCmluc3RhbGwucGFja2FnZXMoImNvZGEiKQoKYGBgCgoKR2VuZXJhdGluZyBzb21lIGRhdGEgdG8gcmVjYXB0dXJlIHVzaW5nIGEgbGluZWFyIHJlZ3Jlc3Npb24KCmBgYHtyfQpOIDwtIDEwMDAKeCA8LSAxOk4KZXBzaWxvbiA8LSBybm9ybShOLCAwLCAxKQp5IDwtIHggKyBlcHNpbG9uCgojIG9yIGJlbG93IGZvciByZXBsaWNhdGVzCgpuUmVwczwtMTAKeDwtc2VxKGZyb209MCx0bz0xMDAsYnk9MSkKeDwtcmVwKHgsblJlcHMpCmIwPC0xLjA7IGIxPC0wLjIKeW1lYW48LWIwK2IxKngKeTwtcm5vcm0obj1sZW5ndGgoeW1lYW4pLG1lYW49eW1lYW4sc2Q9MS41KQpOPC1sZW5ndGgoeSkKCmBgYAoKCldyaXRpbmcgc2ltdWxhdGVkIGRhdGEgdG8gZXh0ZXJuYWwgZmlsZQpgYGB7cn0Kd3JpdGUudGFibGUoZGF0YS5mcmFtZShYID0geCwgWSA9IHkpLAogICAgICAgICAgICBmaWxlID0gJ2xtX2V4YW1wbGUxLmRhdGEnLAogICAgICAgICAgICByb3cubmFtZXMgPSBGQUxTRSwKICAgICAgICAgICAgY29sLm5hbWVzID0gVFJVRSkKYGBgCgpKQUdTIG1vZGVsCgpgYGB7cn0KbW9kZWxTdHJpbmc8LSIKbW9kZWwgewogIGZvciAoaSBpbiAxOk4pewogICAgeVtpXSB+IGRub3JtKHkuaGF0W2ldLCB0YXUpCiAgICB5LmhhdFtpXSA8LSBhICsgYiAqIHhbaV0KICB9CiAgYSB+IGRub3JtKDAsIC4wMDAxKQogIGIgfiBkbm9ybSgwLCAuMDAwMSkKICB0YXUgPC0gcG93KHNpZ21hLCAtMikKICBzaWdtYSB+IGR1bmlmKDAsIDEwMCkKfQoiCndyaXRlTGluZXMobW9kZWxTdHJpbmcsIGNvbj0nTE1fZXgxLnR4dCcpCgpgYGAKCkNvbXBpbGluZyBtb2RlbAoKYGBge3J9CnJlcXVpcmUoJ3JqYWdzJykKCmphZ3MgPC0gamFncy5tb2RlbCgnTE1fZXgxLnR4dCcsCiAgICAgICAgICAgICAgICAgICBkYXRhID0gbGlzdCgneCcgPSB4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3knID0geSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdOJyA9IE4pLAogICAgICAgICAgICAgICAgICAgaW5pdHM8LWxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgbGlzdCgnYSc9MSwnYic9Miwnc2lnbWEnPTUpLAogICAgICAgICAgICAgICAgICAgICAgIGxpc3QoJ2EnPTEsJ2InPS4yLCdzaWdtYSc9MC41KSwKICAgICAgICAgICAgICAgICAgICAgICBsaXN0KCdhJz0uMSwnYic9Miwnc2lnbWEnPTcpLAogICAgICAgICAgICAgICAgICAgICAgIGxpc3QoJ2EnPTIsJ2InPTUsJ3NpZ21hJz0xKSksCiAgICAgICAgICAgICAgICAgICBuLmNoYWlucyA9IDQsCiAgICAgICAgICAgICAgICAgICBuLmFkYXB0ID0gMTAwKQpgYGAKClVwZGF0aW5nIG1vZGVsCgpgYGB7cn0KdXBkYXRlKGphZ3MsIDEwMDApCmBgYAoKU2FtcG9saW5nIGZyb20gbW9kZWwKCmBgYHtyfQpjb2RhU2FtcGxlczwtY29kYS5zYW1wbGVzKGphZ3MsIGMoJ2EnLCdiJywnc2lnbWEnKSwgMTAwMCwgMSkKYGBgCgpFeGFtaW5pbmcgZml0IHVzaW5nIENPREEKCmBgYHtyfQpyZXF1aXJlKGNvZGEpCnBsb3QoY29kYVNhbXBsZXMsIHRyYWNlID0gRkFMU0UsIGRlbnNpdHkgPSBUUlVFKQpzdW1tYXJ5KGNvZGFTYW1wbGVzKQp0cmFjZXBsb3QoY29kYVNhbXBsZXMpCmBgYAoKQ29tcGFyZWQgdG8gYjAgPSAxLjA7IGIxID0gMC4yLCBzZD0xLjUKCgojIyMgRXhlcmNpc2UgMTogIEZpdCB0aGUgc2FtZSBtb2RlbCBhcyBhYm92ZSB1c2luZyB0aGUgbGlicmFyeSBydW5qYWdzIHdpaCA0IHBhcmFsbGVsIGNoYWlucy4gU2VlIEsgOC43IGZvciBndWlkYW5jZS4KCiMjIyBFeGVyY2lzZSAyOiAgRml0IGEgbGluZWFyIG1vZGVsIHRvIHRoZSBoZWlnaHQgdnMgd2VpZ2h0IGRhdGEgKGUuZy4sIG1vZGVsIHd0PC1iMCArIGIxKmh0KSBmcm9tIDYgU2VwIDIwMTcgdXNpbmcgSkFHUy4K