Найти общую область между двумя графиками с несколькими точками пересечения - PullRequest
1 голос
/ 01 июля 2019

У меня есть следующие смоделированные данные следующих 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

Есть ли какая-нибудь функция, которую можно использовать для поиска общей области для этих 2 графиков, используя R?

Нужно ли выполнять интеграцию для пересекающихся точек?

Спасибо

1 Ответ

2 голосов
/ 01 июля 2019

Если вы установите последовательность, которую обе плотности используют для значений 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

Взятие целых значений означает просто умножение каждого pmin умножение приращения на последовательность x и суммирование лота:

sum(pmin(x1$y, x2$y) * diff(x1$x[1:2]))
#> [1] 0.896468
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...