从0开始学习R语言--Day47--Nomogram

我们在用回归做医疗数据的分析时,往往需要知道病人的存活率,但这里的存活率往往指的是各种排列组合的存活率,但是直接输出所有分组又很浪费计算量,且在结果中找我们想要的组合也很费力。

而nomogram则提供了一种计分的方式,通过给不同分组的每种情况赋分,判断贡献,让我们可以直接观察我们关心数据的区间,从而直接知晓所要分类的病人的生存率。

以下是一个例子:

R 复制代码
# 加载必要的包
library(regplot)

# 生成模拟数据
set.seed(123)
n <- 200
data <- data.frame(
  年龄 = round(rnorm(n, mean = 60, sd = 10)),
  肿瘤大小 = round(runif(n, min = 1, max = 5), 1),
  吸烟 = factor(sample(c("是", "否"), n, replace = TRUE, prob = c(0.3, 0.7))),
  生存状态 = factor(sample(c("死亡", "存活"), n, replace = TRUE, prob = c(0.4, 0.6)))
)

# 拟合逻辑回归模型
model <- glm(生存状态 ~ 年龄 + 肿瘤大小 + 吸烟, 
             family = binomial(link = "logit"), 
             data = data)

# 绘制 Nomogram
regplot(model,
        points = TRUE,          # 显示点刻度
        odds = TRUE,            # 显示OR值
        failtime = c(1, 3, 5),  # 如果做生存分析可设置时间点
        title = "Nomogram 预测模型")

输出:

R 复制代码
[[1]]
      吸烟 Points
吸烟2   是     46
吸烟1   否     58

[[2]]
  肿瘤大小 Points
1        1     24
2        2     41
3        3     58
4        4     75
5        5     92

[[3]]
   年龄 Points
1    35    104
2    40     95
3    45     85
4    50     76
5    55     67
6    60     58
7    65     49
8    70     40
9    75     31
10   80     22
11   85     13
12   90      4
13   95     -5

[[4]]
   Total Points Pr( 生存状态 )
1            80         0.2577
2           100         0.2850
3           120         0.3139
4           140         0.3443
5           160         0.3761
6           180         0.4090
7           200         0.4427
8           220         0.4770
9           240         0.5114
10          260         0.5458
11          280         0.5797

在图中可以看到,年龄对死亡风险的影响最大,吸烟的影响相对较小。对于年龄来说,每增加5岁,分数减少约9分,即年龄越大,死亡风险越高;肿瘤则是每增加1cm,分数增加约17分,这里看起来相反,实际上是因为两者的系数正负不一样,所以才这样分析。

相关推荐
HugoStudio_SWAN1 小时前
【擦除重绘】C++ 控制台动画:弹跳 Logo DVD 屏保效果
开发语言·c++·学习·程序人生
sakiko_2 小时前
Swift学习笔记42-SwiftUI的属性包装器(讲解+面试)
笔记·学习·ios·swiftui·swift
存在morning4 小时前
【Paimon 学习笔记 三】工作流程:Paimon 的批写、流写、批读与流读
笔记·学习
老当益壮梁奶奶5 小时前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法
凯尔萨厮7 小时前
Java学习笔记十(注解)
java·笔记·学习
JoannaJuanCV7 小时前
VLM学习-SFT(监督微调)
深度学习·学习·机器学习·大模型·视觉大模型·vlm·视觉编码器
程序员大雄学编程8 小时前
微积分43. 无穷积分入门:从概念到Python实战可视化
开发语言·python·学习·微积分
一条破秋裤9 小时前
STM32 学习笔记:GPIO 输出实验——LED 闪烁、流水灯与蜂鸣器
笔记·stm32·学习
2601_962073979 小时前
【MySQL】全面学习数据库查询技巧:查询指令深度学习指南
数据库·学习·mysql
存在morning9 小时前
【Paimon 学习笔记 二】存储架构:快照、manifest、LSM 树、bucket
笔记·学习·架构