vlambda博客
学习文章列表

R语言绘图系列-生存曲线(Kaplan-Meier)

 

生存曲线

根据生存曲线 (又称Kaplan-Meier曲线) 的估计,可以推断出比较组之间存活时间的差异,因此生存曲线非常有用,几乎可以在每个生存分析中看到。

        在临床研究中,生存曲线是最常用图形之一,旨在描述各组病人的生存时间和状态。一张精美的生存曲线图不但可以让读者,编辑,甚至审稿人眼前一亮,而且能为文章档次提高不少。鉴于一些初学者对生存曲线比较陌生,不知道为何要绘制生存曲线,也不知道该如何绘制和解读生存曲线。因此,笔者希望借此机会,结合自己长期的统计分析经验谈谈如何通过R语言绘制生存曲线,并对生存曲线的结果进行解读。

 

#我们在绘制生存曲线之前,首先先准备好我们所需的数据,在excel中打开,如下:

 



本次我们下载了TCGA数据库的数据,用于生存曲线的制作,TCGA是一个公共数据库,目前在肿瘤的研究中非常常用,笔者在以后的学习交流中也会针对TCGA进行相关的内容介绍。

 

在R语言中绘制生存曲线


#我们打开R语言,设置工目录,在R语言中读取我们的数据,并查看前6行:

sur_data=read.table("data.txt",header=T,sep="\t",row.names=1,check.names=F)

#查看数据前6

head(sur_data)


 

R语言绘图系列-生存曲线(Kaplan-Meier)


#我们要将gene的表达数据转换成组别,我们通常以中位数作为cutoff值将患者分为高表达与低表达两组,代码如下:

sur_data$group=ifelse(sur_data$gene>median(sur_data$gene),'2','1')

 

#生存状态Dead转换为1Alive转换为0

sur_data$status=ifelse(sur_data$status=="Dead",1,0)

 

#接下来我们需要加载所需的R packages,包括survivalsurvminer

library(survival)

library(survminer)

#接下来我们需要拟合生存函数

sur =survfit(Surv(time/365, status) ~group,data = sur_data)

 

#最后,我们就可以进行生存曲线绘制了,代码如下,我们同时对代码进行了相应的注释:

R语言绘图系列-生存曲线(Kaplan-Meier)

#我们得到以下结果,我们可以得出结论,高表达该基因的患者预后较低表达的患者差,log-rank检验的结果p=0.0064<0.05, 说明差异具有统计学意义,:

R语言绘图系列-生存曲线(Kaplan-Meier)

 

#为了使图形更加美观,我们可以对其中的一些参数进行修改,

 

R语言绘图系列-生存曲线(Kaplan-Meier)


#得到结果如下,我们在这一组分析中还可以看到两组的累积事件数和在风险中的人数,这也增加了图形的信息量:

 

R语言绘图系列-生存曲线(Kaplan-Meier)



#再者,如果我们希望得到结果的置信区间,参数可进行如下修改:

R语言绘图系列-生存曲线(Kaplan-Meier)


得到的图片如下:

R语言绘图系列-生存曲线(Kaplan-Meier)


当然,survminer包中还有很多的参数值得大家继续探索,在这里希望大家能画出更加漂亮的生存曲线图。


------------------------------------------------------------------------------------------------------------------------------------

今天就跟大家分享到这里吧,如果大家感兴趣的话,可以加笔者的企鹅获取完整代码或做进一步的交流,谢谢!