R - Matchit - 倾向得分匹配 - 丢弃功能不起作用

时间:2017-10-28 10:01:22

标签: r matching

我在LaLonde数据集上使用MatchIt包,discard参数产生两种类型的错误。 (如果我不使用discard参数,代码可以工作)。在这两种情况下,目前尚不清楚如何解决问题......

第一个问题是我尝试discard = "hull.control"

m.opt1 <- matchit(treat ~ inc.re74 + inc.re75 + education + nonwhite + 
  age + nodegree, data = cps_controls, method = "optimal", ratio=1, 
  discard="hull.control")

生成此错误消息....

Loading required namespace: WhatIf
Preprocessing data ...
Performing convex hull test ...
Error in mclapply(1:m, in_ch, mc.cores = mc.cores) : 
'mc.cores' > 1 is not supported on Windows

第二个问题是我尝试discard = "control"

Error in d[i, ] <- abs(d1[i] - d0) : 
number of items to replace is not a multiple of replacement length

有没有办法解决这些问题?谢谢!!

2 个答案:

答案 0 :(得分:1)

您的问题似乎是MatchIt包中的一个错误,如SO herehere所述。我已提交ticket on GitHub

答案 1 :(得分:0)

关于discard = "hull.control"问题:

here下载MatchIt的源代码,然后编辑 discard.R 。将自变量WhatIf::whatif添加到mc.cores = 1的调用中。这应该将使用的内核数硬编码为1,从而消除此问题。

卸载MatchIt软件包并通过打开命令行并输入 R CMD build C:\ path \ to \ MatchIt-master 来构建新软件包。这应该创建一个.tar.gz文件。在R Studio中,单击工具->安装软件包... 并选择本地软件包。

如果该库先前已加载,则可能需要重新启动R Studio。

享受。