前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >生存分析①R语言

生存分析①R语言

作者头像
用户1359560
发布2018-12-04 17:03:06
发布2018-12-04 17:03:06
1.9K00
代码可运行
举报
文章被收录于专栏:生信小驿站生信小驿站
运行总次数:0
代码可运行

生存分析(Survival analysis)是指根据试验或调查得到的数据对生物或人的生存时间进行分析和推断,研究生存时间和结局与众多影响因素间关系及其程度大小的方法,也称生存率分析或存活率分析。

生存分析适合于处理时间-事件数据,生存时间(survival time)是指从某起点事件开始到被观测对象出现终点事件所经历的时间,如从疾病的“确诊”到“死亡”。 生存时间有两种类型:完全数据(complete data)指被观测对象从观察起点到出现终点事件所经历的时间;截尾数据(consored data)或删失数据,指在出现终点事件前,被观测对象的观测过程终止了。由于被观测对象所提供的信息是不完全的,只知道他们的生存事件超过了截尾时间。截尾主要由于失访、退出和终止产生。 生存分析方法大体上可分为三类:非参数法、半参数方法和参数法,用Kaplan-Meier曲线(也称乘积极限法Product limit method)和寿命表法(Life table method)估计生存率和中位生存时间等是非参数的方法,半参数方法指Cox比例风险模型,参数方法指指数模型、Weibull模型、Gompertz模型等分析方法。

  • 非参数法 寿命表(Life Table) 寿命表时描述一段时间内生存状况、终点事件和生存概率的表格,需计算累积生存概率即每一步生存概率的乘积,可完成对病例随访资料在任意指定时点的生存状况评价。survival包中包括了所有生存分析所必须的函数,生存分析主要是把数据放入Surv object,通过Surv()函数做进一步分析。Surv object是将时间和生存状况的信息合并在一个简单的对象内,Surv(time, time2, event,type=c(‘right’, ‘left’, ‘interval’, ‘counting’, ‘interval2’, ‘mstate’),origin=0),time为生存时间,time2为区间删失的结束时间,event为生存状况,生存状况变量必须是数值或者逻辑型的。如果时数值型,则有两个选项,0表示删失,1表示终点事件,或者1表示删失,2表示终点事件。如果时逻辑型的,则FALSE表示删失,True表示终点事件。type为删失的类型有右删失、左删失、区间删失、第一类区间删失、第二类区间删失。

示例:

使用一个包含免疫浸润以及复发随访记录的数据,探究该免疫指标具有无复发生存意义

代码语言:javascript
代码运行次数:0
复制
setwd("E:\\multi")

imm_info <- read.csv("blca_immu.csv",header = T,row.names = 1)


library(survival)
library(survminer)
library(dplyr)
require("survival")

imm_info <- imm_info %>%
  dplyr::select(Lymphocyte_Infiltration_Signature.Score,PFI,PFI.Time)
names(imm_info)[1] <- 'infiltra'

整理数据,将代表复发时间,复发状态,以及想预测免疫指标提取出来。

代码语言:javascript
代码运行次数:0
复制
imm_info <- na.omit( imm_info)
imm_info$infiltra <- ifelse(imm_info$infiltra   > median(imm_info[,"infiltra"]),
                         'high','low')

fit <- survfit(Surv(PFI.Time, PFI) ~ infiltra, data = imm_info)

将免疫指标二分类,以中位值为cutoff,将数据分为高表达和低表达

代码语言:javascript
代码运行次数:0
复制
ggsurv <- ggsurvplot(fit, data = imm_info,
                     pval = T,
                     xlim = c(0,2000),  
                     break.time.by = 500,  
                     xlab = "Time in days",
                     palette = c("#E41A1C", "#377EB8"))

ggsurv <- ggpar( ggsurv,
                 font.y  = c(16, "bold"), 
                 font.x  = c(16, "bold"),
                 legend = "top",
                 font.legend = c(16, "bold"))

ggsurv

作图。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.10.29 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

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