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

使用RStudio解决Kaplan-Meier图风险表特定时间点数据缺失问题

解决Kaplan-Meier风险表不显示720天时间点的问题

问题根源在于风险表的默认显示逻辑:ggsurvplot的风险表默认仅展示生存模型中存在事件发生或删失的时间点,以及与break.time.by生成的刻度重合的模型节点时间。你的数据里没有720天对应的事件或删失记录,因此该时间点不会被自动纳入风险表。

解决方案:强制指定风险表显示的时间点

在ggsurvplot函数中添加risk.table.times参数,明确列出需要展示的所有时间点(包括720天),确保风险表时间点与x轴刻度匹配。

修正后的完整代码:

# 加载所需包(仅首次运行时执行install.packages)
# install.packages("survival")
# install.packages("survminer")

library(survival)
library(survminer)

# 创建数据
data <- data.frame(
  status = c(1, 0, 1, 0, 1, 0, 1, 0),
  time = c(100, 200, 300, 400, 500, 600, 700, 800),
  group = c('A', 'A', 'B', 'B', 'A', 'A', 'B', 'B')
)

# 拟合Kaplan-Meier模型
fit <- survfit(Surv(time, status) ~ group, data = data)

# 绘制曲线并指定风险表时间点
ggsurvplot(
  fit,
  data = data,
  risk.table = TRUE,
  risk.table.height = 0.25,
  xlim = c(0, 800),
  xscale = "d",
  break.time.by = 180,
  # 强制指定风险表要显示的时间点,包含720
  risk.table.times = seq(0, 720, 180),
  risk.table.y.text.col = TRUE,
  risk.table.y.text = FALSE,
  risk.table.col = "strata",
  ggtheme = theme_minimal()
)

补充说明

  • risk.table.times接受数值向量,可根据需求自定义展示的时间点;
  • 若需要显示800天的风险人数,将向量改为seq(0, 800, 180)即可;
  • 注释重复的install.packages调用,避免每次运行重复安装包。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 22:48:13