Learn R Programming

bayesm (version 1.1-2)

runiregGibbs: Gibbs Sampler for Univariate Regression

Description

runiregGibbs implements a Gibbs Sampler to draw from posterior for univariate regression with a conditionally conjugate prior.

Usage

runiregGibbs(Data, Prior, Mcmc)

Arguments

Data
list(y,X)
Prior
list(betabar,A, nu, ssq)
Mcmc
list(sigmasq,R,keep)

Value

  • list of MCMC draws
  • betadrawR x k array of betadraws
  • sigmasqdrawR vector of sigma-sq draws

concept

  • bayes
  • Gibbs Sampler
  • regression
  • MCMC

Details

Model: $y = Xbeta + e$. $e$ $\sim$ $N(0,sigmasq)$. Priors: $beta$ $\sim$ $N(betabar,A^{-1})$. $sigmasq$ $\sim$ $(nu*ssq)/chisq_{nu}$. List arguments contain
  • X
{Design Matrix} y{n x 1 vector of observations, (0 or 1)} betabar{k x 1 prior mean (def: 0)} A{k x k prior precision matrix (def: .01I)} nu{ d.f. parm for Inverted Chi-square prior} ssq{ scale parm for Inverted Chi-square prior} R{ number of MCMC draws } keep{ thinning parameter - keep every keepth draw }

References

For further discussion, see Bayesian Statistics and Marketing by Allenby, McCulloch, and Rossi, Chapter 3. http://gsbwww.uchicago.edu/fac/peter.rossi/research/bsm.html

See Also

runireg

Examples

Run this code
if(nchar(Sys.getenv("LONG_TEST")) != 0) {R=2000} else {R=10}
set.seed(66)
n=100
X=cbind(rep(1,n),runif(n)); beta=c(1,2); sigsq=.25
y=X%*%beta+rnorm(n,sd=sqrt(sigsq))

A=diag(c(.05,.05)); betabar=c(0,0)
nu=3; ssq=1.0

Data=list(y=y,X=X); Mcmc=list(R=R,keep=1) ; Prior=list(A=A,betabar=betabar,nu=nu,ssq=ssq)
out=runiregGibbs(Data=Data,Prior=Prior,Mcmc=Mcmc)
cat("Betadraws ",fill=TRUE)
mat=apply(out$betadraw,2,quantile,probs=c(.01,.05,.5,.95,.99))
mat=rbind(beta,mat); rownames(mat)[1]="beta"; print(mat)
cat("Sigma-sq draws",fill=TRUE)
cat("sigma-sq= ",sigsq,fill=TRUE)
print(quantile(out$sigmasqdraw,probs=c(.01,.05,.5,.95,.99)))

Run the code above in your browser using DataLab