Created
October 9, 2014 18:52
-
-
Save vasishth/fe3dc1f088e695917e6d to your computer and use it in GitHub Desktop.
lecture 2 code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| ### R code from vignette source '02_ADALecture2.Rnw' | |
| ################################################### | |
| ### code chunk number 1: 02_ADALecture2.Rnw:66-72 | |
| ################################################### | |
| library(mvtnorm) | |
| u0 <- u1 <- seq(from = -3, to = 3, length.out = 30) | |
| Sigma1<-diag(2) | |
| f <- function(u0, u1) dmvnorm(cbind(u0, u1), mean = c(0, 0),sigma = Sigma1) | |
| z <- outer(u0, u1, FUN = f) | |
| persp(u0, u1, z, theta = -30, phi = 30, ticktype = "detailed") | |
| ################################################### | |
| ### code chunk number 2: 02_ADALecture2.Rnw:81-85 | |
| ################################################### | |
| Sigma2<-matrix(c(1,.6,.6,1),byrow=FALSE,ncol=2) | |
| f <- function(u0, u1) dmvnorm(cbind(u0, u1), mean = c(0, 0),sigma = Sigma2) | |
| z <- outer(u0, u1, FUN = f) | |
| persp(u0, u1, z, theta = -30, phi = 30, ticktype = "detailed") | |
| ################################################### | |
| ### code chunk number 3: 02_ADALecture2.Rnw:94-98 | |
| ################################################### | |
| Sigma3<-matrix(c(1,-.6,-.6,1),byrow=FALSE,ncol=2) | |
| f <- function(u0, u1) dmvnorm(cbind(u0, u1), mean = c(0, 0),sigma = Sigma3) | |
| z <- outer(u0, u1, FUN = f) | |
| persp(u0, u1, z, theta = -30, phi = 30, ticktype = "detailed") | |
| ################################################### | |
| ### code chunk number 4: 02_ADALecture2.Rnw:230-231 | |
| ################################################### | |
| pnorm(600,mean=600,sd=sqrt(50)) | |
| ################################################### | |
| ### code chunk number 5: 02_ADALecture2.Rnw:236-237 | |
| ################################################### | |
| qnorm(0.5,mean=600,sd=sqrt(50)) | |
| ################################################### | |
| ### code chunk number 6: 02_ADALecture2.Rnw:242-243 | |
| ################################################### | |
| qnorm(0.5,mean=600,sd=sqrt(50),lower.tail=FALSE) | |
| ################################################### | |
| ### code chunk number 7: 02_ADALecture2.Rnw:255-256 | |
| ################################################### | |
| pnorm(610,mean=600,sd=sqrt(50))-pnorm(490,mean=600,sd=sqrt(50)) | |
| ################################################### | |
| ### code chunk number 8: 02_ADALecture2.Rnw:265-271 | |
| ################################################### | |
| x<-rnorm(10000,mean=600,sd=sqrt(50)) | |
| ## proportion of cases where | |
| ## x is less than 500: | |
| mean(x<590) | |
| ## theoretical value: | |
| pnorm(590,mean=600,sd=sqrt(50)) | |
| ################################################### | |
| ### code chunk number 9: 02_ADALecture2.Rnw:320-323 | |
| ################################################### | |
| plot(function(x) dnorm(x), -6, 6, | |
| main = "Normal density N(0,1)",ylim=c(0,.4), | |
| ylab="density",xlab="X") | |
| ################################################### | |
| ### code chunk number 10: 02_ADALecture2.Rnw:346-347 | |
| ################################################### | |
| pnorm(-2) | |
| ################################################### | |
| ### code chunk number 11: 02_ADALecture2.Rnw:362-366 | |
| ################################################### | |
| ##P(Z < -x): | |
| pnorm(-2) | |
| ##P(Z > x): | |
| pnorm(2,lower.tail=FALSE) | |
| ################################################### | |
| ### code chunk number 12: 02_ADALecture2.Rnw:384-390 | |
| ################################################### | |
| ## code source: http://www.r-bloggers.com/creating-shaded-areas-in-r/ | |
| coord.x <- c(-3,seq(-3,-2,0.01),-2) | |
| coord.y <- c(0,dnorm(seq(-3,-2,0.01)),0) | |
| curve(dnorm(x,0,1),xlim=c(-3,3),main='Standard Normal') | |
| polygon(coord.x,coord.y,col='skyblue') | |
| text(x=-2.5,y=0.1,label=expression(phi(-2))) | |
| ################################################### | |
| ### code chunk number 13: 02_ADALecture2.Rnw:410-411 | |
| ################################################### | |
| round(qnorm(0.025,lower.tail=FALSE),digits=2) | |
| ################################################### | |
| ### code chunk number 14: 02_ADALecture2.Rnw:445-446 | |
| ################################################### | |
| x<-rnorm(1,mean=600,sd=sqrt(50)) | |
| ################################################### | |
| ### code chunk number 15: 02_ADALecture2.Rnw:451-453 | |
| ################################################### | |
| mu<-seq(400,800,by=0.1) | |
| plot(mu,dnorm(x,mean=mu,sd=sqrt(50)),type="l") | |
| ################################################### | |
| ### code chunk number 16: 02_ADALecture2.Rnw:462-463 | |
| ################################################### | |
| x<-rnorm(10,mean=600,sd=sqrt(50)) | |
| ################################################### | |
| ### code chunk number 17: 02_ADALecture2.Rnw:468-470 | |
| ################################################### | |
| ## mu = 500 | |
| dnorm(x,mean=500,sd=sqrt(50)) | |
| ################################################### | |
| ### code chunk number 18: 02_ADALecture2.Rnw:492-494 | |
| ################################################### | |
| ## mu = 500 | |
| sum(dnorm(x,mean=500,sd=sqrt(50),log=TRUE)) | |
| ################################################### | |
| ### code chunk number 19: 02_ADALecture2.Rnw:503-509 | |
| ################################################### | |
| mu<-seq(400,800,by=0.1) | |
| liks<-rep(NA,length(mu)) | |
| for(i in 1:length(mu)){ | |
| liks[i]<-sum(dnorm(x,mean=mu[i],sd=sqrt(50),log=TRUE)) | |
| } | |
| plot(mu,liks,type="l") | |
| ################################################### | |
| ### code chunk number 20: 02_ADALecture2.Rnw:568-572 | |
| ################################################### | |
| dbinom(x=46,size=100,0.4) | |
| dbinom(x=46,size=100,0.46) | |
| dbinom(x=46,size=100,0.5) | |
| dbinom(x=46,size=100,0.6) | |
| ################################################### | |
| ### code chunk number 21: 02_ADALecture2.Rnw:580-583 | |
| ################################################### | |
| theta<-seq(0,1,by=0.01) | |
| plot(theta,dbinom(x=46,size=100,theta), | |
| xlab=expression(theta),type="l") | |
| ################################################### | |
| ### code chunk number 22: betas | |
| ################################################### | |
| plot(function(x) | |
| dbeta(x,shape1=2,shape2=2), 0,1, | |
| main = "Beta density", | |
| ylab="density",xlab="X",ylim=c(0,4)) | |
| text(.5,1.3,"a=2,b=2") | |
| plot(function(x) | |
| dbeta(x,shape1=3,shape2=3),0,1,add=T) | |
| text(.5,1.8,"a=3,b=3") | |
| plot(function(x) | |
| dbeta(x,shape1=6,shape2=6),0,1,add=T) | |
| text(.5,2.6,"a=6,b=6") | |
| plot(function(x) | |
| dbeta(x,shape1=10,shape2=10),0,1,add=T) | |
| text(.5,3.5,"a=60,b=60") | |
| ################################################### | |
| ### code chunk number 23: 02_ADALecture2.Rnw:772-792 | |
| ################################################### | |
| ##lik: | |
| plot(function(x) | |
| dbeta(x,shape1=46,shape2=54),0,1, | |
| ylab="",xlab="X",col="red", | |
| ylim=c(0,10)) | |
| ## prior: | |
| plot(function(x) | |
| dbeta(x,shape1=2,shape2=2), 0,1, | |
| main = "Prior", | |
| ylab="density",xlab="X",add=T,lty=2) | |
| ## posterior | |
| plot(function(x) | |
| dbeta(x,shape1=48,shape2=56), 0,1, | |
| main = "Posterior", | |
| ylab="density",xlab="X",add=T) | |
| legend(0.1,6,legend=c("post","lik","prior"), | |
| lty=c(1,1,2),col=c("black","red","black")) | |
| ################################################### | |
| ### code chunk number 24: 02_ADALecture2.Rnw:801-821 | |
| ################################################### | |
| ##lik: | |
| plot(function(x) | |
| dbeta(x,shape1=46,shape2=54),0,1, | |
| ylab="",xlab="X",col="red", | |
| ylim=c(0,10)) | |
| ## prior: | |
| plot(function(x) | |
| dbeta(x,shape1=6,shape2=6), 0,1, | |
| main = "Prior", | |
| ylab="density",xlab="X",add=T,lty=2) | |
| ## posterior | |
| plot(function(x) | |
| dbeta(x,shape1=52,shape2=60), 0,1, | |
| main = "Posterior", | |
| ylab="density",xlab="X",add=T) | |
| legend(0.1,6,legend=c("post","lik","prior"), | |
| lty=c(1,1,2),col=c("black","red","black")) | |
| ################################################### | |
| ### code chunk number 25: 02_ADALecture2.Rnw:830-850 | |
| ################################################### | |
| ##lik: | |
| plot(function(x) | |
| dbeta(x,shape1=46,shape2=54),0,1, | |
| ylab="",xlab="X",col="red", | |
| ylim=c(0,10)) | |
| ## prior: | |
| plot(function(x) | |
| dbeta(x,shape1=21,shape2=21), 0,1, | |
| main = "Prior", | |
| ylab="density",xlab="X",add=T,lty=2) | |
| ## posterior | |
| plot(function(x) | |
| dbeta(x,shape1=67,shape2=75), 0,1, | |
| main = "Posterior", | |
| ylab="density",xlab="X",add=T) | |
| legend(0.1,6,legend=c("post","lik","prior"), | |
| lty=c(1,1,2),col=c("black","red","black")) | |
| ################################################### | |
| ### code chunk number 26: 02_ADALecture2.Rnw:892-896 | |
| ################################################### | |
| round(qbeta(0.025,shape1=100,shape2=100),digits=1) | |
| round(qbeta(0.975,shape1=100,shape2=100),digits=1) | |
| ## ambivalent as to whether theta <0.5 or not: | |
| round(pbeta(0.5,shape1=100,shape2=100),digits=1) | |
| ################################################### | |
| ### code chunk number 27: 02_ADALecture2.Rnw:922-923 | |
| ################################################### | |
| qbeta(0.5,shape1=589,shape2=611,lower.tail=FALSE) | |
| ################################################### | |
| ### code chunk number 28: 02_ADALecture2.Rnw:1035-1042 | |
| ################################################### | |
| beautydata<-read.table("data/beauty.txt",header=T) | |
| ## Note: beauty level is centered. | |
| head(beautydata) | |
| ## restate the data as a list for JAGS: | |
| data<-list(x=beautydata$beauty, | |
| y=beautydata$evaluation) | |
| ################################################### | |
| ### code chunk number 29: 02_ADALecture2.Rnw:1074-1091 | |
| ################################################### | |
| library(rjags) | |
| cat(" | |
| model | |
| { | |
| ## specify model for data: | |
| for(i in 1:463){ | |
| y[i] ~ dnorm(mu[i],tau) | |
| mu[i] <- beta0 + beta1 * (x[i]) | |
| } | |
| # priors: | |
| beta0 ~ dunif(-10,10) | |
| beta1 ~ dunif(-10,10) | |
| sigma ~ dunif(0,100) | |
| sigma2 <- pow(sigma,2) | |
| tau <- 1/sigma2 | |
| }", | |
| file="JAGSmodels/beautyexample1.jag" ) | |
| ################################################### | |
| ### code chunk number 30: 02_ADALecture2.Rnw:1121-1138 | |
| ################################################### | |
| ## specify which variables you want to examine | |
| ## the posterior distribution of: | |
| track.variables<-c("beta0","beta1","sigma") | |
| ## define model: | |
| beauty.mod <- jags.model( | |
| file = "JAGSmodels/beautyexample1.jag", | |
| data=data, | |
| n.chains = 1, | |
| n.adapt =2000, | |
| quiet=T) | |
| ## sample from posterior: | |
| beauty.res <- coda.samples(beauty.mod, | |
| var = track.variables, | |
| n.iter = 2000, | |
| thin = 1 ) | |
| ################################################### | |
| ### code chunk number 31: 02_ADALecture2.Rnw:1145-1147 | |
| ################################################### | |
| round(summary(beauty.res)$statistics[,1:2],digits=2) | |
| round(summary(beauty.res)$quantiles[,c(1,3,5)],digits=2) | |
| ################################################### | |
| ### code chunk number 32: 02_ADALecture2.Rnw:1155-1160 | |
| ################################################### | |
| lm_summary<-summary(lm(evaluation~beauty, | |
| beautydata)) | |
| round(lm_summary$coef,digits=2) | |
| round(lm_summary$sigma,digits=2) | |
| ################################################### | |
| ### code chunk number 33: 02_ADALecture2.Rnw:1171-1172 | |
| ################################################### | |
| densityplot(beauty.res) | |
| ################################################### | |
| ### code chunk number 34: 02_ADALecture2.Rnw:1181-1183 | |
| ################################################### | |
| op<-par(mfrow=c(1,3),pty="s") | |
| traceplot(beauty.res) | |
| ################################################### | |
| ### code chunk number 35: 02_ADALecture2.Rnw:1192-1200 | |
| ################################################### | |
| MCMCsamp<-as.matrix(beauty.res) | |
| op<-par(mfrow=c(1,3),pty="s") | |
| hist(MCMCsamp[,1],main=expression(beta[0]), | |
| xlab="",freq=FALSE) | |
| hist(MCMCsamp[,2],main=expression(beta[1]), | |
| xlab="",freq=FALSE) | |
| hist(MCMCsamp[,3],main=expression(sigma), | |
| xlab="",freq=FALSE) | |
| ################################################### | |
| ### code chunk number 36: 02_ADALecture2.Rnw:1214-1216 | |
| ################################################### | |
| data<-list(x=c(8,15,22,29,36), | |
| y=c(177,236,285,350,376)) | |
| ################################################### | |
| ### code chunk number 37: 02_ADALecture2.Rnw:1220-1222 | |
| ################################################### | |
| lm_summary_rats<-summary(fm<-lm(y~x,data)) | |
| round(lm_summary_rats$coef,digits=3) | |
| ################################################### | |
| ### code chunk number 38: 02_ADALecture2.Rnw:1231-1247 | |
| ################################################### | |
| cat(" | |
| model | |
| { | |
| ## specify model for data: | |
| for(i in 1:5){ | |
| y[i] ~ dnorm(mu[i],tau) | |
| mu[i] <- beta0 + beta1 * (x[i]-mean(x[])) | |
| } | |
| # priors: | |
| beta0 ~ dunif(-500,500) | |
| beta1 ~ dunif(-500,500) | |
| tau <- 1/sigma2 | |
| sigma2 <-pow(sigma,2) | |
| sigma ~ dunif(0,200) | |
| }", | |
| file="JAGSmodels/ratsexample2.jag" ) | |
| ################################################### | |
| ### code chunk number 39: 02_ADALecture2.Rnw:1259-1268 | |
| ################################################### | |
| lexdec<-read.table("data/lexdec.txt",header=TRUE) | |
| data<-lexdec[,c(1,2,3,4,5)] | |
| contrasts(data$NativeLanguage)<-contr.sum(2) | |
| contrasts(data$Sex)<-contr.sum(2) | |
| lm_summary_lexdec<-summary(fm<-lm(RT~scale(Trial,scale=F)+ | |
| NativeLanguage+Sex,data)) | |
| round(lm_summary_lexdec$coef,digits=2) | |
| ################################################### | |
| ### code chunk number 40: 02_ADALecture2.Rnw:1277-1281 | |
| ################################################### | |
| dat<-list(y=data$RT, | |
| Trial=(data$Trial-mean(data$Trial)), | |
| Lang=data$NativeLanguage, | |
| Sex=data$Sex) | |
| ################################################### | |
| ### code chunk number 41: 02_ADALecture2.Rnw:1289-1309 | |
| ################################################### | |
| cat(" | |
| model | |
| { | |
| ## specify model for data: | |
| for(i in 1:1659){ | |
| y[i] ~ dnorm(mu[i],tau) | |
| mu[i] <- beta0 + | |
| beta1 * Trial[i]+ | |
| beta2 * Lang[i] + beta3 * Sex[i] | |
| } | |
| # priors: | |
| beta0 ~ dunif(-10,10) | |
| beta1 ~ dunif(-5,5) | |
| beta2 ~ dunif(-5,5) | |
| beta3 ~ dunif(-5,5) | |
| tau <- 1/sigma2 | |
| sigma2 <-pow(sigma,2) | |
| sigma ~ dunif(0,200) | |
| }", | |
| file="JAGSmodels/multregexample1.jag" ) | |
| ################################################### | |
| ### code chunk number 42: 02_ADALecture2.Rnw:1317-1331 | |
| ################################################### | |
| track.variables<-c("beta0","beta1", | |
| "beta2","beta3","sigma") | |
| library(rjags) | |
| lexdec.mod <- jags.model( | |
| file = "JAGSmodels/multregexample1.jag", | |
| data=dat, | |
| n.chains = 1, | |
| n.adapt =2000, | |
| quiet=T) | |
| lexdec.res <- coda.samples( lexdec.mod, | |
| var = track.variables, | |
| n.iter = 3000) | |
| ################################################### | |
| ### code chunk number 43: 02_ADALecture2.Rnw:1338-1342 | |
| ################################################### | |
| round(summary(lexdec.res)$statistics[,1:2], | |
| digits=2) | |
| round(summary(lexdec.res)$quantiles[,c(1,3,5)], | |
| digits=2) | |
| ################################################### | |
| ### code chunk number 44: 02_ADALecture2.Rnw:1351-1356 | |
| ################################################### | |
| lm_summary_lexdec<-summary( | |
| fm<-lm(RT~scale(Trial,scale=F) | |
| +NativeLanguage+Sex, | |
| lexdec)) | |
| round(lm_summary_lexdec$coef,digits=2)[,1:2] | |
| ################################################### | |
| ### code chunk number 45: 02_ADALecture2.Rnw:1376-1378 | |
| ################################################### | |
| beetledata<-read.table("data/beetle.txt",header=T) | |
| head(beetledata) | |
| ################################################### | |
| ### code chunk number 46: 02_ADALecture2.Rnw:1387-1390 | |
| ################################################### | |
| dat<-list(x=beetledata$dose-mean(beetledata$dose), | |
| n=beetledata$number, | |
| y=beetledata$killed) | |
| ################################################### | |
| ### code chunk number 47: 02_ADALecture2.Rnw:1397-1409 | |
| ################################################### | |
| cat(" | |
| model | |
| { | |
| for(i in 1:8){ | |
| y[i] ~ dbin(p[i],n[i]) | |
| logit(p[i]) <- beta0 + beta1 * x[i] | |
| } | |
| # priors: | |
| beta0 ~ dunif(0,pow(100,2)) | |
| beta1 ~ dunif(0,pow(100,2)) | |
| }", | |
| file="JAGSmodels/glmexample1.jag" ) | |
| ################################################### | |
| ### code chunk number 48: 02_ADALecture2.Rnw:1418-1434 | |
| ################################################### | |
| track.variables<-c("beta0","beta1") | |
| ## new: | |
| inits <- list (list(beta0=0, | |
| beta1=0)) | |
| glm.mod <- jags.model( | |
| file = "JAGSmodels/glmexample1.jag", | |
| data=dat, | |
| ## new: | |
| inits=inits, | |
| n.chains = 1, | |
| n.adapt =2000, quiet=T) | |
| glm.res <- coda.samples( glm.mod, | |
| var = track.variables, | |
| n.iter = 2000) | |
| ################################################### | |
| ### code chunk number 49: 02_ADALecture2.Rnw:1441-1445 | |
| ################################################### | |
| round(summary(glm.res)$statistics[,1:2], | |
| digits=2) | |
| round(summary(glm.res)$quantiles[,c(1,3,5)], | |
| digits=2) | |
| ################################################### | |
| ### code chunk number 50: 02_ADALecture2.Rnw:1454-1458 | |
| ################################################### | |
| round(coef(glm(killed/number~scale(dose,scale=F), | |
| weights=number, | |
| family=binomial(),beetledata)), | |
| digits=2) | |
| ################################################### | |
| ### code chunk number 51: 02_ADALecture2.Rnw:1464-1465 | |
| ################################################### | |
| plot(glm.res) | |
| ################################################### | |
| ### code chunk number 52: 02_ADALecture2.Rnw:1494-1496 | |
| ################################################### | |
| data<-list(x=c(8,15,22,29,36), | |
| y=c(177,236,285,350,376)) | |
| ################################################### | |
| ### code chunk number 53: 02_ADALecture2.Rnw:1503-1522 | |
| ################################################### | |
| cat(" | |
| model | |
| { | |
| ## specify model for data: | |
| for(i in 1:5){ | |
| y[i] ~ dnorm(mu[i],tau) | |
| mu[i] <- beta0 + beta1 * (x[i]-mean(x[])) | |
| } | |
| ## prediction | |
| mu45 <- beta0+beta1 * (45-mean(x[])) | |
| y45 ~ dnorm(mu45,tau) | |
| # priors: | |
| beta0 ~ dunif(-500,500) | |
| beta1 ~ dunif(-500,500) | |
| tau <- 1/sigma2 | |
| sigma2 <-pow(sigma,2) | |
| sigma ~ dunif(0,200) | |
| }", | |
| file="JAGSmodels/ratsexample2pred.jag" ) | |
| ################################################### | |
| ### code chunk number 54: 02_ADALecture2.Rnw:1529-1541 | |
| ################################################### | |
| track.variables<-c("beta0","beta1","sigma","y45") | |
| rats.mod <- jags.model( | |
| file = "JAGSmodels/ratsexample2pred.jag", | |
| data=data, | |
| n.chains = 1, | |
| n.adapt =2000, quiet=T) | |
| rats.res <- coda.samples( rats.mod, | |
| var = track.variables, | |
| n.iter = 2000, | |
| thin = 1) | |
| ################################################### | |
| ### code chunk number 55: 02_ADALecture2.Rnw:1548-1550 | |
| ################################################### | |
| round(summary(rats.res)$statistics[,1:2], | |
| digits=2) | |
| ################################################### | |
| ### code chunk number 56: 02_ADALecture2.Rnw:1558-1559 | |
| ################################################### | |
| densityplot(rats.res) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment