【问题标题】:Find the common area between two graphs with multiple intersection points找到具有多个交点的两个图之间的公共区域
【发布时间】:2019-11-11 16:46:23
【问题描述】:

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

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

plot(x1)
lines(x2)

是否有任何函数可以使用 R 找到这两个图的公共区域?

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

谢谢

【问题讨论】:

标签: r plot area integral kernel-density


【解决方案1】:

如果将两个密度用于 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')

取积分意味着只需将每个 pmin 乘以 x 序列中的增量并将手数相加:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-28
    • 2019-11-27
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2013-12-04
    • 1970-01-01
    相关资源
    最近更新 更多