我有来自离散选择实验(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

userid和chid是因子变量,其余为数字。变量:
用户ID是唯一的响应者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")

这是我得到的错误:
Error in if (abs(x - oldx) < ftol) { :
  missing value where TRUE/FALSE needed

我确保没有丢失的数据,并且每个选择集正好有1个选择的替代项。
当模型在具有完全相同的数据集的Stata中运行良好时,关于为什么会出现此错误的任何想法?我可能在某处误读了mlogit语法。如果有帮助,我的Stata语法为:
asclogit结果cul fit rel ind fit led prj,case(chid)替代项(部门)

最佳答案

我在这里想出了自己的问题。

当未选择选项集中的任何替代项时,R mlogit无法处理。 R还需要正确排序数据,选择集中的每个替代项都必须排成一行。由于某些数据管理,我没有这样做。有趣的是,Stata可以处理这两种情况,因此这就是我的Stata命令起作用的原因。

顺便说一句,对于那些感兴趣的人,Stata的asclogit和R的mlogit给出了完全相同的结果。发生这种情况时总是很高兴。

关于r - mlogit:需要TRUE/FALSE的缺失值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27264021/

10-12 17:30