直方图bin数目的选择

bin 的数目(k)对直方图的展示效果有着明显的影响,但目前并没有一种“最好”的方法来确定 bin 的数目。常用的几种方法包括:

Square-root choice

k=n

其中 n 为样本数,若 k 为小数,则向上取整。

Sturges' formula

Sturges' formula 假设数据服从正态分布,在 n<30 以及数据不服从正态分布的情况也可能表现不佳;同时该方法在较大的数据集中可能给出较大的 bin 宽度(即较少的 bin),导致图形过于平滑。

k=log2n+1

Rice rule

Rice rule 是一种 Sturges' formula 的简单替换。

k=2n3

Doane's formula

Doane's formula 是一种 Sturges' formula 的改进版,以提高在非正态数据上的适用性,因此比较推荐这种方法。

k=1+log2(n)+log2(1+|g1|σg1)

其中,g1 是偏度(三阶矩估计)

σg1=6(n2)(n+1)(n+3)

Scott's normal reference rule

Scott's normal reference rule 比较适用于从正态分布数据中随机抽取的样本。

h=3.49σ^n3,k=max(x)min(x)h

其中,h 为每个 bin 的宽度,σ^ 为样本标准差。

Freedman–Diaconis' choice

Freedman–Diaconis' choice 是一种 Scott's normal reference rule 的改进型,用四分位距来代替样本标准差,可以降低离群值的干扰。

h=2IQR(x)n3k=max(x)min(x)h

其中,四分位距 IQR=Q3Q1

应用场景

  1. 对于基本服从正态分布的数据,可以选用 Scott's normal reference rule
  2. 对于不服从正态分布的数据,可以选用 Doane's formula
  3. 对于拖尾分布,可以选用 Freedman–Diaconis' choice
  4. 当数据中都是整数时(即不连续分布),可以参考 matlab 的整数规则
MATLAB 整数规则

整数规则对整数数据有用,因为它为每个整数创建一个 bin。它使用 bin 宽度 1 并将 bin 边界放在整数的中间。为避免无意间创建太多 bin,可以使用该规则创建 65536 (216) 个 bin 的限制。如果数据范围大于 65536,则整数规则改用更宽的 bin。