分享

临床系列R包 | 第8期. 生物标志物临界值选择的利器:survminer包

 新用户4064dVjo 2025-04-25 发布于北京
BE声明学写文章②

 往期回顾

   REVIEWS  

1)临床系列R包 | 第1期. 一个函数快速绘制基线表

2)临床系列R包 | 第2期. autoReg自动生成回归分析结果

3)临床系列R包 | 第3期. 探索生存分析的利器:survival包

4)临床系列R包 | 第4期. 高效处理LASSO回归的利器:glmnet包

5)临床系列R包 | 第5期. 精准绘制ROC曲线的利器:pROC包

6临床系列R包 | 第6期. 回归建模与预测可视化的利器:rms包

7)临床系列R包 | 第7期. 随访数据生存预测的利器:timeROC 包

本系列推送旨在为临床科研人提供临床研究中常用R包系统性学习分享。

本期内容

在生存分析中,如何对连续变量进行分组是一个常见且关键的步骤。传统做法往往依赖研究者的主观判断,比如采用中位数、四分位数或临床经验设定阈值,这种方法虽然简便,但存在较大的主观性,可能导致结果的不稳定或不具备重复性。为了解决这一问题,survminer 包中的surv_cutpoint() 函数提供了一种更加客观和可重复的策略。该函数通过系统地遍历所有可能的截断点,计算每个切点对应的 log-rank 检验统计量,并最终选取能使组间生存差异最大的那个切点,作为最优 cutoff,从而实现对连续变量的最优分组。

surv_cutpoint() 的使用不仅简化了分组流程,还提高了结果的科学性与解释力。该函数输出的不仅是最优cutoff点,同时还可以通过 surv_categorize() 函数进一步生成对应的分组变量,使得后续的建模分析更加方便和规范。在实际操作中,这一方法常常搭配 surv_fit() 或 coxph() 进行生存模型的构建,并结合 ggsurvplot() 进行可视化展示,从而直观呈现不同组之间的生存差异。

·

R Package

·

本期演示数据将通过 R 语言自行模拟,帮助大家独立掌握数据处理的完整流程。


01

survminer包的核心功能

1. 自动搜索连续变量的最优cutoff点

借助surv_cutpoint() 函数,用户可以自动寻找能最大化生存差异的最优分组点,避免了人为设定阈值所带来的偏差。

2.支持多变量生存建模

surv_fit() 或 coxph() 等函数无缝配合,能够在分组后进行进一步的多因素生存分析。

3.内置分组变量生成函数

使用surv_categorize() 可将 surv_cutpoint() 输出结果快速转化为因子变量,便于模型输入和图形绘制。

4.可视化直观的生存曲线绘制

结合ggsurvplot(),能够以简洁、美观的方式绘制出不同分组之间的生存曲线,方便结果解读和展示。

02

survminer包的使用示例

# 加载必要的包library(survminer)library(survival)library(ggplot2) # 模拟生存数据set.seed(2025)n <- 200data <- data.frame(  time = rexp(n, rate = 0.05),                       # 生存时间  status = sample(0:1, n, replace = TRUE),           # 0=删失,1=事件  marker = rnorm(n, mean = 50, sd = 10)              # 连续变量) # 选择cutoffcut <- surv_cutpoint(data,                     time = "time",                     event = "status",                     variables = "marker") # 查看cutoff位置summary(cut)
# 创建分组变量(marker_high vs marker_low)data_cat <- surv_categorize(cut) # 生存分析建模fit <- survfit(Surv(time, status) ~ marker, data = data_cat) # 绘图ggsurvplot(fit,           data = data_cat,           risk.table = TRUE,              # 显示风险表           pval = TRUE,                    # 显示P值           conf.int = TRUE,                # 显示置信区间           palette = "jama",               # 美观配色           legend.title = "Marker group",           legend.labs = c("Low", "High"),           xlab = "Time (days)",           ylab = "Survival probability")

03

参考文档与相关指南链接


CRAN 文档:https: // cran .r - project .org /web /packages /
survminer/survminer.pdf

通过本期推送,大家可以初步掌握survminer包的基本功能与应用方法。如果你有其他感兴趣的 R 包,欢迎留言告诉我们,我们将为你量身定制相关内容!


    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多