首页 > 其他分享 >R语言学习 - 非参数法生存分析

R语言学习 - 非参数法生存分析

时间:2023-05-07 23:32:51浏览次数:52  
标签:01 语言 生存 survival TCGA Tumor 参数 stage



生存分析指根据试验或调查得到的数据对生物或人的生存时间进行分析和推断,研究生存时间和结局与众多影响因素间关系及其程度大小的方法,也称生存率分析或存活率分析。常用于肿瘤等疾病的标志物筛选、疗效及预后的考核。

简单地说,比较两组或多组人群随着时间的延续,存活个体的比例变化趋势。活着的个体越少的组危险性越大,对应的基因对疾病影响越大,对应的药物治疗效果越差。

生存分析适合于处理时间-事件数据,如下

R语言学习 - 非参数法生存分析_rvm

生存时间数据有两种类型:

  • 完全数据 (complete data)指被观测对象从观察起点到出现终点事件所经历的时间; 一般用状态值1或TRUE表示。
  • 截尾数据 (consored data)或删失数据,指在出现终点事件前,被观测对象的观测过程终止了。由于被观测对象所提供的信息是不完全的,只知道他们的生存事件超过了截尾时间。截尾主要由于失访、退出和终止产生。一般用状态值0或FALSE表示。
  • TCGA中的临床数据标记也符合这个规律,在下面软件运行时也可修改状态值的含义, 但一般遵循这个规律。

生存概率 (survival probability)指某段时间开始时存活的个体至该时间结束时仍然存活的可能性大小。

生存概率=某人群活过某段时间例数/该人群同时间段期初观察例数。

生存率 (Survival rate),用S(t)表示,指经历t个单位时间后仍存活的概率,若无删失数据,则为活过了t时刻仍然存活的例数/观察开始的总例数。如果有删失数据,分母则需要按时段进行校正。

生存分析一个常用的方法是寿命表法。

寿命表是描述一段时间内生存状况、终点事件和生存概率的表格,需计算累积生存概率即每一步生存概率的乘积 (也可能是原始生存概率),可完成对病例随访资料在任意指定时点的生存状况评价。

R语言学习 - 非参数法生存分析_Max_02

R做生存分析

R中做生存分析需要用到包survivalsurvminer。输入数据至少两列,存活时间生存状态,也就是测试数据中的Days.survialvital_status列。如果需要比较不同组之间的差异,也需要提供个体的分组信息,如测试数据中的PAM50列。对应TCGA的数据,一般根据某个基因的表达量或突变有无对个体进行分组。

读入数据

library(survival)
BRCA <- read.table('BRCA.tsv', sep="\t", header=T)
head(BRCA)
ID SampleType PAM50Call_RNAseq Days.survival pathologic_stage
1 TCGA-E9-A2JT-01 Tumor_type             LumA           288        stage iia
2 TCGA-BH-A0W4-01 Tumor_type             LumA           759        stage iia
3 TCGA-BH-A0B5-01 Tumor_type             LumA          2136       stage iiia
4 TCGA-AC-A3TM-01 Tumor_type          Unknown           762       stage iiia
5 TCGA-E9-A5FL-01 Tumor_type          Unknown            24        stage iib
6 TCGA-AC-A3TN-01 Tumor_type          Unknown           456        stage iib
  vital_status
1            0
2            0
3            0
4            0
5            0
6            0

简单地看下每一列都有什么内容,方便对数据整体有个了解,比如有无特殊值。

