遵循mlogit包https://cran.r-project.org/web/packages/mlogit/vignettes/e3mxlogit.html的练习3,但尝试使用我自己的数据(见下文)
structure(list(Choice.Set = c(4L, 5L, 7L, 8L, 10L, 12L), Alternative = c(2L,
1L, 1L, 2L, 2L, 2L), respondent = c(1L, 1L, 1L, 1L, 1L, 1L),
code = c(7L, 9L, 13L, 15L, 19L, 23L), Choice = c(1L, 1L,
1L, 1L, 1L, 1L), price1 = c(0L, 0L, 1L, 1L, 0L, 0L), price2 = c(0L,
1L, 0L, 0L, 1L, 1L), price3 = c(0L, 0L, 0L, 0L, 0L, 0L),
price4 = c(1L, 0L, 0L, 0L, 0L, 0L), price5 = c(0L, 0L, 0L,
0L, 0L, 0L), zone1 = c(0L, 0L, 0L, 1L, 1L, 1L), zone2 = c(0L,
0L, 0L, 0L, 0L, 0L), zone3 = c(1L, 0L, 1L, 0L, 0L, 0L), zone4 = c(0L,
1L, 0L, 0L, 0L, 0L), lic1 = c(0L, 0L, 0L, 0L, 0L, 0L), lic2 = c(1L,
0L, 1L, 0L, 1L, 1L), lic3 = c(0L, 1L, 0L, 1L, 0L, 0L), enf1 = c(0L,
0L, 1L, 0L, 1L, 0L), enf2 = c(0L, 0L, 0L, 1L, 0L, 1L), enf3 = c(1L,
1L, 0L, 0L, 0L, 0L), chid = 1:6), row.names = c(4L, 5L, 7L,
8L, 10L, 12L), class = "data.frame")
我在运行代码时遇到了错误:
dfml <- dfidx(df, idx=list(c("chid", "respondent")),
choice="Alternative", varying=6:20, sep ="")
“整形长型错误(数据,idvar = idvar,时间变量=时间变量,变化=变化,:“variing”参数的长度必须相同
我已经检查了数据,从6:20开始的每一列都是一样长的,但是,一些受访者选择了一些选项,而不是其他选项。有人能指出我哪里出错了吗?这是我第一次尝试分析选择实验数据。
1条答案
按热度按时间szqfcxe21#
这个错误意味着,你的 price 有五个选项,而其他的 zone,lic,enf 有更少的选项。
dfidx
显然不能处理这个问题。你需要提供它们,至少作为NA
列。我在这里使用
grep
来标识varying=
列,摆脱懒惰地将变量指定为数字的习惯;这是危险的,因为脚本中的一些小改动很容易改变顺序。