rscaleUsage {bayesm} | R Documentation |
rscaleUsage
implements an MCMC algorithm for multivariate ordinal data with scale usage heterogeniety.
rscaleUsage(Data,Prior, Mcmc)
Data |
list(k,x) |
Prior |
list(nu,V,mubar,Am,gsigma,gl11,gl22,gl12,Lambdanu,LambdaV,ge) (optional) |
Mcmc |
list(R,keep,ndghk,printevery,e,y,mu,Sigma,sigma,tau,Lambda) (optional) |
Model: n=nrow(x) individuals respond to m=ncol(x) questions. all questions are on a scale 1, ..., k.
for respondent i and question j,
x_{ij} = d, if c_{d-1} <= y_{ij} <= c_d.
d=1,...,k. c_d = a + bd +ed^2.
y_i = mu + tau_i*iota + sigma_i*z_i. z_i ~ N(0,Sigma).
Priors:
(tau_i,ln(sigma_i)) ~ N(phi,Lamda). phi=(0,lambda_{22}).
mu ~ N(mubar, Am{^-1}).
Sigma ~ IW(nu,V).
Lambda ~ IW(Lambdanu,LambdaV).
e ~ unif on a grid.
a list containing:
Sigmadraw |
R/keep x m*m array of Sigma draws |
mudraw |
R/keep x m array of mu draws |
taudraw |
R/keep x n array of tau draws |
sigmadraw |
R/keep x n array of sigma draws |
Lambdadraw |
R/keep x 4 array of Lamda draws |
edraw |
R/keep x 1 array of e draws |
tau_i, sigma_i are identified from the scale usage patterns in the m questions asked per respondent (# cols of x). Do not attempt to use this on data sets with only a small number of total questions!
It is highly recommended that the user choose the default settings. This means not specifying the argument
Prior
and setting R
in Mcmc and Data
only. If you wish to change prior settings and/or
the grids used, please read the case study in Allenby et al carefully.
Rob McCulloch and 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, Case Study on Scale Usage Heterogeneity.
http://gsbwww.uchicago.edu/fac/peter.rossi/research/bsm.html
## if(nchar(Sys.getenv("LONG_TEST")) != 0) {R=1000} else {R=5} { data(customerSat) surveydat = list(k=10,x=as.matrix(customerSat)) mcmc = list(R=R) set.seed(66) out=rscaleUsage(Data=surveydat,Mcmc=mcmc) cat(" mudraws ",fill=TRUE) mat=apply(out$mudraw,2,quantile,probs=c(.01,.05,.5,.95,.99)) print(mat) }