gpt4 book ai didi

r - 病例对照研究 "exact"与重叠时间间隔匹配

转载 作者:行者123 更新时间:2023-12-05 07:08:08 27 4
gpt4 key购买 nike

我想在考虑时间间隔的同时进行病例对照匹配。如果对照观察的自变量 X1、X2 和重叠时间间隔 X3 与一个案例具有相同的值,我想要一个匹配项。

例如,假设以下 df1:

row Y   X1   X2              X3
1 0 1 1 2017-01-06 UTC--2017-01-10 UTC
2 0 1 1 2017-01-07 UTC--2017-01-11 UTC
3 0 1 1 2017-01-08 UTC--2017-01-12 UTC
4 0 1 1 2017-01-09 UTC--2017-01-13 UTC
5 0 1 1 2017-01-10 UTC--2017-01-14 UTC
6 1 1 1 2017-01-11 UTC--2017-01-15 UTC
7 0 1 1 2017-01-12 UTC--2017-01-16 UTC
8 0 1 1 2017-01-13 UTC--2017-01-17 UTC
9 0 1 1 2017-01-14 UTC--2017-01-18 UTC
10 0 1 1 2017-01-15 UTC--2017-01-19 UTC
11 0 1 1 2017-01-16 UTC--2017-01-20 UTC

使用以下代码创建:

library(lubridate)
library(MatchIt)

df1 <- data.frame(Y=c(0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0),
X1=rep(1, 11),
X2=rep(1,11),
X3=c(interval(ymd(20170106), ymd(20170110)),
interval(ymd(20170107), ymd(20170111)),
interval(ymd(20170108), ymd(20170112)),
interval(ymd(20170109), ymd(20170113)),
interval(ymd(20170110), ymd(20170114)),
interval(ymd(20170111), ymd(20170115)),
interval(ymd(20170112), ymd(20170116)),
interval(ymd(20170113), ymd(20170117)),
interval(ymd(20170114), ymd(20170118)),
interval(ymd(20170115), ymd(20170119)),
interval(ymd(20170116), ymd(20170120))))

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

输出:

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

Sample sizes:
Control Treated
All 10 1
Matched 10 1
Unmatched 0 0

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

row Y X1 X2 X3 weights subclass
1 0 1 1 2017-01-06 UTC--2017-01-10 UTC 1 1
2 0 1 1 2017-01-07 UTC--2017-01-11 UTC 1 1
3 0 1 1 2017-01-08 UTC--2017-01-12 UTC 1 1
4 0 1 1 2017-01-09 UTC--2017-01-13 UTC 1 1
5 0 1 1 2017-01-10 UTC--2017-01-14 UTC 1 1
6 1 1 1 2017-01-11 UTC--2017-01-15 UTC 1 1
7 0 1 1 2017-01-12 UTC--2017-01-16 UTC 1 1
8 0 1 1 2017-01-13 UTC--2017-01-17 UTC 1 1
9 0 1 1 2017-01-14 UTC--2017-01-18 UTC 1 1
10 0 1 1 2017-01-15 UTC--2017-01-19 UTC 1 1
11 0 1 1 2017-01-16 UTC--2017-01-20 UTC 1 1

我想要 6(案例)和 2、3、4、5、7、8、9、10(控制)之间的匹配,如果任何控制时间间隔介于 2017 年 1 月 11 日和 1 月 15 日之间2017 我要和那个控件匹配

你可以体会到这里是 1:10 的比赛而不是 1:8 的比赛

编辑:我更改了之前的 df 示例:https://pastebin.com/nwzpyUAr

EDIT2: session 信息:https://pastebin.com/g2Q1t1E0

最佳答案

我得出的结论是我可以匹配除 X3(时间间隔)以外的所有变量,然后我们可以选择 time_Interval 案例并使用 lubridate 包中的 int_overlaps 函数

result <- match.data(matchit(Y ~ X1 + X2, data=df1, method="exact"))
case_timeInterval <- result[result$Y == 1,]$X3

result <- result %>%
filter(ifelse(int_overlaps(X3, case_timeInterval), 1, 0) == 1)

关于r - 病例对照研究 "exact"与重叠时间间隔匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61929604/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com