原标题:超详细讲解生信SCI中的生存曲线作图,不看后悔系列
在线及个性化精美Kaplan-Meier生存曲线的绘制
大家好,我是阿琛。俗话说,是骡子是马拉出来溜溜。在肿瘤研究中,一个基因的研究价值高不高,或者一种新模型的应用价值好不好,都主要取决于其对患者生存状态的预测能力。良好的预后预测能力,能其明显的脱颖而出;与其他分子或模型相比,具有更高的临床转化与应用价值。在此,阿琛带大家一起学习生存曲线的各种绘制方法。
![]()
在线分析工具
巧妇难为无米之炊,分析的第一步自然是数据的来源。目前,对于提供了生存信息的数据库,主要包括以下几个数据库:
1、TCGA数据库
提供了转录组、基因组以及患者的总生存率OS信息,涵盖33种肿瘤研究,其中UCSC Xena网站提供了TCGA数据库泛癌患者的总生存率OS和无病生存率DFS;
![]()
2、TCPA数据库(http://tcpaportal.org)
TCGA的蛋白质组数据库,整合了来自TCGA和几个独立的肿瘤研究项目RPPA芯片结果的肿瘤蛋白质谱数据库;
![]()
3、TARGET数据库(https://ocg.cancer.gov/programs/target)
一个针对儿童肿瘤研究的数据库,涉及急性淋巴细胞白血病(ALL, Acute Lymphoblastic Leukemia)、急性髓细胞白血病(AML, Acute Myeloid Leukemia)、肾脏肿瘤(KT, Kidney Tumors)等疾病,提供了患者转录组、基因组变化以及相应的OS;
![]()
4、SEER数据库(https://seer.cancer.gov/data/)
由美国国家癌症研究所(National Cancer Institute)发起,收集了大约30%的美国人口的癌症诊断、治疗和生存数据,涉及不同组织病理学癌症亚型的发病率,生存率和死亡率数据,是一个相当丰富的临床相关研究的大型数据库。
![]()
5、其他
此外,还有ICGC数据库(https://icgc.org/),GEO数据库(https://www.ncbi.nlm.nih.gov/geo/)等,也提供了一些其他研究的信息,自然也包括了相应的预后信息。
![]()
▲ ICGC数据库
![]()
▲ GEO数据库
而针对肿瘤研究利器的TCGA数据库,许多研究者通过建立各种在线的数据可视化分析网站,供大家使用。其中,比较著名的包括GEPIA(http://gepia.cancer-pku.cn/)和UALCAN(http://ualcan.path.uab.edu/)两大网站。对于这两个网站的使用方法,解螺旋在生信全书体系课程中已经进行了详细的讲解,在此就只做一个简单的介绍。感兴趣的小伙伴可以直接找到相应的课程进行学习。
![]()
▲ GEPIA数据库绘制生存曲线操作方法
![]()
▲ UALCAN数据库绘制生存曲线操作方法
软件绘制
现成的东西虽好,但终究缺少了那么几分灵气。在线分析工具主要针对TCGA数据集中单个基因的生存预后分析,且数据的更新存在一定的滞后。当我们前期针对多个基因或因素构建了相应的风险模型,想进一步分析该模型对患者生存状态及预后评估时,这些分析工具就显示出其本身的局限性。
下面,我们主要通过两种方法来给大家讲解Kaplan-Meier生存曲线的绘制。
第一种方法:GraphPad Prism绘制生存曲线
1、数据下载与整理
关于TCGA数据的下载与整理,大家可以复习之前的文章“十分钟快速掌握TCGA mRNA及临床数据的下载”。在此,整理好的数据主要包括每个病人的生存时间、生存状态以及分组信息。
![]()
2、打开GraphPad Prism软件,选择Survival分析
![]()
3、按要求分别输入不同分组的生存数据
![]()
4、点击Graphs,即可得到结果
第二种方法:R绘制Kaplan-Meier生存曲线
1、安装和加载R包
#install.packages("survival")
#install.packages("survminer")
library(survival)
library("survminer")
# 载入需要的程辑包:ggplot2
# 载入需要的程辑包:ggpubr
# 载入需要的程辑包:magrittr
在这里,阿琛主要介绍一下如何通过survival包中的survfit函数来拟合生存曲线,构建模型;随后,使用survminer包中的ggsurvplot函数绘制Kaplan-Meier生存曲线。
2、读取数据
setwd("C:Users000Desktopsurvival") #设置工作目录
rt=read.table("risk.txt",header=T,sep=" ") #读取整理好的文件
head(rt) #查看数据
# id futime fustat risk
#1 TCGA-VQ-A8E0 1.539726027 1 high
#2 TCGA-BR-8686 1.306849315 0 low
#3 TCGA-BR-4370 0.002739726 0 high
#4 TCGA-VQ-A927 0.547945205 1 high
#5 TCGA-FP-8631 0.046575342 0 low
#6 TCGA-BR-7704 1.660273973 0 high
3、计算P值及拟合生存曲线
diff = survdiff(Surv(futime, fustat) ~risk,data = rt)
pValue = 1-pchisq(diff$chisq,df=1)
pValue = signif(pValue,4) #显示4位有效数字
pValue = format(pValue, scientific = TRUE) #使用科学计算法
pValue #查看P值
#[1] "2.149e-03" #说明该模型对预后的预测价值 P < 0.001
fit
summary(fit) #查看五年生存率
#Call: survfit(formula = Surv(futime, fustat) ~ risk, data = rt)
# risk=high
# time n.risk n.event survival std.err lower 95% CI upper 95% CI
# 0.00274 184 2 0.989 0.00764 0.9743 1.000
# 0.00822 171 1 0.983 0.00954 0.9648 1.000
# 0.06575 166 1 0.977 0.01117 0.9558 1.000
# 0.08219 165 1 0.971 0.01258 0.9472 0.996
# 0.12329 162 1 0.966 0.01386 0.9387 0.993
# 0.15616 160 1 0.959 0.01503 0.9305 0.989
# risk=low
# time n.risk n.event survival std.err lower 95% CI upper 95% CI
# 0.00274 184 1 0.995 0.00542 0.984 1.000
# 0.14247 167 1 0.989 0.00802 0.973 1.000
# 0.18356 165 1 0.983 0.00996 0.963 1.000
# 0.20822 164 1 0.977 0.01156 0.954 1.000
# 0.22192 162 1 0.971 0.01297 0.946 0.996
4、绘制Kaplan-Meier生存曲线
ggsurvplot(fit, #指定fit拟合对象
data = rt) #指定数据集来源
结果如图所示
![]()
下面,我们一起对曲线的相关参数进行设置与修改,以得到一个精美的可用于发表的生存曲线图形。
4.1、添加P值和95%可信区间
ggsurvplot(fit,
data = rt,
pval = paste0("p=",pValue), #添加P值
conf.int = TRUE) #添加95%可信区间
![]()
4.2、添加风险表格和中位生存时间线
ggsurvplot(fit,
data = rt,
conf.int = TRUE,
pval = paste0("p=",pValue),
risk.table = TRUE, #添加风险表格
surv.median.line = "hv") #添加中位生存时间线
![]()
4.3、设置x轴坐标及相关名称
ggsurvplot(fit,
data = rt,
conf.int = TRUE,
pval = paste0("p=",pValue),
risk.table = TRUE,
surv.median.line = "hv",
xlab="Time(years)", #设置x轴名称
break.time.by = 1, #设置x轴间距
risk.table.title="", #添加图片标题
legend.labs=c("High risk", "Low risk"), #添加标签名称
legend.title="Risk") #添加标签的标题
![]()
到此,一张精美的可用于发表的生存曲线图形就绘制完成了,将图片保存成PDF格式即可用于后续文章的结果。
苦逼的2020年,
我们需要更多运气!
期盼天降鸿运,砸中你!
人在家中坐,礼从天上来!
iPhone11究竟花落谁家?
今日便知分晓!!!
心动不如行动!
入群就会有机会!
责任编辑: