相关文章推荐
勤奋的番茄  ·  手机端 Android WebView ...·  10 月前    · 
魁梧的小蝌蚪  ·  Index of ...·  1 年前    · 
苦恼的冲锋衣  ·  2018-05-17 ...·  1 年前    · 
憨厚的硬盘  ·  如何在React ...·  1 年前    · 

本期R包:survival和survminer,survival建立生存函数,survminer内置ggplot2,ggpubrg等包,美化曲线。

一行代码配一个图,逐步讲解代码含义。

喜欢的小伙伴记得关注、点赞加转发,分享给更多的人。

公众号回复 20210201 获取本期代码和数据。

或在本公众号后台回复 KM

一、人群总体生存的KM曲线

二、某个变量的KM曲线

三、KM曲线美颜

  1. 累计死亡曲线

  2. xy轴标签

  3. 图例位置-1

  4. 图例位置-2

  5. xy轴刻度/数字等

  6. 生存率置信区间

  7. 删失点修改

  8. P值及log-rank检验

  9. 配色方案-1

  10. 配色方案-2

  11. 综合版的KM曲线

#1.载入包
library(survival)
library(survminer)
#2.清理工作环境
rm(list = ls()) 
#3.读入数据
aa<- read.csv('20210201.csv')
#4.查看数据前6行
head(aa)
#5.查看数据数据性质
str(aa)
#6.查看生存或死亡人数
aa$status<-factor(aa$status)
summary(aa$status)
 

建立人群总体生存函数

km<-survfit(Surv(time,status==0)~1,data=aa)
 

注:status==0是指定0是结局即死亡,~1是看总体生存的情况。(status,0=死亡;1=生存)

#查看整个数据集结局(死亡)的发生时间
#详细见图片说明
summary(km)

summary(km)是该生存函数最重要的结果,它总结了生存分析所有的信息。包括3.5年生存率及其95%CI ,中位生存时间,每个时间点的患者总数和死亡患者数目。之后的操作和美化时所汇报的信息均来自于它。

详见图片:

查看3.5年生存率

summary(km,time=c(36,60))
 

画一个最常用的美化图形

