밀도 플롯의 확률을 어떻게 계산합니까?

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

이제 기본 R 함수를 사용 density하고 x 및 y 구성 요소를 데이터 프레임으로 추출 하여이 선의 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있으므로 선 아래 영역의 빨간색 영역 비율은 1보다 큰 x 값에서 모든 y 값의 합계와 y의 총합의 단순한 비율입니다.

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

따라서 x 값> 1을 얻을 확률은 0.15999 또는 16 %입니다.

reprex 패키지 (v0.3.0)에 의해 2020-08-17에 생성됨