rsurGibbs {bayesm} | R Documentation |
rsurGibbs
implements a Gibbs Sampler to draw from the posterior of the Seemingly Unrelated
Regression (SUR) Model of Zellner
rsurGibbs(Data, Prior, Mcmc)
Data |
list(regdata) |
Prior |
list(betabar,A, nu, V) |
Mcmc |
list(R,keep) |
Model: y_i = X_ibeta_i + e_i. i=1,...,m. m regressions.
(e(1,k), ..., e(m,k)) ~ N(0,Sigma). k=1, ..., nobs.
We can also write as the stacked model:
y = Xbeta + e where y is a nobs*m long vector and k=length(beta)=sum(length(betai)).
Note: we must have the same number of observations in each equation but we can have different numbers of X variables
Priors: beta ~ N(betabar,A^{-1}). Sigma ~ IW(nu,V).
List arguments contain
regdata
betabar
A
nu
V
R
keep
list of MCMC draws
betadraw |
R x k array of betadraws |
Sigmadraw |
R x (m*m) array of Sigma draws |
Peter Rossi, Graduate School of Business, University of Chicago, Peter.Rossi@ChicagoGsb.edu.
For further discussion, see Bayesian Statistics and Marketing
by Rossi, Allenby and McCulloch, Chapter 3.
http://faculty.chicagogsb.edu/peter.rossi/research/bsm.html
if(nchar(Sys.getenv("LONG_TEST")) != 0) {R=1000} else {R=10} ## ## simulate data from SUR set.seed(66) beta1=c(1,2) beta2=c(1,-1,-2) nobs=100 nreg=2 iota=c(rep(1,nobs)) X1=cbind(iota,runif(nobs)) X2=cbind(iota,runif(nobs),runif(nobs)) Sigma=matrix(c(.5,.2,.2,.5),ncol=2) U=chol(Sigma) E=matrix(rnorm(2*nobs),ncol=2) y1=X1%*%beta1+E[,1] y2=X2%*%beta2+E[,2] ## ## run Gibbs Sampler regdata=NULL regdata[[1]]=list(y=y1,X=X1) regdata[[2]]=list(y=y2,X=X2) Mcmc1=list(R=R) out=rsurGibbs(Data=list(regdata=regdata),Mcmc=Mcmc1) cat("Summary of beta draws",fill=TRUE) summary(out$betadraw,tvalues=c(beta1,beta2)) cat("Summary of Sigmadraws",fill=TRUE) summary(out$Sigmadraw,tvalues=as.vector(Sigma[upper.tri(Sigma,diag=TRUE)])) if(0){ plot(out$betadraw,tvalues=c(beta1,beta2)) }