首页 > 解决方案 > R中的密度直方图

问题描述

我是 R 和概率统计的新手。我有一个关于直方图的问题......

hist(rbinom(10000, 10, 0.1), freq=FALSE)

它显示了我不清楚的直方图:

在此处输入图像描述

如果 y 轴是密度,那么总数应该是 %100,我错了吗?
但在直方图中,我可以看到它大于 %100。

标签: rhistogram

解决方案


函数hist返回一个列表对象,其中包含回答问题所需的所有信息。

我将设置 RNG 种子以使示例可重现。

set.seed(1234)
h <- hist(rbinom(10000, 10, 0.1), freq=FALSE)

str(h)
#List of 6
# $ breaks  : num [1:11] 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 ...
# $ counts  : int [1:10] 3448 3930 0 1910 0 588 0 112 0 12
# $ density : num [1:10] 0.69 0.786 0 0.382 0 ...
# $ mids    : num [1:10] 0.25 0.75 1.25 1.75 2.25 2.75 3.25 3.75 4.25 4.75
# $ xname   : chr "rbinom(10000, 10, 0.1)"
# $ equidist: logi TRUE
# - attr(*, "class")= chr "histogram"

相关列表成员是breaksdensity

  1. breaks是长度为 11 的向量,因此有 10 个 bin。
  2. density是一个长度为 10 的向量,每个对应于一个 bin。

现在通过将箱长度乘以各自的密度来计算每个条的面积。

diff(h$breaks)    # bins lengths
# [1] 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5 0.5
h$density*diff(h$breaks)
# [1] 0.3448 0.3930 0.0000 0.1910 0.0000 0.0588 0.0000 0.0112 0.0000 0.0012

总面积:

sum(h$density*diff(h$breaks))
#[1] 1

推荐阅读