r - 与模式相关的 mlogit 包的问题
问题描述
我正在使用 mlogit 包来运行多项混合效应模型。数据一开始就是长格式。我试图确定一个变量是否与具有 3 个类别(0、1、2)的分类结果、睡眠持续时间的差异有关。样本数据为:
id sleep var1
1 0 1.5
1 2 1.5
2 1 2
2 1 2
3 0 1
我尝试运行以下代码:
mldata <- mlogit.data(df, choice="sleep", shape ="long")
mlogit.model1 <- mlogit(sleep ~ 1 | var1, data = df, reflevel = "0")
Error in dfidx::dfidx(data = data, dfa$idx, drop.index = dfa$drop.index, :
The choice variable must have exactly two modalities
在之前的一篇文章中,我读到这条消息是由于包含 mlogit 包的“变化”功能引起的。但是,我没有包括在内,所以我不明白发生了什么。
有人可以帮忙吗?
解决方案
我有同样的问题,但似乎与shape
争论的一些混淆有关。从其中一个小插曲:
数据集可以有两种不同的形状:宽形(每种选择情况一行)或长形(每种选择一行,因此,每种选择情况的行数与选择数一样多)。
因此,虽然您的数据在传统意义上是长格式的,但它在 mlogit 包意义上是宽格式,因为每一行都有一个选择。
我发现这非常令人困惑,并且错误消息根本没有帮助。包中的两个示例是
data("Fishing", package = "mlogit")
head(Fishing[, 1:4])
#R> mode price.beach price.pier price.boat
#R> 1 charter 157.930 157.930 157.930
#R> 2 charter 15.114 15.114 10.534
#R> 3 boat 161.874 161.874 24.334
#R> 4 pier 15.134 15.134 55.930
#R> 5 boat 106.930 106.930 41.514
#R> 6 charter 192.474 192.474 28.934
Fish <- dfidx(Fishing, varying = 2:9, shape = "wide", choice = "mode")
对于宽格式和
data("TravelMode", package = "AER")
head(TravelMode)
#R> individual mode choice wait vcost travel gcost income size
#R> 1 1 air no 69 59 100 70 35 1
#R> 2 1 train no 34 31 372 71 35 1
#R> 3 1 bus no 35 25 417 70 35 1
#R> 4 1 car yes 0 10 180 30 35 1
#R> 5 2 air no 64 58 68 68 30 2
#R> 6 2 train no 44 31 354 84 30 2
# default for dfidx's shape is long
TM2 <- dfidx(TravelMode, idx = c("individual", "mode"))
对于长格式。注意mode
和choice
带有no
/的列yes
。
推荐阅读
- java - JTable/setDefaultRenderer 多选行
- javascript - 在 vuejs 中显示 swal 消息之前状态已更改
- c# - 使用 Visual Studio 使用 azurefunctions 新建项目时出错?
- firebase - 在 Firebase 云消息 (FCM) 主题订阅中,“addDate”逻辑不确定
- python - 在 .bat 文件中使用 Python 导入 pandas 时不起作用
- dom - 绝对定位的 div 元素会影响文档流结构。为什么?
- sql - SQL 匹配持续时间(从日期时间到日期时间)
- security - 在整个域林中阻止 netcat
- keycloak - Duo 代理作为 LDAP 用户联合密钥斗篷
- neo4j - Neo4J Bloom 不显示属性或类别