ROC曲线最佳截断值计算——R软件实现

发布于 2022年10月3日 星期一 19:43:40 浏览:5737
原创不易,转载请注明来源,感谢!
附件下载:
ROC曲线.csv 请勿重复点击,如无响应请耐心等待或稍后再试。

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,本案例数据可从“附件下载”处下载。

表1

二、问题分析

本研究欲探究生化指标X对疾病诊断的价值,可以通过绘制ROC曲线并选择最佳的诊断界限值来直观鉴别。ROC曲线越靠近左上角,试验的准确性就越高。最靠近左上角的ROC曲线的点是错误最少的阈值,其假阳性和假阴性的总数最少。

三、软件操作及结果解读

(一) 导入数据

mydata = read.csv("./data.csv", header = T)
str(mydata)
图2

(二) 绘制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"))
图3

##计算AUC面积的置信区间##

ci.auc(modelroc)

图4

(三) 结果解读

由图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%。

End
文章目录 沉浸式阅读