【发布时间】:2018-01-23 00:20:51
【问题描述】:
我在关卡方面遇到了一些问题...运行以下命令:
library(mlogit)
panel.datasm = data.frame(
cbind(
round(runif(100, min=1, max=6)),
rep(1:20,each=5), runif(100, min=0, max=1),
runif(100, min=0, max=6),
runif(100, min=2, max=6) ,
runif(100, min=0, max=1),
runif(100, min=0, max=6),
runif(100, min=2, max=6) ))
names(panel.datasm) = c("choice", "id", "data_1991","data_1992",
"data_1993", "data2_1991", "data2_1992","data2_1993")
logit.data <- mlogit.data(panel.datasm, id = "id", choice = "choice",
varying= 3:5, shape = "wide", sep = "_")
不断收到错误Error in Ops.factor(data[[choice]], alt) : level sets of factors are different
我也尝试过手动分配级别:
panel.datasm$id= factor(
panel.datasm$id,
levels = sort(as.character(unique(panel.datasm$id))) )
我尝试了很多方法,但无法弄清楚出了什么问题。为了比较,请看:
data("Electricity", package = "mlogit")
head(Electricity)
Electr <- mlogit.data(Electricity, id = "id", choice = "choice",
varying = 3:26, shape = "wide", sep = "")
据我所知,这与我的数据格式相同。这里发生了什么?我已经走到了尽头。
【问题讨论】:
-
我一直无法让
mlogit的自动重塑工作。因此,我不得不手动重塑我的数据以创建所需的长格式。祝你好运。 -
附言。感谢您提出这个问题。在开始学习 R 后不久,我试图理解
mlogit。我无法理解代码的开头或结尾。据我所知,该代码有效并且在算法上是正确的,但从用户的角度来看并不是特别健壮。你的问题促使我再次研究mlogit。 -
也许你还想用
varying= c(data=3:5, data2=6:8)区分data和data2 -
感谢所有帮助。我现在就试试看!