RNAseq|构建预后模型后你还需要这些图,森林图,诺莫图,校准曲线,DCA决策曲线

简介: RNAseq|构建预后模型后你还需要这些图,森林图,诺莫图,校准曲线,DCA决策曲线

本文首发于“生信补给站”公众号  https://mp.weixin.qq.com/s/uIUU2CBxQLQgXPVTeLRUeQ


通过RNAseq|Lasso构建预后模型,绘制风险评分的KM 和 ROC曲线构建的预后模型KM显著,还需要验证其独立性?

本文就介绍下添加临床因素构建多因素COX模型 以及 森林图,诺莫图(列线图),校准曲线以及DCA决策曲线的绘制方法。

一 载入R包,数据


仍然使用之前处理过的TCGA的SKCM数据,以及生存数据和临床数据,梳理到一个RData中了,文末有数据获取方式


library(tidyverse)
library(regplot)
library(rms)
library(survminer)
library(survival)
#载入数据
load("Expr_phe_cli_riskscore.RData")
riskScore_cli2 <- riskScore_cli %>% 
  inner_join(phe)
head(riskScore_cli2)

image.png

二 多因素森林图


得到riskscore后,除了使用其他数据集验证外,还需要使用多因素COX模型验证其独立性 ,然后使用ggforest函数绘制森林图


library(survminer)
#构建多因素COX
multiCox <- coxph(Surv(OS.time, OS) ~  age + gender +  tumor_stage + 
                          riskScore2,
                        data = riskScore_cli2)
multiCox
#绘制森林图
multicox_ggforest <- ggforest(multiCox,  #coxph得到的Cox回归结果
                                    data = riskScore_cli2,  #数据集
                                    main = 'Hazard ratio of multi cox',  #标题
                                    cpositions = c(0.05, 0.15, 0.35),  #前三列距离
                                    fontsize = 0.8, #字体大小
                                    refLabel = 'reference', #相对变量的数值标签,也可改为1
                                    noDigits = 3 #保留HR值以及95%CI的小数位数
)
multicox_ggforest

可见添加年龄,性别以及分期矫正构建多因素COX后,riskscore仍然显著。更多参数可参考Forest plot(森林图) | Cox生存分析可视化

Nomogram


Nomogram也被称为诺莫图或者列线图,在期刊出现频率越来愈多,常用于评估肿瘤学和医学的预后情况,可将Cox回归的结果进行可视化。

1,nomogram绘制

#可以输入??datadist查看详细说明
dd=datadist(riskScore_cli2)
options(datadist="dd")
## 构建COX比例风险模型
f <- psm(Surv(OS.time,OS) ~ age + gender +  tumor_stage + riskScore2,
          data = riskScore_cli2,dist='lognormal')
surv <- Survival(f) # 构建生存概率函数
## time是以”天“为单位,此处绘制1年,3,5年的生存概率
nom <- nomogram(f, fun=list(function(x) surv(365, x),
                             function(x) surv(1095, x),
                             function(x) surv(1825, x) ),
                funlabel=c("1-year OS", "3-year OS", 
                           "5-year OS"))
plot(nom, xfrac=.2)

2,regplot 绘制

使用regplot包绘制

library(regplot)
Cox_nomo2 <- cph(Surv(OS.time, OS) ~ age + gender + tumor_stage  + riskScore2,
               data = riskScore_cli2, x=T, y=T)
regplot(Cox_nomo2, 
        observation = riskScore_cli2[4,], #指定某一患者
        interval ="confidence", 
        title="Nomogram",
        plots=c("violin", "boxes"), 
        clickable = T,
        failtime = c(365,1095,1825)) #设置随访时间1年、3年和5年


3,校准曲线

绘制1 ,3, 5的校准曲线,注意m值根据样本数量选择,体现在图中多少errbar ,大概选择1/3 或者1/4即可。


#1-year
cox1 <- cph(Surv(OS.time,OS) ~ age + gender +  tumor_stage + riskScore2,
            surv=T,x=T, y=T,time.inc = 1*365,data=riskScore_cli2)
cal <- calibrate(cox1, cmethod="KM", method="boot", u=1*365,
                 m= 100, B=1000)
#3-year
cox3 <- cph(Surv(OS.time,OS) ~ age + gender +  tumor_stage + riskScore2,
            surv=T,x=T, y=T,time.inc = 1*365*3,data=riskScore_cli2)
ca3 <- calibrate(cox3, cmethod="KM", method="boot", u=1*365*3,
                 m= 100, B=1000)
#5-year
cox5 <- cph(Surv(OS.time,OS) ~ age + gender +  tumor_stage + riskScore2,
            surv=T,x=T, y=T,time.inc = 1*365*5,data=riskScore_cli2)
ca5 <- calibrate(cox5, cmethod="KM", method="boot", u=1*365*5,
                 m= 100, B=1000)

使用plot 函数进行可视化即可,如果想1,3,5年的校准曲线绘制在一张图中,使用add = T 即可,但是要注意调节xlim 和 ylim 的范围

1)绘制单条

#绘制单条
plot(cal,lwd=2,lty=1,errbar.col="black",
     xlab ="Nomogram-Predicted Probability of 1-Year Survival",
     ylab="Actual 1-Year Survival",col="blue",sub=F)

