我在使用MatchIt包中的R语言运行匹配过程。我使用倾向得分匹配,即:通过逻辑回归估计治疗选择,并选择最近的匹配。
数据集非常大(400万行),有没有加快速度的方法?
为了清楚起见,这是我所做的:
require(MatchIt)
m.out <- matchit(treatment ~ age + agesq + male + income + ..., data = data, metod = "nearest")
我在使用MatchIt包中的R语言运行匹配过程。我使用倾向得分匹配,即:通过逻辑回归估计治疗选择,并选择最近的匹配。
数据集非常大(400万行),有没有加快速度的方法?
为了清楚起见,这是我所做的:
require(MatchIt)
m.out <- matchit(treatment ~ age + agesq + male + income + ..., data = data, metod = "nearest")
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)
MatchIt
已经得到了改进。现在它使用C++进行匹配,因此速度更快,并且具有生成进度条的功能。通过对变量进行精确匹配(如@Repmat所做的那样),可以进一步加快匹配速度,这将自动匹配子组内的内容。 - Noah