#方法杂谈#生存曲线分析及绘制(一)

生存曲线常用于临床分析,用于死亡、疾病的发生、复发和痊愈的研究。通常生存曲线的绘制方法有两种。一种基于乘积极限法(Kaplan -Meier),另一种基于寿命表法(Life table),生存曲线的比较则主要通过Log-Rank检验、Breslow法以及似然比法检验。

为什么要绘制生存曲线?如果想要比较两组患者的预后,直接比较两组的生存时间不就可以了嘛。但在某些情况中,如果仅仅比较生存时间,显然是不可能,也不合理的。
打个极端的比方:

某人对10例晚期和10例早期肺癌进行了1年的随访,旨在确定早期病人的预后是否好于晚期病人。作者对病人进行随访后发现,晚期病人在1年的时间截点上(刚好在1年的时候)全死了,而早期病人在1年的时间截点上还全部存活。如果单纯比较生存时间,早期和晚期病人的存活时间都是1年,显然没有差异。但是在这里例子中,早期病人的预后显然是优于晚期病人的。

再打一个极端的比方:

某研究者对甲乙两组肺癌病人进行随访,比较两组患者的1年生存率。随访1年后,两组病人均死亡,死亡率是100%,如果单独比较1年生存率,两组患者的死亡率显然是一样的。但是问题在于:甲组病人全部是在随访后3天就死了,而乙组病人全部是在第364天死亡的。其实乙组病人比甲组病人多活了近一年,其预后显然更好。这个案例其实就是告诉我们,生存分析要考虑每个时间点上病人的生存概率,而不是某一个特定的时间点。

随访资料是有删失值的,比较病人的预后不能直接拿随访时间说事,生存曲线才是最佳分析方案。

今天我们先讲述生存曲线绘制的基本概念和意义,并使用下面提到R的survival包进行实例绘制:

## 载入包:
library(survival)
## 列出包中的所有数据
data(package = "survival")
## 载入肺lung的数据:
data(lung)
# 查看每一列数据的解释:
?lung
#方法杂谈#生存曲线分析及绘制(一)_第1张图片
# Kaplan-Meier方法:
# 构建一个survival对象,Surv是构建函数,time是天数统计的存活时间,status==2表示选择dead样本,
lung$SurvObj <- with(lung, Surv(time, status == 2))
# 查看数据,发现最后多了一列SurvObj,可以看出status为1的样本所对应的SurvObj都多了个+,表示还存活。
head(lung)
#方法杂谈#生存曲线分析及绘制(一)_第2张图片
## Kaplan-Meier方法构建, 优先选择"log-log"置信区间,
# survfit第一个参数是个公式,如果右边是1,则生成单一生存曲线,conf.type的参数也可以是"none",不显示置信区间,默认是"log"
#单一生存曲线构建对象:
km.as.one <- survfit(SurvObj ~ 1, data = lung, conf.type = "log-log")
# sex为因素构建对象:
km.by.sex <- survfit(SurvObj ~ sex, data = lung, conf.type = "log-log")
# 单一生存曲线图,有置信区间:
plot(km.as.one)
#方法杂谈#生存曲线分析及绘制(一)_第3张图片
# sex为因素作图
plot(km.by.sex)
#方法杂谈#生存曲线分析及绘制(一)_第4张图片
#设置在哪个时间显示置信区间,不想显示可以设的大一点,另外还有conf.cap设置置信区间的宽,1最大。

# 还有conf.offset,当图上有多条曲线时,设置置信度的偏移量。值为1的是绘图区域的宽度。如果这是一个单一数字,那么每个曲线的条都会偏离现有曲线条形的这个数值,当然也可以使用向量。

# mark.time是用来标注是否显示censor检验点。
plot(km.as.one, conf.time=100, conf.cap=0.01,conf.offset = 0.1,mark.time = T)
#方法杂谈#生存曲线分析及绘制(一)_第5张图片
plot(km.by.sex, conf.time=100, conf.cap=0.01,conf.offset = c(0.1,0),mark.time = F)
#方法杂谈#生存曲线分析及绘制(一)_第6张图片

先和生存曲线和作图所需要的数据混个脸熟,明天继续。点击“阅读原文”查看更多。
更多原创精彩内容敬请关注生信杂谈

#方法杂谈#生存曲线分析及绘制(一)_第7张图片

你可能感兴趣的:(#方法杂谈#生存曲线分析及绘制(一))