【发布时间】:2015-06-22 16:54:17
【问题描述】:
我正在使用 MatchIt 包在 R 中运行匹配程序。我使用倾向得分匹配,即:通过logit估计治疗选择,并选择最接近的匹配。
数据集很大(400万行),有没有办法加快速度?
为了说明我做了什么:
require(MatchIt)
m.out <- matchit(treatment ~ age + agesq + male + income + ..., data = data, metod = "nearest")
【问题讨论】:
-
您在其他地方找到解决方案了吗?我的数据集也是约 400 万行,有 350 列,可用内存为 120 GB。它从过去 15 小时开始运行。我认为这个过程被卡住了......
-
至少对我来说,它并没有停止……我只是花了很长时间才完成(30 天 +++)。所以我最终使用了重采样方法,并用它来说服自己我得到了一致的估计。看看:cran.r-project.org/web/packages/Matching/index.html,它应该允许并行匹配。如果您在那台计算机中有几个 CPU,那么加速应该是显着的
-
哇。 30天……我想我会马上杀了它,从你的匹配开始。你知道 python/emr/spark/hadoop 有其他方法吗?
-
@androboy... 寻找匹配的问题呈指数增长,因此 400.000 OBS 是 16 小时(-ish)... 至少可以说是痛苦的。我认为并行函数是要走的路,我不明白为什么在 Python 中它应该(显着)更快......匹配只是做一些检查,实际提升是在 C 中完成的
-
致后代:自从提出这个问题以来,
MatchIt已经得到改进。它现在使用 C++ 进行匹配,因此速度更快,并且能够生成进度条。它可以通过精确匹配变量来进一步加快速度,就像 @Repmat 所做的那样,它会在子组内自动匹配。
标签: r performance matching