---
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)