生存分析(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形式数据集时用到。
install.packages("survival")
install.packages("survminer")
library(survival)
library(survminer)
library(readxl)
raw<- read_excel("seer.xlsx")
2.绘制K-M曲线
在survival包中使用surv()函数创建生存对象,生存对象是将事件时间和删失信息合并在一起的数据结构,survfit()函数用来拟合生存曲线。
ggsurvplot()函数用于绘制K-M曲线,详细代码解读在下方进行了标注。
fit_Surgery <- survfit(Surv(months,status) ~ Surgery,data = raw)
ggsurvplot(fit_Surgery,
data = raw,
pval.method=T,#添加计算p值的统计方法
pval = TRUE,#添加P值
risk.table = TRUE,#添加风险表
xlab = "Follow up time(Months)",
legend = c(0.8,0.15), #指定风险表图例位置
break.x.by = 12) #设置X轴刻度间距
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代码为基础进行搭建的便捷统计平台,因此结果的准确性大家可以放心,此外,不需要任何代码基础,小白也可以轻松完成,各种细节调整设置满足大家的个性化需求,感兴趣的各位不妨花几分钟试试看?