rmultireg {bayesm} | R Documentation

## Draw from the Posterior of a Multivariate Regression

### Description

`rmultireg` draws from the posterior of a Multivariate Regression model with a natural conjugate prior.

### Usage

    rmultireg(Y, X, Bbar, A, nu, V)

### Arguments

`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

### Details

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

### Value

A list of the components of a draw from the posterior

`B` | draw of regression coefficient matrix
`Sigma` | draw of Sigma

### Warning

This routine is a utility routine that does not check the input arguments for proper dimensions and type.

### Author(s)

Peter Rossi, Graduate School of Business, University of Chicago, Peter.Rossi@ChicagoGsb.edu.

### References

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

### See Also

`rmultiregfp`,`init.rmultiregfp`

### Examples

    ##
    if(nchar(Sys.getenv("LONG_TEST")) != 0) {R=2000} else {R=10}

    set.seed(66)
    n=200
    m=2
    X=cbind(rep(1,n),runif(n))
    k=ncol(X)
    B=matrix(c(1,2,-1,3),ncol=m)
    Sigma=matrix(c(1,.5,.5,1),ncol=m); RSigma=chol(Sigma)
    Y=X%*%B+matrix(rnorm(m*n),ncol=m)%*%RSigma

    betabar=rep(0,k*m);Bbar=matrix(betabar,ncol=m)
    A=diag(rep(.01,k))
    nu=3; V=nu*diag(m)

    betadraw=matrix(double(R*k*m),ncol=k*m)
    Sigmadraw=matrix(double(R*m*m),ncol=m*m)
    for (rep in 1:R)
       {out=rmultireg(Y,X,Bbar,A,nu,V);betadraw[rep,]=out$B
        Sigmadraw[rep,]=out$Sigma}

    cat(" Betadraws ",fill=TRUE)
    mat=apply(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(Sigmadraw,2,quantile,probs=c(.01,.05,.5,.95,.99))
    mat=rbind(as.vector(Sigma),mat); rownames(mat)[1]="Sigma"
    print(mat)

[Package bayesm version 2.0-8 Index]