对于分类预测模型的表现评估我们最常见的指标就是ROC曲线,报告AUC。比如有两个模型,我们去比较下两个模型AUC的大小,进而得出两个模型表现的优劣。这个是我们常规的做法,如果我们的研究关注点放在“在原模型新引入一个预测变量,模型的效果会不会提高时”,这个时候ROC就常常会显得力不从心,因为通常加入一个变量AUC不会有太大的变化,且AUC不好解释。

When evaluating the improvement of predictive performance of a predictive model after incorporating a new marker, the improvement of C-Statistic/AUC is always small, therefore the new marker sometimes fails to significantly improve C-Statistic/AUC.

这时,就需要用到我们今天要讲的综合判别改善指数IDI, 净重分类指数NRI指标。

Two new metrics, the integrated discrimination improvement (IDI) and net reclassification improvement (NRI), have been rapidly adopted to quantify the added value of a biomarker to an existing test.

净重分类指数NRI

一个新的指标或者新的模型是不是会提高分类效果,最终会体现在人数上,从这个角度考虑,我们可以去对比两个模型或者不同的指标对研究对象的正确划分情况,从而得到结论。

就是说我们的旧模型会把研究对象分类为患者和非患者,新的模型也会把研究对象分类为患者和非患者。此时比较新、旧模型对于研究人群的分类变化,就会发现有一部分研究对象原本在旧模型中被错分,但在新模型中得到了正确划分;同样也有一部分研究对象,原本在旧模型中分类正确,但在模型中却被错分,因此研究对象的分类在新、旧模型中会发生变化,我们利用这种重新分类的变化,来计算净重新分类指数NRI。

为了更好理解这种变化我们看下表:

在table3中,c1是原来模型没有预测对,新模型预测对的,同样的道理,b1是原来模型预测对,但新模型给预测错的,于是(c1 − b1)/N1便是疾病组或者event组增加的重分类的正确比。

同样我们可以得到非疾病组中(table 4)中增加的重分类正确比为(b2 − c2)/N2。

The NRIevents is the net proportion of patients with events reassigned to a higher risk category and the NRInonevents is the number of patients without events reassigned to a lower risk category

于是NRI = (c1 − b1)/N1 + (b2 − c2)/N2

因为NRI表示的是重分类的正确个案占比的增加量,所以NRI>0,则为正改善,说明新模型比旧模型的预测能力有所改善;若NRI<0,则为负改善,新模型预测能力下降;若NRI=0,则认为新模型没有改善。

综合判别改善指数IDI

刚刚我们介绍了NRI,NRI是从新旧模型的对个案预测正确数量占比增加的角度评估模型的,再换一种思路我们可以从概率增加的角度反映模型的优劣。

就是说在疾病组,模型预测阳性的概率要尽可能大,在非疾病组模型预测阳性的概率要尽可能小,通过模型的预测概率差值依然可以得到一个评价指数。如果新模型比原模型:在阳性组,预测阳性的概率比旧模型的大;在阴性组,预测阳性的概率比旧模型的小。那么就可以说明新模型比旧模型好。

这个指数就是IDI

IDI = (Pnew,events–Pold,events) – (Pnew,non-events – Pold,non-events)

其中Pnew,events表示在疾病组新模型的预测阳性概率,Pold,non-events表示在非疾病组旧模型的预测阳性概率。

就是说,IDI就等于疾病组新旧模型的预测阳性概率的差值减去非疾病组新旧模型预测阳性概率的差值(因为对于非疾病组模型预测阳性的概率应该是越小越好,所以中间是减号)这样IDI越大越说明新模型比旧模型预测效果更好。若IDI>0,则为正改善,说明新模型比旧模型的预测能力有所改善,若IDI<0,则为负改善,新模型预测能力下降,若IDI=0,则认为新模型没有改善。

做法实操

在R语言中我们可以用reclassification函数很方便地得到NRI和IDI,这个函数接受5个参数,参数说明如下图:

