案例研究“精确”匹配且时间间隔重叠

问题描述 投票:4回答:1

我想在考虑时间间隔的同时执行案例对照匹配。如果控制观测值对自变量X1,X2具有相同的值,并且时间间隔X3与情况重叠,则需要匹配。

例如,假设以下df1:

Y   X1    X2                  X3
1   44   1978   2017-01-01 UTC--2019-01-01 UTC
0   44   1978   2014-01-01 UTC--2015-01-01 UTC
0   44   1978   2018-01-01 UTC--2020-01-01 UTC
0   45   1978   2018-01-01 UTC--2020-01-01 UTC

使用以下代码创建:

library(lubridate)
library(MatchIt)

df1 <- data.frame(Y=c(1, 0, 0, 0), X1=c(44, 44, 44, 45), 
                  X2=c(1978, 1978, 1978, 1978), 
                  X3=c(interval(ymd(20170101), ymd(20190101)), 
                         interval(ymd(20140101), ymd(20150101)), 
                         interval(ymd(20180101), ymd(20200101)), 
                         interval(ymd(20180101), ymd(20200101))))

matchit(Y ~ X1 + X2 + X3, data=df1, method="exact")

#Error in weights.subclass(psclass, treat) : No units were matched

我想要第一行和第三行之间的匹配。

有可能吗?

r lubridate case-study
1个回答
1
投票

您可以使用intersect创建带有间隔重叠的新列X3i,并使用它。

df1$X3i <- intersect(df1$X3, df1$X3)

m <- matchit(Y ~ X1 + X2 + X3i, data=df1, method="exact")
m
# Call: 
#   matchit(formula = Y ~ X1 + X2 + X3i, data = df1, method = "exact")
# 
# Exact Subclasses: 1
# 
# Sample sizes:
#   Control Treated
# All             3       1
# Matched         2       1
# Unmatched       1       0

检查:

m$subclass
#  1  2  3  4 
#  1 NA  1 NA 
© www.soinside.com 2019 - 2024. All rights reserved.