使用时间相关协变量可视化生存分析

机器算法验证 r 数据可视化 生存
2022-03-16 19:49:15

作为对具有时间相关协变量的 Cox 回归的模型建议的后续,这里是 Kaplan Meier 图,说明了怀孕的时间相关性质。换句话说,数据集现在根据怀孕次数分解为一个包含多行的长数据集。KM 图以及扩展的 cox 模型似乎暗示了怀孕对结果的有益影响。然而,看着 KM 图我想知道:第一次出生的线应该从 1.0 开始吗​​?在 x 等于第一次出生时,从 0 次出生的 y 值开始这条线不是更直观吗?

编辑:仔细研究后,我发现常规 KM 并不好。相反,我应该使用 Stata 中使用的 Simon 和 Makuch 的方法(Simon R,Makuch RW。生存与事件发生之间关系的非参数图形表示:应用于响应者与非响应者偏差。 统计医学博士,1984;3:35-44。)

有没有人看到这为 R 实现的?

在此处输入图像描述

2个回答

我无法访问上面提到的 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 图

最近在 CV 中有一篇关于这个问题的帖子:哪个是描述具有时间相关协变量的生存分析的最佳图表?

此外,现在可以使用RcmdrRcmdrPlugin.EZR包计算 R 中的 Mantel-Byar 检验和随附的 Simon-Makuch 图。

请参阅包含详细 R 代码的相关 SO 帖子:https ://stackoverflow.com/questions/40431559/mantel-byar-test-and-simon-makuch-plot-for-survival-analysis-with-time-dependent