分享

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

 DOCTOR干法 2019-09-11

生存曲线常用于临床分析,用于死亡、疾病的发生、复发和痊愈的研究。通常生存曲线的绘制方法有两种。一种基于乘积极限法(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
# Kaplan-Meier方法:# 构建一个survival对象,Surv是构建函数,time是天数统计的存活时间,status==2表示选择dead样本,lung$SurvObj <- with(lung,="" surv(time,="" status="="># 查看数据,发现最后多了一列SurvObj,可以看出status为1的样本所对应的SurvObj都多了个+,表示还存活。head(lung)
## 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)
# sex为因素作图plot(km.by.sex)
#设置在哪个时间显示置信区间,不想显示可以设的大一点,另外还有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)
plot(km.by.sex, conf.time=100, conf.cap=0.01,conf.offset = c(0.1,0),mark.time = F)

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多