data <- read.table("~/public_html/ph5470/LinearModelExample.txt", header=T)
#Reading Y
Y <- data$Y
#Reading X
X <- as.matrix(data[,2:7])
ones <- rep(1,times=length(Y))
X <- cbind(ones,X)
N <- length(Y)
p <- ncol(X)
#Estimating quantities
tXX.inv <- solve(t(X)%*%X)
beta.hat <- tXX.inv%*%t(X)%*%Y
s.sq <- t(Y - X%*%beta.hat)%*%(Y - X%*%beta.hat) / (N - p)
#Simulation loops
NITER <- 500
sigmasq <- rep(0,times=NITER)
beta <- matrix(0, nrow=NITER,ncol=p)
library(MASS)
for (i in 1:NITER) {
sigmasq[i] <- 1/rgamma(1, (N-p)/2, (N-p)*s.sq/2)
Sigma <- sigmasq[i]*(tXX.inv)
beta[i,] <- mvrnorm(1,beta.hat,Sigma)
}
beta.qnt <- matrix(0, nrow=p, ncol=3)
for (i in 1:p) {
beta.qnt[i,] <- quantile(beta[1:NITER,i], c(0.50, 0.025, 0.975))
}
sigmasq.qnt <- quantile(sigmasq, c(0.50, 0.025, 0.975))
detach(package:MASS)