我正在使用R中的mlogit包实现一个多项logit模型。数据包括三个不同的“选择”和三个变量(A,B,C),其中包含自变量的信息。我使用mlogit.data函数将数据转换为宽格式,该函数使数据看起来像这样:
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:
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是使用以下代码构造的:
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模型时,
mlog <- mlogit(Choice ~ 1 | VariableD, data=df, reflevel = "0")返回错误消息“提供的行名的长度错误”。当我单独使用其他变量A-C时,回归运行时没有任何问题,因此我的问题是:为什么不能使用变量D,以及如何解决这个问题?
谢谢!
发布于 2019-08-21 00:39:53
当我在模型中输入我的原始数据帧,而不是mlogit.data创建的宽数据帧时,我得到了这个错误。因此,确保首先创建“宽”数据帧,并将其输入到mlogit函数中。(来源: Andy Field,使用R发现统计数据,第348页)
https://stackoverflow.com/questions/54892645
复制相似问题