我在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
有没有办法解决这些问题?谢谢!!
答案 0 :(得分:1)
您的问题似乎是MatchIt包中的一个错误,如SO here和here所述。我已提交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。
享受。