如何计算密度图的概率?

问题描述

我有以下问题:是否可以计算密度图的概率?

例如,我有以下数据框

 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的值的概率?

谢谢!

解决方法

您的数据不包含在问题中,所以让我们组成一个小的随机样本:

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) 

现在假设我们想知道一个值大于1的概率。我们可以这样显示我们感兴趣的区域:

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

由于x值在我们的数据帧d中均等间隔,因此红色区域占线下面积的比例是x值大于1时所有y值之和与之的简单比值。 y的总和:

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

因此x值> 1的概率为0.15999,即16%

reprex package(v0.3.0)于2020-08-17创建