bank {bayesm}R Documentation

Bank Card Conjoint Data


A panel dataset from a conjoint experiment in which two partial profiles of credit cards were presented to 946 respondents from a regional bank wanting to offer credit cards to customers outside of its normal operating region. Each respondent was presented with between 13 and 17 paired comparisons. The bank and attribute levels are disguised to protect the proprietary interests of the cooperating firm.




The bank object is a list containing two data frames. The first, choiceAtt, provides choice attributes for the partial credit card profiles. The second, demo, provides demographic information on the respondents.


In the choiceAtt data frame:

...$id respondent id
...$choice profile chosen
...$Med_FInt medium fixed interest rate
...$Low_FInt low fixed interest rate
...$Med_VInt variable interest rate
...$Rewrd_2 reward level 2
...$Rewrd_3 reward level 3
...$Rewrd_4 reward level 4
...$Med_Fee medium annual fee level
...$Low_Fee low annual fee level
...$Bank_B bank offering the credit card
...$Out_State location of the bank offering the credit card
...$Med_Rebate medium rebate level
...$High_Rebate high rebate level
...$High_CredLine high credit line level
...$Long_Grace grace period

The profiles are coded as the difference in attribute levels. Thus, that a "-1" means the profile coded as a choice of "0" has the attribute. A value of 0 means that the attribute was not present in the comparison.

In the demo data frame:

...$id respondent id
...$age respondent age in years
...$income respondent income category
...$gender female=1


Allenby, Gregg and James Ginter (1995), "Using Extremes to Design Products and Segment Markets," Journal of Marketing Research, 392–403.


Appendix A, Bayesian Statistics and Marketing by Rossi, Allenby, and McCulloch.


cat(" table of Binary Dep Var", fill=TRUE)
cat(" table of Attribute Variables", fill=TRUE)
mat = apply(as.matrix(bank$choiceAtt[,3:16]), 2, table)
cat(" means of Demographic Variables", fill=TRUE)
mat=apply(as.matrix(bank$demo[,2:3]), 2, mean)

## example of processing for use with rhierBinLogit
if(0) {

  choiceAtt = bank$choiceAtt
  Z = bank$demo
  ## center demo data so that mean of random-effects
  ## distribution can be interpreted as the average respondent
  Z[,1] = rep(1,nrow(Z))
  Z[,2] = Z[,2] - mean(Z[,2])
  Z[,3] = Z[,3] - mean(Z[,3])
  Z[,4] = Z[,4] - mean(Z[,4])
  Z = as.matrix(Z)
  hh = levels(factor(choiceAtt$id))
  nhh = length(hh)
  lgtdata = NULL
  for (i in 1:nhh) {
    y = choiceAtt[choiceAtt[,1]==hh[i], 2]
    nobs = length(y)
    X = as.matrix(choiceAtt[choiceAtt[,1]==hh[i], c(3:16)])
    lgtdata[[i]] = list(y=y, X=X)
  cat("Finished Reading data", fill=TRUE)
  Data = list(lgtdata=lgtdata, Z=Z)
  Mcmc = list(R=10000, sbeta=0.2, keep=20)
  out = rhierBinLogit(Data=Data, Mcmc=Mcmc)
  begin = 5000/20
  summary(out$Deltadraw, burnin=begin)
  summary(out$Vbetadraw, burnin=begin)
  ## plotting examples
    ## plot grand means of random effects distribution (first row of Delta)
    index = 4*c(0:13)+1
    matplot(out$Deltadraw[,index], type="l", xlab="Iterations/20", ylab="",
            main="Average Respondent Part-Worths")
    ## plot hierarchical coefs
    ## plot log-likelihood
    plot(out$llike, type="l", xlab="Iterations/20", ylab="", 
         main="Log Likelihood")

[Package bayesm version 3.1-4 Index]