如何用R语言绘制Kaplan-Meier生存曲线(附全套代码)
生存分析(survival analysis)是生物医学研究中常用的分析方法。在队列随访研究中,我们会事先定义一些观察终点,比如肿瘤复发、患者死亡、血压达标等,这些终点称为事件(event)。从研究开始到发生事件的时间间隔称为生存时间(survival time),某些场景下也称为失效时间(failure time)。由于生存时间数据具有以下两个特点,所以提出生存分析这一特殊的分析方法。
SPSS就可以完成K-M曲线的绘制,郑老师的30天公益SPSS课程中就有讲解,但是图形结果较为死板,这里将通过R语言进行K-M绘制,并详细介绍代码的含义与作用,结果会更加美观,细节调整也更灵活。此外将介绍一种更加快捷简便的绘制流程,对R语言新手小白或希望更加便捷完成统计分析工作的读者十分友好!
主要内容包括:
一、案例介绍
二、利用R语言绘制
三、利用在线网站绘制
四、小结

一、案例介绍
实操数据是从seer公共数据库提取的,包括1101名2004-2018诊断的老年恶性骨肿瘤患者的临床病理数据。暴露因素包括年龄、种族、性别、诊断年份、组织学类型、分级、分期、原发位置、TNM分期、肿瘤大小、是否化疗、是否放疗及手术方式。
这里绘制Kaplan-Meier(K-M)曲线的目的是为了比较不同手术方式下,患者的生存差异。

二、利用R语言复现
1.安装加载R包并导入数据
绘制K-M曲线主要用到"survival"与"survminer"两个包,"readxl"包仅在导入xlsx形式数据集时用到。
2..绘制K-M曲线
在survival包中使用Surv()函数创建生存对象,生存对象是将事件时间和删失信息合并在一起的数据结构,survfit()函数用来拟合生存曲线。
ggsurvplot()函数用于绘制K-M曲线,详细代码解读在下方进行了标注。
R语言绘制的曲线如下图所示:

三、利用在线网站绘制
1.进入风暴统计网站
首先电脑端使用浏览器打开网址“www.medsta.cn”,进入风暴统计平台,然后进入风暴智能统计模块——生存分析——生存分析全套。

2.导入数据
目前网站支持导入10M以内的csv数据或xlsx数据。

3.绘制K-M曲线
进入“生存曲线”模块,将生存时间、生存结局、分组变量分别选入就可以在右侧得出基础版K-M曲线图。

最左侧的“生存曲线图常用设置”可以对图形进行进一步的美化。
①“生存曲线配色方案”提供了9种配色供大家选择,满足不同需求。
②P值大小、x轴刻度间隔、风险表高度及字体大小也可以快速调整,省去代码的烦恼
③“中位生存时间”可以在图中用虚线标注出各组的中位生存时间,由于本案例中仅两组达到了50%的生存率,因此图中仅显示了两条曲线,“hv”同时显示x轴和y轴虚线,“h”仅显示y轴虚线,“v”仅显示x轴虚线。
④还可以自行更改x轴标题及3种图形要素(曲线置信区间、风险表、删失图)

4.下载保存曲线图
在网站页面显示的图形不完整,字都挤在一起?不要着急,网站支持PDF或PNG格式的图片,下载完成后,图片十分的完整清晰,简直超便捷!

风暴统计网站绘制的K-M曲线图:

四、小结
风暴统计平台是以R代码为基础进行搭建的便捷统计平台,因此结果的准确性大家可以放心,此外,不需要任何代码基础,小白也可以轻松完成,各种细节调整设置满足大家的个性化需求,感兴趣的各位不妨花几分钟试试看?
