r - 如何在r中获得曲线下的面积或integral

我有一条曲线作为下面的数据,我想计算由 x 和 y 点构成的这条曲线的曲线 (integral) 下的面积。下面的方法正确吗?在不知道曲线功能的情况下,如何计算特定区间内曲线下的面积?我将通过重复测量对每个人的其余数据重复此操作。另外,我需要计算第一个和第二个 derivative values 的曲线下面积。感谢您的意见。我应该这样做吗?

structure(list(x = c("76.37", "76.89", "77.36", "77.86", "78.86", 
                 "79.37", "79.87", "80.36", "80.5", "81.2"), 
           y = c("2.1", "2.29", "2.47", "2.65", "2.82", "2.99", "3.16", "3.31", "3.46", "3.5")), 
      class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,-10L))


library(pracma)
AUC = trapz(data$x,data$y)

回答1

您可以近似函数,因此使用 approxfun 进行线性插值

integrate(approxfun(df$x, df$y), min(df$x), max(df$x))
13.78885 with absolute error < 0.00049

请注意,该区域的粗略近似会产生更接近此的数字。这假设该区域是梯形的。

prod(sapply(df, \(x)diff(range(x))))/2 + diff(range(df$x)) * min(df$y)
[1] 13.524

相似文章