在R中使用cardmatch进行匹配后的结果分析
使用以下软件包执行匹配后: 如何获得回归风格的输出格式,而不是简单地计算均值差异 在上面链接的cardmatch代码的最后一步之后:在R中使用cardmatch进行匹配后的结果分析,r,cardinality,propensity-score-matching,R,Cardinality,Propensity Score Matching,使用以下软件包执行匹配后: 如何获得回归风格的输出格式,而不是简单地计算均值差异 在上面链接的cardmatch代码的最后一步之后: # The mean difference in outcomes is the same... mean(re78[t_id_1]-re78[c_id_1]) mean(re78[t_id_2]-re78[c_id_2]) # ... but their standard deviation is reduced sd(re78[t_id_1]-re78[c
# The mean difference in outcomes is the same...
mean(re78[t_id_1]-re78[c_id_1])
mean(re78[t_id_2]-re78[c_id_2])
# ... but their standard deviation is reduced
sd(re78[t_id_1]-re78[c_id_1])
sd(re78[t_id_2]-re78[c_id_2])
我对这样的事情感兴趣,而不是简单地获得手段上的差异
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 2.3483 0.1007 18.681 < 2e-16 ***
treated -7.4793 0.8387 -6.459 4.87e-10 ***
系数:
估计标准误差t值Pr(>t)
(截距)2.3483 0.1007 18.681<2e-16***
处理-7.4793 0.8387-6.459 4.87e-10***
如何从cardmatch软件包步骤形成数据框架,然后使用glm或svyglm执行结果分析 如果不想保留配对成员资格,只需使用
cardmatch
输出中返回的t\u id
和c\u id
组件对数据集进行子集化即可。例如,如果输出对象名为cm
,而您的数据集名为data
,则运行以下操作将创建一个仅包含匹配单位的数据集:
data_matched <- data[c(cm$t_id, cm$c_id),]
对于新的对
变量,任何不匹配的单位都将具有NA
(或者您可以设置all.x=FALSE
以仅保留匹配的单位)。您可以使用lme4
包中的glmer()
在混合效应模型中使用pair
变量作为随机效应(相当于配对t检验),或使用glm()
在标准回归模型中使用集群稳健标准误差来解释分析中的配对。您可以添加协变量以提高精度并减少剩余偏差
pair_df <- data.frame(pair = factor(c(seq_along(cm$t_id),
seq_along(cm$c_id))),
row.names = c(cm$t_id, cm$c_id))
data_matched <- merge(data, pair_df, by = 0, all.x = TRUE, sort = FALSE)[-1]