news 2026/4/21 13:17:25

R语言绘制复杂加权数据(nhanes数据)多模型生存分析决策曲线

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
R语言绘制复杂加权数据(nhanes数据)多模型生存分析决策曲线

决策曲线分析(Decision Curve Analysis, DCA)是一种用于评估、比较和优化诊断试验、预测模型或分子标志物临床实用性的统计方法。它由Andrew J. Vickers和Eugene B. Elkin于2006年提出,旨在弥补传统统计指标(如灵敏度、特异度、ROC曲线下面积)在评估模型临床价值方面的不足。


在既往文章,本人介绍了我的ggscidca包,可以用于逻辑回归,生存分析等各种决策曲线绘制,但是据我所知,目前还没有R包能支持复杂加权数据(nhanes数据)生存分析决策曲线,在上篇文章《R语言绘制复杂加权数据(nhanes数据)生存分析决策曲线》我已经介绍了R语言绘制复杂加权数据(nhanes数据)生存分析决策曲线,目前我继续升级了ggscidca包,使得它能进一步支持nhanes多模型生存分析决策曲线,

下面我来演示一下,先导入数据和R包

library(survey)library(ggscidca)library(scinhanes)bc<-read.csv("E:/r/test/nahnesme.csv",sep=',',header=TRUE)bc<-na.omit(bc)


我介绍一下数据,SEQN:序列号,RIAGENDR, # 性别, RIDAGEYR, # 年龄,RIDRETH1, # 种族,DMDMARTL, # 婚姻状况,WTINT2YR,WTMEC2YR, # 权重,SDMVPSU, # psu,SDMVSTRA,# strata,LBDGLUSI, #血糖mmol表示,LBDINSI, #胰岛素( pmmol/L),PHAFSTHR #餐后血糖,LBXGH #糖化血红蛋白,SPXNFEV1, #FEV1:第一秒用力呼气量,SPXNFVC #FVC:用力肺活量,ml(估计肺容量),LBDGLTSI #餐后2小时血糖,factor.FVC是我把肺活量分为了2分类,方便用于测试。

把分类变量转成因子

bc$DMDMARTL<-ifelse(bc$DMDMARTL==1,1,0)bc$RIAGENDR<-as.factor(bc$RIAGENDR)bc$RIDRETH1<-as.factor(bc$RIDRETH1)bc$DMDMARTL<-as.factor(bc$DMDMARTL)bc$oGTT2<-as.factor(bc$oGTT2)

如果做预测模型要拆分成建模集和验证集。我这里拆分一下

set.seed(123)tr1<-sample(nrow(bc),0.7*nrow(bc))##随机无放抽取bc_train<-bc[tr1,]#70%数据集bc_test<-bc[-tr1,]#30%数据集

建立抽样调查函数

bcSvy2<-svydesign(ids=~SDMVPSU,strata=~SDMVSTRA,weights=~WTMEC2YR,nest=TRUE,data=bc_train)

建立生存分析模型

svyfit<-svycoxph(Surv(time,factor.FVC)~RIDAGEYR+RIAGENDR+LBDINSI+RIDRETH1,x=TRUE,design=bcSvy2)

复习一下单个决策曲线模型的内容,绘制复杂加权数据(nhanes数据)决策曲线一共需要2步:

  1. 第一步,把模型变成ggscidca包能够识别的类型
fit<-scisvycoxphmodel(svyfit,username=username,token=token)
  1. 绘制决策曲线
scidca(fit)


绘制多模型的决策曲线其实就是复制单个决策曲线的过程,由两种情况:

  1. 就是同一个模型多个时间点的
fit1<-scisvycoxphmodel(fit=svyfit,timepoint=300,username=username,token=token)fit2<-scisvycoxphmodel(fit=svyfit,timepoint=500,username=username,token=token)fit3<-scisvycoxphmodel(fit=svyfit,timepoint=700,username=username,token=token)

制作数据列表的绘图,如果你既往使用过ggscidca包,是一模一样的,上手0困难

newdat<-list(bc_train,bc_train,bc_train)cox.tcdca(fit1,fit2,fit3,newdata=newdat,timepoint=c(300,500,700))


2. 第二个情况就是多个模型同一个时间点的
###多个模型一个时间点

svyfit1<-svycoxph(Surv(time,factor.FVC)~RIDAGEYR,x=TRUE,design=bcSvy2)svyfit2<-svycoxph(Surv(time,factor.FVC)~RIDAGEYR+RIAGENDR,x=TRUE,design=bcSvy2)svyfit3<-svycoxph(Surv(time,factor.FVC)~RIDAGEYR+RIAGENDR+LBDINSI+RIDRETH1,x=TRUE,design=bcSvy2)

因为模型不同,都要转换一遍

###转换模型fit1<-scisvycoxphmodel(svyfit1,username=username,token=token)fit2<-scisvycoxphmodel(svyfit2,username=username,token=token)fit3<-scisvycoxphmodel(svyfit3,username=username,token=token)

绘图

newdat<-list(bc_train,bc_train,bc_train)cox.tcdca(fit1,fit2,fit3,newdata=newdat,timepoint=c(300))


支持自定义颜色

cox.tcdca(fit1,fit2,fit3,newdata=newdat,timepoint=c(300),lincol=c("#E41A1C","#377EB8","#4DAF4A","#984EA3","#FF7F00"))

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 22:34:20

宠物粮食|基于springboot + vue宠物天然粮食商城系统(源码+数据库+文档)

宠物天然粮食商城系统 目录 基于springboot vue宠物天然粮食商城系统 一、前言 二、系统功能演示 详细视频演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue宠物天然粮食商…

作者头像 李华
网站建设 2026/4/21 9:41:20

python编程实战(三)

题目1&#xff1a;给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。请 不要使用除法&#xff0c;且在…

作者头像 李华
网站建设 2026/4/21 10:28:15

嵌入式开发的核心工具

在嵌入式开发中&#xff0c;开发工具直接影响编码效率、调试体验和项目管理能力。接下来我们从嵌入式场景适配性出发&#xff0c;详细介绍 VSCode、Qt、Keil、Vim 四大工具的核心功能、优缺点、适用场景及配置要点&#xff0c;帮你根据需求选择合适的工具链。 一、VSCode&…

作者头像 李华
网站建设 2026/4/17 1:39:07

基于SpringBoot的高校迎新管理系统毕业设计项目源码

题目简介 在高校迎新工作规模化、智能化需求升级的背景下&#xff0c;传统迎新存在 “流程繁琐、信息核验慢、数据统计滞后” 的痛点&#xff0c;基于 SpringBoot 构建的高校迎新管理系统&#xff0c;适配学校迎新办、各院系、新生及家长等多角色&#xff0c;实现迎新全流程&am…

作者头像 李华
网站建设 2026/4/19 23:55:08

名词解释:数据负载

使用工作者线程时&#xff0c;经常需要为它们提供某种形式的数据负载。数据负载是什么意思&#xff1f;数据负载&#xff08;Data Payload&#xff09;指的是在线程间传递的数据内容或工作任务的具体信息。在工作者线程的上下文中&#xff0c;它通常指从主线程传递给工作者线程…

作者头像 李华
网站建设 2026/4/18 19:03:49

基于SpringBoot的足球队管理系统毕业设计项目源码

题目简介在业余 / 校园足球队规范化运营、训练赛事精细化管理需求升级的背景下&#xff0c;传统足球队管理存在 “人员信息散乱、训练赛事无记录、后勤管理低效” 的痛点&#xff0c;基于 SpringBoot 构建的足球队管理系统&#xff0c;适配球队管理员、教练、球员等多角色&…

作者头像 李华