写在前面
不知道各位小伙伴的五一假期过的在怎么样,可怜的我感冒了。😷
今天继续之前没有写完的列线图
教程吧,再介绍几个制作列线图
的R
包。🤠
用到的包
rm(list = ls())
library(tidyverse)
library(survival)
library(rms)
library(nomogramEx)
library(hdnom)
library(survey)
library(SvyNom)
nomogramEx包
首先我们介绍一下nomogramEx
包,其实这个包并不是用于制作列线图
的,但还是和大家介绍一下吧,还是比较有用的。🥸
nomogramEx
包,可以从一个nomogram
中提取多项式方程,用来计算每个变量的点数和总点数对应的生存概率。😎
它的主要函数是nomogramEx()
,参数有nomo
、np
和digit2
,可以用来简化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)
3.4 提取公式
nomogramEx(nomo=nomo,np=2,digit=9)
hdnom包
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)
4.2 建模
这里我们会用到一个自适应弹性网络正则化
的方法,引入惩罚系数,alpha
和lambda
,是一种将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)
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)
SvyNomv包
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)
<center>最后祝大家早日不卷!~</center>
点个在看吧各位~ ✐.ɴɪᴄᴇ ᴅᴀʏ 〰
<center> <b>📍 往期精彩 <b> </center>
📍 <font size=1>🤩 WGCNA | 值得你深入学习的生信分析方法!~</font>
📍 <font size=1>🤩 ComplexHeatmap | 颜狗写的高颜值热图代码!</font>
📍 <font size=1>🤥 ComplexHeatmap | 你的热图注释还挤在一起看不清吗!?</font>
📍 <font size=1>🤨 Google | 谷歌翻译崩了我们怎么办!?(附完美解决方案)</font>
📍 <font size=1>🤩 scRNA-seq | 吐血整理的单细胞入门教程</font>
📍 <font size=1>🤣 NetworkD3 | 让我们一起画个动态的桑基图吧~</font>
📍 <font size=1>🤩 RColorBrewer | 再多的配色也能轻松搞定!~</font>
📍 <font size=1>🧐 rms | 批量完成你的线性回归</font>
📍 <font size=1>🤩 CMplot | 完美复刻Nature上的曼哈顿图</font>
📍 <font size=1>🤠 Network | 高颜值动态网络可视化工具</font>
📍 <font size=1>🤗 boxjitter | 完美复刻Nature上的高颜值统计图</font>
📍 <font size=1>🤫 linkET | 完美解决ggcor安装失败方案(附教程)</font>
📍 <font size=1>......</font>
本文由mdnice多平台发布