Вычислить индекс Юдена из двух плотностей - PullRequest
3 голосов
/ 15 июня 2019

Мне нужна помощь в расчете индекса Юдена на графике с двумя плотностями в R. По сути, мне нужно вычислить значение, когда два графика плотности перекрываются (эта красная точка на изображении).Переменные являются числовыми.

enter image description here

Существует ли какой-либо метод для вычисления этого значения (индекс Юдена) ???

1 Ответ

1 голос
/ 15 июня 2019

Мы могли бы расширить это решение , чтобы получить координаты (то есть 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

...