查找两条曲线之间的重叠区域

Find area of overlap between two curves

我一直在努力寻找找到两条曲线之间重叠区域的解决方案。我不是在处理具有已知参数的概率密度函数,而是通过平滑经验数据点获得的曲线。

我发现的唯一提示是计算不是 over-lapping 的区域,如此代码(来自 here):

x <- seq(-6,6,by = 0.01)
y1 <- dnorm(x,0,1)
y2 <- pnorm(x,1,1.1)
f1 <- approxfun(x, y1-y2)
f2 <- function(z) abs(f1(z))
dif <- integrate(f2, min(x), max(x))

plot(x,y1,type="l",ylim=c(0,1))
lines(x,y2,type="l",col="red")
polygon(c(x,rev(x)),c(y1,rev(y2)), col="skyblue")

这本质上是曲线之间的区域,但我需要的不是突出显示的蓝色区域而是白色区域in-between。所以重叠的面积。

我在一位数学家的博客上读到必须找到两条曲线的交点,但我在 R 中也找不到如何做到这一点。

希望有人能帮助我。

任何建议都有帮助。不过我提前道歉,我不是数学专家。

随心所欲

z <- c(y2[y2 < y1], y1[y1 < y2])
polygon(x, z, col="skyblue")

.

这是最小的积分:

x <- seq(-6,6,by = 0.01)
y1 <- dnorm(x,0,1)
y2 <- pnorm(x,1,1.1)
f <- approxfun(x, pmin(y1,y2))
integrate(f, min(x), max(x))