分享

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

 CodewarCodewar 2023-11-08 发布于山东

对于分类预测模型的表现评估我们最常见的指标就是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./journals/amepc/files/journals/16/articles/29812/public/29812-PB1-1696-R4.pdf

小结

今天给大家介绍了临床预测模型中NRI和IDI的理解和实操,要比模型可以考虑用这两个指标,要注意的一点是这两个指标均是模型对比才有的,单独的一个模型是无法计算这两个指标的,并且也有学者提出这两个指标并没有什么用,大家都可以去查查文献看看各家之言。感谢大家耐心看完,自己的文章都写的很细,重要代码都在原文中,希望大家都可以自己做一做,请转发本文到朋友圈后私信回复“数据链接”获取所有数据和本人收集的学习资料。如果对您有用请先记得收藏,再点赞分享。

也欢迎大家的意见和建议,大家想了解什么统计方法都可以在文章下留言,说不定我看见了就会给你写教程哦,有疑问欢迎私信,有合作意向请直接滴滴我。

如果你是一个大学本科生或研究生,如果你正在因为你的统计作业、数据分析、模型构建,科研统计设计等发愁,如果你在使用SPSS, R,Mplus中遇到任何问题,都可以联系我。因为我可以给您提供最好的,最详细和耐心的数据分析服务。

如果你对Z检验,t检验,方差分析,多元方差分析,回归,卡方检验,相关,多水平模型,结构方程模型,中介调节,量表信效度等等统计技巧有任何问题,请私信我,获取详细和耐心的指导。

如果你或你的团队需要专业的科研数据清洗,建模服务,教学培训需求等等。请联系我。

If you are a student and you are worried about you statistical #Assignments, #Data #Analysis, #Thesis, #Reports, #Composing, #Quizzes, Exams.. And if you are facing problem in #SPSS, #R-Programming, #Excel, Mplus, then contact me. Because I could provide you the best services for your Data Analysis.

Are you confused with statistical Techniques like z-test, t-test, ANOVA, MANOVA, Regression, Logistic Regression, Chi-Square, Correlation, Association, SEM, multilevel model, mediation and moderation etc. for your Data Analysis...??

Then Contact Me. I will solve your Problem...

If You or Your Research Team Need Professional Scientific Data Cleaning, Model Building Services or Statistical Consulting... Please Contact Me.

往期精彩

R数据分析:反事实框架和因果中介的理论理解

R数据分析:解决科研中的“可重复危机”,理解Rmarkdown

R数据分析:多项式回归与响应面分析的理解与实操

R数据分析:生存数据的预测模型建立方法与评价(二)

R数据分析:生存数据的预测模型建立方法与评价

R数据分析:生存分析的列线图的理解与绘制详细教程

R数据分析:结合APA格式作图大法讲讲ggplot2和ggsci,请收藏

R数据分析:变量间的非线性关系,多项式,样条回归和可加模型

Mplus数据分析:性别差异gendergap的相关研究如何做?

R机器学习:分类算法之logistics回归分类器的原理和实现

R数据分析:PLS结构方程模型介绍,论文报告方法和实际操作

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

R数据分析:Lasso回归筛选变量构建Cox模型并绘制列线图

R数据分析:如何用层次聚类分析做“症状群”,实例操练

R数据分析:工具变量回归与孟德尔随机化,实例解析

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

R文本挖掘:中文词云生成,以2021新年贺词为例

R机器学习:分类算法之判别分析LDA,QDA的原理与实现

R可视化:plot函数基础操作,小白教程

R机器学习:重复抽样在机器学习模型建立过程中的地位理解

R数据分析:用lme4包拟合线性和非线性混合效应模型

R数据分析:如何用mice做多重插补,实例解析

R数据分析:孟德尔随机化中介的原理和实操

R数据分析:生存分析的列线图的理解与绘制详细教程

R数据分析:cox模型如何做预测,高分文章复现

R数据分析:广义估计方程式GEE的做法和解释

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

R数据分析:潜变量与降维方法(主成分分析与因子分析)

R数据分析:如何给结构方程画路径图,tidySEM包详解

R数据分析:自我报告的身高数据的离群值探索

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

R机器学习:朴素贝叶斯与支持向量机的原理与实现

R数据分析:混合效应模型的可视化解释,再不懂就真没办法

R数据分析:如何理解模型中的“控制”,图例展示

R数据分析:tableone包的详细使用介绍

R数据分析:如何用lavaan包做结构方程模型,实例解析

R机器学习:分类算法之K最邻进算法(KNN)的原理与实现

R数据分析:潜增长模型LGM的做法和解释,及其与混合模型对比

R数据分析:论文中的轨迹的做法,潜增长模型和增长混合模型

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

R数据分析:临床预测模型实操,校准曲线和DCA曲线做法示例

R数据分析:国产新冠口服药比辉瑞好的文章的统计做法分享

R数据分析:再写潜在类别分析LCA的做法与解释

R数据分析:潜在转化分析LTA的做法和解释(一)

R机器学习:分类算法之K最邻进算法(KNN)的原理与实现

R数据分析:交互作用的简单斜率图做法及解释

R数据分析:双连续变量交互作用的简单斜率图作图及解释

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多