生存分析①R语言

生存分析(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

作图。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python小屋

Python计算电场中两点间的电势差

根据组合数定义,需要计算3个数的阶乘,在很多编程语言中都很难直接使用整型变量表示大数的阶乘结果,虽然Python并不存在这个问题,但是计算大数的阶乘仍需要相当多...

861
来自专栏人工智能头条

关于NLP你还不会却必须要学会的事儿—NLP实践教程指南第一编

1921
来自专栏机器之心

业界 | 微软提出基于程序图简化程序分析,直接从源代码中学习

1733
来自专栏大数据挖掘DT机器学习

时间序列预测全攻略(附带Python代码)

原文作者:AARSHAY JAIN 36大数据翻译,http://www.36dsj.com/archives/43811 时间序列(简称TS)被认为是分...

2K7
来自专栏ATYUN订阅号

在Python中使用NLTK建立一个简单的Chatbot

也许你听说过Duolingo(多邻国):一种流行的语言学习应用程序,它可以通过游戏来练习一种新的语言。由于其创新的外语教学风格,它非常受欢迎。它的思想很简单:每...

5095
来自专栏Duncan's Blog

Personalized Search论文阅读笔记-08年SIGIR

对于这样允许大众分类的应用,如何满足用户在搜索时尽可能准确地返回用户所需要的资源是一个有意思的问题。因为如果像传统的搜索方法仅通过查询关键词去匹配搜索结果,返回...

1233

使用粒子群优化器来解决旅行商人问题

粒子群优化器,作为一种使用人工智能来解决问题的方式,在解多元、恒变的方程式方面有很大的优势。在本文中我们主要讲的是通过修改算法来解决一些问题,例如使用离散固定值...

2547
来自专栏iOSDevLog

机器学习研究和开发所需的组件列表

Here is a list of components that are needed for the successful machine learning...

1002
来自专栏应用案例

关于机器学习,这可能是目前最全面最无痛的入门路径和资源!

之前搞机器学习的那帮人都喜欢用Python,所以Python慢慢就积攒了很多优秀的机器学习库,所谓的库,你就理解为别人封装好的一些具有某些功能的模块,我们可以通...

3067
来自专栏每日一篇技术文章

opengL ES _ 入门_05

ID是漫反射的强度,Ii是光的入射光的强度,和KD的漫反射,是对粗糙松散耦合对象材料。松散的意思是,在许多现实世界的材料,实际表面可能有点抛光,但半透明的,而层...

1493

扫码关注云+社区

领取腾讯云代金券