summary(BRCA)
ID            SampleType   PAM50Call_RNAseq Days.survival   
 TCGA-3C-AAAU-01:   1   Tumor_type:1090   Basal  :138      Min.   :   0.0  
 TCGA-3C-AALI-01:   1                     Her2   : 65      1st Qu.: 450.2  
 TCGA-3C-AALJ-01:   1                     LumA   :415      Median : 848.0  
 TCGA-3C-AALK-01:   1                     LumB   :194      Mean   :1247.0  
 TCGA-4H-AAAK-01:   1                     Normal : 24      3rd Qu.:1682.8  
 TCGA-5L-AAT0-01:   1                     Unknown:254      Max.   :8605.0  
 (Other)        :1084                                                      
   pathologic_stage  vital_status   
 stage iia :359     Min.   :0.0000  
 stage iib :259     1st Qu.:0.0000  
 stage iiia:156     Median :0.0000  
 stage i   : 90     Mean   :0.1394  
 stage ia  : 85     3rd Qu.:0.0000  
 stage iiic: 67     Max.   :1.0000  
 (Other)   : 74

计算寿命表

# Days.survival:跟踪到的存活时间
# vital_status: 跟踪到的存活状态
# ~1表示不进行分组
fit <- survfit(Surv(Days.survival, vital_status)~1, data=BRCA)

# 获得的survial列就是生存率 
summary(fit)

Call: survfit(formula = Surv(Days.survival, vital_status) ~ 1, data = BRCA)

 time n.risk n.event survival  std.err lower 95% CI upper 95% CI
  116   1021       1    0.999 0.000979        0.997        1.000
  158   1017       1    0.998 0.001386        0.995        1.000
  160   1016       1    0.997 0.001697        0.994        1.000
  172   1010       1    0.996 0.001962        0.992        1.000
  174   1008       1    0.995 0.002195        0.991        0.999
  197   1003       1    0.994 0.002406        0.989        0.999
  224    993       1    0.993 0.002604        0.988        0.998
  227    990       1    0.992 0.002788        0.987        0.998
  239    987       1    0.991 0.002961        0.985        0.997
  255    981       1    0.990 0.003125        0.984        0.996
  266    978       1    0.989 0.003282        0.983        0.996
  295    965       1    0.988 0.003435        0.981        0.995
  302    962       1    0.987 0.003581        0.980        0.994
  304    958       1    0.986 0.003723        0.979        0.993
  320    948       1    0.985 0.003862        0.977        0.993
  322    946       1    0.984 0.003995        0.976        0.992

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

library(survminer)
# conf.int:是否显示置信区间
# risk.table: 对应时间存活个体总结表格
ggsurvplot(fit, conf.int=T,risk.table=T)

R语言学习 - 非参数法生存分析_rvm_03

PAM50是通过50个基因的表达量把乳腺癌分为四种类型 (Luminal A, Luminal B, HER2-enriched, and Basal-like)作为预后的标志。根据PAM50属性对病人进行分组,评估比较两组之间生存率的差别。

# 这三步不是必须的,只是为了方便,选择其中的4个确定了的分组进行分析
# 同时为了简化图例,给列重命名一下,使得列名不那么长
BRCA_PAM50 <- BRCA[grepl("Basal|Her2|LumA|LumB",BRCA$PAM50Call_RNAseq),]
BRCA_PAM50 <- droplevels(BRCA_PAM50)
colnames(BRCA_PAM50)[colnames(BRCA_PAM50)=="PAM50Call_RNAseq"] <- 'PAM50'
# 按PAM50分组
fit <- survfit(Surv(Days.survival, vital_status)~PAM50, data=BRCA_PAM50)
# 绘制曲线
ggsurvplot(fit, conf.int=F,risk.table=T, risk.table.col="strata", pval=T)

R语言学习 - 非参数法生存分析_数据_04

简化Stage信息,先只查看大的阶段

BRCA_PAM50$pathologic_stage <- gsub('(i+v*).*', "\\1", BRCA_PAM50$pathologic_stage)
BRCA_PAM50$pathologic_stage <- as.factor(BRCA_PAM50$pathologic_stage)
colnames(BRCA_PAM50)[colnames(BRCA_PAM50)=="pathologic_stage"] <- 'PS'
fit <- survfit(Surv(Days.survival, vital_status)~PS, data=BRCA_PAM50)
# 绘制曲线
ggsurvplot(fit, conf.int=F,risk.table=T, risk.table.col="strata", pval=T)

