用诺模图可视化你的模型
花花写于2020.6.2
诺模图出镜率很高,用于多因素cox或logstic模型的可视化展示。
0.输入数据
需要病人临床信息和生存信息表格,如下
rm(list = ls())
load("ph.Rdata")
head(ph)
## sample_id gender age T N M stage event time
## TCGA-MP-A4T4-01A TCGA-MP-A4T4-01A female 68 2 1 0 2 1 2617
## TCGA-05-4250-01A TCGA-05-4250-01A female 79 3 1 0 3 1 121
## TCGA-64-5774-01A TCGA-64-5774-01A male 60 2 0 0 1 0 2676
## TCGA-97-7937-01A TCGA-97-7937-01A male 65 2 0 NA 1 0 564
## TCGA-97-A4M6-01A TCGA-97-A4M6-01A female 45 1 0 0 1 0 568
## TCGA-44-A4SU-01A TCGA-44-A4SU-01A female 67 1 0 NA 1 1 409
## fp
## TCGA-MP-A4T4-01A -0.005061199
## TCGA-05-4250-01A 0.286351686
## TCGA-64-5774-01A 0.389468347
## TCGA-97-7937-01A 0.098764940
## TCGA-97-A4M6-01A -0.325363900
## TCGA-44-A4SU-01A -0.183674628
1.简约诺模图
使用rms包里的cph函数建模,nomogram函数画图
library(rms)
dd<-datadist(ph)
options(datadist="dd")
mod <- cph(formula = as.formula(paste("Surv(time, event) ~ ",paste(colnames(ph)[2:7],collapse = "+"))),data=ph,x=T,y=T,surv = T)surv<-Survival(mod)
surv3<-function(x) surv(1095,x)
surv5<-function(x) surv(1825,x)x<-nomogram(mod,fun = list(surv3,surv5),funlabel = c('3-year survival Probability','5-year survival Probability'))plot(x)
2.美化版本
regplot画出的图和上面的简约版意义一致,只是可修改的细节多一些。
library(regplot)
library(survival)mod2 <- coxph(formula = as.formula(paste("Surv(time, event) ~ ",paste(colnames(ph)[2:7],collapse = "+"))),data=ph)
2.1 简约风
regplot(mod2,failtime = c(1095,1825), plots = c("no plot","no plot"),points = T,prfail = T)
2.2 在图上标出某个病人
regplot(mod2,observation=ph[1,], obscol = "#326db1",failtime = c(1095,1825), plots = c("no plot","no plot"),points = T,prfail = T)
2.3. 增加表示分布情况的图形
regplot(mod2,observation=ph[1,], failtime = c(1095,1825), plots = c("bars","boxes"),points = T,prfail = T)
帮助文档中对plots参数的解读:The plots parameter specifies initial plot types. It is length 2. The first item specifies a plot type for non-factor variables as one of: “no plot”, “density”, “boxes”, “spikes”, “ecdf”, “bars”, “boxplot”, “violin” or “bean”. The second item, is for factors and is one of: “no plot”, “boxes”, “bars” or “spikes”.
其他图形也可以试试哦。我觉得简单的就挺好的,已经可以说明问题了。
3.校准曲线
校准曲线的作用是展示模型质量,曲线越贴近0-1对角线越好。
3.1 建模和完成计算
cph的time.inc参数和calibrate的u参数,后面都是写天数,三年就是1095天,5年就是1825天
f3 <- cph(formula = as.formula(paste("Surv(time, event) ~ ",paste(colnames(ph)[2:7],collapse = "+"))),data=ph,x=T,y=T,surv = T, time.inc=1095)
cal3 <- calibrate(f3, cmethod="KM", method="boot", u=1095, m=50, B=1000)
## Using Cox survival estimates at 1095 Days
f5 <- cph(formula = as.formula(paste("Surv(time, event) ~ ",paste(colnames(ph)[2:7],collapse = "+"))),data=ph,x=T,y=T,surv = T, time.inc=1825)
cal5 <- calibrate(f5, cmethod="KM", method="boot", u=1825, m=50, B=1000)
## Using Cox survival estimates at 1825 Days
3.2 画校准曲线图
plot(cal5)就可以画,但出来的图一言难尽,主要是参考线画的并不是0-1,所以需要下面的代码手动去画咯。
plot(cal3,lwd = 2,lty = 0,errbar.col = c("#2166AC"),bty = "l", #只画左边和下边框xlim = c(0,1),ylim= c(0,1),xlab = "Nomogram-prediced OS (%)",ylab = "Observed OS (%)",col = c("#2166AC"),cex.lab=1.2,cex.axis=1, cex.main=1.2, cex.sub=0.6)
lines(cal3[,c('mean.predicted',"KM")],type = 'b', lwd = 1, col = c("#2166AC"), pch = 16)
mtext("")plot(cal5,lwd = 2,lty = 0,errbar.col = c("#B2182B"),xlim = c(0,1),ylim= c(0,1),col = c("#B2182B"),add = T)
lines(cal5[,c('mean.predicted',"KM")],type = 'b', lwd = 1, col = c("#B2182B"), pch = 16)abline(0,1, lwd = 2, lty = 3, col = c("#224444"))legend("topleft", #图例的位置legend = c("3-year","5-year"), #图例文字col =c("#2166AC","#B2182B"), #图例线的颜色,与文字对应lwd = 2,#图例中线的粗细cex = 1.2,#图例字体大小bty = "n")#不显示图例边框
参考:https://blog.csdn.net/weixin_30592887/article/details/112865824 https://www.jianshu.com/p/9085e4e13843 https://www.dxy.cn/bbs/newweb/pc/post/33323120
用诺模图可视化你的模型相关推荐
- python使用matplotlib对比多个模型在测试集上的效果并可视化、设置模型性能可视化结果柱状图(bar plot)标签的小数点位数(例如,强制柱状图标签0.7显示为两位小数0.70)
python使用matplotlib对比多个模型在测试集上的效果并可视化.设置模型性能可视化结果柱状图(bar plot)标签的小数点位数(例如,强制柱状图标签0.7显示为两位小数0.70) 目录
- R可视化多元线性回归模型
R可视化多元线性回归模型 目录 R可视化多元线性回归模型 一元线性回归建模及可视化
- 可视化深度学习模型的训练误差和验证误差
可视化深度学习模型的训练误差和验证误差 #导入基础包和库 # Load libraries import numpy as np from keras.datasets import imdb fro ...
- 可视化神经机器翻译模型(基于注意力机制的Seq2seq模型)
可视化神经机器翻译模型(基于注意力机制的Seq2seq模型) 序列到序列模型是深度学习模型,在机器翻译.文本摘要和图像字幕等任务中取得了很大的成功.谷歌翻译在2016年底开始在生产中使用这样的模型 ...
- R语言使用glmnet包拟合lasso-cox回归模型(生存时间和结果标签)、lasso-cox模型进行特征筛选、plot函数可视化cv.glmnet模型获得的最佳lambda曲线位置及其1个标准差线
R语言使用glmnet包拟合lasso-cox回归模型(包含生存时间和结果标签).使用lasso-cox模型进行特征筛选.plot函数可视化cv.glmnet模型获得的最佳lambda曲线位置及其1个 ...
- 无需代码即可训练和可视化口罩检测模型
介绍 新冠改变了人们的生活,出门佩戴口罩也已经成为了大部分人的习惯.但并不是每一个人都能遵守新冠时代下的行为规范.为了更好地防控新型冠状病毒的传播,监控探头和物联网摄像头被广泛的应用于监督人们在公共场 ...
- R语言建立和可视化混合效应模型mixed effect model
最近我们被客户要求撰写关于混合效应模型的研究报告,包括一些图形和统计输出. 我们已经学习了如何处理混合效应模型.本文的重点是如何建立和可视化 混合效应模型的结果. 相关视频:线性混合效应模型(LMM, ...
- R语言使用epiDisplay包的lroc函数可视化logistic回归模型的ROC曲线并输出诊断表、输出灵敏度、1-特异度、AUC值等、设置lwd参数自定义ROC曲线线条的粗细(宽度)
R语言使用epiDisplay包的lroc函数可视化logistic回归模型的ROC曲线并输出诊断表(diagnostic table).输出灵敏度.1-特异度.AUC值等.设置lwd参数自定义ROC ...
- R语言使用epiDisplay包的lroc函数可视化logistic回归模型的ROC曲线并输出诊断表、输出灵敏度、1-特异度、AUC值等、设置cex.axis参数自定义坐标轴数值刻度值的大小
R语言使用epiDisplay包的lroc函数可视化logistic回归模型的ROC曲线并输出诊断表(diagnostic table).输出灵敏度.1-特异度.AUC值等.设置cex.axis参数自 ...
最新文章
- android UI进阶之实现listview中checkbox的多选与记录
- 修改及查看mysql数据库的字符集
- 通信系统设计与python的书_腾讯十年Python开发老司机推荐的入门书籍,你确定不看吗?...
- 读《三体Ⅱ · 黑暗森林》| 人能相互理解的前提是力量对等
- vscode 结束_21 个VSCode 快捷键,让代码更快,更有趣
- 开源一款超实用的 Dubbo 测试工具,已用半年,感觉很有feel~
- 为什么要挖Chia币
- Java中的原型设计模式
- ZOJ - 3624
- 网页背景音乐播放器html代码
- ubuntu无法进入图形界面,开机重复进入gun grup
- ORACLE 11G利用 ORDS+pljson来实现json_table 效果
- 简述银行会计科目的分类
- ppt 计算机课件模板,大学计算机基础课件模板.PPT
- C++入门——Day5_分支语句和逻辑运算符
- 蚂蚁区块链第8课 如何创建新的账户,获取私钥和identity标识?
- 天池大数据比赛-天体分类总结
- QT QLineEdit焦点和键盘问题
- nginx事件模型小结
- 开发小程序以及后台管理系统攥淘宝佣金