具有单个数字中断的hist函数导致大于指定的bin或interval。有谁知道为什么?

时间:2014-10-21 13:26:11

标签: r

其中一个hist()函数参数是breaks。它可以是许多选项中的任何一个,其中一个是指定中断次数的单个数字。在我的例子中,我指定了单个数字10.

为什么我有时会收到10个以上的垃圾桶?在这种情况下,15个间隔而不是10个间隔,与指定数量相比有显着偏差50%。

x <- c(98.75,97.92,98.80,98.14,98.95,98.30,98.98,98.47,99.41,98.92,99.25,99.07,99.73,
99.01,100.70,99.95)
findInterval(x,hist(x,10,plot=F)$breaks)

结果是:

[1] 5 1 5 2 6 3 6 4 9 6 8 7 10 7 15 11

我预计最大间隔为10而不是15,任何人都可以解释导致15个间隔的逻辑,尽管我指定数字10用于休息吗?

问题Specify number of bins in hist() in R?提出了类似的问题,但我认为他的例子不够明确。其中一条评论是,为箱子指定的10号是一个建议,似乎这是对事实最接近的答案,但我不确定。

我不一定要有10个箱子,我可以忍受15个箱子,但我正在努力理解逻辑,所以当我使用这个功能时我会知道会发生什么。

1 个答案:

答案 0 :(得分:2)

如果您将一个号码传递给breaks参数,hist会使用pretty来计算休息时间:

x <- c(98.75,97.92,98.80,98.14,98.95,98.30,98.98,98.47,99.41,98.92,99.25,99.07,99.73,
       99.01,100.70,99.95)
length(pretty(range(x), n = 10, min.n = 1))
#[1] 16
#== 15 bins

identical(hist(x, breaks=10)$breaks,
          pretty(range(x), n = 10, min.n = 1))
#[1] TRUE

如果您想拥有确切数量的分档,则需要将显式分隔值传递给hist

length(hist(x, breaks = seq(min(x), max(x), length.out=11))$breaks)
#[1] 11

help("hist")中记录了这一点:

  

休息

     

其中一个:

     

给出直方图单元格之间断点的矢量

     

计算断点向量的函数,

     

一个数字,给出直方图的单元格数,

     

命名算法以计算单元格数的字符串   (参见'详情'),

     

计算细胞数的函数。

     

在最后三个案例中,这个数字只是一个建议;该   断点将设置为漂亮的值。如果休息是一个功能,那么   x向量作为唯一参数提供给它。