margarine               package:bayesm               R Documentation

_H_o_u_s_e_h_o_l_d _P_a_n_e_l _D_a_t_a _o_n _M_a_r_g_a_r_i_n_e _P_u_r_c_h_a_s_e_s

_D_e_s_c_r_i_p_t_i_o_n:

     Panel data on purchases of margarine by 516 households. 
     Demographic variables are included.

_U_s_a_g_e:

     data(margarine)

_F_o_r_m_a_t:

     This is an R object that is a list of two data frames,
     list(choicePrice,demos)

     List of 2 
      $ choicePrice:`data.frame':   4470 obs. of  12 variables:
      ... $ hhid    : int [1:4470] 2100016 2100016 2100016 2100016 
      ... $ choice  : num [1:4470] 1 1 1 1 1 4 1 1 4 1 
      ... $ PPk_Stk : num [1:4470] 0.66 0.63 0.29 0.62 0.5 0.58 0.29  
      ... $ PBB_Stk : num [1:4470] 0.67 0.67 0.5 0.61 0.58 0.45 0.51  
      ... $ PFl_Stk : num [1:4470] 1.09 0.99 0.99 0.99 0.99 0.99 0.99 
      ... $ PHse_Stk: num [1:4470] 0.57 0.57 0.57 0.57 0.45 0.45 0.29 
      ... $ PGen_Stk: num [1:4470] 0.36 0.36 0.36 0.36 0.33 0.33 0.33 
      ... $ PImp_Stk: num [1:4470] 0.93 1.03 0.69 0.75 0.72 0.72 0.72 
      ... $ PSS_Tub : num [1:4470] 0.85 0.85 0.79 0.85 0.85 0.85 0.85 
      ... $ PPk_Tub : num [1:4470] 1.09 1.09 1.09 1.09 1.07 1.07 1.07 
      ... $ PFl_Tub : num [1:4470] 1.19 1.19 1.19 1.19 1.19 1.19 1.19 
      ... $ PHse_Tub: num [1:4470] 0.33 0.37 0.59 0.59 0.59 0.59 0.59 

     Pk is Parkay; BB is BlueBonnett, Fl is Fleischmanns, Hse is house,
     Gen is generic, Imp is Imperial, SS is Shed Spread.  _Stk
     indicates  stick, _Tub indicates Tub form.

     $ demos      :`data.frame':   516 obs. of  8 variables:
      ... $ hhid     : num [1:516] 2100016 2100024 2100495 2100560 
      ... $ Income   : num [1:516] 32.5 17.5 37.5 17.5 87.5 12.5 
      ... $ Fs3_4    : int [1:516] 0 1 0 0 0 0 0 0 0 0 
      ... $ Fs5      : int [1:516] 0 0 0 0 0 0 0 0 1 0 
      ... $ Fam_Size : int [1:516] 2 3 2 1 1 2 2 2 5 2 
      ... $ college  : int [1:516] 1 1 0 0 1 0 1 0 1 1 
      ... $ whtcollar: int [1:516] 0 1 0 1 1 0 0 0 1 1 
      ... $ retired  : int [1:516] 1 1 1 0 0 1 0 1 0 0 

     Fs3_4 is dummy (family size 3-4). Fs5 is dummy for family size >=
     5. college,whtcollar,retired are dummies reflecting these
     statuses.

_D_e_t_a_i_l_s:

     choice is a multinomial indicator of one of the 10 brands (in
     order listed under format).  All prices are in $.

_S_o_u_r_c_e:

     Allenby and Rossi (1991), "Quality Perceptions and Asymmetric
     Switching Between Brands,"  _Marketing Science_ 10, 185-205.

_R_e_f_e_r_e_n_c_e_s:

     Chapter 5, _Bayesian Statistics and Marketing_ by Rossi et al.
      <URL:
     http://gsbwww.uchicago.edu/fac/peter.rossi/research/bsm.html>

_E_x_a_m_p_l_e_s:

     data(margarine)
     cat(" Table of Choice Variable ",fill=TRUE)
     print(table(margarine$choicePrice[,2]))
     cat(" Means of Prices",fill=TRUE)
     mat=apply(as.matrix(margarine$choicePrice[,3:12]),2,mean)
     print(mat)
     cat(" Quantiles of Demographic Variables",fill=TRUE)
     mat=apply(as.matrix(margarine$demos[,2:8]),2,quantile)
     print(mat)

     ##
     ## example of processing for use with rhierMnlRwMixture
     ##
     if(nchar(Sys.getenv("LONG_TEST")) != 0)
     {
     select= c(1:5,7)  ## select brands
     chPr=as.matrix(margarine$choicePrice)
     ## make sure to log prices
     chPr=cbind(chPr[,1],chPr[,2],log(chPr[,2+select]))
     demos=as.matrix(margarine$demos[,c(1,2,5)])

     ## remove obs for other alts
     chPr=chPr[chPr[,2] <= 7,]
     chPr=chPr[chPr[,2] != 6,]

     ## recode choice
     chPr[chPr[,2] == 7,2]=6

     hhidl=levels(as.factor(chPr[,1]))
     lgtdata=NULL
     nlgt=length(hhidl)
     p=length(select)  ## number of choice alts
     ind=1
     for (i in 1:nlgt) {
        nobs=sum(chPr[,1]==hhidl[i])
        if(nobs >=5) {
           data=chPr[chPr[,1]==hhidl[i],]
           y=data[,2]
           names(y)=NULL
           X=createX(p=p,na=1,Xa=data[,3:8],nd=NULL,Xd=NULL,INT=TRUE,base=1)
            lgtdata[[ind]]=list(y=y,X=X,hhid=hhidl[i]); ind=ind+1
        }
     }
     nlgt=length(lgtdata)
     ##
     ## now extract demos corresponding to hhs in lgtdata
     ##
     Z=NULL
     nlgt=length(lgtdata)
     for(i in 1:nlgt){
        Z=rbind(Z,demos[demos[,1]==lgtdata[[i]]$hhid,2:3])
     }
     ##
     ## take log of income and family size and demean
     ##
     Z=log(Z)
     Z[,1]=Z[,1]-mean(Z[,1])
     Z[,2]=Z[,2]-mean(Z[,2])

     keep=5
     R=20000
     mcmc1=list(keep=keep,R=R)
     out=rhierMnlRwMixture(Data=list(p=p,lgtdata=lgtdata,Z=Z),Prior=list(ncomp=1),Mcmc=mcmc1)

     begin=100/keep; end=R/keep  
     cat(" Posterior Mean of Delta ",fill=TRUE)
     mat=apply(out$Deltadraw[begin:end,],2,mean)
     print(matrix(mat,ncol=6))
     pmom=momMix(out$probdraw[begin:end,],out$compdraw[begin:end])
     cat(" posterior expectation of mu",fill=TRUE)
     print(pmom$mu)
     cat(" posterior expectation of sd",fill=TRUE)
     print(pmom$sd)
     cat(" posterior expectation of correlations",fill=TRUE)
     print(pmom$corr)

     }

