Как рассчитать вероятность построения графика плотности?

Aug 17 2020

У меня следующий вопрос: можно ли рассчитать вероятность графика плотности?

Так, например, у меня есть следующий фрейм данных

 test<- data.frame(
  Gruppe = rep(c("Aktien","Aktien"), 
               times=c(136, 37)),
  Zufriedenheit = c(f_keineErf, f_Erf))

и я строю график плотности с функцией de ggplot:

 ggplot(test, aes(x=Zufriedenheit)) +geom_density()

Как я могу рассчитать вероятность, например, получить значение выше 70?

Спасибо!

Ответы

2 AllanCameron Aug 17 2020 at 22:54

Ваши данные не включены в вопрос, поэтому давайте составим небольшую случайную выборку:

library(ggplot2)

set.seed(69)

df <- data.frame(x = rnorm(10))

Теперь мы можем создать график плотности согласно вашему примеру:

p <- ggplot(df, aes(x)) + 
  geom_density() +
  xlim(c(-5, 5))

p

Теперь мы можем найти координаты x и y этой линии, используя базовую функцию R densityи извлекая ее компоненты x и y во фрейм данных:

dens <- density(df$x) d <- data.frame(x = dens$x, y = dens$y)

head(d)
#>           x            y
#> 1 -3.157056 0.0009453767
#> 2 -3.144949 0.0010145927
#> 3 -3.132841 0.0010870523
#> 4 -3.120733 0.0011665920
#> 5 -3.108625 0.0012488375
#> 6 -3.096517 0.0013382316

Мы можем видеть, как это нарисовано красной пунктирной линией, geom_lineэто то же самое, что geom_density:

p + geom_line(data = d, aes(x, y), col = "red", linetype = 2, size = 2) 

Теперь предположим, что мы хотим узнать вероятность того, что значение будет больше единицы. Мы можем показать интересующую нас территорию вот так:

p + geom_area(data = d[d$x >= 1,], aes(x, y), fill = "red")

Поскольку все значения x равномерно распределены в нашем фрейме данных d, тогда доля красной области в области под линией представляет собой простое отношение суммы всех значений y при значениях x больше единицы к общей сумме y:

sum(d$y[d$x > 1])/sum(d$y)
#> [1] 0.1599931

Таким образом, вероятность получить значение x> 1 составляет 0,15999, или 16%.

Создано 17.08.2020 пакетом REPEX (v0.3.0)