如何解决在R包匹配中使用多个卡尺
我正在尝试使用 Matching 包中的 Match 函数在 4 个变量上创建匹配的数据集。我希望这些变量中有两个完全匹配,两个在设定范围内。
X <- cbind(tmpcomb$sexf,tmpcomb$dobyear,tmpcomb$municipality_code,tmpcomb$first_test)
colnames(X) <- c("sex","dobyear","municipality","test_date")
Tr <- tmpcomb$Tr
#Define caliper for age within 5 years (see package documentation for caliper)
cal_age <- 5/sd(tmpcomb$dobyear)
cal_test_date <- 180/sd(tmpcomb$first_test,na.rm = T)
#match
tmp_matched <- Match(Tr = Tr,X = X,exact = c(0,1,1),caliper = c(.001,cal_age,.001,cal_test_date))
summary(tmp_matched)
我希望 sex
和 municipality
准确,dobyear
在 5 年内,first_test
在 180 天内。不过,我相信我为 caliper 编写的内容是不正确的,因为它只进行精确匹配。有人可以向我解释如何在此设置中使用卡尺,我想我一定是做错了什么。谢谢!
解决方法
通过设置 exact = c(0,1,1)
,您请求对 X
中的第二个和第四个变量(即 dobyear
和 test_date
)进行精确匹配,并请求完全匹配 不在 sex
和 municipality
上完成。 dobyear
和 test_date
的卡尺被忽略,因为您要求对它们进行精确匹配。将 exact
更改为 exact = c(TRUE,FALSE,TRUE,FALSE)
以确保您请求对正确变量进行精确匹配。完全匹配变量的卡尺将被忽略,因此您无需为它们指定 .001
(即,您可以提供 Inf
并且没有任何变化)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。