专栏首页生信补给站生存分析|知道这些又没有坏处

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

一 基本概念

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

起始事件:反应研究对象开始生存过程的起始特征事件。 终点事件(死亡事件):出现研究者所关心的特定结局。如“病人因该疾病死亡”。 观察时间:从研究开始观察到研究观察结束的时间。 生存时间:观察到的存活时间,用符号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曲线图:

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

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

fit <- survfit(Surv(dat$OS_time,as.numeric(dat$OS_Status))~dat$COV1,data=dat)
# 获得的survial列就是生存率
summary(fit)

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

survdiff(Surv(dat$OS_time,as.numeric(dat$OS_Status))~dat$COV1,data=dat)

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

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曲线图

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

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:公众号后台回复“入群”,备注 姓名+单位/学校+研究方向 即邀请您进交流群!

本文分享自微信公众号 - 生信补给站(Bioinfo_R_Python),作者:生信补给站

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-02-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 写给刚入门的数据分析师的几点建议

    1.数据是有立场的,立场决定解读 数据对于业务来讲,是KPI的衡量标杆,也是行动指南。但一旦涉及到立场和方向性的东西,必然有利益触发点的问题。比如同样的一次活动...

    机器学习AI算法工程
  • Cache一致性导致的踩内存问题

    本文主要分享一个Cache一致性踩内存问题的定位过程,涉及到的知识点包括:backtrace、内存分析、efence、wrap系统函数、硬件watchpoint...

    coderhuo
  • 这两个概念都不懂?你就别做数据分析了!

    不卖关子!指标与维度是数据分析中最常用到的术语,它们是非常基础的,但是又很重要,经常有朋友没有搞清楚它们之间的关系,只有掌握理解了,我们的数据分析工作开展就就容...

    朱小五
  • 服务器崩溃导致数据库损坏的修复方法

    故障服务器上一共16块FC硬盘,单盘容量600G。存储前面板10号和13号硬盘亮黄灯,存储映射到redhat上的卷挂载不上,服务器业务崩溃。

    北亚数据恢复中心
  • 并发的可达性分析

    我们知道JVM是利用可达性分析算法来判断对象是否存活,可达性分析算法理论上要求全过程基于一个能保障一致性的快照中进行分析,这意味着必须冻结用户线程的运行。

    小土豆Yuki
  • try catch 中的异常怎么处理?

    在我们日常开发中, 经常会遇到一些异常需要去手动处理, 或者说是一些可能出现的异常去处理, 又或者说你不知道的异常, 等着暴露出来发现后去处理, 无论哪种异常,...

    星尘的一个朋友
  • 揭秘⼤数据安全

    2018年8月28日,网传华住旗下多个连锁酒店开房信息数据遭泄露售卖。泄露的数据包含汉庭、美爵、禧玥、漫心、诺富特、美居、CitiGo、桔子等酒店用户详细信息。...

    ThoughtWorks
  • (二)改掉这些坏习惯,还怕写不出优雅的代码?

    上期分享,通过示例剖析编码中一些经常触犯的性能点,以及编码时常犯的一些小毛病,来告诉新手程序员如何写出健壮的代码。

    一猿小讲
  • 生信分析过程中这些常见文件的格式以及查看方式你都知道吗?

    生信分析过程中,会与很多不同格式的文件打交道,除了原始测序数据fastq之外,还需要准备基因组文件fasta格式和基因注释文件gtf格式。在分析的过程中还会有众...

    生信宝典

扫码关注云+社区

领取腾讯云代金券