如何计算R中图的AUC?

Has*_*ama 1 r auc

我有一个数据框(gdata),其中包含函数的x(作为“r”)和y(作为“km”)坐标。当我这样绘制时:

    plot(x = gdata$r, y = gdata$km, type = "l")
Run Code Online (Sandbox Code Playgroud)

我得到了函数的图形: 在此输入图像描述

现在我想计算从 x = 0 到 x = 0.6 的曲线下面积。当我寻找合适的包时,我只找到类似 ROC 曲线的 AUC 计算之类的东西。但是有没有一种方法可以计算普通函数的 AUC?

dan*_*ooo 5

给定数据点集的曲线下面积 (AUC) 可以使用数值积分进行存档:

\n

data是包含 x 和 y 值的数据框。您可以通过积分该函数来获得从下 x0=0 到上 x1=0.6 的曲线下面积,该函数线性逼近您的数据。

\n

这是一个数值近似值,并不精确,因为我们没有无限数量的数据点:因为y=sqrt(x)我们将得到 0.3033,而不是真实值 0.3098。对于 200 行,如果dataauc=0.3096,我们会得到更好的结果。

\n
library(tidyverse)\n\ndata <-\n  tibble(\n  x = seq(0, 2, length.out = 20)\n) %>%\n  mutate(y = sqrt(x))\ndata\n#> # A tibble: 20 \xc3\x97 2\n#>        x     y\n#>    <dbl> <dbl>\n#>  1 0     0    \n#>  2 0.105 0.324\n#>  3 0.211 0.459\n#>  4 0.316 0.562\n#>  5 0.421 0.649\n#>  6 0.526 0.725\n#>  7 0.632 0.795\n#>  8 0.737 0.858\n#>  9 0.842 0.918\n#> 10 0.947 0.973\n#> 11 1.05  1.03 \n#> 12 1.16  1.08 \n#> 13 1.26  1.12 \n#> 14 1.37  1.17 \n#> 15 1.47  1.21 \n#> 16 1.58  1.26 \n#> 17 1.68  1.30 \n#> 18 1.79  1.34 \n#> 19 1.89  1.38 \n#> 20 2     1.41\n\nqplot(x, y, data = data)\n
Run Code Online (Sandbox Code Playgroud)\n

\n
integrate(approxfun(data$x, data$y), 0, 0.6)\n#> 0.3033307 with absolute error < 8.8e-05\n
Run Code Online (Sandbox Code Playgroud)\n

由reprex 包于 2021 年 10 月 3 日创建(v2.0.1)

\n

返回的绝对误差integrate是 corerect,当且仅当每两个数据点之间的现实世界是完美的线性插值,正如我们假设的那样。

\n