rmnlIndepMetrop {bayesm} | R Documentation |
rmnIndepMetrop
implements Independence Metropolis for the MNL.
rmnlIndepMetrop(Data, Prior, Mcmc)
Data |
list(p,y,X) |
Prior |
list(A,betabar) optional |
Mcmc |
list(R,keep,nu) |
Model: y ~ MNL(X,beta). Pr(y=j) = exp(x_j'beta)/sum_k{e^{x_k'beta}}.
Prior: beta ~ N(betabar,A^{-1})
list arguments contain:
p
y
X
A
betabar
R
keep
nu
a list containing:
betadraw |
R/keep x nvar array of beta draws |
loglike |
R/keep vector of loglike values for each draw |
acceptr |
acceptance rate of Metropolis 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 5.
http://faculty.chicagogsb.edu/peter.rossi/research/bsm.html
## if(nchar(Sys.getenv("LONG_TEST")) != 0) {R=2000} else {R=10} set.seed(66) n=200; p=3; beta=c(1,-1,1.5,.5) simmnl= function(p,n,beta) { # note: create X array with 2 alt.spec vars k=length(beta) X1=matrix(runif(n*p,min=-1,max=1),ncol=p) X2=matrix(runif(n*p,min=-1,max=1),ncol=p) X=createX(p,na=2,nd=NULL,Xd=NULL,Xa=cbind(X1,X2),base=1) Xbeta=X%*%beta # now do probs p=nrow(Xbeta)/n Xbeta=matrix(Xbeta,byrow=TRUE,ncol=p) Prob=exp(Xbeta) iota=c(rep(1,p)) denom=Prob%*%iota Prob=Prob/as.vector(denom) # draw y y=vector("double",n) ind=1:p for (i in 1:n) { yvec=rmultinom(1,1,Prob[i,]); y[i]=ind%*%yvec } return(list(y=y,X=X,beta=beta,prob=Prob)) } simout=simmnl(p,n,beta) Data1=list(y=simout$y,X=simout$X,p=p); Mcmc1=list(R=R,keep=1) out=rmnlIndepMetrop(Data=Data1,Mcmc=Mcmc1) cat("Summary of beta draws",fill=TRUE) summary(out$betadraw,tvalues=beta) if(0){ ## plotting examples plot(out$betadraw) }