R语言绘制可用于论文发表的生存曲线图|科研绘图·24-08-25

小罗碎碎念

有关于生存曲线的基本概念(例如删失事件的定义)和绘图的详细教程我已经在5月的推文中介绍过了,有需求的同学欢迎前去考古。

R语言绘制生存分析曲线·从概念到实战的保姆级教程|2024-05-12

https://mp.weixin.qq.com/s/Z6gBbpBlALT_KKgEW29Stg

今天这期推文的目的是把主要的代码框架梳理出来,方便快速调用,省去浏览知识点分析的过程。

成品展示

跟着这期推文,你最后能实现的效果如下。


一、曲线解读

假设我们已经掌握了一定的基础知识,那么可以看下列这个曲线。

①OS:总生存期

②纵坐标:患者生存率

③横坐标:观察时间

④HR:目标gene高表达组相对于低表达组的死亡风险比;HR<1,代表gene高表达抑制死亡;P<0.05说明两组间差异有统计学意义

⑤代表删失数据

⑥两条曲线在各个时间点上对应的人数

⑦组别:代表不同组别对应曲线


二、曲线绘制

先调用自带的数据做一些分析,然后我再介绍如何利用自己的数据进行分析。

2-1:装包

R 复制代码
install.packages("survminer") # 安装survminer包 
install.packages("survival") # 安装survival包 
library(survminer) # 加载包 
library(survival) # 加载包

2-2:导入内置数据集

使用survival包的lung数据集进行演示。

R 复制代码
View(lung) # 查看数据集
  1. inst # 机构代码;

  2. time # 生存天数;

  3. status # 生存状态;

  4. age # 年龄;

  5. sex # 性别,1为男性,2为女性;

  6. ph.ecog、ph.karno、pat.karno # 为病人和患者评分,这里用不到;

  7. meal.cal # 进食时消耗的卡路里;

  8. wt.loss # 最近6个月内的体重下降。


2-3:拟合生存曲线

创建生存对象

survival包中先使用Surv()函数创建生存对象,生存对象是将事件时间和删失信息合并在一起的数据结构。

R 复制代码
attach(lung) # 绑定数据集 
Surv(time,status) # 创建生存对象

这个生存对象通常用于后续的生存分析模型中,如Cox比例风险模型等,以估计生存函数、风险比或者进行时间至事件的分析。


拟合曲线

在R语言中,生存分析通常涉及使用survival包中的survfit()函数来拟合生存数据。

R 复制代码
fit <- survfit(Surv(time,status) ~ sex,data = lung) # 数据集来源 
fit # 查看拟合曲线信息
plot(fit)#绘制曲线

现在其实就可以绘制一个非常粗糙的曲线了,后续会介绍如何完善。


绘制基础曲线

在R语言中,ggsurvplot() 函数是 survminer 包提供的一个用于绘制生存曲线的高级函数,它基于 ggplot2 包的图形语法。

R 复制代码
ggsurvplot(fit, data = lung)

三、自定义曲线

3-1:增加中位生存时间

中位生存时间(median survival time)又称为生存时间的中位数,表示刚好有50%的个体其存活期大于该时间,是生存分析中常用的概括性统计量。

图解法是计算中位生存时间的方法。其利用生存曲线图,从纵轴生存率为50%处画一条与横轴平行的线,并与生存曲线相交,然后自交点画垂线与横轴相交,此交点对应的时间即为中位生存时间。

R 复制代码
ggsurvplot(fit, data = lung, surv.median.line = "hv") # 增加中位生存时间

从图上可以看出,男性的中位生存时间小于女性。由之前的结果可知具体时间------男性为270,女性为426。


3-2:增加置信区间

R 复制代码
ggsurvplot(fit, data = lung, surv.median.line = "hv",conf.int = TRUE) # 增加置信区间

3-3:累计风险曲线

当你在 ggsurvplot() 函数中设置 fun = "cumhaz" 时,函数会生成累积风险曲线,而不是默认的生存曲线。累积风险曲线通常用于展示在不同时间点之前至少一次发生事件的累积概率

R 复制代码
ggsurvplot(fit, data = lung, conf.int = TRUE,fun = "cumhaz") # 绘制累计风险曲线

⚠️累积风险曲线在某些情况下比生存曲线更有用,尤其是在想要强调事件发生风险随时间的累积效应时。然而,累积风险曲线的解释可能比生存曲线更复杂,因此在选择使用时需要考虑分析的目的和受众。


3-4:风险表

R 复制代码
ggsurvplot(fit, data = lung, conf.int = TRUE,risk.table = TRUE) # 绘制累计风险曲线

3-5:总患者生存曲线

R 复制代码
ggsurvplot(fit, # 创建的拟合对象 
            data = lung, # 指定变量数据来源 
            conf.int = TRUE, # 显示置信区间 
            pval = TRUE, # 添加P值 
            surv.median.line = "hv", # 添加中位生存时间线 
            add.all = TRUE) # 添加总患者生存曲线

3-6:自定义调色板

R 复制代码
ggsurvplot(fit, # 创建的拟合对象 
          data = lung, # 指定变量数据来源 
          conf.int = TRUE, # 显示置信区间 
          pval = TRUE, # 添加P值 
          surv.median.line = "hv", # 添加中位生存时间线 
          palette = "hue") # 自定义调色板 

3-7:美化生存曲线

R 复制代码
ggsurvplot(fit, # 创建的拟合对象 
          data = lung, # 指定变量数据来源 
          conf.int = TRUE, # 显示置信区间 
          pval = TRUE, # 添加P值 
          surv.median.line = "hv", # 添加中位生存时间线 
          risk.table = TRUE, # 添加风险表 
          xlab = "Follow up time(d)", # 指定x轴标签 
          legend = c(0.8,0.75), # 指定图例位置 
          legend.title = "sex", # 设置图例标题 
          legend.labs = c("Male", "Female"), # 指定图例分组标签 
          break.x.by = 100) # 设置x轴刻度间距

3-8:添加标题

R 复制代码
ggsurvplot(fit, 
           data = lung, 
           conf.int = TRUE, 
           pval = TRUE, 
           surv.median.line = "hv", 
           risk.table = TRUE, 
           xlab = "Follow up time(d)", 
           legend = c(0.8,0.75), 
           legend.title = "sex", 
           legend.labs = c("Male", "Female"), 
           break.x.by = 100,
           title = "Author-LXLTX") # 添加图表标题
相关推荐
开心工作室_kaic1 小时前
基于Vue的兴趣活动推荐APP的设计与实现_kaic
java·c语言·开发语言·数据库·python·sqlite·php
完球了1 小时前
【Day14-单例设计模式&动态代理】
java·开发语言·笔记·学习·设计模式·学习经验
.昭阳.1 小时前
小程序——生命周期
java·开发语言·前端·小程序
Ajiang28247353044 小时前
贪吃蛇项目实现(C语言)——附源码
c语言·开发语言
guicai_guojia4 小时前
面试题篇: 跨域问题如何处理(Java和Nginx处理方式)
java·开发语言·nginx
鼠鼠龙年发大财5 小时前
fly专享
开发语言·php
hunandede5 小时前
直播相关02-录制麦克风声音,QT 信号与槽,自定义信号和槽
开发语言·qt
lzb_kkk5 小时前
【Redis】redis5种数据类型(哈希)
开发语言·redis·算法·缓存·哈希算法
Good_tea_h6 小时前
如何实现Java中的多态性
java·开发语言·python
武艺晴小朋友你好6 小时前
基于scRNA-data,运用pySCENIC寻找细胞群里面活跃的调节子
r语言·数据可视化·r语言-4.2.1