R生存分析|关心的变量KM曲线不显著,还有救吗?

如果想查看某些因素,如年龄,性别,分期,肿瘤数目,大小,实验室指标 或者 通过生信手(tao)段(lu)构建的模型和评分是否对预后有影响时候,经常会把连续变量变为分类变量,然后绘制KM曲线或者列线图等。

这时候会有一些常用的方法:

(1)实验室指标:根据正常范围进行分类

(2)临床指标:根据临床意义进行分类

(3)生信模型评分:根据中位数,平均值等进行分类

(4)生信模型评分:根据统计上的最优cutoff来分类

本次主要介绍基于统计上的最优cutoff分类的方法,并与常见的中位数进行简单的比较。

一 载入数据,R包

为了复现方便,使用内置myeloma数据集

#载入所需的R包
library("survival")
library("survminer")
#查看myeloma数据集
data(myeloma)
head(myeloma)

二 KM-中位数分类

以TP53基因为例,按照常用的中位数分为表达量高,低两组

#按照中位数进行分类
myeloma <- myeloma %>%
 mutate(TP53_cat = ifelse(TP53 > median(TP53) ,"High" , "Low"))

head(myeloma)

构建模型,并绘制KM曲线

#构建模型
fit <- survfit(Surv(time, event) ~ TP53_cat, data = myeloma)

#绘制生存曲线并显示P值
ggsurvplot(fit,
          data = myeloma,
          palette=c("red", "blue"), #自定义颜色
          legend.labs=c("TP53_High","TP53_Low"), #自定义标签
          risk.table = TRUE, 
          break.x.by = 6, #横坐标刻度间隔
          pval = T) #是否显示P值

如图显示P值不显著,这时候可以试一下最优cutoff。

更多调整可参考R|生存分析 - KM曲线 ,必须拥有姓名和颜值

三 KM-最优cutoff分类

3.1 计算最优cutoff

使用surv_cutpoint函数找到最优cutoff

res.cut <- surv_cutpoint(myeloma, 
                        time = "time",
                        event = "event",
                        variables = c("TP53", "WHSC1")) #可以添加多列

summary(res.cut)#查看最佳cutoff

cutpoint statistic

TP53     748.3  2.928906

WHSC1   3205.6  3.361330

可以看到TP53 和 WHSC1 基因统计得到的最优cutoff。

3.2 根据最优cutoff分类

A:根据得到的最优cutoff 自行分类

myeloma <- myeloma %>%
 mutate(TP53_cutoff = ifelse(TP53 > 748.3 ,"High" , "Low"))

head(myeloma)

构建模型,并绘制KM曲线

#构建模型
fit <- survfit(Surv(time, event) ~ TP53_cutoff, data = myeloma)
#绘制生存曲线
ggsurvplot(fit,
          data = myeloma,
          palette=c("red", "blue"), #自定义颜色
          legend.labs=c("TP53_High","TP53_Low"), #自定义标签
          risk.table = TRUE,  
          break.x.by = 6,##横坐标间隔
          pval = T) #是否展示P值

可以看到P值 < 0.05了,变化还是很明显的。

B:根据surv_categorize函数获取重新构建的矩阵

此处推荐这种方法,能比较简单的获取重新构建的矩阵

##重新构建的矩阵
res.cat <- surv_categorize(res.cut)

head(res.cat)

time event TP53 WHSC1

GSM50986 69.24     0  low   low

GSM50988 66.43     0 high   low

GSM50989 66.50     0 high  high

GSM50990 42.67     1 high  high

GSM50991 65.00     0  low   low

GSM50992 65.20     0 high   low

构建模型,并绘制KM曲线

fit <- survfit(Surv(time, event) ~TP53, data = res.cat) 
#绘制生存曲线
ggsurvplot(fit,
          data = res.cat,
          palette=c("red", "blue"),
          legend.labs=c("TP53_High","TP53_Low"), #标签
          risk.table = TRUE,
          break.x.by = 6, ##横坐标间隔
          pval = T)

结果和自行根据最优cutoff,使用ifelse进行分类得到的结果一致,此处不展示了。

参考资料:https://www.rdocumentation.org/packages/survminer/versions/0.4.9

https://www.rdocumentation.org/packages/survminer/versions/0.4.9/topics/surv_cutpoint

◆ ◆ ◆  ◆ ◆