2)add = T 绘制多条

plot(cal,lwd=2,lty=1,errbar.col="black",
     xlim = c(0.5,1) ,
     ylim = c(0.4,1), 
     xlab ="Nomogram-Predicted Probability of 1,3,5Year Survival",
    ylab="Actual 1,3,5Year Survival",col="blue",sub=F)
plot(ca3,
     add = T ,
     lwd=2,lty=1,errbar.col="black",col="red",sub=F)
plot(ca5,
     add = T ,
     lwd=2,lty=1,errbar.col="black",col="green",sub=F)

注意add = T  以及 调节xlim 和 ylim 的范围

四 DCA 决策曲线


使用yikeshu的ggDCA-R包进行绘制 ,GitHub - yikeshu0611/ggDCA


library(caret)
#remotes::install_github('yikeshu0611/ggDCA')
library(ggDCA)
Cox_nomo2<-rms::cph(Surv(OS.time, OS) ~ age + gender + tumor_stage  + riskScore2,
                    data = riskScore_cli2)
d_train <- dca(Cox_nomo2,
               times=1800)
ggplot(d_train)

该包含有很多可以使用的场景,参数以及ggplot2的优化方案,详情见首发!决策曲线分析R包:ggDCA

相关文章
|
机器学习/深度学习 JSON 物联网
ChatGLM-6B 部署与 P-Tuning 微调实战
自从 ChatGPT 爆火以来,树先生一直琢磨想打造一个垂直领域的 LLM 专属模型,但学习文本大模型的技术原理,从头打造一个 LLM 模型难度极大。。。
3140 1
|
机器学习/深度学习 数据采集 前端开发
深入探讨模型泛化能力的概念、重要性以及如何通过交叉验证来有效评估和提升模型的泛化能力
【6月更文挑战第13天】本文探讨了机器学习中模型泛化能力的重要性,它是模型对未知数据预测的准确性。过拟合和欠拟合影响泛化能力,而交叉验证是评估模型性能的有效工具。通过K折交叉验证等方法,可以发现并优化模型,提高泛化能力。建议包括调整模型参数、选择合适模型、数据预处理、特征选择和集成学习。Python中可利用scikit-learn的cross_val_score函数进行交叉验证。
1266 7
|
10月前
|
SQL 数据挖掘 Python
R中单细胞RNA-seq数据分析教程 (1)
R中单细胞RNA-seq数据分析教程 (1)
R中单细胞RNA-seq数据分析教程 (1)
|
数据挖掘
【数据挖掘】Lasso回归原理讲解及实战应用(超详细 附源码)
【数据挖掘】Lasso回归原理讲解及实战应用(超详细 附源码)
1312 0
|
安全 程序员 C++
C++中的类型查询:探索typeid和type_info
C++中的类型查询:探索typeid和type_info
214 1
|
数据可视化 数据挖掘 Go
GOplot|宝藏R包,拯救你的GO富集结果,杜绝平庸的条形图
`GOplot`是R中的一个宝藏包,用于GO富集分析的创新可视化。它提供多种图表类型,如GOBar、GOBubble、GOCircle、GOChord、GOHeat和GOCluster,以及GOVenn。通过调整参数,用户可自定义颜色、大小和排序。例如,GOBar和GOBubble展示富集条形和气泡,GOCircle以环形图表示,GOChord描绘基因和过程间关系,而GOHeat和GOCluster提供热图和聚类视图。此外,还有GOVenn用于绘制Venn图。包简化了数据准备和绘图过程,适合快速高效地展示复杂分析结果。别忘了引用创始人Walter等人的工作。
1142 1
|
存储 机器学习/深度学习 数据采集
大数据处理与分析实战:技术深度剖析与案例分享
【5月更文挑战第2天】本文探讨了大数据处理与分析的关键环节,包括数据采集、预处理、存储、分析和可视化,并介绍了Hadoop、Spark和机器学习等核心技术。通过电商推荐系统和智慧城市交通管理的实战案例,展示了大数据在提高用户体验和解决实际问题上的效能。随着技术进步,大数据处理与分析将在更多领域发挥作用,推动社会进步。
1469 2
|
数据可视化
WGCNA 简明指南|2. 模块与性状关联分析并识别重要基因
WGCNA 简明指南|2. 模块与性状关联分析并识别重要基因
1594 0
WGCNA 简明指南|2. 模块与性状关联分析并识别重要基因
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】MPDIoU:有效和准确的边界框损失回归函数 (论文笔记+引入代码)
YOLO目标检测专栏介绍了YOLO的有效改进和实战案例,包括卷积、主干网络、注意力机制和检测头的创新。提出了一种新的边界框回归损失函数MPDIoU,它基于最小点距离,能更好地处理不同宽高比的预测框,包含重叠、中心点距离和尺寸偏差的全面考虑。MPDIoU损失函数在YOLACT和YOLOv7等模型上的实验显示了优于现有损失函数的性能。此外,还介绍了WIoU_Scale类用于计算加权IoU,以及bbox_iou函数实现不同IoU变体的计算。详细实现和配置可在相应链接中查阅。
|
运维 监控 安全
WLAN的组网架构和工作原理
WLAN的组网架构和工作原理
506 0