第一个是data是原始数据集,cOutcome参数是结局在原始数据集中的列的位置,比如原来数据集第二列是结局变量,cOutcome就设定为2;然后依次是旧模型和新模型的预测风险值,最后一个参数cutoff是模型分类的风险值截断点。

比如我现在有数据集如下

结局在数据集的第二列,我想比较只有age、sex的模型1和有age、sex、education的模型2,在设定预测风险值0.5为类别划分标准时两个模型的分类表现。在拟合好model1和model2后我可以写出如下代码:

model1 <-  glm(formula = `outcome(AMD)` ~Age  +Sex, family = binomial("logit"), data = Data)
model2 <- glm(formula = `outcome(AMD)` ~Age +Sex+ Education, family = binomial("logit"), data = Data)
predRisk1 <- predRisk(model1)
predRisk2 <- predRisk(model2)
cutoff <- c(0,.5,1)
reclassification(data=ExampleData, cOutcome=cOutcome,
predrisk1=predRisk1, predrisk2=predRisk2, cutoff)

运行代码后输出结果如下:

可以看到在风险截断值为0.5的时候NRI(Categorical)为0,说明增加edu的模型并没有使得分类模型变得更好。同时结果中也给出了NRI(Continuous)和IDI的点估计、p值和置信区间。均可以在论文中加以报告。

到这儿NRI和IDI就给大家介绍完了,大家以后在进行2个疾病模型比较,或者2个指标诊断效能比较时,除了传统的ROC曲线及其AUC,也可以同时给出NRI和IDI,更加全面多层次的展示模型的改善情况。

when comparing diagnostic power of two markers or comparing two predictive models, we could use not only AUC、C-statistics but also NRI and IDI, which could give a comprehensive perspective on how much the predictive performance improves.

we could not calculate NRI or IDI of one predictive model. IDI and NRI are calculated from the comparison of two models. One model does not have IDI or NRI.

文献推荐:
https://cdn.amegroups.cn/journals/amepc/files/journals/16/articles/29812/public/29812-PB1-1696-R4.pdf

