前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言进阶之生存分析

R语言进阶之生存分析

作者头像
生信与临床
发布2020-08-06 10:38:14
1.4K0
发布2020-08-06 10:38:14
举报

在医学研究中,生存分析是一类非常重要的统计方法,它主要的目的是对生存率和时间进行建模,计算患者在特定时间段内生存的概率,主要用于评估治疗的效果和疾病的危险程度。由于患者可能在研究结束时或存活或死亡,还有一部分可能失联(可能活着),导致出现一定比例的删失值。因此,生存分析的数据分析也有其自身的特点。

R语言中进行生存分析主要使用“survival”这个包,一看名字就感觉这个包专业而靠谱,实际上确实如此。“survial”包可以针对单样本或者多样本进行生存分析,可以使用的模型有参数加速失效模型(parametric accelerated failure models)和Cox比例风险模型(Cox proportional hazards model)。

生存分析的数据一般包括三个部分:起始时间、结束时间和结束时患者的状态(通常1代表目标事件发生,0代表删失数据,即目标事件未发生或者失访等),这里的目标事件一般是指疾病或者死亡。另外,数据也可以是到结束时所经历的时间段和结束时患者的状态。通常,我们使用Surv()函数来将数据进行格式转化,便于进行后续分析。

在生存分析中,我们最常用的是如下三个函数:

代码语言:javascript
复制
survfit( ) # 主要用于计算单个或多个组的生存分布
survdiff( ) # 主要用于检验不同组的生存分布差异
coxph( ) # 主要用于拟合Cox比例风险模型

这里我们使用Mayo诊所的临床数据(lung)进行生存分析,这个数据集收集了228肺癌患者的信息,包括年龄、性别、生存天数、能量摄入和Karnofsky得分等,整个分析共分为5个步骤。

第一步 加载R包并导入数据

代码语言:javascript
复制
# 加载R包
library(survival)
# 查询数据集的相关信息
help(lung)
# 创建Surv对象
survobj <- with(lung, Surv(time,status)) # 这里主要是指定时间和生存状态

第二步 评估整体生存率

代码语言:javascript
复制
# 绘制总样本的生存分布曲线
# 使用Kaplan-Meier估计
fit0 <- survfit(survobj~1, data=lung) # 构建总体生存分析模型
summary(fit0) # 查看结果
plot(fit0, xlab="Survival Time in Days",  
     ylab="% Surviving", yscale=100,   
     main="Survival Distribution (Overall)") # 绘图

上图中的横坐标代表天数,纵坐标代表生存率;实线是估计的生存率,虚线代表的是估计生存率的95%置信区间。

第三步 比较不同性别之间生存率的差异

代码语言:javascript
复制
#  比较男性和女性的生存差异
fit1 <- survfit(survobj~sex,data=lung) # 在公式里指定“sex”就可以比较性别差异了
# 依据性别绘制生存分布曲线
plot(fit1, xlab="Survival Time in Days",
  ylab="% Surviving", yscale=100,col=c("red","blue"),
  main="Survival Distributions by Gender")
  legend("topright", title="Gender",c("Male", "Female"),
  fill=c("red", "blue")) # 绘图

从上图我们可以看出,女性的整体生存率是高于男性的,但是这种差异是否显著还并不确定,这就需要我们进行下面的统计检验。

代码语言:javascript
复制
# 对性别的生存差异进行统计检验
survdiff(survobj~sex, data=lung) # 在公式里指定“sex“

结果的P值小于0.05,我们可以认为男女之间的生存率是有差异的。

第四步 基于Cox比例风险模型的生存分析

代码语言:javascript
复制
# 基于Cox比例风险模型从年龄和医学评分来预测男性的生存情况
MaleMod <- coxph(survobj~age+ph.ecog+ph.karno+pat.karno, data=lung, subset=sex==1)
MaleMod # 输出结果

从这上面的结果可以看出,ph.ecog和ph.karno对生存率的影响是显著的,而其他变量则并不显著。

第五步 评估Cox比例风险模型的假设检验条件

代码语言:javascript
复制
# 评估cox比例风险的假设条件
cox.zph(MaleMod)

除ph.karno外,其余P值都很大,因此ph.karno可能会违背Cox比例风险模型的假设,需要谨慎对待。

关于绘图的相关内容请参见R语言入门系列教程。

生存分析的内容就先分享到这里,欢迎大家持续关注【生信与临床】。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信与临床 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档