搜索以找到覆盖曲线下 95% 面积的两个数字

Search to find two numbers that cover 95% of the area under a curve

背景:

我有两列数字(“dd”列和“yy”列,见下文访问此数据)。当我绘制 "dd"X 轴)对“yy”(Y轴), 使用:

plot(dd, yy, ty="l", xlab = "dd", ylab ="yy", lwd=2, xaxs="i")

我明白了:

编码问题:

"-Inf" 移动到 "0" up 直到其他点覆盖 95%这条曲线下的面积? 换句话说,我们想看到两个数字对应两个箭头提示如果箭头要覆盖这条曲线下 95% 的面积?

这里是 R 代码,可轻松将此小数据 导入您的 Rstudio:

id <- "0B5V8AyEFBTmXM1VIYUYxSG5tSjQ"

Data <- read.csv(paste0("https://docs.google.com/uc?id=",id,"&export=download")) 

编辑:我之前的近似值不是很准确。原来 pracma 包有一个函数,cumtrapz,它用梯形近似积分并输出从左边开始的每个点的和。使用该函数可以给出更准确的答案。

library(pracma)
points <- read.csv(paste0("https://docs.google.com/uc?id=",id,"&export=download")) 
area   <- cumtrapz(points$dd, points$yy)
ind    <- rev(which(area[length(area)] - area > .95))[1]

point  <- points$dd[ind]
point

# [1] -0.06406406