一段时间内 Kaplan-Meier 曲线下的面积

Area under the Kaplan-Meier curve for a time interval

我想计算一段时间内 Kaplan-Meier 曲线下的面积。我知道我可以计算从 0 到 t 的曲线下面积,也就是使用 print.survfit 函数的受限平均生存时间:

library(survival)
km <- survfit(Surv(futime, fustat) ~ 1, data = ovarian)
print(km, rmean = 600)

但是,我想要的是某个时间间隔内 Kaplan-Meier 曲线下的面积,例如从 t1 到 t2。 有没有办法左截断卡普兰迈尔曲线下面积的计算? 欢迎任何建议!

所以你知道如何获得 AUC(0-t1)AUC(0-t2)。正如@missuse 在他的评论中指出的那样,AUC(t1-t2) = AUC(0-t2) - AUC(0-t1)

我不确定您是否可以获得 方差,因为从技术上讲,您在该线下有一条线和一个区域 (AUC)。你能做的是

(1) 为 Kaplan-Myer

绘制 95%CI

(2) 计算 AUC(t1-t2) 上 CI

(3) 为较低的 CI

计算 AUC(t1-t2)

(4) 将结果表示为范围,其方式与表示正常 95% 置信区间的方式相同。

这样行吗?还有:为什么要使用 KM 曲线下的面积?因为,正如@42- 指出的那样,您将以一些时间单位到达 "life expectancy",并且您不需要 KM 到达那里(?)

生存曲线的方差"around"非常类似于二项式过程的比例方差。在您的情况下,您显然能够计算直到 t1 的数据的方差。因此截断 t1 处的数据,然后计算到 t2 的方差。

和@Oka 一样,我想知道你为什么想要 AUC,但后来我意识到 AUC 只是 "life expectancy" 用于完整的 KM 曲线,单位是 "years" 或其他一些时间单位.

 str(ovarian)
'data.frame':   26 obs. of  6 variables:
 $ futime  : num  59 115 156 421 431 448 464 475 477 563 ...
 $ fustat  : num  1 1 1 0 1 0 1 1 0 1 ...
 $ age     : num  72.3 74.5 66.5 53.4 50.3 ...
 $ resid.ds: num  2 2 2 2 2 1 2 2 2 1 ...
 $ rx      : num  1 1 1 2 1 1 2 2 1 2 ...
 $ ecog.ps : num  1 1 2 1 1 2 2 2 1 2 ...
 t1 = 400;  t2 = 700

 km <- survfit(Surv(futime, fustat) ~ 1, data = ovarian)
 print(km, rmean = 400)
 #---------------
Call: survfit(formula = Surv(futime, fustat) ~ 1, data = ovarian)

         n     events     *rmean *se(rmean)     median    0.95LCL    0.95UCL 
      26.0       12.0      355.6       18.5      638.0      464.0         NA 
    * restricted mean with upper limit =  400 


 km2 <- survfit(Surv(futime, fustat) ~ 1, 
                 data = ovarian[ !(ovarian$futime <=400), ])
 print(km2, rmean = 700)
#-----------------
Call: survfit(formula = Surv(futime, fustat) ~ 1, data = ovarian)

         n     events     *rmean *se(rmean)     median    0.95LCL    0.95UCL 
      26.0       12.0      532.2       41.1      638.0      464.0         NA 
    * restricted mean with upper limit =  700 

实际上,由于 surv2sampleComp 包的 surv2sample,我最终弄清楚了如何计算 t1 和 t2 之间的 AUC 方差。它通过重新采样来实现。

library("survival")
library("surv2sampleComp")
data(veteran)
# we need a group variable to use the surv2sample function
veteran$group <- as.numeric(veteran$karno < 70) 
rmst <- surv2sample(veteran$time, veteran$status, veteran$group, npert = 500, tau_start= 100, tau = 200)
rmst$group0
#---------------
                             Est.       Lower 95%   Upper 95%          SE
RMST                       43.4025761  32.1207404  55.8039197  6.15988181
# results truncated