2021-10-14
一、图表介绍
受试者工作特征曲线 (receiver operating characteristic curve,简称ROC),又称为感受性曲线(sensitivity curve)。ROC曲线下面积(the area under the ROC curve, AUC)是指ROC曲线与x轴、(1,0)-(1,1)围绕的面积,只要ROC曲线下面积大于0.5,就证明该诊断试验具有一定的诊断价值。同时,AUC越接近1证明诊断试验的真实性越好。ROC曲线越是靠近左上角,灵敏度越高,误判率越低,则诊断方法的性能越好。可知ROC曲线上最靠近左上角的ROC曲线上的点其灵敏度和特异性之和最大,这个点或者其邻近点常被称为诊断参考值,这些点被称为最佳临界点,点上的值被称为最佳临界值。
ROC曲线可以用于比较两种或两种以上不同诊断方法对疾病的识别能力大小。在对同一疾病的两种或是两种诊断方法进行比较时,可将各个诊断方法的ROC曲线画到同一个ROC空间中(同一个坐标系中),这样就可以直观的鉴别各种诊断方法的优劣了。越是靠近左上角的ROC曲线所代表的诊断方法性能越好。
图1 ROC曲线图
二、R语言实现
1. 绘制ROC曲线
library("pROC")
# Create a few ROC curves:
data(aSAH)
roc.s100b <- roc(aSAH$outcome, aSAH$s100b)
roc.wfns <- roc(aSAH$outcome, aSAH$wfns)
roc.ndka <- roc(aSAH$outcome, aSAH$wfns)
# 先画个简单的ROC
plot(roc.s100b)
图2 简单ROC图
2. 添加拟合线
# 添加拟合后的光滑曲线
plot(smooth(roc.s100b), add=TRUE, col="blue")
legend("bottomright", legend=c("Empirical", "Smoothed"),
col=c(par("fg"), "blue"), lwd=2)
图3 添加拟合曲线ROC
3. 添加面积
# 添加AUC面积
plot(roc.s100b, print.auc=TRUE, auc.polygon=TRUE, grid=c(0.1, 0.2),
grid.col=c("green", "red"), max.auc.polygon=TRUE,
auc.polygon.col="lightblue", print.thres=TRUE)
图4 ROC图添加AUC
以上ROC曲线,只是针对单个指标的,如果有多个诊断指标该如何绘图呢?另外,针对数据如何添加置信度区间呢?要调整更多样式也挺费功夫的。接下来我们看看基因云平台如何滑溜的实现。
三、平台实现
首先,登入派森诺基因云, 进入【云图汇→ROC曲线】
1. 准备数据
数据第一列为分类诊断结果,其它列为对应的指标的预测值。
图5 数据文件示例
2. 提交绘图
上传数据后,一键提交绘图即可。
图6 提交数据绘图
3. 参数调整
在图表调整里面可以对图表的颜色、线条样式、还可以添加置信度等多种参数的个性化调整。
图7 参数调整页面
添加平滑曲线,通过选择S-G滤波、高阶贝塞尔等方法,可以生成不同精度的拟合曲线。
图8 平滑ROC曲线
置信区间的调整,可以选择误差棒以及面积着色两种形式进行展示。
图9 添加置信区域ROC曲线
更多技术资讯,请关注派森诺官网