title: ChoiceModelR - part worths
body: <p>I have followed the instructions in section 13.5.1 of <em>R for Marketing Research and Analytics</em>, transforming a set of data into the required format and running the following commands. I want the part worths to be calculated between the levels of an attribute, i.e., that sum of the levels per attribute should equal zero. Could anyone help me with this?  </p>
  
  <pre><code>&gt; library(bayesm)
  &gt; library(MASS)
  &gt; library(lattice)
  &gt; library(Matrix)
  &gt; library(ChoiceModelR)
  &gt; Test &lt;- data.frame(ChoiceData)
  &gt; dput(Test)
  structure(list(ID = c(22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 
  22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 
  22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 22L, 31L, 31L, 31L, 31L, 
  31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 
  31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L, 31L
  ), Question = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 
  5L, 5L, 5L, 6L, 6L, 6L, 7L, 7L, 7L, 8L, 8L, 8L, 9L, 9L, 9L, 10L, 
  10L, 10L, 1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 4L, 4L, 5L, 
  5L, 5L, 6L, 6L, 6L, 7L, 7L, 7L, 8L, 8L, 8L, 9L, 9L, 9L, 10L, 
  10L, 10L), Alt = c(1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 
  3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 
  1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 
  2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 
  3L), FormatBottle = c(0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 
  0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 
  0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 
  0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 
  1L, 0L), FormatTube = c(1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 
  1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 
  0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
  1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 
  0L, 1L), FormatDispenser = c(0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 
  0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
  0L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 
  0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 0L, 0L, 
  0L, 0L, 0L, 0L), FormatJar = c(0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 
  0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 
  0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 
  1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
  0L, 1L, 0L, 0L), ShapeBrand = c(1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 
  0L, 1L, 0L, 1L, 0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 
  0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 
  0L, 1L, 0L, 1L, 1L, 1L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 
  1L, 0L, 1L, 0L), ShapeGeneric = c(0L, 1L, 1L, 0L, 1L, 0L, 0L, 
  1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 
  1L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 
  0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 1L, 1L, 
  1L, 0L, 1L, 0L, 1L), ColourBlue = c(0L, 0L, 1L, 0L, 0L, 0L, 1L, 
  0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 
  0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 
  0L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 
  0L, 1L, 0L, 1L, 0L), ColourWhite = c(0L, 1L, 0L, 1L, 0L, 0L, 
  0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 
  0L, 1L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 0L, 1L, 
  1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 
  0L, 0L, 0L, 0L, 0L, 1L), ColourPink = c(1L, 0L, 0L, 0L, 1L, 1L, 
  0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 0L, 
  1L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 
  0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 1L, 
  0L, 1L, 0L, 1L, 0L, 0L), LogoWith = c(1L, 0L, 1L, 0L, 1L, 1L, 
  0L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 
  1L, 1L, 0L, 1L, 1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 0L, 
  1L, 0L, 1L, 0L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 0L, 1L, 1L, 1L, 0L, 
  0L, 1L, 1L, 0L, 0L, 1L), LogoWithout = c(0L, 1L, 0L, 1L, 0L, 
  0L, 1L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 0L, 1L, 1L, 0L, 
  1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 0L, 
  1L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L, 0L, 1L, 1L, 1L, 0L, 0L, 0L, 
  1L, 1L, 0L, 0L, 1L, 1L, 0L), Choice = c(3L, 0L, 0L, 3L, 0L, 0L, 
  3L, 0L, 0L, 3L, 0L, 0L, 3L, 0L, 0L, 2L, 0L, 0L, 3L, 0L, 0L, 2L, 
  0L, 0L, 1L, 0L, 0L, 3L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 
  0L, 1L, 0L, 0L, 3L, 0L, 0L, 1L, 0L, 0L, 1L, 0L, 0L, 3L, 0L, 0L, 
  3L, 0L, 0L, 2L, 0L, 0L)), .Names = c("ID", "Question", "Alt", 
  "FormatBottle", "FormatTube", "FormatDispenser", "FormatJar", 
  "ShapeBrand", "ShapeGeneric", "ColourBlue", "ColourWhite", "ColourPink", 
  "LogoWith", "LogoWithout", "Choice"), row.names = c(NA, -60L), class = "data.frame")
  &gt; hb.post &lt;- choicemodelr(data=Test, xcoding=rep(1, 11), mcmc=list(R=10000, use=5000), 
                            options=list(save=TRUE))
                      Logit Data                    
  ==================================================
  Attribute       Type         Levels
  -----------------------------------
  Attribute 1    Linear          1
  Attribute 2    Linear          1
  Attribute 3    Linear          1
  Attribute 4    Linear          1
  Attribute 5    Linear          1
  Attribute 6    Linear          1
  Attribute 7    Linear          1
  Attribute 8    Linear          1
  Attribute 9    Linear          1
  Attribute 10   Linear          1
  Attribute 11   Linear          1
  
  11 parameters to be estimated.
  
  2 total units.
  Average of 3 alternatives in each of 10 sets per unit.
  20 tasks in total.
  
  Table of choice data pooled across units:
  Choice  Count   Pct.
  --------------------
     1    7      35%
     2    3      15%
     3    10     50%
  
        MCMC Inference for Hierarchical Logit       
  ==================================================
  Total Iterations:          10000
  Draws used in estimation:  5000
  Units:                     2
  Parameters per unit:       11
  Constraints not in effect.
  Draws are to be saved.
  Prior degrees of freedom:  5
  Prior variance:            2
  
  MCMC Iteration Beginning...
  Iteration  Acceptance   RLH     Pct. Cert.   Avg. Var.   RMS     Time to End
        100  0.395        0.526   0.361        6.28        1.15    0:30  
        200  0.315        0.683   0.617        5.97        2.79    0:26  
        300  0.310        0.750   0.720        6.09        3.83    0:25  
        400  0.315        0.775   0.757        6.35        5.59    0:26  
        500  0.305        0.760   0.739        6.88        7.35    0:26  
        600  0.320        0.749   0.729        7.26        8.24    0:25  
        700  0.300        0.790   0.776        7.10        8.67    0:25  
        800  0.295        0.777   0.766        7.02        9.02    0:25  
        900  0.315        0.770   0.753        7.78        9.63    0:25  
       1000  0.300        0.851   0.847        8.25        10.83   0:25  
       1100  0.320        0.798   0.788        7.30        11.10   0:24  
       1200  0.330        0.815   0.810        7.55        9.99    0:24  
       1300  0.325        0.778   0.766        7.18        9.54    0:23  
       1400  0.335        0.800   0.793        8.70        9.61    0:23  
       1500  0.300        0.787   0.776        6.94        9.59    0:22  
       1600  0.345        0.701   0.667        7.24        10.88   0:22  
       1700  0.310        0.777   0.759        7.20        11.61   0:22  
       1800  0.335        0.771   0.757        7.19        12.12   0:22  
       1900  0.300        0.844   0.838        8.66        12.27   0:21  
       2000  0.305        0.902   0.902        9.56        12.31   0:21  
       2100  0.320        0.901   0.902        9.30        12.38   0:21  
       2200  0.315        0.892   0.893        8.61        12.00   0:21  
       2300  0.320        0.833   0.829        7.43        11.07   0:21  
       2400  0.315        0.813   0.808        6.79        11.08   0:21  
       2500  0.335        0.801   0.796        6.97        10.66   0:21  
       2600  0.310        0.804   0.795        7.14        10.24   0:21  
       2700  0.320        0.803   0.795        7.35        9.83    0:21  
       2800  0.320        0.760   0.745        6.75        9.71    0:20  
       2900  0.320        0.805   0.796        7.98        9.56    0:20  
       3000  0.325        0.798   0.789        7.72        9.85    0:20  
       3100  0.285        0.763   0.747        6.83        8.54    0:20  
       3200  0.290        0.846   0.840        7.49        8.38    0:20  
       3300  0.315        0.851   0.847        7.30        9.34    0:20  
       3400  0.350        0.880   0.879        9.17        10.06   0:19  
       3500  0.310        0.868   0.866        9.54        10.22   0:19  
       3600  0.345        0.907   0.908        10.08       10.66   0:19  
       3700  0.330        0.881   0.882        8.01        10.73   0:19  
       3800  0.315        0.840   0.837        8.14        11.25   0:19  
       3900  0.315        0.818   0.812        8.51        11.10   0:19  
       4000  0.280        0.840   0.837        8.34        10.87   0:18  
       4100  0.325        0.869   0.867        9.70        11.35   0:18  
       4200  0.295        0.881   0.882        10.34       11.95   0:18  
       4300  0.315        0.850   0.848        9.31        12.20   0:18  
       4400  0.335        0.898   0.899        12.03       12.74   0:18  
       4500  0.320        0.822   0.810        10.79       12.66   0:17  
       4600  0.320        0.878   0.873        9.21        11.67   0:17  
       4700  0.320        0.863   0.861        11.02       12.19   0:17  
       4800  0.300        0.848   0.845        9.69        13.76   0:17  
       4900  0.365        0.851   0.850        7.95        14.14   0:17  
       5000  0.305        0.815   0.809        7.43        13.76   0:17  
       5100  0.290        0.835   0.832        7.61        13.90   0:16  
       5200  0.315        0.821   0.817        7.08        13.52   0:16  
       5300  0.315        0.783   0.772        7.20        13.71   0:16  
       5400  0.350        0.755   0.738        7.40        13.62   0:15  
       5500  0.320        0.770   0.758        6.42        12.94   0:15  
       5600  0.330        0.837   0.833        6.76        12.85   0:15  
       5700  0.325        0.834   0.832        7.13        13.76   0:15  
       5800  0.365        0.850   0.850        7.39        15.56   0:14  
       5900  0.305        0.872   0.873        7.75        16.34   0:14  
       6000  0.300        0.885   0.886        12.10       17.85   0:14  
       6100  0.290        0.887   0.888        10.45       17.49   0:14  
       6200  0.310        0.882   0.883        8.58        16.52   0:14  
       6300  0.320        0.793   0.778        7.42        16.25   0:13  
       6400  0.320        0.790   0.779        6.81        15.68   0:13  
       6500  0.315        0.828   0.824        7.13        15.92   0:13  
       6600  0.300        0.816   0.808        6.94        17.08   0:12  
       6700  0.340        0.847   0.845        7.76        17.64   0:12  
       6800  0.305        0.831   0.829        8.83        17.03   0:12  
       6900  0.305        0.799   0.791        7.18        16.70   0:12  
       7000  0.325        0.816   0.812        7.03        16.29   0:11  
       7100  0.345        0.799   0.792        6.87        17.43   0:11  
       7200  0.310        0.785   0.777        6.56        18.22   0:11  
       7300  0.325        0.732   0.711        6.66        17.52   0:10  
       7400  0.335        0.821   0.814        7.23        18.32   0:10  
       7500  0.280        0.824   0.821        6.91        18.55   0:10  
       7600  0.300        0.821   0.817        7.34        19.74   0:09  
       7700  0.335        0.805   0.798        7.84        20.71   0:09  
       7800  0.295        0.771   0.757        7.84        20.98   0:09  
       7900  0.340        0.771   0.756        7.68        22.60   0:08  
       8000  0.305        0.779   0.768        7.18        23.22   0:08  
       8100  0.365        0.779   0.769        8.01        24.37   0:08  
       8200  0.315        0.791   0.782        8.96        25.21   0:07  
       8300  0.305        0.803   0.795        7.85        23.95   0:07  
       8400  0.285        0.756   0.741        7.58        22.80   0:07  
       8500  0.340        0.822   0.818        7.51        21.42   0:06  
       8600  0.295        0.837   0.836        7.46        19.89   0:06  
       8700  0.290        0.848   0.847        6.95        18.63   0:05  
       8800  0.325        0.872   0.873        7.96        17.39   0:05  
       8900  0.295        0.891   0.893        7.82        16.30   0:05  
       9000  0.325        0.891   0.890        9.22        17.79   0:04  
       9100  0.315        0.862   0.856        8.80        18.25   0:04  
       9200  0.325        0.833   0.826        9.29        18.26   0:03  
       9300  0.295        0.782   0.770        8.34        16.97   0:03  
       9400  0.325        0.807   0.801        8.25        17.51   0:03  
       9500  0.315        0.828   0.825        8.22        17.14   0:02  
       9600  0.315        0.880   0.879        7.92        16.89   0:02  
       9700  0.295        0.895   0.895        9.14        16.41   0:01  
       9800  0.335        0.884   0.883        9.79        17.15   0:01  
       9900  0.300        0.907   0.909        11.95       17.25   0:00  
      10000  0.310        0.809   0.801        9.58        16.38   0:00  
  
  Total Time Elapsed: 0:44
  
  Writing estimated unit-level betas to Rbetas.csv in the working directory
  
  &gt; names(hb.post)
  [1] "betadraw" "compdraw" "loglike" 
  &gt; hb.post$compdraw[[1]]$mu
   [1]  12.968273  -2.910196  -3.918684 -18.195898  -7.391889 -11.120094   9.027483
   [8]   5.318799  10.470909  23.447956  18.273067
  &gt; crossprod(hb.post$compdraw[[1]]$rooti)
                [,1]         [,2]        [,3]        [,4]        [,5]         [,6]
   [1,]  0.269202120 -0.131369181 -0.00750423  0.05677799  0.07353783 -0.001719181
   [2,] -0.131369181  0.398585223 -0.05972400  0.18054662 -0.13884476  0.001989741
   [3,] -0.007504230 -0.059723996  0.18131261 -0.16032548  0.07125643  0.054428162
   [4,]  0.056777991  0.180546622 -0.16032548  0.32889988 -0.05003134 -0.100237796
   [5,]  0.073537829 -0.138844758  0.07125643 -0.05003134  0.24988274 -0.016004613
   [6,] -0.001719181  0.001989741  0.05442816 -0.10023780 -0.01600461  0.298190022
   [7,]  0.081636043  0.112820601 -0.02220723  0.06293524 -0.11789463  0.134168823
   [8,]  0.103541947 -0.023174420 -0.05402454  0.10914559  0.15388200 -0.083138284
   [9,]  0.125425320  0.061912218 -0.07956797  0.16981461  0.01032007 -0.073627847
  [10,]  0.087741814 -0.160231990  0.09670889 -0.08723735  0.13004753  0.106413327
  [11,] -0.118962885  0.079213611  0.03730569 -0.06608473 -0.10926189  0.070595462
               [,7]        [,8]        [,9]       [,10]       [,11]
   [1,]  0.08163604  0.10354195  0.12542532  0.08774181 -0.11896288
   [2,]  0.11282060 -0.02317442  0.06191222 -0.16023199  0.07921361
   [3,] -0.02220723 -0.05402454 -0.07956797  0.09670889  0.03730569
   [4,]  0.06293524  0.10914559  0.16981461 -0.08723735 -0.06608473
   [5,] -0.11789463  0.15388200  0.01032007  0.13004753 -0.10926189
   [6,]  0.13416882 -0.08313828 -0.07362785  0.10641333  0.07059546
   [7,]  0.41527878 -0.09874701  0.02946641 -0.19291910  0.05424860
   [8,] -0.09874701  0.54676212 -0.09581227  0.04483254 -0.03985814
   [9,]  0.02946641 -0.09581227  0.75490521 -0.18253217 -0.17888569
  [10,] -0.19291910  0.04483254 -0.18253217  0.75185563 -0.15559705
  [11,]  0.05424860 -0.03985814 -0.17888569 -0.15559705  0.55371966
  &gt; beta.post.mean &lt;- apply(hb.post$betadraw, 1:2, mean)
  &gt; head(beta.post.mean)
           [,1]     [,2]      [,3]      [,4]       [,5]       [,6]     [,7]     [,8]
  [1,] 14.09509 1.699958 -3.758005 -16.82691 -11.149724  -5.634989 26.92577 23.70962
  [2,] 12.03705 6.524403 -5.680688 -17.22764  -6.854921 -10.280702 28.82568 22.41429
           [,9]    [,10]    [,11]
  [1,] 25.94871 12.61363 10.77954
  [2,] 26.78210 15.16685  8.84741
  &gt; beta.post.q05 &lt;- apply(hb.post$betadraw, 1:2, quantile, probs=c(0.05))
  &gt; beta.post.q95 &lt;- apply(hb.post$betadraw, 1:2, quantile, probs=c(0.95))
  &gt; rbind(q05=beta.post.q05[1,], mean=beta.post.mean[1,], q95=beta.post.q95[1,])
            [,1]      [,2]       [,3]       [,4]       [,5]       [,6]      [,7]      [,8]
  q05   3.945165 -9.651987 -15.405028 -25.606785 -20.123767 -16.489890  8.005764  7.283777
  mean 14.095090  1.699958  -3.758005 -16.826907 -11.149724  -5.634989 26.925768 23.709617
  q95  24.561224 12.886290  10.012030  -6.616857  -1.135777  10.952166 40.529771 38.938681
            [,9]     [,10]      [,11]
  q05   9.650313  4.308683  0.8074844
  mean 25.948705 12.613631 10.7795415
  q95  42.514774 22.041031 18.9729086
  </code></pre>