mlogit:缺少需要TRUE/FALSE的值

rob*_*ers 5 r mlogit

我有来自离散选择实验(DCE)的数据,查看来自不同部门的个人的招聘偏好.我已经格式化为长格式.我想用mlogit建模.我已经导出了数据,并且可以使用asclogit命令在Stata中成功运行模型,但是我无法在R中运行它.

这是前25行数据的快照:

> data[1:25,]
   userid    chid item sector outcome cul fit ind led prj rel
1   11275  211275    2      1       1   0   1   0   1   1   1
2   11275  211275    2      2       0   1   0   0   0   0   0
3   11275  211275    2      0       0   0   0   1   1   0   1
4   11275  311275    3      0       1   1   1   0   0   0   1
5   11275  311275    3      2       0   0   1   0   0   0   1
6   11275  311275    3      1       0   0   1   0   0   0   0
7   11275  411275    4      0       0   1   0   1   1   0   0
8   11275  411275    4      2       1   0   1   1   1   1   0
9   11275  411275    4      1       0   0   1   0   1   0   0
10  11275  511275    5      1       1   1   0   1   0   1   1
11  11275  511275    5      2       0   0   0   1   1   0   0
12  11275  511275    5      0       0   0   0   1   1   1   0
13  11275  611275    6      0       0   0   1   1   0   0   1
14  11275  611275    6      1       1   1   1   1   0   0   1
15  11275  611275    6      2       0   1   1   1   0   1   0
16  11275  711275    7      1       0   0   0   0   0   1   0
17  11275  711275    7      0       0   1   0   0   1   1   0
18  11275  711275    7      2       1   1   0   0   1   1   1
19  11275  811275    8      0       1   0   1   0   0   1   1
20  11275  811275    8      1       0   1   0   1   1   1   1
21  11275  811275    8      2       0   0   0   0   0   1   1
22  11275  911275    9      0       0   1   1   0   0   1   0
23  11275  911275    9      2       1   1   1   1   1   0   1
24  11275  911275    9      1       0   1   0   1   1   0   0
25  11275 1011275   10      0       0   0   0   0   0   0   0
Run Code Online (Sandbox Code Playgroud)

userid和chid是因子变量,其余是数字.变量:Userid是唯一的受访者ID chid是唯一的选择集ID每个受访者项目是选择集ID(他们在受访者中重复)部门是替代(3个不同的部门)结果是受访者在给定选择集cul-rel中选择的替代方案是二元因子变量,根据实验设计,可供选择的替代因素在不同的替代品中变化

这是我的mlogit语法:

mlogit(outcome~cul+fit+ind+led+prj+rel,shape="long",
       data=data,id.var=userid,chid.var="chid",
       choice=outcome,alt.var="sector")
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

Error in if (abs(x - oldx) < ftol) { : 
  missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)

我确保没有丢失的数据,并且每个选择集都有1个选择的备选方案.有关为什么我收到此错误的任何想法,当模型在Stata中使用完全相同的数据集运行正常时?我可能在某处误读了mlogit语法.如果它有帮助,我的Stata语法是:asclogit结果cul fit rel ind fit led prj,case(chid)alternative(sector)

rob*_*ers 7

我在想出来的时候在这里回答我自己的问题.

当选择集中没有替代选项时,R mlogit无法处理.R还需要正确排序的数据,选择集中的每个备选方案必须连续排列.由于一些数据管理,我没有这样做.有趣的是,Stata可以处理这两种情况,这就是我的Stata命令工作的原因.

另外,对于那些感兴趣的人,Stata的asclogit和R's mlogit给出了完全相同的结果.发生这种情况时总是很好.

  • 很抱歉再次挖掘这个问题,但是当有不同的选择集时,我无法弄清楚该怎么做。即使替代方案在设置中不可用,R 是否要求每个替代选择设置有一排?Stata 会处理这个问题吗? (2认同)

Dan*_*gan -3

您可能需要使用mlogit.data()来塑造数据。上有一个例子?mlogit。希望有帮助。