@创建于:20201216
@修改于:20201216,20210813
文章目录
1、直方图分bin的必要性
在python、matlab、ROOT(https://root.cern.ch/)语言中,画直方图(histogram)来观察众多事例的整体分布是一种非常有效的方式。为了更客观且较好的方式反映数据本身的分布形态,需要对bin数(bin等宽情况)进行合理设置,尽量避免个人主观行为。
诚然,对于一个直方图来说,没有所谓的最佳区间间隔个数,不同的区间间隔大小会揭示数据样本不同的数值特性。这就需要对特定的需求进行确定。
特别说明:
对于bin不等宽的情况(ROOT中有),则需要另行探讨。本博客所列出的方法有待进一步的探讨,本处不进一步深入研究。
2、计算bin数的方法
本处介绍四种计算小区间间隔个数的方法,分别是 SquareRoot,scott,freedmanDiaconis 和 sturges。这里的每个小区间间隔又称为 bin,所有的小区间间隔组成的数组称为 bins。
2.1 SquareRoot
SquareRoot(开根号)方法是一个广泛用的方法,开根号的对象是事例数的个数 n。
b i n s _ n u m b e r = [ n ] bins\_number = [\sqrt n] bins_number=[n]
式中,[]表示四舍五入取整数;n表示的是事例数;下同。
2.2 Sturges
Sturges方法较简单,容易理解。是普遍适用的方法之一。
b i n s _ n u m b e r = [ l o g 2 n + 1 ] bins\_number = [log_2^n+1] bins_number=[log2n+1]
2.3 Freedman-Diaconis
Freedman-Diaconisf方法偏向适用于长尾分布的数据,因为其对数据中的离群值不敏感。
b i n s _ w i d t h = 2 I Q R ( x ) n 1 3 bins\_width = 2 \frac {IQR(x)} {n^ \frac 1 3} bins_width=2n31IQR(x)
式中,x表示事例的数值分布情况。
2.4 Scott
Scott方法适用于数据接近正态分布的情形,也可以适用于其他分布情形。
b i n s _ w i d t h = 3.5 σ n 1 3 bins\_width = \frac {3.5 \sigma} {n^ \frac 1 3} bins_width=n313.5σ
3、Histogram – The Ultimate Guide of Binning
Histogram – The Ultimate Guide of Binning