关于ROC曲线,IDI和NRI

(一)缘起  

这几天,连续碰到多人咨询了两个同样的问题,这两个都是非常有意思的话题:

  1. 如何比较两个模型的预测效果?ROC的AUC值比较?IDI、NRI如何计算?
  2. 如何做危险因素评分预测模型?怎样将回归系数科学的转换成评分?

趁今天有空,聊一聊第一个话题,供各位参考。

说起ROC,就想起曾经一个Reviewer非得要求我们做的一个量表验证文章计算IDI和NRI,我那时还没有听说过IDI和NRI为何物,就觉得这个Reviewer还挺博学的。后来几番倒腾,终于搞清楚了。其实就一个量表的评分,完全没有必要,也无法计算IDI和NRI,想来,这个Reviewer也是个半吊子,只是道听途说后就搬来吓唬我们了,和他据理力争后,文章Accepted。

(二)初识  

说起ROC,首先需要理清灵敏度(Sensitivity, Sen),特异度(Specificity, Spe)。所谓灵敏度即在正确发现病人的能力,用数学的方式定义是Pr(T+|D+);所谓特异度,即正确确定非病人的能力,用数学的方式定义是Pr(T-|D-)。同这两个概念等同的还有真阳性率(True positive rate,TPR)和真阴性率(True negative rate,TNR)。其背后还有假阴性(FNR)(漏诊率)、假阳性率(FPR)(误诊率),约登指数,似然比,预测值等等一大波概念。

弄清这些概念的葵花宝典就是俩个四格表。

  1. 纵向为主向,横着看阴阳。灵敏度,特异度都是基于纵向计算的。

关于ROC曲线,IDI和NRI-图片1

2.横像为主向,横着阴阳。预测值都是基于横向计算的。

关于ROC曲线,IDI和NRI-图片2

(三)相知 

ROC就是综合了灵敏度和特异度所绘制出的曲线,具体而言就是以假阳性率(1-特异度)为横轴,真阳性率(灵敏度)为纵轴所描绘的曲线。

关于ROC曲线,IDI和NRI-图片3

而大家疑惑的是,怎么就从四格表到了ROC曲线了。其中过程其实是:

分别以每一个人预测出的概率作为CUT OFF值,>=此值的,判为病人,<此值的,判定为对照。由此计算灵敏度,特异度。所有人遍历完后,然后绘制以(1-特异度)为横坐标、灵敏度为纵坐标的折线图。有多人,就有多个CUT OFF值,ROC上就有多个点。

关于ROC曲线,IDI和NRI-图片4

计算机伪代码逻辑图:

关于ROC曲线,IDI和NRI-图片5

(四)缘孽  

ROC曲线分析自二战发明,到1971年Lusted将其引入医学领域后,在医学领域得到了非常广泛的应用。但其有其自己的优劣。

关于ROC曲线,IDI和NRI-图片6
特别的,当我们希望比较两个模型的预测效果,特别是当我们希望知道新引入一个预测变量的效果时,ROC就显得力不从心。这时,就需要我们开篇提到的IDI, NRI。这两个术语,目前翻译得五花八门,没有统一的翻译,我尝试翻译及解释如下:

关于ROC曲线,IDI和NRI-图片7

两个概念其实非常类似,前者基于概率差距的量化,后者基于分类变化差距的量化。

比如,对于IDI, 我们只需要分别计算

  • 在病人里,预测概率提高的量(对病人,当然预测得病的概率越高越好)
  • 在非病人里,预测概率降低的量(对非病人,当然预测得病的概率越低越好)
  • 而后把前两部分加和(绝对IDI)或者相除(相对IDI)

例如, 下图,病人里,预测概率提高的量=0.25-0.2;非病人里,预测概率降低的量=0.15-0.12; 那么绝对IDI=(0.25-0.2)+(0.15-0.12)=0.08; 相对IDI=(0.25-0.2)/(0.15-0.12)=1.16.。

关于ROC曲线,IDI和NRI-图片8

对于NRI的计算,书面解释是这样的:

关于ROC曲线,IDI和NRI-图片9
其实如果统计了模型1,模型2的预测概率,在病人,非病人里的分类情况,做两个矩阵表,那么NRI就是在病人矩阵表的 (上对角比例-下对角比例)+ 非病人矩阵表里的(对角比例-上对角比例)。

关于ROC曲线,IDI和NRI-图片10

当然,原理是简单,手动去做也是麻烦。我们是可以借助统计软件,统计简单的几步,一举实现。比如,下图即为SAS直接计算输出的结果。

关于ROC曲线,IDI和NRI-图片11

    • rny82 0

      大神

    发表评论

    匿名网友

    拖动滑块以完成验证