前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >生存分析|知道这些又没有坏处

生存分析|知道这些又没有坏处

作者头像
生信补给站
发布2021-03-03 15:44:58
9910
发布2021-03-03 15:44:58
举报
文章被收录于专栏:生信补给站生信补给站

一 基本概念

生存分析:研究各个因素与生存时间有无关系以及关联程度大小。可拓展到疾病复发时间,机器的故障时间等。

起始事件:反应研究对象开始生存过程的起始特征事件。 终点事件(死亡事件):出现研究者所关心的特定结局。如“病人因该疾病死亡”。 观察时间:从研究开始观察到研究观察结束的时间。 生存时间:观察到的存活时间,用符号t表示。 完全数据:从观察起点到死亡事件所经历的时间,生存时间是完整的。 截尾数据(删失值):观察时间不是由于终点事件而结束的,而是由于(1)失访(2)死于非研究因素(3)观察结束而对象仍存活以上三种原因结束的。常在截尾数据的右上角放一个“+”表示其实该对象可能活的更久。

变量:生存分析的变量有两个:生存时间t和结局变量(0-1)。其中结局变量1表示死亡事件,0表示截尾。 生存曲线:以生存时间为横轴、生存率为纵轴绘制一条生存曲线。 中位生存时间:又称为生存时间的中位数,表示刚好有50%的个体其存活期大于该时间。

二 生存分析部分内容

1、描述生存过程

研究生存时间的分布特点,估计生存率及其标准误、绘制生存曲线。常用方法有乘积极限法(K-M法)和寿命表法,此处简单介绍乘积极限法(K-M法)。 http://www.360doc.com/content/17/0626/11/6175644_666623573.shtml 这个强烈推荐看一下,形象的说明了KM曲线能告诉我们什么,以及乘积极限法的基本原理。封面图也是这个链接下的,保留水印,侵删。

注:生存曲线为单因素分析(两个或者多个水平),用中位生存时间表示生存时间的平均水平;

2、比较生存过程 获得生存率及其标准误的估计值后,可以进行两组或多组生存曲线的比较,常用方法有对数秩检验(log-rank检验)。如曲线交叉,可能存在混杂因素。 注:两个或者多个生存曲线的比较(单因素两个或者多个水平)

3、影响生存时间的因素分析 常用的多因素生存分析方法:Cox比例风险回归模型。

三 R包进行生存分析

1、R-survival包进行生存分析,并绘制KM曲线图:

代码语言:javascript
复制
Surv:用于创建生存数据对象
survfit:创建KM生存曲线或是Cox调整生存曲线
survdiff:用于不同组的统计检验
coxph:构建COX回归模型 (待)
cox.zph:检验PH假设是否成立 (待)
代码语言:javascript
复制
#载入包,读取数据
library(survival)
dat <- read.table('Test.txt',header=TRUE)

1) 估计生存函数,观察不同组间的区别 # 估计KM生存曲线 # OS_time:跟踪到的存活时间 # OS_Status: 跟踪到的存活状态 # COV1:表示按照COV1进行分组

代码语言:javascript
复制
fit <- survfit(Surv(dat$OS_time,as.numeric(dat$OS_Status))~dat$COV1,data=dat)
# 获得的survial列就是生存率
summary(fit)

2) 比较不同因子分组的生存效果,检验显著性

代码语言:javascript
复制
survdiff(Surv(dat$OS_time,as.numeric(dat$OS_Status))~dat$COV1,data=dat)

3) 绘制KM曲线图 #横轴表示生存时间,纵轴表示生存概率,为一条梯形下降的曲线。下降幅度越大,表示生存率越低或生存时间越短。

代码语言:javascript
复制
plot(fit,xlab="Time(Days)",ylab="Survival",main="",col=c("blue","red"),lty=2,lwd=2)
legend("topright",c("A","B"),col=c("blue","red"),lty=2,lwd=2,cex=0.7)

2、R-survminer包绘制KM曲线图

图形更精美,展示效果更好。

代码语言:javascript
复制
library("survminer") #载入R包

fit<- survfit(Surv(time, status) ~ sex, data = lung) #读取数据
#绘制KM图
ggsurvplot(fit, data = lung,
surv.median.line = "hv", # Add medians survival
# Change legends: title & labels
legend.title = "Sex",legend.labs = c("Male", "Female"),
# Add p-value and tervals
pval = TRUE,pval.size = 3,
# Change censor
censor.shape = 124,censor.size = 2,
conf.int = FALSE,# 有无置信区间
break.x.by = 100, #横轴坐便
# Add risk table
risk.table = TRUE,tables.height = 0.2,tables.theme = theme_cleantable(),
#palette = c("#E7B800", "#2E9FDF"),
palette = c("blue", "purple"),
ggtheme = theme_bw(), # Change ggplot2 theme
# Change font size, style and color
main = "Survival curve",
font.main = c(16, "bold", "darkblue"),
font.x = c(14, "bold.italic", "red"),
font.y = c(14, "bold.italic", "darkred"),
font.tickslab = c(12, "plain", "darkgreen")
)

四、参考资料: https://blog.csdn.net/Jaen_tail/article/details/79081954 http://127.0.0.1:20803/library/survminer/html/ggsurvplot.html http://www.360doc.com/content/17/0626/11/6175644_666623573.shtml

PS:公众号后台回复“入群”,备注 姓名+单位/学校+研究方向 即邀请您进交流群!

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

本文分享自 生信补给站 微信公众号,前往查看

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

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

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