rmultireg {rpud} | R Documentation |
rmultireg
draws from the posterior of a
Multivariate Regression model with a natural conjugate prior.
rmultireg(Y, X, Bbar, A, nu, V, rep)
Y |
n x m matrix of observations on m dep vars |
X |
n x k matrix of observations on indep vars (supply intercept) |
Bbar |
k x m matrix of prior mean of regression coefficients |
A |
k x k Prior precision matrix |
nu |
d.f. parameter for Sigma |
V |
m x m pdf location parameter for prior on Sigma |
rep |
number of posterior sample draws |
Model: Y=XB+U. cov(u_i) = Sigma. B is k x m matrix of coefficients. Sigma is m x m covariance.
Priors:
beta given Sigma ~ N(betabar,Sigma (x) A^{-1}).
betabar=vec(Bbar); beta = vec(B)
Sigma ~ IW(nu,V).
A list of the components of draws from the posterior
betadraw |
draws of regression coefficient matrix |
Sigmadraw |
draws of Sigma |
Chi Yau (based on R doc of rmultireg
in bayesm
by Peter Rossi)
chi.yau@r-tutor.com
Rossi, Allenby and McCulloch:
Bayesian Statistics and Marketing Ch 2
http://www.perossi.org/home/bsm-1
## Not run: library(rpud) data.path <- file.path(path.package(package="rpud"), "runit/data") # sample X X <- read.table( file.path(data.path, "rmultireg-n100x2-x.txt"), header=FALSE) X <- as.matrix(X) # sample Y Y <- read.table( file.path(data.path, "rmultireg-n100x2-y.txt"), header=FALSE) Y <- as.matrix(Y) # parameters n <- nrow(X) k <- ncol(X) m <- ncol(Y) Bbar <- matrix(c(1, 0, -1, 1),nrow=k,ncol=m) # prior conjugate (normal) mean of B A <- matrix(c(0.1, -0.05, -0.05, 0.1),nrow=k) # prior conjugate (normal) precision of B nu <- 3; V <- nu*diag(m) # prior Wishart params of Sigma # mcmc params R <- 2000 set.seed(66) out <- rpud::rmultireg(Y, X, Bbar, A, nu, V, rep=R) # true params B <- matrix(c(1,2,-1,3),ncol=m) Sigma <- matrix(c(1,.5,.5,1),ncol=m) cat(" Beta draws ",fill=TRUE) mat <- apply(out$betadraw,2,quantile,probs=c(.01,.05,.5,.95,.99)) mat <- rbind(as.vector(B),mat); rownames(mat)[1]="beta" print(mat) cat(" Sigma draws",fill=TRUE) mat <- apply(out$Sigmadraw,2,quantile,probs=c(.01,.05,.5,.95,.99)) mat <- rbind(as.vector(Sigma),mat); rownames(mat)[1]="Sigma" print(mat) ## End(Not run)