Если вы установите последовательность, которую обе плотности используют для значений x, чтобы они были идентичными, вы можете использовать pmin
для значений y.(Позвоните по номеру 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](https://i.imgur.com/8eGsLOE.png)
Взятие целых значений означает просто умножение каждого pmin
умножение приращения на последовательность x и суммирование лота:
sum(pmin(x1$y, x2$y) * diff(x1$x[1:2]))
#> [1] 0.896468