如何快速绘制logistic回归预测模型的ROC曲线?
临床预测模型,也是临床统计分析的一个大类,除了前期构建模型,还要对模型的预测能力、区分度、校准度、临床获益等方面展开评价,确保模型是有效的!
其中评价模型的好坏主要方面还是要看区分度和校准度,而区分度方面目前最常见的是ROC曲线(Receiver Operating Characteristic,中文名字叫“受试者工作特征曲线”),由灵敏度为纵轴,(1-特异度)为横轴绘制而成,用于评价X(检验变量)对于Y(状态变量)的预测准确率情况。越靠左上方,说明模型的预测准确性越好,可以让读者直观地看到某指标各取值对结局指标的诊断或预测能力。
此外,ROC曲线还会使用曲线下面积(AUC)的大小对模型进行评价,AUC的取值范围为0.5到1之间,曲线下面积越大,越接近于1,模型的诊断或预测效果越好:
AUC在0.9以上时,准确性较高
在0.7~0.9时,有一定准确性
AUC在 0.5~0.7时,准确性较低
AUC=0.5时,说明诊断方法完全不起作用,无诊断价值。
AUC<0.5不符合真实情况,在实际中极少出现
理论知识比较好理解,但是实际分析中,想要绘制出精美的ROC曲线,还要花一番功夫,像是常见的R语言软件就需要大量参数进行调整,并且训练集和验证集图像还需要分开绘制两遍......
因此,这里为大家推荐一个统计分析小工具——风暴统计,可以超快速绘制完成临床预测模型的ROC曲线,一次性给出训练集与验证集的图像!
风暴统计是由浙江中医药大学的郑卫军教授基于R语言开发的,不仅结果准确性有保障,并且全部实现菜单化操作,统计小白也可以轻松上手,绘制精美的ROC曲线!
下面我们就结合一份实操数据来为大家详细介绍一下具体的操作步骤吧!
实操具体网址:https://www.zstats.cn/software/logpre3/
或者百度、必应Bing搜索“风暴统计”
本平台上线的所有工具都是免费的
1.进入风暴统计平台
首先,浏览器搜索风暴统计,依次点击"风暴智能统计"——"临床预测模型"——"logistic临床预测模型"!进入分析界面后,根据提示,完成数据的导入与整理。
这里我们不再赘述数据的导入与整理过程,详细教程大家可以点击下方链接:
详细指南!风暴统计如何高效导入数据,统计分析快人一步?
详细版!如何利用风暴统计进行数据的整理转换?
2.数据集拆分
预测模型都需要内部验证,内部验证的方法有随即拆分、交叉验证、Boostrap等。但风暴统计平台目前仅能做随即拆分法内部验证。
随机拆分法内部验证,顾名思义就是将原始数据集按照7:3(常见)或者6:4等比例进行拆分,一部分用于建模,另外一部分用于验证模型。
风暴统计支持两种拆分方式:随机拆分法、导入已拆分好的数据。
如果选择“随机拆分”,需要设置随机种子和拆分比例。随机种子对于数字位数没有要求,作用是可以保证拆分数据的分析结果可以复现,平台默认是1234,拆分比例更好理解,只需要拖动滑条,蓝色部分就是训练集的数据占总数据的比例。
如果选择“导入已拆分好的数据”,需要设置事先在导入的数据集中增加一列用于区分训练集和验证集的变量,比如新增列叫"group",通过编码赋值1代表训练集,2代表验证集。那么第一步:选入区分训练集与验证集的变量,第二步:勾选代表训练集的编码值!
注:“导入已拆分好的数据”不仅可以做内部验证,更重要还可以用来做外部验证哦!同样需要一列变量来区分训练集和外部验证集!
3.构建预测模型
完成数据记得拆分后,我们就可以开始构建预测模型啦!请注意,预测模型的构建仅在训练集开展哦!
预测模型的本质,简单来说,也就是多因素回归模型!多因素回归听上去是不是平易近人许多?风暴统计可以超快速完成这一步!
首先,选择模型变量——因变量、自变量。因变量必须是以0和1赋值的哦!自变量就可以放入我们数据中所有可能的预测因子!
接着,定义模型自变量筛选的方式,满足筛选条件的自变量会进入多因素回归模型!
注:多因素模型中的所有变量就是我们最终预测模型中全部的预测因子了,并不只是多因素中有意义的变量哦!如果希望预测模型中的变量P值均小于0.05,可以选择逐步回归分析中"根据P<0.05筛选"的选项!
自变量筛选方式也有3种:
基于分组差异性结果:
基于单因素回归结果
自定义
前两个比较相似,区别就在是根据差异性P值还是单因素P值进行筛选!
如果选择了"基于分组差异性"或"基于单因素回归",只需要完成2步设置。
第一步,P阈值的选择,如果自变量个数过少,可以适当放宽标准,0.1、0.2也都是可以的。当选择不限制时,单因素的全部自变量都将纳入多因素回归分析。
第二步,是否开展逐步回归,选择“否”,就是我们常见的先单后多分析,另外逐步回归方法,平台也提供了多种选择:双向逐步回归,向前逐步回归,向后逐步回归以及考虑到有时P值大于0.05的变量在逐步回归时也会留在模型中,新增了根据P<0.05的原则开展逐步回归!大家可以根据研究需要自行选择。
![]() |
如果选择了自定义筛选自变量,比如实际研究中,预测因子的筛选也需要结合专业知识以及相关文献进行判断,纯数据驱动也不太好。假如变量A在临床中是十分重要的变量,但是受限于样本原因,单因素与差异性均没有统计学意义,这时候,我们可以自定义挑选预测因子,选择我们预期的预测因子,自行选择是否需要逐步回归!也是一条途径!
选择完毕后,我们就得到了多因素回归的结果,现在多因素模型也就是我们最终的预测模型,列线图中会包含多因素回归中的全部变量!
完成预测模型的构建后,就可以同步给出模型得到验证结果啦!
4.模型区分度评价
点击"ROC曲线与AUC面积"模块,结果也同时输出,包括有训练集ROC曲线、验证集ROC曲线、ROC曲线叠加。
ROC曲线叠加:
如果需要修改图例名称,可以在左侧的"AUC设置"这里进行修改,但是目前平台仅支持英文标签,如需添加中文,还需要下载pdf后,再进行二次编辑。
除此之外,平台还支持对ROC曲线的颜色、坐标轴、标签进行修改,将R语言繁杂的代码参数,全部简化为了菜单式操作!
5.下载结果
最后在曲线下载设置中,选择下载图片,保存类型(支持pdf、jpeg、png、tiff),曲线页面,中文字体。
注:如果图形下载下来不完全,可以在曲线页面设置自定义。自由调整图片的长度和宽度,避免下载图形不完整的情况。
选择完毕后,就可以下载ROC曲线啦!
下载下来的图片也十分清晰!
以上就是风暴统计平台绘制ROC曲线的全部操作流程啦!如果您在使用过程中出现报错,可以参考下方推文,排查一下问题所在哦!
答疑 | 风暴统计更换服务器后,为什么总出现同样的报错?
相关文章:

