【问题标题】:How calculate probabillity of density plot?如何计算密度图的概率?
【发布时间】:2020-12-06 17:08:54
【问题描述】:

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

例如,我有以下数据框

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

谢谢!

【问题讨论】:

  • here来看,你可以得到用于制作geom_density情节的点。你可以在那里工作。

标签: r ggplot2 statistics diagram


【解决方案1】:

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

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,], aes(x, y), 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 创建

【讨论】:

  • 非常感谢!这就是我需要的:-)
最近更新 更多