大家好,俗话说,是骡子是马拉出来溜溜。在肿瘤研究中,一个基因的研究价值高不高,或者一种新模型的应用价值好不好,都主要取决于其对患者生存状态的预测能力。良好的预后预测能力,能其明显的脱颖而出;与其他分子或模型相比,具有更高的临床转化与应用价值。在此,阿琛带大家一起学习生存曲线的各种绘制方法。


在线分析工具

巧妇难为无米之炊,分析的第一步自然是数据的来源。目前,对于提供了生存信息的数据库,主要包括以下几个数据库:


1TCGA数据库

提供了转录组、基因组以及患者的总生存率OS信息,涵盖33种肿瘤研究,其中UCSC Xena网站提供了TCGA数据库泛癌患者的总生存率OS和无病生存率DFS;


2TCPA数据库(http://tcpaportal.org)

TCGA的蛋白质组数据库,整合了来自TCGA和几个独立的肿瘤研究项目RPPA芯片结果的肿瘤蛋白质谱数据库;


3TARGET数据库(https://ocg.cancer.gov/programs/target)

一个针对儿童肿瘤研究的数据库,涉及急性淋巴细胞白血病(ALL, Acute Lymphoblastic Leukemia)、急性髓细胞白血病(AML, Acute Myeloid Leukemia)、肾脏肿瘤(KT, Kidney Tumors)等疾病,提供了患者转录组、基因组变化以及相应的OS;


4SEER数据库(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包

  1. #install.packages(''survival'')
  2. #install.packages(''survminer'')
  3. library(survival)
  4. library(''survminer'')
  5. # 载入需要的程辑包:ggplot2
  6. # 载入需要的程辑包:ggpubr
  7. # 载入需要的程辑包:magrittr

在这里,阿琛主要介绍一下如何通过survival包中的survfit()函数来拟合生存曲线,构建模型;随后,使用survminer包中的ggsurvplot()函数绘制Kaplan-Meier生存曲线。

2读取数据

  1. setwd(''C:Users000Desktopsurvival'') #设置工作目录
  2. rt=read.table(''risk.txt'',header=T,sep='' '') #读取整理好的文件
  3. head(rt) #查看数据
  4. # id futime fustat risk
  5. #1 TCGA-VQ-A8E0 1.539726027 1 high
  6. #2 TCGA-BR-8686 1.306849315 0 low
  7. #3 TCGA-BR-4370 0.002739726 0 high
  8. #4 TCGA-VQ-A927 0.547945205 1 high
  9. #5 TCGA-FP-8631 0.046575342 0 low
  10. #6 TCGA-BR-7704 1.660273973 0 high

3计算P值及拟合生存曲线

  1. diff = survdiff(Surv(futime, fustat) ~risk,data = rt)
  2. pValue = 1-pchisq(diff$chisq,df=1)
  3. pValue = signif(pValue,4) #显示4位有效数字
  4. pValue = format(pValue, scientific = TRUE) #使用科学计算法
  5. pValue #查看P值
  6. #[1] ''2.149e-03'' #说明该模型对预后的预测价值 P < 0.001
  7. fit <- survfit(Surv(futime, fustat) ~ risk, data = rt) #使用survfit()函数拟合生存曲线
  8. summary(fit) #查看五年生存率
  9. #Call: survfit(formula = Surv(futime, fustat) ~ risk, data = rt)
  10. # risk=high
  11. # time n.risk n.event survival std.err lower 95% CI upper 95% CI
  12. # 0.00274 184 2 0.989 0.00764 0.9743 1.000
  13. # 0.00822 171 1 0.983 0.00954 0.9648 1.000
  14. # 0.06575 166 1 0.977 0.01117 0.9558 1.000
  15. # 0.08219 165 1 0.971 0.01258 0.9472 0.996
  16. # 0.12329 162 1 0.966 0.01386 0.9387 0.993
  17. # 0.15616 160 1 0.959 0.01503 0.9305 0.989
  18. # risk=low
  19. # time n.risk n.event survival std.err lower 95% CI upper 95% CI
  20. # 0.00274 184 1 0.995 0.00542 0.984 1.000
  21. # 0.14247 167 1 0.989 0.00802 0.973 1.000
  22. # 0.18356 165 1 0.983 0.00996 0.963 1.000
  23. # 0.20822 164 1 0.977 0.01156 0.954 1.000
  24. # 0.22192 162 1 0.971 0.01297 0.946 0.996

4绘制Kaplan-Meier生存曲线

  1. ggsurvplot(fit, #指定fit拟合对象
  2. data = rt) #指定数据集来源

结果如图所示

下面,我们一起对曲线的相关参数进行设置与修改,以得到一个精美的可用于发表的生存曲线图形。

4.1 添加P值和95%可信区间

  1. ggsurvplot(fit,
  2. data = rt,
  3. pval = paste0(''p='',pValue), #添加P值
  4. conf.int = TRUE) #添加95%可信区间

4.2 添加风险表格和中位生存时间线

  1. ggsurvplot(fit,
  2. data = rt,
  3. conf.int = TRUE,
  4. pval = paste0(''p='',pValue),
  5. risk.table = TRUE, #添加风险表格
  6. surv.median.line = ''hv'') #添加中位生存时间线

4.3 设置x轴坐标及相关名称

  1. ggsurvplot(fit,
  2. data = rt,
  3. conf.int = TRUE,
  4. pval = paste0(''p='',pValue),
  5. risk.table = TRUE,
  6. surv.median.line = ''hv'',
  7. xlab=''Time(years)'', #设置x轴名称
  8. break.time.by = 1, #设置x轴间距
  9. risk.table.title='''', #添加图片标题
  10. legend.labs=c(''High risk'', ''Low risk''), #添加标签名称
  11. legend.title=''Risk'') #添加标签的标题

到此,一张精美的可用于发表的生存曲线图形就绘制完成了,将图片保存成PDF格式即可用于后续文章的结果。

放眼望去,近几年,很多人都有这样一种感受,那就是现在的科研要求越来越高,论文发表越来越难

这主要是因为当前竞争越来越大,优质科研成果及高水平论文越来越多,学术市场水涨船高。现在,要想在学术生涯获得良好发展,手握高分论文已经成了通行证。这不仅是对科研人员,对硕博生们也是如此。对于硕博生们来说,优质的论文更是获到学术自信,确保顺利毕业、获得满意工作的决定因素,根本无法忽视。

但是说到这里,很多人可能就抱怨了:现在发论文,真的很难很难啊!

所以,我很想把一个优质的课程推荐给大家!一个可能改变所有医学生一生的课程

10天领悟3分SCI套路

点击下方

解螺旋服务号

免费报名


—END—

相关文章