r - 在 R 中使用 cardmatch 执行匹配后的结果分析
问题描述
使用下面的这个包执行匹配后:
https://rdrr.io/cran/designmatch/man/cardmatch.html
我如何获得回归风格的输出格式,而不是简单地计算均值的差异?
在上面链接中的卡片匹配代码的最后一步之后:
# 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 ***
如何从 cardmatch 包步骤形成数据框,然后使用 glm 或 svyglm 执行结果分析?
解决方案
如果您不想保留对成员资格,只需使用返回的t_id
和输出c_id
的组件对您的数据集进行子集化cardmatch
。例如,如果调用了输出对象并且调用了cm
您的数据集data
,则运行以下命令将创建一个仅包含匹配单元的数据集:
data_matched <- data[c(cm$t_id, cm$c_id),]
如果您关心配对成员并希望创建一个表示每个单元的配对 ID 的变量,您可以使用以下代码(假设data
不存在 的行名称或只是索引该行的数字):
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]
任何不匹配的单位都将NA
用于新pair
变量(或者您可以设置all.x = FALSE
为仅保留匹配的单位)。您可以pair
在混合效应模型中使用变量作为随机效应,glmer()
在lme4
包中使用(相当于配对 t 检验)或在标准回归模型中使用集群稳健标准误差glm()
来解释分析中的配对。您可以添加协变量以提高精度并减少剩余偏差。
推荐阅读
- google-app-engine - 自部署以来,GAE 站点出现新异常:“无法读取未定义的属性 'parsePath'”
- rfid - 带 rfid 的伺服旋钮控制
- jquery - 更新另一个页面(相同域)中的 DIV 内容
- blockchain - 如何查看 Parity Substrate 中的宏生成的最终代码?
- java - 如何实现多个不同内容的案例共享案例?
- node.js - S3如何查找对象是否具有预签名的URL?
- javascript - 如何在猫鼬中嵌套模式?
- git - git push 不断跟踪已删除的文件
- swift - show data into tableview from api when category cell and store cell is selected or only one from previous controller in swift
- azure - 交换后应用服务上的旧 WEBSITE_HOSTNAME 值