You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用ggsurvfit计算Kaplan-Meier图指定随访期事件概率绝对差

用ggsurvfit计算指定随访时长的事件发生概率绝对差值

核心逻辑

事件发生概率 = 1 - 生存率,我们需要先提取指定时间点的分组生存率,转换为事件发生概率后,再计算两组的绝对差值。

具体操作步骤

  1. 拟合模型并提取指定时间点的生存数据
    用survfit2()拟合模型后,通过tidy()函数指定随访时间点,提取对应时间的生存率及置信区间,再转换为事件发生概率:
library(ggsurvfit)
library(tidyverse)

# 拟合生存模型
fit <- survfit2(Surv(time, status) ~ sex, data = df_lung)

# 提取随访365天的生存数据,同时计算事件发生概率
surv_data <- fit %>%
  tidy(time = 365) %>%
  mutate(
    event_prob = 1 - estimate,
    event_prob_lower = 1 - conf.high,
    event_prob_upper = 1 - conf.low
  )
  1. 计算两组事件发生概率的绝对差值
    从提取的数据中筛选分组信息,直接计算差值,也可以同步计算差值的置信区间:
# 提取两组事件发生概率
group_probs <- surv_data %>% pull(event_prob)
# 计算绝对差值
event_prob_diff <- abs(group_probs[1] - group_probs[2])

# 计算差值的置信区间
group_lower <- surv_data %>% pull(event_prob_lower)
group_upper <- surv_data %>% pull(event_prob_upper)
diff_lower <- abs(group_lower[1] - group_lower[2])
diff_upper <- abs(group_upper[1] - group_upper[2])

# 输出结果
cat(sprintf("随访365天事件发生概率绝对差值:%.4f(95CI:%.4f-%.4f)\n", 
            event_prob_diff, diff_lower, diff_upper))
  1. 可选:在KM图上标注差值
    如果需要把结果直接标注在图上,用add_text()添加文本注释即可:
fit %>%
  ggsurvfit() +
  add_confidence_interval() +
  add_risktable() +
  add_text(
    x = 365, y = 0.5, 
    label = sprintf("事件概率差值: %.4f", event_prob_diff),
    hjust = 0
  )

关键提示

  • tidy(time = ...)支持传入多个时间点(比如time = c(365, 730)),一次性提取多时间点的数据。
  • 转换事件发生概率的置信区间时,因为生存率的置信区间是(conf.low, conf.high),1减去后区间上下限会反转,所以要用1 - conf.high作为事件概率的置信下限。

内容的提问来源于stack exchange,提问作者Faith Magut

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 20:08:25