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

Using multiple calipers in R package Matching

我正在尝试使用 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, 0, 1), caliper = c(.001, cal_age, .001,  cal_test_date))
summary(tmp_matched)

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

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