我无法访问上面提到的 Simon 和 Makuch 文章,但是研究了我发现的主题:
Steven M Snapinn, Qijiang & Boris Iglewicz (2005) Illustrating the Impact of a Time-Variing Covariate With an Extended Kaplan-Meier Estimator , The American Statistician , 59:4, 301-307。
那篇文章通过简单地更新所有事件时间的群组,提出了一个时间相关的 Kaplan-Meier 图 (KM)。它还引用了 Simon 和 Makuch 的文章提出了类似的想法。常规 KM 不允许这样做,它只允许固定的分组。所提出的方法实际上根据协变量状态分割生存时间 - 就像在估计具有分段常数协变量的 Cox 模型时可以做的那样。对于 Cox 模型,这是一个可行的想法,也是一个标准的想法。然而,在进行 KM 绘图时,它会更加复杂。让我用一个模拟例子来说明它。
让我们假设我们没有审查,但是在死亡时间之前可能会或可能不会发生的一些事件(例如,分娩)。为了简单起见,我们还假设不断的危险。我们还将假设分娩不会改变死亡的危险。我们现在将遵循上述文章中规定的程序。文章清楚地说明了这是如何在 R 中完成的,只需在分娩时拆分您的主题,使它们在您的分组变量中保持不变。Surv
然后在函数中使用计数过程公式。在代码中
library(survival)
library(ggplot2)
n <- 10000
data <- data.frame(id = seq(n),
preg = rexp(n, 1),
death = rexp(n, .5),
enter = 0,
per = NA,
event = 1)
data$exit <- data$death
data0 <- data
data0$exit <- with(data, pmin(preg, death))
data0$per <- 0
data0$event[with(data0, preg < death)] <- 0
data1 <- subset(data, preg < death)
data1$enter <- data1$preg
data1$per <- 1
data <- rbind(data0, data1)
data <- data[order(data$id), ]
Sfit <- survfit(Surv(time = enter, time2 = exit, event = event) ~ per, data = data)
autoplot(Sfit, censSize = 0)$plot
我或多或少地“手动”拆分它。我们也可以使用survSplit
。该程序实际上给了我一个非常好的估计。
我们应该得到几乎相同的两组估计值。但实际上,我的模拟可能有点不切实际。假设一个女人由于某种原因不能在前两个时间单位分娩。在您的示例中,这至少是合理的:同一女性的两次怀孕之间会有一段时间。对代码做一点小小的补充
data <- data.frame(id = seq(n),
preg = rexp(n, 1) + 2,
death = rexp(n, .5),
enter = 0,
preg = NA,
event = 1)
我们得到以下情节:
您的数据也会发生同样的事情。至少在最初的一段时间内,您不会看到任何第三次怀孕,这意味着您对该组和那段时间的估计将是 1。在我看来,这是对您数据的误传。考虑我的模拟。危害是相同的,但对于每个时间点,per1
估计值都大于per0
估计值。
您可以考虑针对此问题采取不同的补救措施。您建议在某个点将它们粘贴在一起(让 -per1
曲线从 - 曲线上的某个点开始per0
)。我喜欢这个主意。如果我在模拟数据上这样做,我们会得到:
在我们的具体案例中,我认为这可以更好地代表数据,但我不知道有任何已发表的结果支持这种方法。启发式地,可以使用我在另一个答案中提出的论点:
具有时变系数的 KM 图