如何在风险表中展示受试者数量而非观测数量(4个受试者场景)
重复事件生存分析中调整风险表展示受试者数量的方案
你的重复事件数据中,每个受试者对应多条观测记录(示例数据共12条观测,但仅包含4个独特受试者),默认生成的风险表统计的是观测数量,而非实际的受试者数量。以下是调整代码的具体方案:
修改后的完整代码
# 加载所需包 library(survival) library(ggplot2) library(ggsurvfit) # 示例数据 d1 <- data.frame ( id = c(8, 8, 8, 18, 18, 18, 113, 113, 113, 130, 130, 130), times = c(2, 2, NA, 3, 3, NA, 2, 2, NA, 3, 3, NA), event1 = c(1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0) ) # 生成包含受试者数量风险表的生存曲线 survfit2(Surv(times, event1) ~ 1, data = d1) %>% ggsurvfit(color = "#508050") + labs(title = "probability of fever clearance as a function of time") + # 设置指定标题 add_confidence_interval(fill = "#508050") + add_risktable( # 自定义风险统计逻辑:计算每个时间点的独特受试者数 risktable_stats = list( n.risk = function(data, ...) { length(unique(data$id)) } ), # 可选:修改风险表列标题为更直观的名称 risktable_labels = list(n.risk = "受试者数量") ) + scale_ggsurvfit()
关键调整说明
- 风险表统计逻辑修改:通过
add_risktable()的risktable_stats参数,重定义n.risk的计算方式——用length(unique(data$id))统计每个时间点的独特受试者ID数量,替代默认的观测数统计。 - 标题设置:使用
labs()函数添加你指定的生存曲线标题。 - 可选优化:通过
risktable_labels参数将风险表的列标题修改为更直观的文字(比如示例中的"受试者数量"),提升图表可读性。
内容的提问来源于stack exchange,提问作者Pipas
相关产品推荐
相关产品推荐

