The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
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")
Electricity$chid <- 1:nrow(Electricity)
Electr <- dfidx(Electricity, idx = list(c("chid", "id")),
choice = "choice", varying = 3:26, 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)
summary(Elec.mxl)
##
## 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:choice
## 1 2 3 4
## 0.22702 0.26393 0.23816 0.27089
##
## bfgs method
## 1 iterations, 0h:0m:3s
## 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
coef(Elec.mxl)['cl'] / coef(Elec.mxl)['pf']
## 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.
pnorm(- coef(Elec.mxl)['cl'] / coef(Elec.mxl)['sd.cl'])
## 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.3 5=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.
pnorm(- coef(Elec.mxl)['pf'] / coef(Elec.mxl)['sd.pf'])
## 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)
summary(Elec.mxl2)
##
## 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:choice
## 1 2 3 4
## 0.22702 0.26393 0.23816 0.27089
##
## bfgs method
## 1 iterations, 0h:0m:3s
## 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
Elec.mxl3 <- update(Elec.mxl, rpar = c(cl = 'n', loc = 'n', wk = 'u',
tod = 'n', seas = 'n'))
The price coefficient is uniformly distributed with parameters 1.541 and 1.585.
summary(Elec.mxl3)
##
## 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:choice
## 1 2 3 4
## 0.22702 0.26393 0.23816 0.27089
##
## bfgs method
## 1 iterations, 0h:0m:3s
## 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
rpar(Elec.mxl3, 'wk')
## uniform distribution with parameters 1.509 (center) and 1.786 (span)
summary(rpar(Elec.mxl3, 'wk'))
## Min. 1st Qu. Median Mean 3rd Qu.
## -0.2769485 0.6162382 1.5094248 1.5094248 2.4026115
## Max.
## 3.2957982
plot(rpar(Elec.mxl3, 'wk'))
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.5s^2)\) and the standard deviation is the mean times \(\sqrt{(\exp(s^2))-1}\).
Electr <- dfidx(Electricity, idx = list(c("chid", "id")), choice = "choice",
varying = 3:26, 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)
summary(Elec.mxl4)
##
## 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:choice
## 1 2 3 4
## 0.22702 0.26393 0.23816 0.27089
##
## bfgs method
## 1 iterations, 0h:0m:3s
## 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
plot(rpar(Elec.mxl4, 'seas'))
Elec.mxl5 <- update(Elec.mxl4, correlation = TRUE)
summary(Elec.mxl5)
##
## 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, correlation = TRUE,
## halton = NA, panel = TRUE)
##
## Frequencies of alternatives:choice
## 1 2 3 4
## 0.22702 0.26393 0.23816 0.27089
##
## bfgs method
## 1 iterations, 0h:0m:3s
## g'(-H)^-1g = 3.73E-07
## gradient close to zero
##
## Coefficients :
## Estimate Std. Error z-value Pr(>|z|)
## pf -0.9177181 0.0340200 -26.9758 < 2.2e-16 ***
## cl -0.2158542 0.0138413 -15.5950 < 2.2e-16 ***
## loc 2.3925696 0.0869029 27.5315 < 2.2e-16 ***
## wk 1.7475365 0.0712087 24.5411 < 2.2e-16 ***
## tod 2.1554746 0.0337206 63.9217 < 2.2e-16 ***
## seas 2.1695605 0.0334577 64.8448 < 2.2e-16 ***
## chol.cl:cl 0.3962539 0.0187077 21.1814 < 2.2e-16 ***
## chol.cl:loc 0.6175136 0.0924281 6.6810 2.373e-11 ***
## chol.loc:loc -2.0717172 0.1063246 -19.4848 < 2.2e-16 ***
## chol.cl:wk 0.1952590 0.0731907 2.6678 0.007635 **
## chol.loc:wk -1.2366541 0.0866096 -14.2785 < 2.2e-16 ***
## chol.wk:wk 0.6431944 0.0742354 8.6643 < 2.2e-16 ***
## chol.cl:tod 0.0019817 0.0104181 0.1902 0.849141
## chol.loc:tod 0.0625074 0.0119608 5.2260 1.732e-07 ***
## chol.wk:tod 0.1606713 0.0138054 11.6383 < 2.2e-16 ***
## chol.tod:tod 0.3758504 0.0209474 17.9426 < 2.2e-16 ***
## chol.cl:seas 0.0259973 0.0098344 2.6435 0.008205 **
## chol.loc:seas -0.0012255 0.0098997 -0.1238 0.901483
## chol.wk:seas 0.1413800 0.0128750 10.9810 < 2.2e-16 ***
## chol.tod:seas 0.0899893 0.0109769 8.1981 2.220e-16 ***
## chol.seas:seas 0.2112423 0.0141902 14.8865 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Log-Likelihood: -3851.4
##
## random coefficients
## Min. 1st Qu. Median Mean 3rd Qu.
## cl -Inf -0.4831234 -0.2158542 -0.2158542 0.05141502
## loc -Inf 0.9344645 2.3925696 2.3925696 3.85067469
## wk 0.3400072 1.0437718 1.7475365 1.7475365 2.45130110
## tod 0.0000000 6.5310440 8.6319857 9.4024428 11.40876968
## seas 0.0000000 7.2924594 8.7544353 9.0816328 10.50950485
## Max.
## cl Inf
## loc Inf
## wk 3.155066
## tod Inf
## seas Inf
cor.mlogit(Elec.mxl5)
## cl loc wk tod seas
## cl 1.000000000 0.28564925 0.13872467 0.004792336 0.09596640
## loc 0.285649252 1.00000000 0.88161832 -0.143495905 0.03174792
## wk 0.138724672 0.88161832 1.00000000 0.045410056 0.25577355
## tod 0.004792336 -0.14349591 0.04541006 1.000000000 0.50449234
## seas 0.095966400 0.03174792 0.25577355 0.504492337 1.00000000
lrtest(Elec.mxl5, Elec.mxl4)
## Likelihood ratio test
##
## Model 1: choice ~ pf + cl + loc + wk + tod + seas | 0
## Model 2: choice ~ pf + cl + loc + wk + tod + seas | 0
## #Df LogLik Df Chisq Pr(>Chisq)
## 1 21 -3851.4
## 2 11 -3976.5 -10 250.18 < 2.2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
waldtest(Elec.mxl5, correlation = FALSE)
##
## Wald test
##
## data: uncorrelated random effects
## chisq = 466.48, df = 10, p-value < 2.2e-16
scoretest(Elec.mxl4, correlation = TRUE)
##
## score test
##
## data: correlation = TRUE
## chisq = 157.35, df = 10, p-value < 2.2e-16
## alternative hypothesis: uncorrelated random effects
The three tests clearly reject the hypothesis that the random parameters are uncorrelated.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.