R数据分析:净重新分类(NRI)和综合判别改善(IDI)指数的理解的更多相关文章

  1. R数据分析:二分类因变量的混合效应,多水平logistics模型介绍

    今天给大家写广义混合效应模型Generalised Linear Random Intercept Model的第一部分 ,混合效应logistics回归模型,这个和线性混合效应模型一样也有好几个叫法 ...

  2. R数据分析:纵向分类结局的分析-马尔可夫多态模型的理解与实操

    今天要给大家分享的统计方法是马尔可夫多态模型,思路来源是下面这篇文章: Ward DD, Wallace LMK, Rockwood K Cumulative health deficits, APO ...

  3. R数据分析:潜类别轨迹模型LCTM的做法,实例解析

    最近看了好多潜类别轨迹latent class trajectory models的文章,发现这个方法和我之前常用的横断面数据的潜类别和潜剖面分析完全不是一个东西,做纵向轨迹的正宗流派还是这个方法,当 ...

  4. R数据分析:跟随top期刊手把手教你做一个临床预测模型

    临床预测模型也是大家比较感兴趣的,今天就带着大家看一篇临床预测模型的文章,并且用一个例子给大家过一遍做法. 这篇文章来自护理领域顶级期刊的文章,文章名在下面 Ballesta-Castillejos ...

  5. R数据分析:如何简洁高效地展示统计结果

    之前给大家写过一篇数据清洗的文章,解决的问题是你拿到原始数据后如何快速地对数据进行处理,处理到你基本上可以拿来分析的地步,其中介绍了如何选变量如何筛选个案,变量重新编码,如何去重,如何替换缺失值,如何 ...

  6. R数据分析:临床预测模型中校准曲线和DCA曲线的意义与做法

    之前给大家写过一个临床预测模型:R数据分析:跟随top期刊手把手教你做一个临床预测模型,里面其实都是比较基础的模型判别能力discrimination的一些指标,那么今天就再进一步,给大家分享一些和临 ...

  7. 基于R数据分析之常用Package讲解系列--1. data.table

    利用data.table包变形数据 一. 基础概念 data.table 这种数据结构相较于R中本源的data.frame 在数据处理上有运算速度更快,内存运用更高效,可认为它是data.frame ...

  8. Python 爬取 热词并进行分类数据分析-[热词分类+目录生成]

    日期:2020.02.04 博客期:143 星期二   [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[ ...

  9. R数据分析:生存分析与有竞争事件的生存分析的做法和解释

    今天被粉丝发的文章给难住了,又偷偷去学习了一下竞争风险模型,想起之前写的关于竞争风险模型的做法,真的都是皮毛哟,大家见笑了.想着就顺便把所有的生存分析的知识和R语言的做法和论文报告方法都给大家梳理一遍 ...

  10. R数据分析:数据清洗的思路和核心函数介绍

    好多同学把统计和数据清洗搞混,直接把原始数据发给我,做个统计吧,这个时候其实很大的工作量是在数据清洗和处理上,如果数据很杂乱,清洗起来是很费工夫的,反而清洗好的数据做统计分析常常就是一行代码的事情. ...

随机推荐

  1. USB和CAN都是用差分信号来传输数据,为什么CAN的传输距离能比USB远那么多?

    USB和CAN的区别 今天在看USB项目设计实例的时候,突然想到一个问题,从而引发了一些思考.经过思考加上查阅资料,写出了这一篇文章作为记录. 问题 ​ USB和CAN都是用两条线作为差分线以差分信号 ...

  2. softirq和hardirq中断亲和度

    /proc/interrupts 和 /proc/softirqs 两者是相互关联的,但它们各自记录的信息和作用有所不同,反映了硬中断和软中断的两个处理阶段. 两者的关系: 硬中断引发软中断: 硬中断 ...

  3. Android中VSYNC代表什么

    在 Android 中,VSYNC(Vertical Synchronization)是一个垂直同步信号,用于协调显示刷新和绘图操作.VSYNC 信号的主要作用是控制屏幕刷新频率与图形渲染的同步,以确 ...

  4. Javascript的基本数据类型和引用数据类型有哪些?null 和 undefined的区别

    基本数据类型 : number string boolean null undefined 引用数据类型: object   -->  function array function and a ...

  5. kotlin更多语言结构——>操作符重载

    Kotlin允许我们为自己的类型提供预定义的一组操作符的实现.这些操作符具有固定的符号表示(如 + 或 *) 和固定的优先级.为实现这样的操作符,我们为相应的类型(即二元操作符左侧的类型和一元操作符的 ...

  6. sqlplus登录脚本glogin.sql的配置

    DEFINE sqlprompt=SQL COLUMN sqlprompt NEW_VALUE sqlprompt SET TERMOUT OFF SELECT USER || '@' || NVL( ...

  7. jacoco代码覆盖率工具配置

    参考文章: https://blog.csdn.net/skh2015java/article/details/121775806 解决引入jacoco依赖并配置后,执行maven clean tes ...

  8. LiveData

    ViewModel 添加依赖 implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' activity_main.xml < ...

  9. 为数据集而生的 SQL 控制台

    随着数据集的使用量急剧增加,Hugging Face 社区已经变成了众多数据集默认存放的仓库.每月,海量数据集被上传到社区,这些数据集亟需有效的查询.过滤和发现. 每个月在 Hugging Face ...

  10. 技术前沿:AI大模型在自动化测试中的应用实例

    哈喽,大家好,我是六哥!今天咱们来聊一聊如何用AI大模型(比如GPT-3.5)来做自动化测试,别看这东西听起来高大上,但也没那么神,跟着我咱们一步一步来,保证你也能轻松搞定,学会了保准让你在工作中老省 ...