ROC曲线又称受试者工作特征 (receiver operating characteristic) 曲线,是反映灵敏度和特异度的综合指标。ROC曲线以灵敏度(真阳性率)为纵坐标,1-特异度(假阳性率)为横坐标,将各点连接而成的曲线,那么ROC曲线上的哪一个点对应是最佳值截断值呢?通常情况下我们会通过约登指数(Youden index)进行选择。本文将以R软件为例介绍如何实现ROC曲线最佳截断值的计算。
关键词:R软件; ROC截断值计算; 诊断试验
一、案例介绍
某医疗检测机构分别采用新方法A和传统方法B(金标准)对20名门诊就诊者是否患有糖尿病进行诊断。结果如表1,其中Disease表示传统方法B(金标准)诊断的是否患病状态,X表示新方法A对20名门诊就诊者测量的血糖值,欲研究生化指标(X)对某疾病的诊断价值,选择了20名就诊者测量X的含量,然后使用金标准判断20名就诊者是否患病,试估计X截断值取何值对疾病的诊断价值最高?数据见表1,本案例数据可从“附件下载”处下载。

二、问题分析
本研究欲探究生化指标X对疾病诊断的价值,可以通过绘制ROC曲线并选择最佳的诊断界限值来直观鉴别。ROC曲线越靠近左上角,试验的准确性就越高。最靠近左上角的ROC曲线的点是错误最少的阈值,其假阳性和假阴性的总数最少。
三、软件操作及结果解读
(一) 导入数据
mydata = read.csv("./data.csv", header = T) str(mydata)

(二) 绘制ROC曲线
library('pROC') modelroc = roc(mydata[, 2], mydata[, 3], plot = TRUE) ci.auc(modelroc) plot(modelroc, print.auc=TRUE, print.ci=TRUE, print.thres=TRUE, auc.polygon=TRUE, auc.polygon.col="white", max.auc.polygon=TRUE, grid=c(0.2,0.2), grid.col=c("green","red"))

##计算AUC面积的置信区间##
ci.auc(modelroc)

(三) 结果解读
由图3及图4可知,ROC曲线下面积为0.849 (95%CI: 0.679~1.000),最佳截断值为最接近左上角(1.0,1.0)的点所对的坐标,即5.700,对应的灵敏度≈100%,特异度≈1-0.333=66.7%。
四、结论
本研究基于R软件实现ROC曲线绘制及最佳截断值计算。ROC曲线下面积为0.849 (95%CI: 0.679~1.000),最佳截断值为最接近左上角(1.0,1.0)的点所对的坐标,即5.700,对应的灵敏度≈100%,特异度≈1-0.333=66.7%。