ggsurvplot(km, 
           conf.int=T, #是否显示生存率的95%CI
           risk.table=TRUE,#显示风险表
           palette="lancet", #柳叶刀配色
           title="Kaplan-Meier Curve ", #大标题
           risk.table.height = 0.25 #风险表的高度比例
 

某个变量的KM曲线

km1<-survfit(Surv(time,status==0)~sur,data=aa)
 

~后1改为sur或其他变量即可(sur=手术,亚变量sur=保乳术;MAST=根治术 ;No=未手术)

summary(km1)
#查不同手术方式的3.5年生存率
summary(km1,time=c(36,60))
ggsurvplot(km1, 
           pval=TRUE, #显示p值
           pval.coord = c(0, 0.2),#p值位置坐标
           pval.size =5,#p值字体大小
           conf.int=T, #是否显示生存率的95%CI
           risk.table=TRUE,#显示风险表
           risk.table.height = 0.25, #风险表的高度
           palette="lancet", #柳叶刀配色
           title="Kaplan-Meier Curve for OS ", #大标题
           legend.labs=c("保乳", "全切","无手术"), 
           legend.title="手术",  #改图例名称 
           surv.median.line = "hv" #中位生存期。
 

km曲线美颜

美化其实就是在ggsurvplot()内加一行行的代码,下面是一码一图

0.  先看无美化的ggsurvplot(km1)

ggsurvplot(km1) 
  

1. 将生存曲线改为累计死亡曲线

ggsurvplot(km1, 
           fun = "cumhaz"# 累计死亡曲线
  

2. 更改xy轴标签

ggsurvplot(km1,
           xlab="时间(月)" ,#x轴标签
           ylab="总生存率"  #y轴标签
  

3. 更改图例位置-1

ggsurvplot(km1,
           legend="left") 
#图例位置上、下、左、右、无=
#"top"(默认),"bottom","left","right","none"
  

4. 更改图例位置-2

#以xy坐标确定图例位置
ggsurvplot(km1,
           legend=c(20,0.4)) 
  

5. 更改xy轴刻度/数字等

ggsurvplot(km1,
           break.x.by=12 ,#x轴刻度的间距.例如12月一个刻度
           break.y.by=0.2 ,# 设定y轴刻度的间距,如break.y.by = 0.2
           surv.scale="percent" ,#"percent"生存用百分数表示
           #xlim= c(0,80), #一般用不到
           ylim=c(0,1), # y轴的范围
           axes.offset=FALSE # 为FALSE,则生存曲线图的坐标轴从原点开始。
  

6. 生存率的置信区间

ggsurvplot(km1,
           conf.int = TRUE,#打开置信区间
           #conf.int.style="step",# 设置置信区间的类型
           conf.int.alpha =0.3#指定置信区间填充颜色的透明度(0-1)
           censor=T, #隐藏删失,默认为T,关掉为F
           censor.shape=124, # 删失的形状;默认为 +为3,|为124。
           censor.size=4.5 # 删失形状的大小,默认为4.5。
  

8. P值及log-rank检验

ggsurvplot(km1,
           pval = TRUE,#打开P值
           pval.size=6, # p值字体大小,默认为5。
           pval.coord=c(20,0.1), # p值坐标=c(x,y)
           pval.method=TRUE,#打开log.rank
           pval.method.size=6, #log.rank字体大小
           pval.method.coord=c(1,0.1)#log.rank的坐标
 

log-rank检验

log_rank<-survdiff(Surv(time, status==0)~sur,rho=0,data=aa);log_rank
  

9.  配色方案-1

ggsurvplot(km1, 
           palette="lancet") 
 #使用柳叶刀自动配色,我最喜欢的配色
# 其他高分SCI的配色,jco的也很好看。任选一个
# "grey","npg","aaas","lancet","jco", 
# "ucscgb","uchicago",
#"simpsons","rickandmorty".

10.  配色方案-2

ggsurvplot(km1, 
           palette=c("red", "yellow", "green"))
#自己配色,有几条线选几个颜色,例如
# "red", "pink", "purple", 
# "deep-purple", "indigo",
# "blue", "light-blue", "cyan",
# "teal", "green", "light-green", "lime",
# "yellow", "amber", "orange", 
# "deep-orange", "brown", "grey","blue-grey"
  

整合版本的KM曲线,根据需要删减代码

ggsurvplot(km1, 
           title  = "三种手术方式患者的生存曲线",  
           xlab = "时间(月)", 
           ylab = "生存率", 
           font.main = c(16, "bold", "darkblue"), #字体大小,样式和颜色
           font.x = c(12,  "bold.italic","red"), #x轴标签的字体大小,斜体和颜色
           font.y = c(14, "darkred"), #y轴的字体大小,颜色
           font.tickslab = c(12, "plain", "darkgreen"), #更改刻度标签的字体大小,样式和颜色
           legend = c(0.2, 0.2), 
           legend.title = "手术方式", 
           legend.labs = c("保乳术", "全切术","未手术"), 
           size = 1,  #更改线号
           linetype = "strata", #按组更改线型(即“分层”)
           break.x.by=12 ,
           break.y.by=0.2 ,
           surv.scale="percent" ,
           palette ="aaas", 
           conf.int = T, 
           pval = TRUE, 
           pval.coord = c(12, 0),    
           pval.size = 5, 
           pval.method=TRUE,
           pval.method.size=5, 
           pval.method.coord=c(1,0),
           surv.median.line = "hv",  
           risk.table = "absolute", #"absolute"、"percentage"、"abs_pct"", #绝对人数、百分比和危险之中
           #risk.table.pos =in,#分线表放在图内
           risk.table.col = "strata", #按组更改风险表颜色
           risk.table.y.text.col = TRUE, #颜色风险表文本注释(按层)
           risk.table.y.text = FALSE, #在风险表图例中的文本注释中显示条形而不是名称
           risk.table.height = 0.2,  
           risk.table.title="时间点下的人群数目",
           fontsize=4,#风险表字体
           #ggtheme = theme_bw(), #使用主题自定义情节和风险表。
           #xlim = c(0, 95), 
           ylim = c(0, 1)
 

ggsurvplot()函数的细节其实还有很多,这里只选择大家最常用的。

需要哪种细节时,只需将代码写入括号内,代码间以英文逗号隔开就可以了。

本期内容就到这里了,制作不易,喜欢的小伙伴帮忙点赞和转发,多谢大家支持!!

本公众号致力于打造实用的科研干货和临床学习资料分享平台,假如你有临床和科研上的问题或经验分享,请私信我。

感谢阅读,如有错误请指正!

ggsci包提供了一系列高质量的颜色,以顶级大刊的审美为我们定好颜色,从此告别颜色选择惆怅!scale_fill_jco() #临床肿瘤学杂志 JCO。scale_fill_jama() #美国医学会杂志,JAMA。scale_fill_lancet() #柳叶刀 Lancet。大家可以欣赏上顶级期刊的颜色,挑一种最合适的用到你的论文中去吧!scale_fill_npg() #Nature杂志。scale_fill_nejm() #新英格兰 NEJM。 生存分析研究的是某个事件发生之前过去的时间,在临床研究中最常见的应用就是死亡率的估计(预测患者的生存时间),不过生存分析也可以应用于其他领域如机械故障时间等。 在R中,survival包中有很多函数可以对生存数据进行建模,可以使用survfit()函数来估计删失数据的生存曲线,使用coxph()函数用来拟合Cox比例风险模型。 在survminer包中,可以使用plot()函数、ggsurvplot()函数用来绘制Kaplan-Meier生存曲线。 今天就来学习在R中使用ggsurvplot()函数绘 临床研究论文 COX 比例风险回归模型Fit Proportional Hazards Regression Model如果如下内容有错误,请留言,谢谢,感激不尽!1 写在前面本文需要的R包:"survival" 、"tableone"、"broom"、"forestplot"和 "survminer".本代码使用survival自带的lung数据集,lung数据集中出现的变量解释:2 ... 文章目录一 数据和R包二 原生KM曲线三 优化KM曲线1 survminer绘制KM曲线2 坐标轴,标题,主题优化3 Risk Table4 添加注释信息 本文首发于“生信补给站”:https://mp.weixin.qq.com/s/lpkWwrLNtkLH8QA75X5STw 生存分析作为分析疾病/癌症预后的出镜频率超高的分析手段,而其结果展示的KM曲线也必须拥有姓名和颜值! 生存分析相关... 转载自画说统计 | 生存分析之Kaplan-Meier曲线都告诉我们什么 临床研究中,存在这样一类研究,我们关注的临床结局是一个事件,比如:死亡,复发,症状消失,疾病痊愈等等。在很多情况下,我们不仅关注事件是否发生,还会关注事件发生的早晚。同时,由于研究周期的限定,和患者依从性的差异,是我们不可能追踪到所有结局事件的发生。 面对这样的数据该如何统计分析呢?办法当然有,由于最初这类方法被应用于针对死亡结局的分析中,所以这类分析被称为:生存分析。其中,Kaplan-Meier方法是帮助我们描述生存结局(或者说, 关于生存分析,这个大家都非常熟悉,也是临床研究的最最常用的方法,但是在使用过程中,无论是医生还是分析人员对它都有点迷糊,下面我整理的最全的关于生存分析方法的方方面面的知识点,并结合实际的TCGA数据库结果来展示用法,希望能够帮助大家理解其使用的方法和技巧。 R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvplot函数可视化生存曲线、risk.table添加风险计数表、risk.table.col参数指定不同分层计数表的颜色不同 生存分析研究的是某个事件发生之前过去的时间,在临床研究中最常见的应用就是死亡率的估计(预测患者的生存时间),不过生存分析也可以应用于其他领域如机械故障时间等。在R中,survival包中有很多函数可以对生存数据进行建模,可以使用survfit()函数来估计删失数据的生存曲线,使用coxph()函数用来拟合Cox比例风险模型。在survminer包中,可以使用plot()函数、ggsurvplot(... 科研绘图之R语言生存分析KM曲线和累计风险表KM估计R语言展示KM估计的生存函数曲线1、最简单的方法2、利用survminer包绘制3、进一步美化,添加累计风险表格、图例、文本注释 KM估计同时利用生存时间(连续变量)和生存结局(一般为分类变量,用来表示状态)信息,是一种求生存时间函数,即S(t)的方法。 KM估计的定义如下: R语言展示KM估计的生存函数曲线 1、最简单的方法 在R里,有多种实现方法,最简单的就是 # An highlighted block library(survival) 机器学习 放射学 图像Lung cancer has been one of the leading causes of cancer-related deaths in Canada because of its high incidence and low survival rate. Based on the 2012–2014 data, the 5-year survival rate ... 生存分析有个难点是删失(cersored)数据处理,删失数据是指整个数据收集过程都没发生事件的数据。说的有点拗口,举例说我们做某癌症生存分析,那么事件就是因此癌症导致病人死亡。如果有个病人随访期间不幸被车撞死了,那么这个病人记录到此为止,但是我们的事件并没有发生;或者病人突然搬到国外去了,无法继续随访记录,那这个人数据收集结束了,但事件也没有发生。这例子是右删失数据,还有左删失等感兴趣朋友可自行了... 0. 简介生存分析(survival analysis)是生物医学研究中常用的分析方法。在队列随访研究中,我们会事先定义一些观察终点,比如肿瘤复发、患者死亡、血压达标等,这些终点称为事件(event)。从研究开始到发生事件的时间间隔称为生存时间(survival time),某些场景下也称为失效时间(failure time)。由于生存时间数据具有以下两个特点,所以提出生存分析这一特殊的分析方法:(1)偏态分布:生存时间通常具有明显的偏态分布,有正态分布假设的统计方法不能适用。(2)删失(censoring 看SCI文章,发现一个规律,越是高分的文章作图越是“花里胡哨”,出各种新奇的图,色彩上也很鲜艳,而大多数人就喜欢看那种花里胡哨的。其实很多时候,我们里高分文章的图只差一个思路和配色,同样的数据别人做的图看起来很好,很大原因是颜色搭配的好。今天我们就谈谈R的色彩搭配,让你的作图可视化向高分文章看齐。 一、提取颜色 看到别人文章中好看的配色,直接提取是最方便的方法,可以使用AI或者PPT操作,主要是为了得到颜色的十六进制代码,可用于R绘图。不过这里我们介绍一种R的方式,可以将图片读入R中,提取一张图片所有颜色