R中的直方图和密度

时间:2016-03-02 02:39:03

标签: r

谁可以向我解释这个? 如果我运行以下

repet <- 10000
size <- 100
p <- .5
data <- (rbinom(repet, size, p) - size * p) / sqrt(size * p * (1-p))
hist(data, freq = FALSE)
x = seq(min(data) - 1, max(data) + 1, .01)
lines(x, dnorm(x), col='green', lwd = 4)

然后我得到了直方图和理论密度的合理一致性(由于中心极限定理)。

enter image description here

如果我使用

hist(data, breaks = 100, freq = FALSE)

直方图与理论密度有显着差异。

enter image description here

当我将休息次数从51增加到52时,会发生这种行为变化。为什么会发生?

2 个答案:

答案 0 :(得分:1)

与您从rbinom生成的数据不连续这一事实有关。这是离散的。那里只有~35个离散值(set.seed(15)length(unique(data)))。当您强制直方图有100个中断时,您会发现其中许多bin最终为空

sum(hist(data, breaks = 100, freq = FALSE)$counts==0)
# [1] 36

因此,如果你注意到第二个直方图有一个条形,那么一个空格(对于一个高度为0的条形图),重复。对于两个直方图,曲线下的总面积必须相同,但因为第二个图中的条形宽度是一半,所以它们需要两倍。

所有这一切的要点是在使用具有离散数据的直方图时要小心。它们用于连续数据。此外,您选择的垃圾箱数量可能会对解释产生很大影响。如果更改默认值,则应该有充分的理由这样做。

答案 1 :(得分:1)

神秘在于理解你的数据,这不是情节的问题。

查看data中的值 - 精度限制为单位的十分之一。因此,如果您有太多的垃圾箱,一些垃圾箱将落在数据点之间,并且点击次数为零。其他人的密度会相应提高。

在您的实验中,由于breaks ...

,会产生不连续的效果
  

仅供参考;断点将设置为漂亮的值

如果您希望数据中包含更多独特点,请将传递给size的{​​{1}}的值增加。

相关问题