问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

R语言在医学统计中的应用:列线图评分与危险分层分析

创作时间:
作者:
@小白创作中心

R语言在医学统计中的应用:列线图评分与危险分层分析

引用
CSDN
1.
https://blog.csdn.net/dege857/article/details/143785341

列线图(Nomogram)是一种基于回归分析的可视化工具,用于预测临床结局或事件发生的概率。近年来,在高质量的SCI临床论文中应用越来越广泛。本文将使用R语言对乳腺癌数据集进行列线图分析,并演示如何进行风险分层。

列线图简介

列线图(Nomogram)是建立在回归分析的基础上,使用多个临床指标或生物属性,通过带有分数高低的线段,达到预测一定的临床结局或某类事件发生的概率的目的。它在多指标联合诊断或预测疾病发病或进展方面具有重要作用。

数据准备

我们使用乳腺癌数据集进行演示。数据集包含以下变量:

  • age:年龄
  • pathsize:病理肿瘤大小(厘米)
  • lnpos:腋窝淋巴结阳性
  • histgrad:病理组织学等级
  • er:雌激素受体状态
  • pr:孕激素受体状态
  • status:结局事件是否死亡
  • pathscat:病理肿瘤大小类别(分组变量)
  • ln_yesno:是否有淋巴结肿大
  • time:生存时间
  • agec:自定义变量,本次分析中不使用

首先加载数据并进行预处理:

library(foreign)
library(rms)
bc <- read.spss("E:/r/Breast cancer survival agec.sav",
                use.value.labels=F, to.data.frame=T)
bc <- na.omit(bc)

建立模型

使用rms包中的cph函数建立Cox比例风险模型:

dd <- datadist(bc)
options(datadist="dd")

f <- cph(Surv(time, status) ~ er + histgrad + pr + age + ln_yesno,
         x = T, y = T, surv = T, bc)

生成列线图

使用nomogram函数生成列线图,并设置预测3年、5年和10年生存率:

surv <- Survival(f)

nom <- nomogram(f, fun = list(function(x) surv(36, x), function(x) surv(60, x), 
                             function(x) surv(120, x)), lp = F, 
                funlabel = c("3-year survival", "5-year survival", "10-year survival"),
                maxscale = 10, fun.at = c(0.95, 0.9, 0.85, 0.8, 0.75, 0.7, 0.6, 0.5))
plot(nom)

风险分层

对总评分(total points)进行分段,需要使用nomogramFormula包:

library(nomogramFormula)
options(datadist="dd")
results <- formula_rd(nomogram = nom)

points <- points_cal(formula = results$formula, rd = bc)

根据临床意义对分数进行分段,这里采用平均分3段的方式:

table(cut2(points, g = 3))

结果表明:

  • 低风险:-7.8分至7.797分
  • 中风险:7.797分至11.1分
  • 高风险:11.1分至19.6分

进一步扩展

对于更复杂的列线图,可能需要专门的包来实现。目前的实现方式已经能够满足大多数临床研究的需求。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号