You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R中计算普通函数曲线的AUC(曲线下面积)

普通函数曲线指定区间AUC计算方法(R语言)

普通函数曲线的AUC本质就是指定x区间内的数值定积分,可通过以下几种方式实现:

方法1:基础R实现梯形法(无需额外安装包)

梯形法是最通用的数值积分方法,将相邻两个坐标点之间的区域视作梯形,累加所有梯形面积即可得到AUC,操作步骤如下:

  1. 先筛选x在0-0.6区间的观测,并按x值升序排序,避免x轴顺序错乱导致计算误差
# 筛选区间内数据并排序
sub_data <- gdata[gdata$r >= 0 & gdata$r <= 0.6, ]
sub_data <- sub_data[order(sub_data$r), ]
  1. 执行梯形法计算AUC
auc_val <- sum(diff(sub_data$r) * (head(sub_data$km, -1) + tail(sub_data$km, -1)) / 2)

输出的auc_val就是目标区间的曲线下面积。

方法2:使用pracma包的封装函数

如果不想手动写梯形法逻辑,可以使用pracma包的trapz函数直接计算,结果和基础R实现完全一致:

# 首次使用需先安装包:install.packages("pracma")
library(pracma)
auc_val <- trapz(sub_data$r, sub_data$km)

方法3:插值后定积分(适合稀疏数据场景)

如果你的原始数据点非常稀疏,直接用梯形法误差较大,可以先通过样条插值拟合出平滑的曲线函数,再计算定积分:

# 用已筛选排序的sub_data拟合样条函数
f <- splinefun(sub_data$r, sub_data$km)
# 计算0到0.6区间的定积分
auc_val <- integrate(f, lower = 0, upper = 0.6)$value

内容的提问来源于stack exchange,提问作者Hashriama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:36:03