如何快速绘制logistic回归预测模型的ROC曲线?
临床预测模型,也是临床统计分析的一个大类,除了前期构建模型,还要对模型的预测能力、区分度、校准度、临床获益等方面展开评价,确保模型是有效的! 其中评价模型的好坏主要方面还是要看区分度和校准度,而区分…...
实现具有多个实现类的接口并为每个实现类定义一个名字的方法
在Java中,实现具有多个实现类的接口并为每个实现类定义一个名字的方法,可以通过使用工厂模式或服务定位器模式来完成。以下是使用工厂模式的一个示例: 定义接口和实现类 首先,定义一个接口和多个实现类: // 接口 publ…...
Linux解压缩命令
文章目录 前言1. tar - 打包和压缩文件2. gzip - 压缩文件3. gunzip - 解压缩gzip文件4. bzip2 - 压缩文件5. unzip - 解压缩zip文件6. zip - 压缩文件为zip格式7. 7z - 7-Zip压缩工具8. unrar - 解压缩RAR文件 前言 解压缩文件在Linux中是常见的任务,以下是一些常…...
如何在 Ubuntu 14.04 上使用 Iptables 实现基本防火墙模板
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 实施防火墙是保护服务器的重要步骤。其中很大一部分是决定强制执行对网络流量的限制的个别规则和策略。像 iptables 这样的防火墙…...
jasypt对yml文件进行加密解密
目录 0.背景 1.依赖 2.yml文件 3.加密操作 0.背景 在日常开发中,我们一般会把账号密码以及一些用到的各种第三方服务的Access_Key都放入yml文件中,这时就有必要对yml文件进行加密处理了, jasypt是一款简单的对yml加密的工具 1.依赖 &l…...

vue3-openlayers 使用tianditu,wmts和xyz等source加载天地图切片服务
本篇介绍一下使用vue3-openlayers加载天地图切片,三种方法: 使用tianditu(ol-source-tianditu内部实现其实用的wmts)使用wmts(ol-source-wmts)使用xyz(ol-source-xyz) 1 需求 vue…...
npm、yarn、pnpm 最新国内镜像源设置和常见问题解决
1. npm 设置国内镜像源 1.1 镜像源概述 镜像源是软件包管理工具用来下载和安装软件包的服务器地址。由于网络原因,直接使用官方源可能会导致速度慢或连接失败的问题。国内镜像源可以提供更快的访问速度和更稳定的连接。 1.2 镜像源的选择 国内有许多可用的npm镜…...

Qt Object:智能即时聊天室项目
目录 1.项目介绍 2.设计思路 3.Pro文件配置 4.项目演示 5.项目开源 项目介绍 智能即时聊天室系统(AIChatProject)是一个高效、灵活的即时通讯解决方案。它融合了百度的开源大型语言模型——文心一言,通过API接口实现深度集成。系统专为聊天和…...

