繁体   English   中英

如何在没有基础数据的情况下从ROC图计算AUC?

[英]How to calculate the AUC from a ROC plot without the underlying data?

我正在对某些风险评估工具的性能进行荟萃分析。 我的目标是汇总针对特定仪器的几个有效性研究的AUC估计值。 但是,我遇到了一些研究,这些研究本身并没有提供AUC估计,而只是提供了ROC曲线。 在这种情况下,我使用https://apps.automeris.io/wpd/来获取与每个数据点相对应的值。 但是,问题是,即使我具有灵敏度和1特异性的值,并且可以使用R自己绘制ROC曲线,但我不知道要使用哪个函数来计算曲线下面积(AUC) 。 这是因为所有允许我计算AUC的R包/函数都使用基础数据作为输入。 也就是说,预测因子和响应而不是敏感性和1特异性的值。

我已经阅读了R中'pROC'软件包的文档,但没有发现任何帮助。 我想我可以只使用积分()积分绘图曲线下的面积吗? 但是,这样做的问题是,我不会收到AUC的置信区间(这是我的荟萃分析所需要的)。

这是我从一个ROC曲线(通过使用https://apps.automeris.io/wpd/ )生成的数据:

# data table:
AUC_data_1 <- tibble("1-specificity" = c(-0.0031751800795011,
0.05421559172249585, 0.12174003874893036,0.20579144833428253,
0.3012443157265138, 0.502266554865223, 0.6205366469297053,
0.8417661384716209, 
sensitivity = c(0.002260831241825745, 0.16879823941344285,
0.45899739288954267, 0.5804040305755962, 0.7849062327396981,
0.8634686874873007, 0.9710785309748188, 0.9977448923815709))

# roc curve generated from data:
plot(AUC_data_1)

我想根据此ROC曲线计算AUC。 但是,由于我没有基础数据(即响应和预测变量),因此无法在R中使用pROC软件包。

您需要做的第一件事是清理数据。 ROC曲线的起点为(0,0),终点为(1,1)。 如果曲线上缺少这些点,则AUC将被低估。 这是尝试的修复:

AUC_data_1 <- tibble("one.minus.specificity" = c(0,
0.05421559172249585, 0.12174003874893036,0.20579144833428253,
0.3012443157265138, 0.502266554865223, 0.6205366469297053,
0.8417661384716209, 1),
sensitivity = c(0, 0.16879823941344285,
0.45899739288954267, 0.5804040305755962, 0.7849062327396981,
0.8634686874873007, 0.9710785309748188, 0.9977448923815709, 1))

确保您了解从此服务获取的数据的质量和可靠性。

然后,您猜到它只是一个集成游戏。 我喜欢pramma中使用梯形法则的trapz函数:

library(pracma)
trapz(AUC_data_1$one.minus.specificity, AUC_data_1$sensitivity)
[1] 0.6268943

关于不确定性,您应该看一下Obuchowski(1)的工作,该工作将ROC曲线的方差表示为AUC,样本大小和仅通过敏感性和特异性可以获得的双正态拟合参数的函数:

 model <- lm(1-one.minus.specificity~sensitivity, AUC_data_1)

您可以直接在pROC源代码中找到代码 尽管它是私有的,但您应自担风险(该功能不会导出,并且可能随时消失)。 像这样:

A <- coefficients(model)[1]
B <- coefficients(model)[2]
kappa <- n.controls / n.cases # number of case and control observations
# use internal function at your own risk
pROC:::var.params.obuchowski(A, B, kappa) / n.cases
[1] 0.1125403

他们还提出了不需要双正态系数的方法:

A <- qnorm(theta) * 1.414
(0.0099 * exp(-A^2/2)) * ((5 * A^2 + 8) + (A^2 + 8)/kappa) / n.cases
[1] 0.7846169

θ是您在上面计算的曲线的AUC。

  1. 南希·奥布乔斯基(Nancy A. ``涉及双正态ROC曲线指数的诊断性准确研究的样本量确定''。 医学统计学,16(13),1529--1542。 DOI: (SICI)1097-0258(19970715)16:13 <1529 :: AID-SIM565> 3.0.CO; 2-H
  2. Nancy A. Obuchowski,Micharl L. Lieber和Frank H. Wians Jr.(2004年)“临床化学中的ROC曲线:用途,误用和可能的解决方案”。 临床化学,第50期,1181-1125年。 DOI: 10.1373 / clinchem.2004.031823

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM