Найти область перекрытия между двумя кривыми - PullRequest
1 голос
/ 04 марта 2020

Я изо всех сил пытался найти решение, чтобы найти область перекрытия между двумя кривыми. Я имею дело не с функциями плотности вероятности с известными параметрами, а с кривыми, полученными из сглаживания точек эмпирических данных.

Единственный совет, который я нашел, - это вычислить область, которая не перекрывается, как в этом коде (из здесь ):

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")

enter image description here

По сути, это область между кривыми, но мне нужен не выделенный синий площадь, но белая область между ними. Таким образом, область перекрытия.

Я читал, что нужно найти пересечения двух кривых в блоге математика, но я также не могу найти, как это сделать в R.

Надеюсь, кто-то может помочь мне.

Любые предложения полезны. Я заранее извиняюсь, я не специалист по математике.

Ответы [ 2 ]

2 голосов
/ 04 марта 2020

Это интеграл от минимума:

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))
0 голосов
/ 04 марта 2020

Просто сделай

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

.

enter image description here

...