前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >临床模型如何评估?快学一下C统计量

临床模型如何评估?快学一下C统计量

作者头像
用户6317549
发布于 2020-06-04 10:07:01
发布于 2020-06-04 10:07:01
9.1K0
举报
文章被收录于专栏:科研猫科研猫

本文作者:西红柿

责任编辑:馋猫

背景

在前两部分的模型构建文章中(预测模型研究利器-列线图(Logistic回归);【姊妹篇】预测模型研究利器-列线图(Cox回归)),我们提到使用R来构建Logistic回归模型和Cox回归模型,并简要介绍了模型的C统计量,但并未着重介绍。

在本节中,我们将详细介绍使用R来计算Logistic回归模型的C统计量。实际上,Logistic回归模型的受试者工作特征曲线(ROC)是基于预测的概率。ROC曲线下面积(AUC)等于C-统计量,所以IBM SPSS软件也可以计算C-统计量,在此不再赘述。

当我们通过训练集建立回归模型时,我们如何科学地评估回归模型预测的准确性?例如,有两个算命先生,每个算命先生在街角都有一个摊位,王小姐希望让其中一位算命先生告诉自己其婚姻的命运。她应该问谁,张先生还是李先生?一种简单的选择方法是选择过往算命更准确的算命先生。但是,这只能通过过去客户的口口相传才能知道。临床预测模型与此类似。最基本的要求是确保预测准确。那么,你如何评估预测模型是否准确?一般情况下,一个预测模型的优劣可以用以下三个方面来评价。

01

鉴别指数

它指的是回归模型区分患病/无病,有效/无效和死亡/存活结果的预测能力。例如,有100人,其中50人被诊断患有疾病,而50人没有疾病;我们使用某种预测方法预测的结果为45名患病和55名未患病。然后,在这45个人中,与真正生病的50个人相重叠的人数直接决定了你的模型预测能力的准确性,我们称之为“准确度”,其通常通过ROC曲线和C统计量来衡量(Logistic回归模型中的AUC等于C统计量)。当然, NRI(Net Reclassification Index)和IDI(integrated discrimination improvement)是其他度量的一部分。我们将在下面的章节进一步解释。

02

一致性和校准曲线

它是指实际发生的概率与预测的概率的一致性。我们仍然引用上面的例子。我们预测了100个人,但并不意味着我们真正使用该模型来预测一个人是否患有该疾病。该模型仅仅是根据大于某个临界值(例如0.5)的概率来确定人是否患有疾病,从而为我们提供了某人患病的可能性。例如,有100个人,我们最终将通过模型获得100个从0到1的概率。我们按从小到大的顺序对100个概率进行排名,然后将其分为10组,每组10个人。实际几率实际上是这10个人中疾病的比例,预测概率是每个组预测的10个概率的平均值,然后将两个数字进行比较,一个作为横坐标,一个作为纵坐标,由此获得校准图,并且还可以计算图的95%范围。

在逻辑回归模型中,有时一致性也可以通过Hosmer Lemeshow拟合优度检验来衡量。校准曲线是实际发生率actual incidence和预测发生率的散点图。从统计学上讲,校准曲线是Hosmer-Lemeshow拟合优度测试的可视化结果。

值得注意的是,差异较大的模型可能校正效果较差。例如,它可以确定一个人患疾病的风险是另一个人的五倍。它确定两个人的风险分别为5%和1%。实际上,两者的风险分别为50%和10%。该模型非常离谱,是一个不好的校准例子。可以使用Hosmer Lemeshow测试模型的校准性。如果结果具有统计意义,则预测值和观察值之间会有差异。差异discrimination和校准calibration是对模型的重要评估,但是许多新开发的模型并未得到充分评估。对心血管系统风险预测模型的系统回顾发现,只有63%的模型报告了差异,甚至更少的模型,只有36%报告了校准。

03

R平方

确定系数(通常也称为“ R平方”),也经常用作衡量模型准确性的标准,可以算作是鉴别指数和一致性系数的组合。模型确定系数R2较为全面,但略有粗糙。

下面,我们以一个前面的经典案例作为此次分析的例子,用R语言来计算一下上面讲的C统计量(Logistic回归模型中,等同于AUC)的几种计算方法。

案例分析

01

背景