php,python aes加密反解
1. python版本 import base64 from Crypto.Cipher import AES from Crypto.Util.Padding import pad, unpadclass AESUtilCBC:def __init__(self, key, iv):self.key key.encode(utf-8)self.iv iv.encode(utf-8)self.pad_length AES.block_sizedef encrypt(self, data):try…...

基于Java学生选课管理系统设计和实现(源码+LW+调试文档+讲解等)
💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 🌟文末获取源码数据库🌟 感兴趣的可以先收藏起来,…...

阅读笔记——《Large Language Model guided Protocol Fuzzing》
【参考文献】Meng R, Mirchev M, Bhme M, et al. Large language model guided protocol fuzzing[C]//Proceedings of the 31st Annual Network and Distributed System Security Symposium (NDSS). 2024.(CCF A类会议)【注】本文仅为作者个人学习笔记&a…...

C#委托:事件驱动编程的基石
目录 了解委托 委托使用的基本步骤 声明委托(定义一个函数的原型:返回值 参数类型和个数) 根据委托定义的函数原型编写需要的方法 创建委托对象,关联“具体方法” 通过委托调用方法,而不是直接使用方法 委托对象所关联的方…...

Git的下载安装及可视化工具小乌龟
一、 Git 的下载 第1步:下载Git,下载地址:Git for Windows 这个就需要去 Git 官网下载对应系统的软件了,下载地址为 git-scm.com或者gitforwindows.org,或者阿里镜像(感谢评论区的星悸迷航同学&#…...

【面试实战】# 并发编程之线程池配置实战
1.先了解线程池的几个参数含义 corePoolSize (核心线程池大小): 作用: 指定了线程池维护的核心线程数量,即使这些线程处于空闲状态,它们也不会被回收。用途: 核心线程用于处理长期的任务,保持最低的线程数量,以减少线程的创建和…...

Pytest 读取excel文件参数化应用
本文是基于Pytest框架,读取excel中的文件,传入页面表单中,并做相应的断言实现。 1、编辑媒体需求 首先明确一下需求,我们需要对媒体的表单数据进行编辑,步骤如下: 具体表单如下图所示 1、登录 2、点击我…...

qt 一个可以拖拽的矩形
1.概要 2.代码 2.1 mycotrl.h #ifndef MYCOTRL_H #define MYCOTRL_H#include <QWidget> #include <QMouseEvent>class MyCotrl: public QWidget {Q_OBJECT public://MyCotrl();MyCotrl(QWidget *parent nullptr); protected:void paintEvent(QPaintEvent *even…...
C# 启动exe 程序
(1) publicbool Start () System.Diagnostics.Process process new System.Diagnostics.Process(); process.StartInfo.FileName "iexplore.exe"; //IE浏览器,可以更换 process.StartInfo.Arguments "http://www.baidu.com"; process.…...
Netty中的Reactor模型实现
Netty版本:4.1.17 Reactor模型是Doug Lea在《Scalable IO in Java》提出的,主要是针对NIO的。 其中的主从Reactor模式在Netty中的配置如下: EventLoopGroup bossGroup new NioEventLoopGroup(1); EventLoopGroup workerGroup new NioEv…...

dll丢失应该怎么解决,总结5种解决DLL丢失问题的方法
在数字时代,我们与计算机的每一天都密不可分。然而,就像所有技术产品一样,我们的计算设备也时不时地会出现一些问题,让人头疼不已。就在上周,我遭遇了一个令人崩溃的技术挑战——DLL文件丢失。这个看似微不足道的小问题…...

dial tcp 10.96.0.1:443: connect: no route to host
1、创建Pod一直不成功,执行kubectl describe pod runtime-java-c8b465b98-47m82 查看报错 Warning FailedCreatePodSandBox 2m17s kubelet Failed to create pod sandbox: rpc error: code Unknown desc failed to setup network for…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
Python爬虫(二):爬虫完整流程
爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能
1. 开发环境准备 安装DevEco Studio 3.1: 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK 项目配置: // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
Vue 3 + WebSocket 实战:公司通知实时推送功能详解
📢 Vue 3 WebSocket 实战:公司通知实时推送功能详解 📌 收藏 点赞 关注,项目中要用到推送功能时就不怕找不到了! 实时通知是企业系统中常见的功能,比如:管理员发布通知后,所有用户…...

MySQL体系架构解析(三):MySQL目录与启动配置全解析
MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录,这个目录下存放着许多可执行文件。与其他系统的可执行文件类似,这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中,用…...

UE5 音效系统
一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类,将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix,将上述三个类翻入其中,通过它管理每个音乐…...
【Java】Ajax 技术详解
文章目录 1. Filter 过滤器1.1 Filter 概述1.2 Filter 快速入门开发步骤:1.3 Filter 执行流程1.4 Filter 拦截路径配置1.5 过滤器链2. Listener 监听器2.1 Listener 概述2.2 ServletContextListener3. Ajax 技术3.1 Ajax 概述3.2 Ajax 快速入门服务端实现:客户端实现:4. Axi…...