Мы могли бы расширить это решение , чтобы получить координаты (то есть y
тоже) для пересечения точка .
Соответственно, сначала эти два распределения должны быть объединены и проиндексированы, а минимальные и максимальные значения рассчитаны для их сопоставимости.
Во-вторых, используйте density
, чтобы вычислить оценки плотности ядра для каждого распределения.
Координаты, которые мы можем получить с помощью which(diff((d2$y - d1$y) > 0) != 0) + 1
для x
и y
, как показано ниже.
set.seed(42)
n <- 1e3
dat <- data.frame(v=c(rnorm(n, 1, 3), rnorm(n, 5, 3)),
grp=rep(1:2, each=n))
lo <- min(dat$v)
up <- max(dat$v)
d1 <- density(dat$v[dat$grp == 1], from=lo, to=up, n=2^10)
d2 <- density(dat$v[dat$grp == 2], from=lo, to=up, n=2^10)
intersection.point <- cbind(x=d1$x[which(diff((d2$y - d1$y) > 0) != 0) + 1],
y=d1$y[which(diff((d2$y - d1$y) > 0) != 0) + 1])
Участок
plot(d1, ylim=c(0, .14), main="Intersection point")
lines(d2)
points(intersection.point, col="red", pch=19)
legend("topright", pch=19, col="red", legend="intersection point")
![enter image description here](https://i.stack.imgur.com/YYH3n.png)