生存分析①R语言
2018-10-29 本文已影响111人
柳叶刀与小鼠标
生存分析(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为删失的类型有右删失、左删失、区间删失、第一类区间删失、第二类区间删失。
示例:
使用一个包含免疫浸润以及复发随访记录的数据,探究该免疫指标具有无复发生存意义
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'
整理数据,将代表复发时间,复发状态,以及想预测免疫指标提取出来。
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,将数据分为高表达和低表达
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
作图。
![](https://img.haomeiwen.com/i9218360/9720fbe67696dd2a.png)