rmnpGibbs(bayesm)R Documentation

Gibbs Sampler for Multinomial Probit

Description

rmnpGibbs implements the McCulloch/Rossi Gibbs Sampler for the multinomial probit model.

Usage

rmnpGibbs(Data, Prior, Mcmc)

Arguments

Data list(X,y)
Prior list(betabar,A,nu,V)
Mcmc list(beta0,sigma0,R,keep)

Details

model:
w_i = X_i beta + e. e~N(0,Sigma). note: w_i, e are (p-1) x 1.
y_i = j, if w_ij > w_i-j j=1,...,p-1. w_i-j means elements of w_i other than jth.
y_i = p, if all w_i < 0.

priors:
beta ~ N(betabar,A^-1)
Sigma ~ IW(nu,V)

to make up X matrix use createX with DIFF=TRUE.

List arguments contain

Value

a list containing:

betadraw R/keep x k array of betadraws
sigmadraw R/keep x (p-1)*(p-1) array of sigma draws – each row is in vector form

Note

beta is not identified. beta/sqrt(Sigma_11) and Sigma/sigma_11 are. See Allenby et al or example below for details.

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 Allenby, McCulloch, and Rossi, Chapter 4.
http://gsbwww.uchicago.edu/fac/peter.rossi/research/bsm.html

See Also

rmvpGibbs

Examples

##

set.seed(66)
p=3
n=500
beta=c(-1,1,1,2)
Sigma=matrix(c(1,.5,.5,1),ncol=2)
k=length(beta)
x1=runif(n*(p-1),min=-1,max=1); x2=runif(n*(p-1),min=-1,max=1)
I2=diag(rep(1,p-1)); xadd=rbind(I2)
for(i in 2:n) { xadd=rbind(xadd,I2)}
X=cbind(xadd,x1,x2)
simout=simmnp(X,p,500,beta,Sigma)

R=2000
Data=list(p=p,y=simout$y,X=simout$X)
Mcmc=list(R=R,keep=1)

out=rmnpGibbs(Mcmc=Mcmc,Data=Data)

cat(" Betadraws ",fill=TRUE)
mat=apply(out$betadraw/sqrt(out$sigmadraw[,1]),2,quantile,probs=c(.01,.05,.5,.95,.99))
mat=rbind(beta,mat); rownames(mat)[1]="beta"; print(mat)
cat(" Sigmadraws ",fill=TRUE)
mat=apply(out$sigmadraw/out$sigmadraw[,1],2,quantile,probs=c(.01,.05,.5,.95,.99))
mat=rbind(as.vector(Sigma),mat); rownames(mat)[1]="sigma"; print(mat)


[Package bayesm version 0.0 Index]