折叠 编辑本段 主要作用
折叠 编辑本段 来历
ROC曲线最早是运用在军事上,后来逐渐运用到医学领域。相传在第二次世界大战期间,雷达兵的任务之一就是死死地盯住雷达显示器,观察是否有敌机来袭。理论上讲,只要有敌机来袭,雷达屏幕上就会出现相应的信号,但是实际上,有时如果有飞鸟出现在雷达扫描区域时,雷达屏幕上有时也会出现信号。这种情况令雷达兵烦恼不已:如果过于谨慎,凡是有信号就确定为敌机来袭,显然会增加误报风险;如果过于大胆,凡是信号都认为飞鸟,又会增加漏报的风险。每个雷达兵都竭尽所能地研究飞鸟信号和飞机信号之间的区别,以便增加预报的准确性。但问题在于,每个雷达兵都有自己的判别标准,有的雷达兵比较谨慎,容易出现误报;有的雷达兵则比较胆大,容易出现漏报。
为了研究每个雷达兵预报的准确性,雷达兵的管理者汇总了所有雷达兵的预报特点,特别是他们漏报和误报的概率,并将这些概率画到一个二维坐标里面。这个二维坐标的纵坐标为敏感性,即在所有敌机来袭的事件中,每个雷达兵准确预报的概率。而横坐标则为特异性,表示了在所有非敌机来袭信号中,雷达兵预报错误的概率。由于每个雷达兵的预报标准不同,且得到的敏感性和特异性的组合也不同。将这些雷达兵的预报性能进行汇总后,雷达兵管理员发现他们刚好在一条曲线上,这条曲线就是我们经常在医学杂志上看见的ROC曲线。
折叠 编辑本段 分析步骤
1.ROC曲线绘制。依据专业知识,对疾病组和参照组测定结果进行分析,确定测定值的上下限、组距以及截断点(cut-off point),按选择的组距间隔列出累积频数分布表,分别计算出所有截断点的敏感性、特异性和假阳性率(1-特异性)。以敏感性为纵坐标代表真阳性率,(1-特异性)为横坐标代表假阳性率,作图绘成ROC曲线。
2.ROC曲线评价统计量计算。ROC曲线下的面积值在1.0和0.5之间。在AUC>0.5的情况下,AUC越接近于1,说明诊断效果越好。AUC在 0.5~0.7时有较低准确性,AUC在0.7~0.9时有一定准确性,AUC在0.9以上时有较高准确性。AUC=0.5时,说明诊断方法完全不起作用,无诊断价值。AUC<0.5不符合真实情况,在实际中极少出现。
3.两种诊断方法的统计学比较。两种诊断方法的比较时,根据不同的试验设计可采用以下两种方法:①当两种诊断方法分别在不同受试者身上进行时,采用成组比较法。②如果两种诊断方法在同一受试者身上进行时,采用配对比较法。
折叠 编辑本段 优点
该方法简单、直观,通过图示可观察分析方法的临床准确性,并可用肉眼作出判断。ROC曲线将灵敏度与特异性以图示方法结合在一起,可准确反映某分析方法特异性和敏感性的关系,是试验准确性的综合代表。ROC曲线不固定分类界值,允许中间状态存在,利于使用者结合专业知识,权衡漏诊与误诊的影响,选择一更佳截断点作为诊断参考值。提供不同试验之间在共同标尺下的直观的比较,ROC曲线越凸越近左上角表明其诊断价值越大,利于不同指标间的比较。曲线下面积可评价诊断准确性。
折叠 编辑本段 意义
折叠 编辑本段 绘制
ROC曲线的具体绘制实例:杨治良(1983)曾做过这样一个实验:选图画页500页,分成五个组,每组100张。五组画页的先定概率分别是0.1、0.3、0.5、0.7和0.9。对于每一组画页,主试者使用一种信号的先定概率,然后按此先定概率呈现给被试者一定数量的画页,要求被试者把它们当做"信号"记住。例如,先定概率为0.1时,则当作"信号"的画页为10张;当做"噪音"的画页为90张。作为信号的画页呈现完毕之后,与此组作为噪音的画页混合,然后随机地逐张呈现给被试。这时,每呈现一张画页,即要求被试判断此画页是"信号"还是"噪音",并要求被试把结果记录在实验纸上。根据五种先定概率得到的实验结果,就可计算击中概率和虚警概率。最后,根据不同先定概率下的击中概率和虚警概率,就可在图上确定各点的位置,把五点联接起来就绘成一条 ROC曲线。
折叠 编辑本段 例子
考虑一个二分问题,即将实例分成正类(positive)或负类(negative)。对一个二分问题来说,会出现四种情况。如果一个实例是正类并且也被 预测成正类,即为真正类(True positive),如果实例是负类被预测成正类,称之为假正类(False positive)。相应地,如果实例是负类被预测成负类,称之为真负类(True negative),正类被预测成负类则为假负类(false negative)。
列联表如下表所示,1代表正类,0代表负类。
预测 | ||||
1 | 0 | 合计 | ||
实际 | 1 | True Positive(TP) | False Negative(FN) | Actual Positive(TP+FN) |
0 | False Positive(FP) | True Negative(TN) | Actual Negative(FP+TN) | |
合计 | Predicted Positive(TP+FP) | Predicted Negative(FN+TN) | TP+FP+FN+TN |
从列联表引入两个新名词。其一是真正类率(true positive rate ,TPR), 计算公式为TPR=TP/ (TP+ FN),刻画的是分类器所识别出的 正实例占所有正实例的比例。另外一个是假正类率(false positive rate, FPR),计算公式为FPR= FP / (FP + TN),计算的是分类器错认为正类的负实例占所有负实例的比例。还有一个真负类率(True Negative Rate,TNR),也称为specificity,计算公式为TNR=TN/ (FP+ TN) = 1 - FPR。
在一个二分类模型中,对于所得到的连续结果,假设已确定一个阈值,比如说 0.6,大于这个值的实例划归为正类,小于这个值则划到负类中。如果减小阈值,减到0.5,固然能识别出更多的正类,也就是提高了识别出的正例占所有正例的比例,即TPR,但同时也将更多的负实例当作了正实例,即提高了FPR。为了形象化这一变化,在此引入ROC。
Receiver Operating Characteristic,翻译为"接受者操作特性曲线",够拗口的。曲线由两个变量1-specificity 和 Sensitivity绘制. 1-specificity=FPR,即假正类率。Sensitivity即是真正类率,TPR(True positive rate),反映了正类覆盖程度。这个组合以1-specificity对sensitivity,即是以代价(costs)对收益(benefits)。
下表是一个逻辑回归得到的结果。将得到的实数值按大到小划分成10个个数 相同的部分。
Percentile | 实例数 | 正例数 | 1-特异度(%) | 敏感度(%) |
10 | 6180 | 4879 | 2.73 | 34.64 |
20 | 6180 | 2804 | 9.80 | 54.55 |
30 | 6180 | 2165 | 18.22 | 69.92 |
40 | 6180 | 1506 | 28.01 | 80.62 |
50 | 6180 | 987 | 38.90 | 87.62 |
60 | 6180 | 529 | 50.74 | 91.38 |
70 | 6180 | 365 | 62.93 | 93.97 |
80 | 6180 | 294 | 75.26 | 96.06 |
90 | 6180 | 297 | 87.59 | 98.17 |
100 | 6180 | 258 | 100.00 | 100.00 |
其正例数为此部分里实际的正类数。也就是说,将逻辑回归得到的结 果按从大到小排列,倘若以前10%的数值作为阈值,即将前10%的实例都划归为正类,6180个。其中,正确的个数为4879个,占所有正类的 4879/14084*100%=34.64%,即敏感度;另外,有6180-4879=1301个负实例被错划为正类,占所有负类的1301 /47716*100%=2.73%,即1-特异度。以这两组值分别作为y值(敏感度)和x值(1-特异度),在excel中作散点图。得到ROC曲线如下(红色曲线与数据无关其只是一个参考,蓝色曲线是ROC曲线):
折叠 编辑本段 属性
(1)β值的改变独立于d'的变化,考察β值变化对P(y/SN)和P(y/N)的影响时发现:当β接近无穷大时,虚惊率几乎为0,即信号全当成噪音接受;当β接近0时,击中率几乎为100,即噪音全当成信号接受;而当β从接近0向无穷大渐变的过程中,将形成一条完整地ROC曲线,曲线在某一处达到最佳的标准βOPT。
(2)ROC曲线的曲率反应敏感性指标d':对角线,代表P(y/SN)=P(y/N),即被试者的辨别力d'为0,ROC曲线离这条线愈远,表示被试者辨别力愈强,d'的值当然就愈大。由上可知,d'的变化使ROC曲线形成一个曲线簇,而β的变化体现在这一曲线簇中的某一条曲线上不同点的变化。此外,如果将ROC曲线的坐标轴变为Z分数坐标,我们将看到ROC曲线从曲线形态变为直线形态。这种坐标变换可以用来验证信号检测论一个重要假设,即方差齐性假设。
折叠 编辑本段 ROC分析
SPSS 9.0以上版本可进行ROC分析,操作步骤如下:
1.定义列变量,并输入数据
(1)诊断分类值或检测结果(test):多个诊断试验则定义test1,test2,...
(2)金标准类别(group):1=病例组,0=对照组
(3)分类频数(freq),需要进一步执行第二步
2.说明频数变量 路径:Data\Weight Case..., 选项:Weight case by, 填表:Freqency Variable (freq)
3.ROC分析:路径:Grahps\Roc Curve... 填表:Test Variable(test), State Variable (group), Value of state variable,选项包括:
(display) ROC Curve,with diagonal reference line (机会线), standard error and confidence interval (面积的标准误,及其可信区间), Coordinate points of the ROC curve (ROC曲线的坐标点), options:test direction (如果检测值小划归为阳性,则需要选), cofidence level (%):需要除95%以外的可信度,可在此定义。
如果是连续型测量资料,则不需要第1步的(3)及第2步。
折叠 编辑本段 R中绘制
ROCR包中主要是两个class:prediction和performance。前者是将预测结果和真实标签组合在一起,生成一个 prediction对象,然后在用performance函数,按照给定的评价方法,生成一个performance对象,最后直接对 performance用plot函数就能绘制出相应的ROC曲线。
1 2 3 4 5 6 | # plot a ROC curve for a single prediction run # and color the curve according to cutoff. data(ROCR.simple) pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels) perf <- performance(pred,"tpr","fpr") plot(perf,colorize=TRUE) |
上面是ROCR中的一个例子,ROCR.simple$predictions是预测结果,ROCR.simple$labels是真实的标签,从而产生一个prediction对象;然后tpr是true positive rate的意思,fpr则是false positive rate的意思,这样最后画出来的就是最常见的ROC曲线。
注:转自扩展阅读2的网址