如何在生存分析中获得 50% 的生存事件时间

How to get the 50% survival event time in a Survival Analysis

我正在整合一个生存分析,通过一个闪亮的应用程序获得 运行,因此输出会经常变化。我的代码是 运行 进行生存分析,然后每 26 个月打印一次摘要(截至目前随机选择的数字),并执行 10 次。

km_fit <- survfit(Surv(Life_Time_Months, Is_Closed) ~ 1, data = My_Data)
summary(km_fit, times = c(25 * (1:10)))

摘要的输出大致如下所示:

time n.risk n.event survival std.err lower 95% CI upper 95% CI
   26  99910   19897    0.841 0.00104        0.839        0.843
   52  72512   15084    0.704 0.00134        0.701        0.707
   78  52153   10037    0.598 0.00150        0.595        0.601
  104  39170    5106    0.534 0.00159        0.531        0.537
  130  30783    3394    0.484 0.00165        0.481        0.487
  156  24563    2404    0.444 0.00171        0.440        0.447
  182  19351    1625    0.412 0.00176        0.408        0.415
  208  15463    1154    0.385 0.00182        0.382        0.389
  234  11924     796    0.363 0.00187        0.359        0.367
  260   9179     512    0.346 0.00194        0.342        0.349

与其打印 10 个 26 的倍数的结果,我真的更想要一个存活百分比为 0.5 或尽可能接近的结果。

我该怎么做?

生存百分比中位数对应的时间可以在拟合总结中得到。

例如,如果您使用数据集 lung:

library(survival)
library(survminer)
data("lung")
fit <- survfit(Surv(time, status) ~ sex, data = lung)

fit的输出是:

> fit
Call: survfit(formula = Surv(time, status) ~ sex, data = lung)

        n events median 0.95LCL 0.95UCL
sex=1 138    112    270     212     310
sex=2  90     53    426     348     550

如您所见,中位数是在每种情况下生存百分比等于 0.5 的时间。 要提取此值,您可以对摘要进行排序 table:

> summary(fit)$table
      records n.max n.start events   *rmean *se(rmean) median 0.95LCL 0.95UCL
sex=1     138   138     138    112 325.0663   22.59845    270     212     310
sex=2      90    90      90     53 458.2757   33.78530    426     348     550

并仅提取 median 方法:

> summary(fit)$table[,"median"]
sex=1 sex=2 
  270   426 

适应你的代码,你应该尝试:

summary(km_fit)$table[,"median"]

它能回答您的问题吗?

如果没有,请考虑提供一个可重现的数据示例 (How to make a great R reproducible example)