Можно ли заранее узнать максимальное значение плотности? - PullRequest
1 голос
/ 15 мая 2019

Рассмотрим следующий пример графика:

mtcars %>% ggplot() + stat_bin(aes(x=wt, y=..density..), binwidth=0.2)

Максимальное значение плотности близко к 0,8. Можно ли узнать его точное значение?

Согласно документации stat_bin, ..density.. представляет плотность точек в бункере, масштабированную для интегрирования до 1 , но это не очень помогает мне понять, как эти значения вычисляются на практике или как получить максимальную точку плотности (поскольку это также зависит от набора binwidth).

Чем ближе я становлюсь:

binwidth = 0.2
((mtcars$wt %/% binwidth)*binwidth) %>% table %>% prop.table %>% max

Но он возвращает значение, наблюдаемое на графике.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 15 мая 2019

Не ясно, к чему относится заранее , но если вы ищете максимум кривой плотности, попробуйте следующее:

dens <- density(mtcars$wt)
plot(dens)

max(dens$y)
## [1] 0.5068726
1 голос
/ 15 мая 2019

вы можете попробовать это

binwidth=0.2
x=mtcars$wt
x_bins <- table(cut(x,breaks=seq(min(x),max(x),by = binwidth)),useNA = "ifany" )
max(x_bins)/(sum(x_bins)*binwidth )
#[1] 0.78125

или

gg_plot <- mtcars %>% ggplot() + stat_bin(aes(x=wt, y=..density..), binwidth=binwidth)
max(ggplot_build(gg_plot)$data[[1]][[1]])
...