r - 查找具有多个交点的两个图之间的公共(public)区域

标签 r plot area integral kernel-density

我有以下 2 个变量的模拟数据。我创建的密度图如下,

set.seed(1)
x1=density(rnorm(100,0.5,3))
x2=density(rnorm(100,1,3))

plot(x1)
lines(x2)

enter image description here

是否有任何函数可以使用 R 来查找这两个图的公共(public)区域?

我需要对相交点进行积分吗?

谢谢

最佳答案

如果将两种密度用于 x 值的序列设置为相同,则可以对 y 值使用 pmin。 (调用 str(x1) 查看它们是如何存储的。)例如,查看它是如何工作的:

set.seed(1)
x1 <- density(rnorm(100,0.5,3), from = -10, to = 10, n = 501)
x2 <- density(rnorm(100,1,3), from = -10, to = 10, n = 501)

plot(x2, main = 'Density intersection')
lines(x1)
polygon(x1$x, pmin(x1$y, x2$y), 20, col = 'dodgerblue')

density intersection

求积分意味着只需将每个 pmin 乘以 x 序列中的增量并求和:

sum(pmin(x1$y, x2$y) * diff(x1$x[1:2]))
#> [1] 0.896468

关于r - 查找具有多个交点的两个图之间的公共(public)区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56828701/

相关文章:

javascript - HTML 标记中的区域蓝色轮廓?

jquery - 查找并替换文本区域中的所有匹配字符串

r - 面板数据中的每月协方差计算 -r

r - dplyr 0.5.0 使用列索引进行变异

r - 在 R 中绘制 SVM 线性分离器

matlab - 如何在 MATLAB 中绘制没有黑边的曲面图?

r - split 和 data.table 的问题

R:将单列数据框的特定行重新排列到新列中

r - 如何在R中制作3D直方图

Javascript - 查找矩阵中的最大面积