我想在考虑时间间隔的同时执行案例对照匹配。如果控制观测值对自变量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
我想要第一行和第三行之间的匹配项
有可能吗?
提前感谢
您可以使用间隔的intersect
创建一个新列。
df1$X3i <- intersect(df1$X3, df1$X3)
matchit(Y ~ X1 + X2 + X3i, data = df1, method = "exact")
# 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