我使用了Sekhon的匹配包,问题是如何获得匹配的数据集。文档中没有解释如何进行倾向得分匹配,只解释了我没有使用的genMatch。
如果你已经做了没有替换的匹配(即, replace = FALSE
)和无联系的情况下进行匹配(即, ties = FALSE
),这是直接的。如果你已经做了无替换(即, )和无绑定(即, )的匹配,这就很简单了。dat
是您的数据集和 M
是对 Match()
,您可以运行
matched <- dat[c(M$index.treated, M$index.control),]
和匹配的数据集将被存储在对象的 matched
. 您可以通过运行
matched$pair <- factor(rep(M$index.treated, 2)
当使用替换或绑定进行匹配时,会变得更加复杂,因为有些单位会与另一组中的多个单位进行匹配。您可以使用相同的代码来提取匹配的单元,但单元会多次出现,因此需要进行加权。权重存在于 M$weights
,而且每对都有一个,所以需要重复(即。weights <- rep(M$weights, 2)
)来获得新数据集中每个单元的权重。
如果你只是想得到匹配数据集的匹配权重,不管匹配是如何完成的,丢弃配对成员资格,你可以使用 get.w()
中的功能 cobalt
包,提取权重,原始数据集中每个单位一个,如下。
weights <- get.w(M)
length(weights)
应该等于 nrow(dat)
.