首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mlogit“提供的行名长度错误”,R

mlogit“提供的行名长度错误”,R
EN

Stack Overflow用户
提问于 2019-02-27 03:21:09
回答 1查看 2.2K关注 0票数 2

我正在使用R中的mlogit包实现一个多项logit模型。数据包括三个不同的“选择”和三个变量(A,B,C),其中包含自变量的信息。我使用mlogit.data函数将数据转换为宽格式,该函数使数据看起来像这样:

代码语言:javascript
复制
Observation  Choice  VariableA  VariableB   VariableC
     1          1         1.27       0.2         0.81        
     1          0         1.27       0.2         0.81           
     1         -1         1.27       0.2         0.81 
     2          1         0.20       0.45        0.70
     2          0         0.20       0.45        0.70      
     2         -1         0.20       0.45        0.70

问题是,我希望自变量是特定于选择的,因此被构造为下面的变量D:

代码语言:javascript
复制
   Observation  Choice  VariableA  VariableB  VariableC  VariableD
     1          1         1.27       0.2         0.81        1.27
     1          0         1.27       0.2         0.81        0.2
     1         -1         1.27       0.2         0.81        0.81
     2          1         0.20       0.45        0.70        0.20
     2          0         0.20       0.45        0.70        0.45
     2         -1         0.20       0.45        0.70        0.70

变量D是使用以下代码构造的:

代码语言:javascript
复制
choice_map <- data.frame(choice = c(1, 0, -1), var = grep('Variable[A-C]', names(df)))

df$VariableD <- df[cbind(seq_len(nrow(df)), with(choice_map, var[match(df$Choice, choice)]))]

然而,当我尝试运行多项logit模型时,

代码语言:javascript
复制
mlog <- mlogit(Choice ~ 1 | VariableD, data=df, reflevel = "0")

返回错误消息“提供的行名的长度错误”。当我单独使用其他变量A-C时,回归运行时没有任何问题,因此我的问题是:为什么不能使用变量D,以及如何解决这个问题?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2019-08-21 00:39:53

当我在模型中输入我的原始数据帧,而不是mlogit.data创建的宽数据帧时,我得到了这个错误。因此,确保首先创建“宽”数据帧,并将其输入到mlogit函数中。(来源: Andy Field,使用R发现统计数据,第348页)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54892645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档