搜索以找到覆盖曲线下 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
背景:
我有两列数字(“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