Freedman-Diaconis 规则直方图中的最佳 bin 数量:理论速率与实际数量之间的差异

机器算法验证 直方图 经验法则
2022-04-09 22:51:38

维基百科报告说,在 Freedman 和 Diaconis 规则下,直方图中的最佳箱数应该增长为k

kn1/3

其中是样本大小。n

但是,如果您查看nclass.FDR 中实现此规则的函数,至少使用高斯数据并且当更快的速度增长,更接近(实际上,最佳拟合建议)。这种差异的原因是什么?log(n)(8,16)n1/3n11/3mn0.4


编辑:更多信息:

在此处输入图像描述

该线是 OLS 线,截距为 0.429,斜率为 0.4。在每种情况下,数据 ( x) 都是从标准高斯生成的,并输入到nclass.FD. 该图描绘了向量的大小(长度)与nclass.FD函数返回的最佳类数。

引用维基百科:

成比例的一个很好的理由 如下:假设数据是作为具有平滑密度的有界概率分布的 n 个独立实现获得的。然后直方图保持同样“坚固”,因为 n 趋于无穷大。如果是分布的“宽度”(例如,标准偏差或四分位间距),则 bin 中的单元数(频率)为级,相对标准误差为 nh/s 级与下一个 bin 相比,如果密度的导数不为零,则频率的相对变化为,这两个是相同的顺序n1/3snh/ss/(nh)h/sh阶,所以阶。s/n1/3kn1/3

Freedman–Diaconis 规则是:

h=2IQR(x)n1/3

1个回答

原因在于直方图函数期望包含所有数据,因此它必须跨越数据的范围。

Freedman-Diaconis 规则给出了宽的公式。

该函数给出了bin数量的公式。

bin 的数量和 bin 的宽度之间的关系会受到数据范围的影响。

对于高斯数据,预期范围随增加。n

这是功能:

> nclass.FD
function (x) 
{
    h <- stats::IQR(x)
    if (h == 0) 
        h <- stats::mad(x, constant = 2)
    if (h > 0) 
        ceiling(diff(range(x))/(2 * h * length(x)^(-1/3)))
    else 1L
}
<bytecode: 0x086e6938>
<environment: namespace:grDevices>

diff(range(x))是数据的范围。

如我们所见,它将数据范围除以 FD 公式的 bin 宽度(并向上取整)以获得 bin 的数量。

看来我可以更清楚,所以这里有一个更详细的解释:
实际的 Freedman-Diaconis 规则不是针对 bin 数量的规则,而是针对 bin-width 的规则。通过他们的分析,bin 宽度应该与成正比。由于直方图的总宽度必须与样本范围密切相关(它可能会更宽一些,因为四舍五入到很好的数字),并且预期范围随变化,因此 bin 的数量与bin-width,但必须比这更快。因此,bin 的数量不应增长为 - 接近它,但要快一点,因为范围进入它的方式。n1/3nn1/3

查看来自 Tippett 的 1925 表 [1] 的数据,标准正态样本的预期范围似乎随着的增长而缓慢增长,尽管 - 甚至比慢:nlog(n)

在此处输入图像描述

(实际上,变形虫在下面的评论中指出,它应该与成比例 - 或几乎成比例,它的增长速度比您在问题中的分析似乎暗示的要慢。这让我想知道是否有出现了其他一些问题,但我尚未调查此范围效应是否完全解释了您的数据。)log(n)

快速浏览一下 Tippett 的数字(最高 n=1000)表明,高斯的预期范围非常接近于超过的线性,但似乎实际上与此范围内的值不成比例。log(n)10n1000

在此处输入图像描述

[1]:LHC 蒂皮特 (1925)。“关于极端个体和从正常人群中抽取的样本范围”。生物计量学 17 (3/4): 364–387