在临床研究中,生存分析是一种用于评估时间至事件(如死亡、复发或入院等)数据的重要统计工具。survival 包 作为 R 语言中最经典的生存分析工具,提供了构建 Kaplan-Meier 曲线、Cox比例风险模型 和 生存时间数据可视化 的一整套方法。
本期内容将介绍 survival 包的核心功能及代码示例,帮助大家快速掌握生存分析方法,灵活应用于临床研究中。
本期演示数据将通过 R 语言自行模拟,帮助大家独立掌握数据处理的完整流程。
(1)Kaplan-Meier 生存曲线
用于描述不同组间的生存概率随时间的变化情况。
(2)Cox比例风险模型(Cox-PH)
探讨协变量(如年龄、BMI)对生存时间的影响,评估其风险比(HR)。
(3)Log-rank检验
比较两组或多组间的生存曲线差异是否具有统计学显著性。
(4)生存时间数据可视化
借助 ggsurvplot() 函数等工具,实现高质量的生存曲线图。
Kaplan-Meier 生存曲线是最基础的生存分析方法,用于估计不同组别的生存概率。以下代码展示了如何利用 survfit() 函数绘制生存曲线:
library(survival)
library(survminer)
# 构建示例数据
set.seed(123)
survival_data <- data.frame(
time = round(rexp(200, rate = 0.1), 1),
status = sample(0:1, 200, replace = TRUE),
group = sample(c("Treatment", "Control"), 200, replace = TRUE),
age = round(runif(200, 30, 80)),
sex = sample(c("Male", "Female"), 200, replace = TRUE)
)
# Kaplan-Meier生存曲线
km_fit <- survfit(Surv(time, status) ~ group, data = survival_data)
# 绘制生存曲线
ggsurvplot(km_fit, data = survival_data,
risk.table = TRUE, pval = TRUE,
xlab = "Time (months)", ylab = "Survival Probability",
legend.title = "Group")
输出内容:
生存曲线图(不同组别曲线一目了然)
风险表(展示每时间点的风险人数)
P值(比较组间差异是否显著)
Cox比例风险模型是生存分析中的核心模型,可以探讨协变量对生存时间的影响,并输出 风险比(HR)。以下代码展示了如何实现 Cox-PH 模型分析:
# 构建Cox比例风险模型
cox_model <- coxph(Surv(time, status) ~ group, data = survival_data)
# 模型结果
summary(cox_model)
# 可视化模型结果
ggsurvplot(survfit(cox_model), data = survival_data,
xlab = "Time (months)", ylab = "Survival Probability")
输出内容:
HR(风险比) 和 95%置信区间
统计学显著性(P值)
可视化的生存曲线
Log-rank检验用于比较两组或多组的生存曲线差异是否显著。以下是示例代码:
# Log-rank检验
survdiff_result <- survdiff(Surv(time, status) ~ group, data = survival_data)
print(survdiff_result)
输出内容:
卡方统计量和 P值
判断不同组别之间的生存曲线是否有显著差异
在实际研究中,常常需要同时调整多个协变量的影响。以下是多变量 Cox-PH 模型的示例:
# 多变量Cox回归
cox_multivariable <- coxph(Surv(time, status) ~ group + age + sex, data = survival_data)
summary(cox_multivariable)
# 可视化HR
ggforest(cox_multivariable, data = survival_data)
输出内容:
每个协变量的 HR、95%CI 和P值
森林图可视化结果
https://cran.r- project .org/ web/ packages /survival / index. html
survival 包 是临床研究中必不可少的工具,它为时间至事件数据提供了强大的分析和可视化功能。通过本期推送,大家可以初步掌握生存分析的基本方法与代码应用,助力临床科研成果的高效输出!
希望本期内容帮助大家掌握 survival 包的生存分析技巧!欢迎留言告诉我们你想学习的其他R包,我们下期再见!
今天的分享到这里就结束啦,你学会了吗?大家对于推送内容有任何问题或建议可以在公众号菜单栏“更多--读者的话” 栏目中提出,我们会尽快回复!
期待已久~临床科研交流群来啦!
若群满,请添加下方微信,备注:“进临床科研与统计_互助交流群” )
“观科研”(点击进一步了解我们吧)是由一群北京协和医学院(清华大学医学部)的博士开创的公众号,初心是让医学科研有迹可循,帮助一线的医学科研人员更快地成长,希望大家支持与关注!
如果大家对分享医学科研知识感兴趣,特别欢迎加入我们,期待与您的相遇相识相知,也非常欢迎大家自主投稿,如果您有需要分享的内容或对我们有任何建议,可通过后台留言、公众号菜单栏“更多—读者的话”栏目(进一步了解)或发送邮件至mascu_forever@163.com与我们交流并留下个人联系方式,我们会及时与您联系。如果您觉得我们长期的干货推送对您的科研工作有所帮助,可以在合适的机会致谢(包括但不限于SCI论文、毕业论文等),格式如下: The authors thank the support of Skill Learning from Kaixin Doctor and MASCU (Medical Association with Science, Creativity, and Unity), Inc, Shenzhen, China (mascu_forever@163.com).
微信公众号的推送规则发生改变(不再按照时间顺序来显示),如果没有将“观科研”设置为星标,你就可能错失里面的精彩推送。