--- title: "MCMC linear model" output: html_notebook --- ```{r} setwd("~/Documents/Web/Teaching/PBIO_294/Homework/10.25.2017") ``` ```{r} wtData<-read.table("http://www.uvm.edu/~bbeckage/Teaching/DataAnalysis/Data/wts.txt",header=TRUE) head(wtData) summary(lm(weight_lbs~height_in,data=wtData)) ``` Generating simulated data with known parameters to recapture ```{r} 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) wtData<-data.frame(weight_lbs=y, height_in=x) summary(lm(weight_lbs~height_in,data=wtData)) ``` Metropolis Algorithym 1. Intialize the chain at some initial value of p 2. Generate a proposed value of p 3. Calculate acceptabce probability r 4. Accept proposed value of p with probability r 5. Repeat n times ```{r} nIter<-5000 proposalSD<-5 priorMean<-0; priorSD<-100; alphaPrior<-0.001; betaPrior<-0.001 # Prior parameters: priorMean,priorSD, alphaPrior, betaPrior b0<-b1<-sd<-vector() b0[1]<-1; b1[1]<-1; sd[1]<-1 # Initial values # Create likelihood functions dataLik<-makeDataLik(wtData) normPriorB0<-makeNormPriorL(priorMean,priorSD) normPriorB1<-makeNormPriorL(priorMean,priorSD) invGammaL<-makeInvGamma(alphaPrior,betaPrior) sampNormSD<-makeSampNormSD(alphaPrior,betaPrior,wtData) for(i in 1:nIter){ # Iterations in sample: i loop if(identical(i %% 1000,0)) cat('iter: ',i,fill=TRUE) # keep track of progress # first sample b0 using a Metropolis step b0Star<-rnorm(n=1,mean=b0[i],sd=proposalSD) #r<-min(1, ( posteriorLik(b0Star,b1[i],sd[i]) ) / ( posteriorLik(b0[i],b1[i],sd[i]) ) ) r<-min(1, exp( posteriorLik(b0Star,b1[i],sd[i]) - posteriorLik(b0[i],b1[i],sd[i]) ) ) if(runif(1)