【问题标题】:Using mlogit in R with variables that only apply to certain alternatives在 R 中将 mlogit 与仅适用于某些替代方案的变量一起使用
【发布时间】:2013-12-11 20:15:32
【问题描述】:

我正在尝试在 R 中使用 mlogit 来选择交通方式。问题是我有一个仅适用于某些替代方案的变量。

更具体地说,我试图预测使用汽车、公交和非机动交通方式的概率。我的预测指标是:距离、公交等待时间、家庭车辆数量和车辆出行时间。

当我以这种方式格式化时它可以工作:

> amres<-mlogit(mode~ivt+board|distance+nveh,data=AMLOGIT)

但是,我在车辆行驶时间 (ivt) 中得到的结果没有意义:

    > summary(amres)

Call:
mlogit(formula = mode ~ ivt + board | distance + nveh, data = AMLOGIT, 
    method = "nr", print.level = 0)

Frequencies of alternatives:
    auto   tansit nonmotor 
 0.24654  0.28378  0.46968 

nr method
5 iterations, 0h:0m:2s 
g'(-H)^-1g = 6.34E-08 
gradient close to zero 

Coefficients :
                        Estimate  Std. Error  t-value  Pr(>|t|)    
tansit:(intercept)    7.8392e-01  8.3761e-02   9.3590 < 2.2e-16 ***
nonmotor:(intercept)  3.2853e+00  7.1492e-02  45.9532 < 2.2e-16 ***
ivt                   1.6435e-03  1.2673e-04  12.9691 < 2.2e-16 ***
board                -3.9996e-04  1.2436e-04  -3.2161  0.001299 ** 
tansit:distance       3.2618e-04  2.0217e-05  16.1336 < 2.2e-16 ***
nonmotor:distance    -2.9457e-04  3.3772e-05  -8.7224 < 2.2e-16 ***
tansit:nveh          -1.5791e+00  4.5932e-02 -34.3799 < 2.2e-16 ***
nonmotor:nveh        -1.8008e+00  4.8577e-02 -37.0720 < 2.2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Log-Likelihood: -10107
McFadden R^2:  0.30354 
Likelihood ratio test : chisq = 8810.1 (p.value = < 2.22e-16)

如您所见,统计数据看起来不错,但 ivt 应该是一个负系数,而不是一个正系数。我的想法是,全为 0 的非机动部分正在影响它。我相信我要做的是使用等式的第三部分,如下所示:

> amres<-mlogit(mode~board|distance+nveh|ivt,data=AMLOGIT)

但是,这会导致:

Error in solve.default(H, g[!fixed]) : 
  Lapack routine dgesv: system is exactly singular: U[10,10] = 0

我再次相信这是因为对于非机动变量,该变量全为 0,但我不确定如何解决此问题。如果一个替代特定变量不适用于所有替代,我该如何包含它?

【问题讨论】:

    标签: r statistics regression multinomial


    【解决方案1】:

    我并不精通 logit 模型的各种实现,但我认为这与确保您在不同人之间存在差异有关,并且可以通过替代方案和选择器之间的差异来正确确定矩阵的替代方案。 你说什么?

    amres<-mlogit(mode~distance| nveh | ivt+board,data=AMLOGIT)
    

    mlogit 在管道之间有一个组分隔,据我了解如下:第一部分是您的基本公式,第二部分是不会因替代方案而变化的变量(即只有个人特定、性别、收入--我认为 nveh 应该在这里)而第三部分因替代而异。

    顺便说一句,Ken Train 有一组关于 mlogit 的小插曲,可能会有所帮助。 Viton 提到了带有管道的隔板。

    Ken Train's Vignettes

    Philip Viton's Vignettes

    Yves Croissant's Vignettes

    【讨论】:

    • 感谢您的资源。我相信我能够解决我的问题,但首先我会解决你的情况。距离需要在第二部分中,因为尽管它似乎不是旅行制造者的一个特征,但它取决于所需旅行的起点和目的地。这被认为是固定的,因此它会随着旅行者的不同而变化。虽然 ivt 和 board 应该在第三部分工作,但我似乎无法让它工作。可能与我的数据特征有关。
    • 相反,我所做的是结合所有模式的所有时间来给出总行程时间。然后我将非机动模式分为自行车和步行,并根据距离估计它们的旅行时间。然后,我将总行程时间作为我可以在第 1 部分中使用的所有三种模式的一致度量。结果是有意义的,应该适用于我需要它们的应用程序。我还计算了距离,因为它现在与旅行时间有关。再次感谢您的帮助,如果您需要任何澄清或您在我的推理中发现任何问题,请告诉我。
    • 对于任何寻找链接更新的人,我发现 Ken Train's vignettePhilip Viton's vignette 我认为是 @ako 所指的。
    【解决方案2】:

    看起来你可能有完美的分离。您是否通过例如检查过查看变量的交叉表? (如果预测变量的一种组合允许完美预测,则无法拟合模型......)在这方面了解数据集的大小会有所帮助 - 您可能过度拟合您拥有的数据量。这是建模中的普遍问题,并非特定于mlogit

    您说“统计数据看起来很棒”,但 Pr(&gt;|t|)s 和 Likelihood ratio test 的值看起来非常重要,这与这个问题是一致的。这意味着系数的估计可能不准确。 (它们是否类似于单变量建模产生的系数?)。也许更简单的模型会更合适。

    编辑 @user3092719:

    您正在拟合 广义线性模型,它很容易过拟合(因为结果变量是 离散名义 - 即有值的限制数量)。 mlogit 是逻辑回归的扩展;以下是后者的一个简单示例来说明:

    > df1 <- data.frame(x=c(0, rep(1, 3)),
                        y=rep(c(0, 1), 2))
    > xtabs( ~ x + y, data=df1)
       y
    x   0 1
      0 1 0
      1 1 2
    

    注意右上角的零。这显示了“完美分离”,这意味着如果x=0 你知道肯定y=0 基于这个集合。所以概率预测模型没有多大意义。 来自

    的一些输出
    > summary(glm(y ~ x, data=df1, binomial(link = "logit")))
    

    给予

    Coefficients:
                Estimate Std. Error z value Pr(>|z|)
    (Intercept)   -18.57    6522.64  -0.003    0.998
    x              19.26    6522.64   0.003    0.998
    

    这里Std. Errors 的大小相对于系数的值非常大。 Number of Fisher Scoring iterations: 17 也应该提醒您 - 大号。拟合所需的迭代表明数值不稳定。

    您的解决方案似乎涉及确保在您的模型中不会出现这种完全分离的问题,尽管如果没有一个最小的工作示例就很难确定。

    【讨论】:

    • 我一般理解过度拟合模型的想法,但是我对如何过度拟合线性模型感到困惑。非线性模型可能过于紧密地拟合一组点,以致无法泛化。但是,当您拟合线性模型时,我对如何发生感到困惑。任何澄清或理解这一点的资源将不胜感激。
    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 2020-02-26
    • 2011-06-29
    • 1970-01-01
    相关资源
    最近更新 更多