标题：ROC曲线
概念
ROC曲线是根据一系列不同的二分类方式（分界值或决定阈），以真阳性率（灵敏度）为纵坐标，假阳性率（1-特异度）为横坐标绘制的曲线。传统的诊断试验评价方法有一个共同的特点，必须将试验结果分为两类，再进行统计分析。ROC曲线的评价方法与传统的评价方法不同，无须此限制，而是根据实际情况，允许有中间状态，可以把试验结果划分为多个有序分类，如正常、大致正常、可疑、大致异常和异常五个等级再进行统计分析。因此，ROC曲线评价方法适用的范围更为广泛。[1]
主要作用
1.ROC曲线能很容易地查出任意界限值时的对疾病的识别能力。
2.选择最佳的诊断界限值。ROC曲线越靠近左上角,试验的准确性就越高。最靠近左上角的ROC曲线的点是错误最少的最好阈值，其假阳性和假阴性的总数最少。
3.两种或两种以上不同诊断试验对疾病识别能力的比较。在对同一种疾病的两种或两种以上诊断方法进行比较时，可将各试验的ROC曲线绘制到同一坐标中，以直观地鉴别优劣，靠近左上角的ROC曲线所代表的受试者工作最准确。亦可通过分别计算各个试验的ROC曲线下的面积(AUC)进行比较，哪一种试验的 AUC最大，则哪一种试验的诊断价值最佳。[1]
分析步骤
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.两种诊断方法的统计学比较。两种诊断方法的比较时，根据不同的试验设计可采用以下两种方法：①当两种诊断方法分别在不同受试者身上进行时，采用成组比较法。②如果两种诊断方法在同一受试者身上进行时，采用配对比较法。[1]
优点
该方法简单、直观，通过图示可观察分析方法的临床准确性，并可用肉眼作出判断。ROC曲线将灵敏度与特异性以图示方法结合在一起，可准确反映某分析方法特异性和敏感性的关系，是试验准确性的综合代表。ROC曲线不固定分类界值，允许中间状态存在，利于使用者结合专业知识，权衡漏诊与误诊的影响，选择一更佳截断点作为诊断参考值。提供不同试验之间在共同标尺下的直观的比较,ROC曲线越凸越近左上角表明其诊断价值越大，利于不同指标间的比较。曲线下面积可评价诊断准确性。[1]
意义
ROC曲线指受试者工作特征曲线(receiver operating characteristic curve), 是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系，它通过将连续变量设定出多个不同的临界值，从而计算出一系列敏感性和特异性，再以敏感性为纵坐标、（1-特异性）为横坐标绘制成曲线，曲线下面积越大，诊断准确性越高。在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
6177
258
100.00 
100.00 
其正例数为此部分里实际的正类数。也就是说，将逻辑回归得到的结 果按从大到小排列，倘若以前10%的数值作为阀值，即将前10%的实例都划归为正类，6180个。其中，正确的个数为4879个，占所有正类的 4879/14084*100%=34.64%，即敏感度；另外，有6180-4879=1301个负实例被错划为正类，占所有负类的1301 /47713*100%=2.73%,即1-特异度。以这两组值分别作为x值和y值，在excel中作散点图。得到ROC曲线如下 
  roc曲线
属性
（1）β值的改变独立于d’的变化，考察β值变化对P(y/SN)和P(y/N)的影响时发现：当β接近无穷大时，虚惊率几乎为0，即噪音全当成信号接受；当β接近0时，击中率几乎为0，即信号全当成噪音接受；而当β从接近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步。[1]
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的网址