Hosmer和Lemeshow在1989年研究了婴儿低出生体重的影响因素。结果变量是是否分娩低出生体重的婴儿(变量名“ low”,二分变量,1 =低出生体重,出生体重<2500 g;0 =非低出生体重),考虑因素(独立变量)可能包括:孕前孕妇体重(lwt,单位:磅);孕妇年龄(年龄,单位:年);孕妇在怀孕期间吸烟(0 =不吸烟,1 =吸烟);怀孕前早产(Ptl,单位:次);出生母亲是否患有高血压(ht,0 =没有,1 =患有);子宫对收缩,催产素和其他刺激的压力(ui,0 =否,1 =是); 怀孕前三个月的社区医师就诊次数(ftv,单位:次);种族(种族,1 =白种人,2 =黑种人,3 =其他种族)。在本示例中,我们整理了数据并将其命名为“ Lowweight.sav”,该数据存储在当前工作路径中。为了方便,大家可以在文末联系客服,下载数据和代码。

02

分析

在这种情况下,因变量是二元结果变量(无论出生体重是否低)。本研究的目的是调查低出生体重儿的独立影响因素,这与二元Logistic回归的应用条件一致。我们以“age+ ftv + ht + lwt + pwt +smoke+ ui +race”为自变量,以“ low”为因变量来构建Logistic回归方程。基于此Logistic回归模型,我们有三种方法来计算其C-统计量C-Statistics:

  1. 方法1:使用rms包中的lrm()函数来构建逻辑回归模型,并直接读取模型“ Rank Discrim. Indexes”参数C,即C统计量。
  2. 方法2:构建逻辑回归模型,使用predict()函数计算模型的预测概率,然后使用ROCR软件包根据预测的结果绘制ROC曲线概率,然后计算曲线下的面积(AUC),即C统计量。注意:此方法与SPSS中的计算方法一致。
  3. 方法3:建立Logistic回归模型,应用Hmisc软件包中的somers2函数直接计算ROC曲线下面积AUC,predict()函数计算模型预测概率。注:此方法与SPSS中的计算方法一致。

03

实现过程

首先,导入数据集

将婴儿体重和人类物种进行分类

方法1

使用rms包中的lrm()函数来构建逻辑回归模型,并直接读取模型“ Rank Discrim. Indexes”参数C,即C统计量。C-Statistics = 0.738.

方法2

构建逻辑回归模型,使用predict()函数计算模型的预测概率,然后使用ROCR软件包根据预测的结果绘制ROC曲线概率,然后计算曲线下的面积(AUC),即C统计量。注意:此方法与SPSS中的计算方法一致。

首先,计算构建Logistic回归模型的预测概率。

然后,使用prediction()函数构建对象“pred”,并使用performance()函数构建对象性能以绘制ROC曲线

绘制ROC曲线,如下图所示

使用performance()函数计算ROC曲线下面积(AUC)为C-统计量=0.7382008,与上述计算结果一致

方法3

Hmisc包somers2()函数计算,Auc=0.7382,与上述计算结果一致

小结

到目前为止,本节中对Logistic回归中计算C统计量的三种方法的演示已经完成。实际上,无论使用哪种方法,都不会直接给出C统计的标准误,因此置信区间的计算非常麻烦。如果要报告各种实际需求的C统计量置信区间,可以考虑使用SPSS软件进行ROC分析。SPSS软件可以直接给出AUC的标准误差和置信区间。大家可以自己尝试。此外,如果要比较两个模型(AUC或C统计)的ROC曲线下的面积,可以参考以下公式:

您可以根据Z值查看Z分布表以获得P值。或者直接用Delong test也可以比较。如果不会比较的话,可以参考我们的教程【科研猫·统计】ROC曲线(2):一码到底,这篇文章中有漂亮的ROC分析代码和自动化评估参数输出,以及Delong test两两比较。

