A sample of residential electricity customers were asked a series of choice experiments. In each experiment, four hypothetical electricity suppliers were described. The person was asked which of the four suppliers he/she would choose. As many as 12 experiments were presented to each person. Some people stopped before answering all 12. There are 361 people in the sample, and a total of 4308 experiments. In the experiments, the characteristics of each supplier were stated. The price of the supplier was either :
The length of contract that the supplier offered was also stated, in years (such as 1 year or 5 years.) During this contract period, the supplier guaranteed the prices and the buyer would have to pay a penalty if he/she switched to another supplier. The supplier could offer no contract in which case either side could stop the agreement at any time. This is recorded as a contract length of 0.
Some suppliers were also described as being a local company or a “well-known” company. If the supplier was not local or well-known, then nothing was said about them in this regard .
library("mlogit")
data("Electricity", package = "mlogit")
Electr <- mlogit.data(Electricity, id = "id", choice = "choice",
varying = 3:26, shape = "wide", sep = "")
Elec.mxl <- mlogit(choice ~ pf + cl + loc + wk + tod + seas | 0, Electr,
rpar=c(pf = 'n', cl = 'n', loc = 'n', wk = 'n',
tod = 'n', seas = 'n'),
R = 100, halton = NA, panel = TRUE)
##
## Call:
## mlogit(formula = choice ~ pf + cl + loc + wk + tod + seas | 0,
## data = Electr, start = strt, rpar = c(pf = "n", cl = "n",
## loc = "n", wk = "n", tod = "n", seas = "n"), R = 100,
## halton = NA, panel = TRUE)
##
## Frequencies of alternatives:
## 1 2 3 4
## 0.22702 0.26393 0.23816 0.27089
##
## bfgs method
## 1 iterations, 0h:0m:2s
## g'(-H)^-1g = 1.45E-07
## gradient close to zero
##
## Coefficients :
## Estimate Std. Error z-value Pr(>|z|)
## pf -0.973386 0.034324 -28.359 < 2.2e-16 ***
## cl -0.205557 0.013323 -15.428 < 2.2e-16 ***
## loc 2.075724 0.080430 25.808 < 2.2e-16 ***
## wk 1.475645 0.065168 22.644 < 2.2e-16 ***
## tod -9.052539 0.287218 -31.518 < 2.2e-16 ***
## seas -9.103759 0.289043 -31.496 < 2.2e-16 ***
## sd.pf 0.219943 0.010840 20.291 < 2.2e-16 ***
## sd.cl 0.378303 0.018489 20.461 < 2.2e-16 ***
## sd.loc 1.482974 0.081305 18.240 < 2.2e-16 ***
## sd.wk 1.000057 0.074182 13.481 < 2.2e-16 ***
## sd.tod 2.289477 0.110731 20.676 < 2.2e-16 ***
## sd.seas 1.180869 0.109007 10.833 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Log-Likelihood: -3952.5
##
## random coefficients
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## pf -Inf -1.1217350 -0.9733857 -0.9733857 -0.82503650 Inf
## cl -Inf -0.4607187 -0.2055571 -0.2055571 0.04960449 Inf
## loc -Inf 1.0754736 2.0757241 2.0757241 3.07597467 Inf
## wk -Inf 0.8011174 1.4756454 1.4756454 2.15017342 Inf
## tod -Inf -10.5967678 -9.0525388 -9.0525388 -7.50830989 Inf
## seas -Inf -9.9002427 -9.1037589 -9.1037589 -8.30727517 Inf
## cl
## 0.2111774
The mean coefficient of length is -0.20. The consumer with this average coefficient dislikes having a longer contract. So this person is willing to pay to reduce the length of the contract. The mean price coefficient is -0.97. A customer with these coefficients is willing to pay 0.20/0.97=0.21, or one-fifth a cent per kWh extra to have a contract that is one year shorter.
## cl
## 0.7065611
The coefficient of length is normally distributed with mean -0.20 and standard deviation 0.35. The share of people with coefficients below zero is the cumulative probability of a standardized normal deviate evaluated at 0.20/0.35=0.57. Looking 0.57 up in a table of the standard normal distribution, we find that the share below 0.57 is 0.72. About seventy percent of the population are estimated to dislike long-term contracts.
## pf
## 0.9999952
The price coefficient is distributed normal with mean -0.97 and standard deviation 0.20. The cumulative standard normal distribution evaluated at 0.97/0.20=4.85 is more than 0.999, which means that more than 99.9% of the population are estimated to have negative price coefficients. Essentially no one is estimated to have a positive price coefficient.
Elec.mxl2 <- mlogit(choice ~ pf + cl + loc + wk + tod + seas | 0, Electr,
rpar = c(cl = 'n', loc = 'n', wk = 'n',
tod = 'n', seas = 'n'),
R = 100, halton = NA, panel = TRUE)
##
## Call:
## mlogit(formula = choice ~ pf + cl + loc + wk + tod + seas | 0,
## data = Electr, start = strt, rpar = c(cl = "n", loc = "n",
## wk = "n", tod = "n", seas = "n"), R = 100, halton = NA,
## panel = TRUE)
##
## Frequencies of alternatives:
## 1 2 3 4
## 0.22702 0.26393 0.23816 0.27089
##
## bfgs method
## 1 iterations, 0h:0m:1s
## g'(-H)^-1g = 4.6E-08
## gradient close to zero
##
## Coefficients :
## Estimate Std. Error z-value Pr(>|z|)
## pf -0.879902 0.032759 -26.860 < 2.2e-16 ***
## cl -0.217059 0.013673 -15.875 < 2.2e-16 ***
## loc 2.092298 0.081067 25.809 < 2.2e-16 ***
## wk 1.490902 0.065230 22.856 < 2.2e-16 ***
## tod -8.581835 0.282912 -30.334 < 2.2e-16 ***
## seas -8.583281 0.280347 -30.617 < 2.2e-16 ***
## sd.cl 0.373477 0.018018 20.728 < 2.2e-16 ***
## sd.loc 1.558857 0.087696 17.776 < 2.2e-16 ***
## sd.wk 1.050810 0.078023 13.468 < 2.2e-16 ***
## sd.tod 2.694660 0.120798 22.307 < 2.2e-16 ***
## sd.seas 1.950728 0.104766 18.620 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Log-Likelihood: -3961.7
##
## random coefficients
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## cl -Inf -0.4689658 -0.2170594 -0.2170594 0.03484691 Inf
## loc -Inf 1.0408650 2.0922983 2.0922983 3.14373157 Inf
## wk -Inf 0.7821415 1.4909018 1.4909018 2.19966212 Inf
## tod -Inf -10.3993553 -8.5818346 -8.5818346 -6.76431383 Inf
## seas -Inf -9.8990266 -8.5832805 -8.5832805 -7.26753448 Inf
The price coefficient is uniformly distributed with parameters 1.541 and 1.585.
##
## Call:
## mlogit(formula = choice ~ pf + cl + loc + wk + tod + seas | 0,
## data = Electr, start = strt, rpar = c(cl = "n", loc = "n",
## wk = "u", tod = "n", seas = "n"), R = 100, halton = NA,
## panel = TRUE)
##
## Frequencies of alternatives:
## 1 2 3 4
## 0.22702 0.26393 0.23816 0.27089
##
## bfgs method
## 1 iterations, 0h:0m:1s
## g'(-H)^-1g = 1.08E-07
## gradient close to zero
##
## Coefficients :
## Estimate Std. Error z-value Pr(>|z|)
## pf -0.882229 0.032818 -26.883 < 2.2e-16 ***
## cl -0.217128 0.013776 -15.761 < 2.2e-16 ***
## loc 2.099323 0.081056 25.900 < 2.2e-16 ***
## wk 1.509425 0.065496 23.046 < 2.2e-16 ***
## tod -8.606979 0.282983 -30.415 < 2.2e-16 ***
## seas -8.602396 0.280671 -30.649 < 2.2e-16 ***
## sd.cl 0.381070 0.018150 20.996 < 2.2e-16 ***
## sd.loc 1.593852 0.087802 18.153 < 2.2e-16 ***
## sd.wk 1.786373 0.125764 14.204 < 2.2e-16 ***
## sd.tod 2.719073 0.119356 22.781 < 2.2e-16 ***
## sd.seas 1.945381 0.103686 18.762 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Log-Likelihood: -3956.7
##
## random coefficients
## Min. 1st Qu. Median Mean 3rd Qu.
## cl -Inf -0.4741561 -0.2171285 -0.2171285 0.0398992
## loc -Inf 1.0242863 2.0993231 2.0993231 3.1743600
## wk -0.2769485 0.6162382 1.5094248 1.5094248 2.4026115
## tod -Inf -10.4409656 -8.6069790 -8.6069790 -6.7729924
## seas -Inf -9.9145353 -8.6023958 -8.6023958 -7.2902563
## Max.
## cl Inf
## loc Inf
## wk 3.295798
## tod Inf
## seas Inf
## uniform distribution with parameters 1.509 (center) and 1.786 (span)
## Min. 1st Qu. Median Mean 3rd Qu.
## -0.2769485 0.6162382 1.5094248 1.5094248 2.4026115
## Max.
## 3.2957982
The upper bound is 3.13. The estimated price coefficient is -0.88 and so the willingness to pay for a known provided ranges uniformly from -0.05 to 3.55 cents per kWh.
A lognormal is specified as exp (b + se) where e is a standard normal deviate. The parameters of the lognormal are b and s. The mean of the lognormal is exp (b + 0.5s2) and the standard deviation is the mean times $\sqrt{(\exp(s^2))-1}$.
Electr <- mlogit.data(Electricity, id = "id", choice = "choice",
varying = 3:26, shape = "wide", sep = "",
opposite = c('tod', 'seas'))
Elec.mxl4 <- mlogit(choice ~ pf + cl + loc + wk + tod + seas | 0, Electr,
rpar = c(cl = 'n', loc = 'n', wk = 'u', tod = 'ln', seas = 'ln'),
R = 100, halton = NA, panel = TRUE)
##
## Call:
## mlogit(formula = choice ~ pf + cl + loc + wk + tod + seas | 0,
## data = Electr, start = strt, rpar = c(cl = "n", loc = "n",
## wk = "u", tod = "ln", seas = "ln"), R = 100, halton = NA,
## panel = TRUE)
##
## Frequencies of alternatives:
## 1 2 3 4
## 0.22702 0.26393 0.23816 0.27089
##
## bfgs method
## 1 iterations, 0h:0m:1s
## g'(-H)^-1g = 6.24E-08
## gradient close to zero
##
## Coefficients :
## Estimate Std. Error z-value Pr(>|z|)
## pf -0.868985 0.032350 -26.862 < 2.2e-16 ***
## cl -0.211334 0.013569 -15.575 < 2.2e-16 ***
## loc 2.023876 0.080102 25.266 < 2.2e-16 ***
## wk 1.479118 0.064957 22.771 < 2.2e-16 ***
## tod 2.112378 0.033769 62.554 < 2.2e-16 ***
## seas 2.124205 0.033342 63.709 < 2.2e-16 ***
## sd.cl 0.373120 0.017710 21.068 < 2.2e-16 ***
## sd.loc 1.548511 0.086400 17.922 < 2.2e-16 ***
## sd.wk 1.521790 0.119993 12.682 < 2.2e-16 ***
## sd.tod 0.367077 0.019997 18.357 < 2.2e-16 ***
## sd.seas 0.275352 0.016875 16.317 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Log-Likelihood: -3976.5
##
## random coefficients
## Min. 1st Qu. Median Mean 3rd Qu.
## cl -Inf -0.4629994 -0.2113338 -0.2113338 0.04033179
## loc -Inf 0.9794208 2.0238757 2.0238757 3.06833059
## wk -0.0426715 0.7182234 1.4791184 1.4791184 2.24001328
## tod 0.0000000 6.4545718 8.2678801 8.8441019 10.59060830
## seas 0.0000000 6.9482054 8.3662477 8.6894950 10.07369478
## Max.
## cl Inf
## loc Inf
## wk 3.000908
## tod Inf
## seas Inf
#summary(Elec.mxl5)
#cor.mlogit(Elec.mxl5)
#lrtest(Elec.mxl5, Elec.mxl4)
#waldtest(Elec.mxl5, correlation = FALSE)
#scoretest(Elec.mxl4, correlation = TRUE)
The three tests clearly reject the hypothesis that the random parameters are uncorrelated.