如何解决R 粗略精确匹配打印匹配对
我正在尝试实现一对一粗化的精确匹配。我正在关注此处提供的帮助包: https://cran.r-project.org/web/packages/cem/cem.pdf
现在,我正在尝试在来自匹配包的 lalonde 数据集上的第 3 页上实现示例。我的代码如下:
library(cem)
library(Matching)
data(lalonde)
mat <- cem(treatment="treat",data=lalonde,drop="re78",k2k=TRUE,method = "euclidean",keep.all=FALSE)
#variable name "treat" is different from cran documentation
print(mat)
> print(mat)
G0 G1
All 260 185
Matched 87 87
Unmatched 173 98
这似乎完美地工作。使用“print(mat)”打印出匹配的数量,“mat”对象似乎有多个对象,除了匹配对的信息。这似乎是一个微不足道的问题,但我无法从文档中找出匹配对的信息。
有人能指出如何获得匹配的成对观察吗?例如。 Obs 1 - Obs 100 等。我希望得到匹配在一起的对。
我能看到的最近的物体是:
mat[["matched"]]
然而,这并没有告诉我治疗组中的哪个观察结果与对照组中的观察结果(以及观察结果 ID)相匹配。
我知道我在这里遗漏了一些简单的东西。任何帮助将不胜感激。
提前致谢。
解决方法
这不能用 cem
完成。它实际上并不创建匹配对;在由粗化协变量定义的每个层内,它确保每个层内处理单元和控制单元的数量相同。可以导出层,您可以尝试查找哪些单元属于哪个层。
MatchIt
包中粗化精确匹配的实现确实具有此功能。以下是您将如何使用 MatchIt
执行匹配:
library(MatchIt)
data("lalonde",package = "MatchIt") #note,different from lalonde in Matching
m.out <- matchit(treat ~ age + educ + race + married + nodegree + re74 + re75,data = lalonde,method = "cem",k2k = TRUE,k2k.method = "euclidean")
匹配对的身份存储在 match.matrix
输出对象(即 m.out
)的 m.out$match.matrix
属性中。例如,参见 here。每行对应一个处理单元,列中的条目对应匹配的控制单元。要创建仅包含匹配单位的数据集,您可以在 match.data()
上运行 m.out
。输出中的 subclass
列包含对成员资格。请参阅 MatchIt
vignette on estimating effects after matching 了解如何在考虑配对成员资格时估计影响。 “After Pair Matching without Replacement”部分适用于使用 k2k = TRUE
的粗化精确匹配。
请注意,在 MatchIt
中实现粗化精确匹配的方式与在 cem
中的方式略有不同。与 MatchIt
粗化精确匹配的 help page 解释了这些差异,因此如果两个包之间的结果不同,请不要惊慌。我是 MatchIt
的维护者并编写了它的文档,所以如果您有任何其他问题,请告诉我。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。