参考文献:Zhi-Rui Zhou, Wei-Wei Wang, Yan Li, et al. In-depth mining of clinical data: the construction of clinical prediction model with R.Annals of Translational Medicine.

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科研猫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Get-WinEvent和Get-EventLog的区别及效率
Windows事件日志查看命令通常有2种:Get-WinEvent和Get-EventLog,那么二者之间的区别是什么?应用场景又是什么呢?
雷龙
2021/09/18
3.2K0
用FullEventLogView分析日志
http://www.nirsoft.net/utils/full_event_log_view.html
Windows技术交流
2021/08/24
3.7K0
查Windows开机耗时是否正常
本文介绍通过powershell命令快速定位开机耗时是否正常(日志只是列出时间点,需要自己对比时间差,一般来说,开机耗时不会超过1分钟,那些明显超过的,我们可以结合如下命令判断主要卡在了哪个阶段)
Windows技术交流
2023/09/04
8260
Windows应急响应之命令行排查
powershell今天操作日志的最近10条,注意这里的logname必须是loglist中得到的:
Al1ex
2024/12/30
1830
Windows应急响应之命令行排查
获取最新开机事件12和6005的时间差
如果上面这个健壮版不行,试试最后面那段,在腾讯云还能通过metadata获取一些实例相关信息,比如
Windows技术交流
2023/11/01
3130
The operator or administrator has refused the request.操作员或系统管理员拒绝了请求(0x800710E0)
问题现象:Weekly定时一周多天某个时刻重启机器的计划任务要么如期执行重启了但显示了错的执行时间,要么没有如期执行重启且显示了错的执行时间。报错信息:The operator or administrator has refused the request. 操作员或系统管理员拒绝了请求(0x800710E0)。
Windows技术交流
2024/09/04
5840
PS命令之中系统日志相关信息查看与管理
描述: 默认情况下Get EventLog从本地计算机获取日志,它仅适用于Windows经典事件日志,如应用程序、系统或安全性。。
全栈工程师修炼指南
2022/09/29
6600
渲染业务自定义镜像参考(文档配录屏)
参考https://cloud.tencent.com/developer/article/2427091 这里只是标个出处,可以跳过
Windows技术交流
2024/06/12
1940
实用powershell命令
Windows PowerShell 系统要求 https://docs.microsoft.com/zh-cn/powershell/scripting/install/windows-powers
Windows技术交流
2019/12/25
2.8K0
如何查看系统的登录记录?
是山河呀
2025/03/22
2150
PS对象处理操作常用命令
描述: 通过New-Object cmdlet 创建Microsoft.NET Framework或COM对象的实例,您可以指定.NET Framework类的类型(缺省)或COM对象的ProgID(需要使用ComObject参数)。
全栈工程师修炼指南
2022/09/29
9.8K0
PS对象处理操作常用命令
应急响应脚本
Windows 事件日志进行搜索的更好方法的解决方案。使用 Out-GridView,但如果需要,您可以使用 -raw 并导出到 csv/xls。也有原始搜索功能。
Khan安全团队
2021/09/18
1K0
应急响应脚本
如何查看系统的安全日志?
是山河呀
2025/03/23
2420
通过解析 win-event 日志来获取 Applocker 事件日志
此脚本将从 win 事件日志中解析所有事件通道,以将所有日志相关信息提取到 AppLocker。该脚本将收集与事件相关的所有重要信息,用于取证或威胁搜寻目的,甚至用于故障排除。以下是我们从 win-event 中获取的日志:
Khan安全团队
2023/02/23
5120
通过解析 win-event 日志来获取 Applocker 事件日志
Windows系统怎样控制某个服务延迟启动Automatic(Delayed Start)的时间
看到了DelayedAutoStart和AutoStartDelay有关的很多文档,没有一篇是正确的
Windows技术交流
2023/05/10
3.9K0
Windows查看系统启动时长 uptime
The Get-Uptime cmdlet was introduced in PowerShell 6.0.
Windows技术交流
2023/05/17
1.8K0
DiagTrack、WinSAT、Application Experience、Diagnostic等服务或计划任务可能影响系统性能
DiagTrack、WinSAT、Application Experience、Diagnostic等服务或计划任务可能影响系统性能
Windows技术交流
2024/01/08
5700
powershell过滤时间服务 windows time相关日志
在 Windows 中,与时间同步相关的事件 ID 主要与 Windows Time 服务(W32Time)有关。以下是一些常见的事件 ID:
Windows技术交流
2023/11/15
4471
计划任务定时重启服务或重启机器
schtasks.exe /CREATE /ru system /rl highest /SC DAILY /MO 1 /TN restart_rdp_service /TR "powershell.exe -c '& {restart-service termservice -force}'" /ST 02:00 /RI 120 /DU 24:00 /f
Windows技术交流
2022/02/10
3.3K0
易学易用的Windows PowerShell
Windows PowerShell 是微软为 Windows 环境所开发的 shell 及脚本语言技术,这项全新的技术提供了丰富的控制与自动化的系统管理能力;而“脚本语言”(scripting languages)则是用来编写程序的计算机语言。脚本语言通常都有简单、易学、易用的特性,目的就是希望能让写程序的人(开发者)快速完成程序的编写工作。本文将简述脚本语言的起源与目的,并且介绍 Windows PowerShell。 脚本语言的源起与目的 脚本语言是计算机程序语言(programming lan
张善友
2018/01/19
1.6K0
易学易用的Windows PowerShell
相关推荐
Get-WinEvent和Get-EventLog的区别及效率
更多 >
LV.1
奇安信运维开发工程师
目录
  • 在前两部分的模型构建文章中(预测模型研究利器-列线图(Logistic回归);【姊妹篇】预测模型研究利器-列线图(Cox回归)),我们提到使用R来构建Logistic回归模型和Cox回归模型,并简要介绍了模型的C统计量,但并未着重介绍。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档