精心整理(含图PLUS版)|R语言生信分析,可视化(R统计,ggplot2绘图,生信图形可视化汇总)

(0)

相关推荐

  • ROC绘制工具介绍

    关于ROC曲线,在STATQUEST系列当中讲得十分的明白.所以如果不是很清楚ROC以及曲线下面积(AUC)的介绍的话,可以看一下下面的这个视频 PS: B站之前是有关于这个STATQUEST所有视频 ...

  • TCGA数据差异分析后生存分析(批量单因素cox回归/Lasso筛选,多因素cox建模,时间依赖ROC曲线及KM plot可视化)

    测序上游分析系列: mRNA-seq转录组二代测序从raw reads到表达矩阵:上中游分析pipeline miRNA-seq小RNA高通量测序pipeline:从raw reads,鉴定已知miR ...

  • estimate或者CIBERSORT结果真的是很好的临床预后指标吗

    肿瘤免疫微环境我们讲了很多内容了,目录是: estimate的两个打分值本质上就是两个基因集的ssGSEA分析 针对TCGA数据库全部的癌症的表达量矩阵批量运行estimate 不同癌症内部按照est ...

  • R数据分析:生存分析的做法和结果解释

    今天给大家写写生存分析: Survival analysis corresponds to a set of statistical approaches used to investigate th ...

  • 【1133.】时间依赖ROC(timeROC)

    导读 (谨以此文献给中医统计界老大哥申杰教授,感谢申哥多年来对松哥统计的关心与支持!) 一谈到ROC曲线,大家本能的就会想到诊断试验,就会想到如何去寻找诊断界值(cut off point). 其实R ...

  • 生存分析有必要把连续值依据中位值进行高低分组变成分类变量吗

    前面的教程:estimate或者CIBERSORT结果真的是很好的临床预后指标吗,我们针对 estimate 的StromalSignature 和  ImmuneSignature 这样的打分值进行 ...

  • 算力限制场景下的目标检测实战浅谈

    加入极市专业CV交流群,与6000+来自腾讯,华为,百度,北大,清华,中科院等名企名校视觉开发者互动交流!更有机会与李开复老师等大牛群内互动! 同时提供每月大咖直播分享.真实项目需求对接.干货资讯汇总 ...

  • 不满足proportional hazards假定的生存分析

    生存分析图表美化 近期做生存分析的数据,遇到了不满足proportional hazards assumption (简称PH 假定)的问题,折腾了一圈,总结下这部分内容. - 什么是proporti ...

  • KM生存分析如何取最佳的cutoff

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO, SEER数据挖掘. KM生存分析 如何取最佳cutoff KM生存分析中通常取中位 ...

  • R语言生存分析: 时变竞争风险模型分析淋巴瘤患者

    原文链接:http://tecdat.cn/?p=22422 在本文中,我们描述了灵活的竞争风险回归模型.回归模型被指定为转移概率,也就是竞争性风险设置中的累积发生率.该模型包含Fine和Gray(1 ...

  • R语言生存分析可视化分析

    完整原文链接:http://tecdat.cn/?p=5438 生存分析指的是一系列用来探究所感兴趣的事件的发生的时间的统计方法. 生存分析被用于各种领域,例如: 癌症研究为患者生存时间分析, &qu ...

  • R语言中生存分析模型的时间依赖性ROC曲线可视化

    原文链接:http://tecdat.cn/?p=20650 人们通常使用接收者操作特征曲线(ROC)进行二元结果逻辑回归.但是,流行病学研究中感兴趣的结果通常是事件发生时间.使用随时间变化的时间相关 ...

  • R数据分析:生存分析的做法与解释续

    今天更新续文,上篇文章写了生存曲线的画法,但是留了一个问题没有解决,就是Kaplan-Meier生存曲线实际上仅仅把病人分为两组做了生存率随时间的比较,但是它并没有考虑协变量.R数据分析:生存分析的做 ...

  • R语言生存分析

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO数据挖掘. R语言生存分析  生存分析是医学数据挖掘中的重要内容 R语言中用于生存分析 ...

  • R语言生存分析-Cox比例风险模型诊断

    欢迎来到医科研,这里是白介素2的读书笔记,跟我一起聊临床与科研的故事, 生物医学数据挖掘,R语言,TCGA.GEO数据挖掘.    Cox比例风险模型诊断   Cox比例风险模型的建立是基于几个假设之 ...