参考资料


标签:01,语言,生存,survival,TCGA,Tumor,参数,stage
From: https://blog.51cto.com/u_16077014/6252745

相关文章

  • Linux 基金会宣布成立 TLA+ 语言基金会
    Linux 基金会宣布成立TLA+基金会(TLAF),以促进TLA+编程语言及其TLA+从业者社区的采用和发展。TLA+基金会的创始成员包括AWS、甲骨文和微软。TLA+(TemporalLogicofActions)是一种用于对程序和系统(尤其是并发和分布式程序和系统)进行建模的高级语言。Linux......
  • Go语言(Golang)编写最简单的命令行工具
    最简单的命令行工具项目预览>echoabc123--name=nickabc123--name=nick课程概述如何制作命令行应用如何使用os.Args获得命令行参数前提条件懂得Go语言基本语法知识点OS包提供了用于处理操作系统相关内容的函数/值独立于平台的方式os.Args变量获......
  • Linux 基金会宣布成立 TLA+ 语言基金会
    Linux 基金会宣布成立TLA+基金会(TLAF),以促进TLA+编程语言及其TLA+从业者社区的采用和发展。TLA+基金会的创始成员包括AWS、甲骨文和微软。TLA+(TemporalLogicofActions)是一种用于对程序和系统(尤其是并发和分布式程序和系统)进行建模的高级语言。Linux......
  • Linux 基金会宣布成立 TLA+ 语言基金会
    Linux 基金会宣布成立TLA+基金会(TLAF),以促进TLA+编程语言及其TLA+从业者社区的采用和发展。TLA+基金会的创始成员包括AWS、甲骨文和微软。TLA+(TemporalLogicofActions)是一种用于对程序和系统(尤其是并发和分布式程序和系统)进行建模的高级语言。Linux......
  • boot-admin开源项目中有关后端参数校验的最佳实践
    我们在项目开发中,经常会对一些参数进行校验,比如非空校验、长度校验,以及定制的业务校验规则等,如果使用if/else语句来对请求的每一个参数一一校验,就会出现大量与业务逻辑无关的代码,繁重不堪且繁琐的校验,会大大降低我们的工作效率,而且准确性也无法保证。为保证数据的正确性、完整性,前......
  • 入门5-Pytest执行参数详解
    执行的参数-vs -v输出详细信息-s输出调试信息(print(“xxx”)里的xxx)。-n多线程运行。(前提安装插件pytest-xdist),例如pytest-n=2--returnsnum失败重跑(安装插件pytest-returnfaires)例pytest-vs–returns2 //Web自动化里比较有意义             Rais......
  • C语言基础算法
    1、计算Fibonacci数列Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21。C语言实现的代码如下:/* Displaying Fibonacci sequence up to nth term where n is entered by user. */#include <stdio.h>int main(){i......
  • 函数的参数
    形参与实参介绍函数的参数分为形式参数和实际参数,简称形参和实参:形参即在定义函数时,括号内声明的参数。形参本质就是一个变量名,用来接收外部传来的值。实参即在调用函数时,括号内传入的值,值可以是常量、变量、表达式或三者的组合:#1:实参是常量res=my_min(1,2)#2:实参是变量......
  • 初识 Dart 语言
     初识Dart语言_晚香玉_关注IP属地:湖南0.2132020.07.1614:04:40字数3,668阅读599(原创)很多人都玩过“找别扭”这款游戏,下面大家一起来看看Dart有何与众不同。在讨论Dart之前,还是按照惯例,先做一个“计划”,需要了解的东西划分一下重点,然后再一个个看。划分......
  • 转行去做人工智能之 初试C语言
    C语言学习大纲:C语言基础变量、数据类型、运算符控制流语句(if、for、while)函数数组、指针C语言进阶结构体动态内存分配文件操作预处理器C语言高级特性多线程编程指针高级应用系统编程推荐学习资源:https://github.com/moocstudent/c_mooc_learning_from_w......