微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在R包匹配中使用多个卡尺

如何解决在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)

我希望 sexmunicipality 准确,dobyear 在 5 年内,first_test 在 180 天内。不过,我相信我为 caliper 编写的内容是不正确的,因为它只进行精确匹配。有人可以向我解释如何在此设置中使用卡尺,我想我一定是做错了什么。谢谢!

解决方法

通过设置 exact = c(0,1,1),您请求对 X 中的第二个和第四个变量(即 dobyeartest_date)进行精确匹配,并请求完全匹配 sexmunicipality 上完成。 dobyeartest_date 的卡尺被忽略,因为您要求对它们进行精确匹配。将 exact 更改为 exact = c(TRUE,FALSE,TRUE,FALSE) 以确保您请求对正确变量进行精确匹配。完全匹配变量的卡尺将被忽略,因此您无需为它们指定 .001(即,您可以提供 Inf 并且没有任何变化)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。