如何在生存分析中获得 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)
我正在整合一个生存分析,通过一个闪亮的应用程序获得 运行,因此输出会经常变化。我的代码是 运行 进行生存分析,然后每 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)