我正在使用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,如何解决这个问题?
谢谢!
答案 0 :(得分:0)
当我在模型中输入原始数据框而不是mlogit.data创建的宽数据框时,出现此错误。 因此,请确保首先创建“宽”数据框,并将其输入到您的mlogit函数中。 (来源:Andy Field,使用R发现统计信息,第348页)