当前位置: 首页 > news >正文

Nomogram | 盘点一下绘制列线图的几个R包!~(二)

1写在前面

不知道各位小伙伴的五一假期过的在怎么样,可怜的我感冒了。😷

今天继续之前没有写完的列线图教程吧,再介绍几个制作列线图R包。🤠

2用到的包

rm(list = ls())
library(tidyverse)
library(survival)
library(rms)
library(nomogramEx)
library(hdnom)
library(survey)
library(SvyNom)

3nomogramEx包

首先我们介绍一下nomogramEx包,其实这个包并不是用于制作列线图的,但还是和大家介绍一下吧,还是比较有用的。🥸

nomogramEx包,可以从一个nomogram中提取多项式方程,用来计算每个变量的点数和总点数对应的生存概率。😎

它的主要函数是nomogramEx(),参数有nomonpdigit2,可以用来简化nomogram的应用和解读。🧐

3.1 生成示例数据

n <-1000
age <- rnorm(n,50,10)
sex <- factor(sample(c('female','male'),n,T))
sex <- as.numeric(sex)
ddist <- datadist(age,sex)
options(datadist='ddist')
cens <- 15*runif(n)
time <- -log(runif(n))/0.02*exp(.04*(age-50)+.8*(sex=='Female'))
death <- ifelse(time <= cens,1,0)
time <- pmin(time,cens)
units(time)="month"

3.2 构建模型

f <- cph(formula(Surv(time,death)~sex+age),x=T,y=T,surv=T,time.inc=3)
surv <- Survival(f)

3.3 绘制列线图

nomo <- nomogram(f, fun=list(function(x) surv(3,x),function(x) surv(6,x)),
lp=T,
funlabel=c("3-Month Survival Prob","6-Month Survival Prob"))
plot(nomo)
alt

3.4 提取公式

nomogramEx(nomo=nomo,np=2,digit=9) 
alt

4hdnom包

hdnom包功能非常强大,我们以后再介绍它的具体用法吧,今天就只介绍一下绘制列先图的函数咯。😎.

4.1 示例数据

data("smart")
x <- as.matrix(smart[, -c(1, 2)])
time <- smart$TEVENT
event <- smart$EVENT
y <- survival::Surv(time, event)
DT::datatable(smart)
alt

4.2 建模

这里我们会用到一个自适应弹性网络正则化的方法,引入惩罚系数,alphalambda,是一种将L1和L2正则化同时应用于线性回归的损失函数的方法,以后再具体介绍吧。😘

suppressMessages(library("doParallel"))
registerDoParallel(detectCores())

fit <- fit_aenet(x, y, nfolds = 10, rule = "lambda.1se", seed = c(5, 7), parallel = T)
names(fit)
alt

4.3 可视化

model <- fit$model
alpha <- fit$alpha
lambda <- fit$lambda
adapen <- fit$pen_factor

nom <- as_nomogram(
fit, x, time, event,
pred.at = 365 * 2,
funlabel = "2-Year Overall Survival Probability"
)

plot(nom)
alt

5SvyNomv包

5.1 示例数据

set.seed(1234)

data("noNA", package = "SvyNom")

dstr2 <- svydesign(id = ~1, strata = ~group, prob = ~inv_weight,
fpc = ~ssize, data = noNA)

dd <- datadist(noNA)
options(datadist = "dd")
ss3 <- c(0.05, 0.2, 0.4, 0.6, 0.7, 0.8, 0.9, 0.95, 0.99)

5.2 可视化

mynom <- svycox.nomogram(.design = dstr2, .model = 
Surv(survival, surv_cens) ~ ECOG + liver_only + Alb + Hb + Age +
Differentiation + Gt_1_m1site + lymph_only, .data = noNA, pred.at = 24,
fun.lab = "Prob of 2 Yr OS")

plot(mynom$nomog)
alt

alt
最后祝大家早日不卷!~

点个在看吧各位~ ✐.ɴɪᴄᴇ ᴅᴀʏ 〰

📍 往期精彩

📍 🤩 WGCNA | 值得你深入学习的生信分析方法!~
📍 🤩 ComplexHeatmap | 颜狗写的高颜值热图代码!
📍 🤥 ComplexHeatmap | 你的热图注释还挤在一起看不清吗!?
📍 🤨 Google | 谷歌翻译崩了我们怎么办!?(附完美解决方案)
📍 🤩 scRNA-seq | 吐血整理的单细胞入门教程
📍 🤣 NetworkD3 | 让我们一起画个动态的桑基图吧~
📍 🤩 RColorBrewer | 再多的配色也能轻松搞定!~
📍 🧐 rms | 批量完成你的线性回归
📍 🤩 CMplot | 完美复刻Nature上的曼哈顿图
📍 🤠 Network | 高颜值动态网络可视化工具
📍 🤗 boxjitter | 完美复刻Nature上的高颜值统计图
📍 🤫 linkET | 完美解决ggcor安装失败方案(附教程)
📍 ......

本文由 mdnice 多平台发布

http://www.lryc.cn/news/64792.html

相关文章:

  • Django之定时任务django-crontab
  • linux常见命令
  • 【14.HTML-移动端适配】
  • 平衡二叉树旋转机制
  • 深入浅出C++ ——C++11
  • 智能座舱3.0阶段,看全球巨头如何打造更具“价值”的第三空间
  • 【Linux】入门介绍
  • 【Python】序列类型②-元组
  • 循环的数字
  • MySQL查询之聚合函数查询
  • 普通2本,去过字节外包,到现在年薪25W+的测试开发,我的2年转行心酸经历...
  • util.callbackify
  • 解决使用CLIP模型时TypeError: Cannot handle this data type: (1, 1, 224, 224), |u1
  • Mysql第二章 多表查询的操作
  • ESP32-CAM:TinyML 图像分类——水果与蔬菜
  • 如何防止订单重复支付
  • 不是那么快乐的五一
  • Maven命令和配置详解
  • P3029 [USACO11NOV]Cow Lineup S 双指针 单调队列
  • 数据结构与算法之链表: Leetcode 83. 删除排序链表中的重复元素 (Typescript版)
  • ubuntu16.04升级到20.04后报错 By not providing “FindEigen.cmake“
  • 设计模式——模板方法模式
  • 15 | Qt的自定义信号
  • 线性表,顺序表,链表
  • 洛谷 P2782 友好城市 线性DP 最长上升子序列 二分查找 lower_bound
  • easyexcel读取excel合并单元格数据
  • 2023哪款蓝牙耳机性价比高?200左右高性价比蓝牙耳机推荐
  • Java代码弱点与修复之——Masked Field(掩码字段)
  • C语言编程入门之刷题篇(C语言130题)(8)
  • QML动画类型总结