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

对于分类预测模型的表现评估我们最常见的指标就是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

posted @ 2023-11-08 20:10  Codewar  阅读(257)  评论(0编辑  收藏  举报