Rep*_*mat 8 performance r matching
我正在使用MatchIt包在R中运行匹配过程.我使用倾向得分匹配,即:通过logit估计治疗选择,并选择最接近的匹配.
数据集很大(400万行),有没有办法加快速度?
为了说清楚我做了什么:
require(MatchIt)
m.out <- matchit(treatment ~ age + agesq + male + income + ..., data = data, metod = "nearest")
Run Code Online (Sandbox Code Playgroud)
小智 1
我同样感到沮丧,但找到了适合我的情况的解决方案。
本质上,我发现通过将倾向得分匹配分为 3 个步骤,可以大大减少运行时间:
library(MatchIt)
library(tidyverse)
library(dplyr)
#step 1
data$myfit <- fitted(glm(treatment ~ age + agesq + male + income + ..., data = data, family = "binomial"))
#step 2
trimmed_data <- select(data, unique_id, myfit, treatment)
#step 3
m.out <- matchit(treatment ~ unique_id, data = trimmed_data, method = "nearest", distance = trimmed_data$myfit)
matched_unique_ids_etc <- match.data(m.out, data = trimmed_data)
matched_unique_ids <- select(matched_unique_ids_etc, unique_id)
matched_data <- matched_unique_ids %>% inner_join(data)
Run Code Online (Sandbox Code Playgroud)
该公式不影响最近邻匹配过程。
当我写这篇文章时,matchit 的默认距离/链接是 glm/logit,所以上面的代码适用于这种情况。
| 归档时间: |
|
| 查看次数: |
1474 次 |
| 最近记录: |