r - R 包 gmnl 和 Rchoice 中可能存在错误?

标签 r logistic-regression gmnl

我想估计 gmnl 中的二进制随机参数 logit,同时考虑未观察到和观察到的异质性。当 Gender 是一个具有 2 个级别 (0,1) 的因素时,它会导致以下错误。当 Gender 以与数值变量完全相同的结构进入 gmnl 函数时,公式运行正常。有没有人知道一个错误,其中没有因子变量(例如虚拟变量)可以在 gmnl 函数中输入公式作为社会人口特征,而只能输入数字?

类似的R包Rchoice也是如此。

有没有可能没有错误,但公式有其他我无法发现的错误?

MIXL_socdem_IX <- gmnl(formula = route~ cost + total_time |1 |0 |Gender-1, data = dataIX_MIXL, model = "mixl", ranp=c(cost="ln", total_time="n"), mvar = list(cost=c("Gender"), total_time=c("Gender")), panel=T, R=200, haltons = list("primes"= c(3,5), drop= rep(10,2)), method="bfgs", print.init = T)

错误是:

Error in gmnl(formula = route ~ cost + total_time | 1 | 0 | Gender - 1, : The following variables are not specified in the formula: Gender

谢谢 R 版本 3.5.1 (2018-07-02) -- “羽毛喷雾”

      ind     alt route  cost total_time chid Gender Freq_2.4w
1.A     1 Egnatia FALSE -11.0          9    1      0         0
1.B     1     PEO  TRUE -12.0          9    1      0         0
2.A     1 Egnatia FALSE -11.0          9    2      0         0
2.B     1     PEO  TRUE -12.0         10    2      0         0
3.A     1 Egnatia  TRUE -10.5          9    3      0         0
3.B     1     PEO FALSE -12.0          9    3      0         0
4.A     1 Egnatia  TRUE -10.5          9    4      0         0
4.B     1     PEO FALSE -12.0         10    4      0         0
5.A     1 Egnatia  TRUE -10.0          9    5      0         0
5.B     1     PEO FALSE -12.0          9    5      0         0
6.A     1 Egnatia FALSE -11.0          9    6      0         0
6.B     1     PEO  TRUE -12.0         11    6      0         0
7.A     1 Egnatia  TRUE -10.0          9    7      0         0
7.B     1     PEO FALSE -12.0         10    7      0         0
8.A     1 Egnatia  TRUE -10.5          9    8      0         0
8.B     1     PEO FALSE -12.0         11    8      0         0
9.A     1 Egnatia  TRUE -10.0          9    9      0         0
9.B     1     PEO FALSE -12.0         11    9      0         0
10.A    2 Egnatia FALSE -13.5          5   10      0         1
10.B    2     PEO  TRUE  -8.0          6   10      0         1
11.A    2 Egnatia FALSE -13.5          5   11      0         1
11.B    2     PEO  TRUE  -8.0          7   11      0         1
12.A    2 Egnatia FALSE -13.0          5   12      0         1
12.B    2     PEO  TRUE  -8.0          6   12      0         1
13.A    2 Egnatia FALSE -13.0          5   13      0         1
13.B    2     PEO  TRUE  -8.0          7   13      0         1
14.A    2 Egnatia FALSE -12.5          5   14      0         1
14.B    2     PEO  TRUE  -8.0          6   14      0         1
15.A    2 Egnatia FALSE -13.5          5   15      0         1
15.B    2     PEO  TRUE  -8.0          8   15      0         1
16.A    2 Egnatia FALSE -12.5          5   16      0         1
16.B    2     PEO  TRUE  -8.0          7   16      0         1
17.A    2 Egnatia FALSE -13.0          5   17      0         1
17.B    2     PEO  TRUE  -8.0          8   17      0         1
18.A    2 Egnatia FALSE -12.5          5   18      0         1
18.B    2     PEO  TRUE  -8.0          8   18      0         1
19.A    3 Egnatia FALSE -13.0         12   19      0         0
19.B    3     PEO  TRUE -10.0          9   19      0         0
20.A    3 Egnatia FALSE -13.0         12   20      0         0
20.B    3     PEO  TRUE -10.0         10   20      0         0
21.A    3 Egnatia  TRUE -12.5         12   21      0         0
21.B    3     PEO FALSE -10.0          9   21      0         0
22.A    3 Egnatia  TRUE -12.5         12   22      0         0
22.B    3     PEO FALSE -10.0         10   22      0         0
23.A    3 Egnatia FALSE -12.0         12   23      0         0
23.B    3     PEO  TRUE -10.0          9   23      0         0
24.A    3 Egnatia FALSE -13.0         12   24      0         0
24.B    3     PEO  TRUE -10.0         11   24      0         0
25.A    3 Egnatia  TRUE -12.0         12   25      0         0
25.B    3     PEO FALSE -10.0         10   25      0         0
26.A    3 Egnatia  TRUE -12.5         12   26      0         0
26.B    3     PEO FALSE -10.0         11   26      0         0
27.A    3 Egnatia  TRUE -12.0         12   27      0         0
27.B    3     PEO FALSE -10.0         11   27      0         0
28.A    4 Egnatia FALSE -16.0          9   28      0         1
28.B    4     PEO  TRUE -10.0          9   28      0         1
29.A    4 Egnatia FALSE -16.0          9   29      0         1
29.B    4     PEO  TRUE -10.0         10   29      0         1
30.A    4 Egnatia FALSE -15.5          9   30      0         1
30.B    4     PEO  TRUE -10.0          9   30      0         1
31.A    4 Egnatia FALSE -15.5          9   31      0         1
31.B    4     PEO  TRUE -10.0         10   31      0         1
610.A  69 Egnatia  TRUE -12.0          9  610      0         0
610.B  69     PEO FALSE -11.0         10  610      0         0
611.A  70 Egnatia FALSE -11.0          9  611      1         0
611.B  70     PEO  TRUE -10.0         10  611      1         0
612.A  70 Egnatia FALSE -11.0          9  612      1         0
612.B  70     PEO  TRUE -10.0         11  612      1         0
613.A  70 Egnatia  TRUE -10.5          9  613      1         0
613.B  70     PEO FALSE -10.0         10  613      1         0
614.A  70 Egnatia  TRUE -10.5          9  614      1         0
614.B  70     PEO FALSE -10.0         11  614      1         0
615.A  70 Egnatia  TRUE -10.0          9  615      1         0
615.B  70     PEO FALSE -10.0         10  615      1         0
616.A  70 Egnatia FALSE -11.0          9  616      1         0
616.B  70     PEO  TRUE -10.0         12  616      1         0
617.A  70 Egnatia  TRUE -10.0          9  617      1         0
617.B  70     PEO FALSE -10.0         11  617      1         0
618.A  70 Egnatia  TRUE -10.5          9  618      1         0
618.B  70     PEO FALSE -10.0         12  618      1         0
619.A  70 Egnatia  TRUE -10.0          9  619      1         0
619.B  70     PEO FALSE -10.0         12  619      1         0
620.A  71 Egnatia FALSE -11.0          9  620      0         0
620.B  71     PEO  TRUE  -8.0          9  620      0         0
621.A  71 Egnatia FALSE -11.0          9  621      0         0
621.B  71     PEO  TRUE  -8.0         10  621      0         0
622.A  71 Egnatia FALSE -10.5          9  622      0         0
622.B  71     PEO  TRUE  -8.0          9  622      0         0
623.A  71 Egnatia FALSE -10.5          9  623      0         0
623.B  71     PEO  TRUE  -8.0         10  623      0         0
624.A  71 Egnatia FALSE -10.0          9  624      0         0
624.B  71     PEO  TRUE  -8.0          9  624      0         0
625.A  71 Egnatia FALSE -11.0          9  625      0         0
625.B  71     PEO  TRUE  -8.0         11  625      0         0
626.A  71 Egnatia FALSE -10.0          9  626      0         0
626.B  71     PEO  TRUE  -8.0         10  626      0         0
627.A  71 Egnatia  TRUE -10.5          9  627      0         0
627.B  71     PEO FALSE  -8.0         11  627      0         0
628.A  71 Egnatia  TRUE -10.0          9  628      0         0
628.B  71     PEO FALSE  -8.0         11  628      0         0

structure(list(ind = c(1L, 1L, 1L, 1L, 1L, 1L), route = c(FALSE, 
TRUE, FALSE, TRUE, TRUE, FALSE), Freq_2.4w = c(0L, 0L, 0L, 0L, 
0L, 0L), Gender = c(0L, 0L, 0L, 0L, 0L, 0L), alt = c("Egnatia", 
"PEO", "Egnatia", "PEO", "Egnatia", "PEO"), cost = c(-11, -12, 
-11, -12, -10.5, -12), total_time = c(9, 9, 9, 10, 9, 9), chid = c(1L, 
1L, 2L, 2L, 3L, 3L)), row.names = c("1.A", "1.B", "2.A", "2.B", 
"3.A", "3.B"), class = c("mlogit.data", "data.frame"))

最佳答案

因为 Gender 是一个因子变量。 R 会自动将 Gender=0 设置为基线,并使用名为 Gender1 的变量估计 Gender=1 的效果。

诚然还没有测试过,但这应该可以工作:

MIXL_socdem_IX <- gmnl(formula = route~ cost + total_time |1 |0 |Gender-1, data = dataIX_MIXL, model = "mixl", ranp=c(cost="ln", total_time="n"), mvar = list(cost=c("Gender1"), total_time=c("Gender1")), panel=T, R=200, haltons = list("primes"= c(3,5), drop= rep(10,2)), method="bfgs", print.init = T)

对于看到这篇文章的其他人,例如,如果您有四个类别的性别编码为 0、1、2、3,您将设置:

mvar = list(cost=c("Gender1","Gender2","Gender3"),total_time=("Gender1","Gender2","Gender3"))

关于r - R 包 gmnl 和 Rchoice 中可能存在错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52720535/

相关文章:

r - 如何在数据框中按名称删除列

r - 在 ggplot 中突出显示单个 "bar"

python - 逻辑回归中正则化强度的倒数是多少?它应该如何影响我的代码?

machine-learning - 支持稀疏矩阵和多标签输出的逻辑回归?

python - 绘制字符串数组 numpy 和 matplotlib

R 问题 A、A、A、A、B、B、B、B、B 的唯一组合数

r - 循环数字序列