二维直方图的最佳 bin 宽度

机器算法验证 优化 直方图
2022-02-28 17:36:34

在 1D 直方图中选择最佳 bin 宽度有很多规则(参见示例

我正在寻找一个规则,将最佳等箱宽度的选择应用于二维直方图。

有这样的规定吗?也许一维直方图的著名规则之一可以很容易地适应,如果是这样,你能否提供一些关于如何做到这一点的最小细节?

2个回答

鉴于您有固定数量数据(即,您在两个维度上具有相同数量的读数),您可以立即使用:N

  1. 四舍五入的平方根规则(),(即Excel-way :))N
  2. Sturges 规则 ( ),log2N+1
  3. 其他一些仅基于可用数据点数量的规则(例如 Rick 规则)。

在每个维度上找到共同的 bin 数量M

另一方面,您可能想尝试更健壮的方法,例如Freedman–Diaconis 规则,该规则本质上将带宽定义为:h

h=2IQR(x)N1/3 ,

其中 IQR 是数据的四分位数范围然后,您计算沿每个维度的箱数等于:xM

M=(max(x)min(x))/h

您可以在数据的两个维度上执行此操作;这为您提供了两个可能不同的 bin 数量,它们“应该”在每个维度上使用。天真地选择了较大的,因此您不会“丢失”信息。x

然而,第四个选项是尝试将您的样本视为原生二维,计算每个样本点的范数,然后对样本的范数执行 Freedman–Diaconis 规则。IE。:

xnew=x12+x22

好的,这是我描述的程序的一些代码和图表:

rng(123,'twister');     % Fix random seed for reproducibility
N = 250;                % Number of points in our sample

A = random('normal',0,1,[N,2]);  % Generate a N-by-2 matrix with N(0,1)
A(:,2) = A(:,2) * 5;             % Make the second dimension more variable


% The sqrt(N) rule:    
nbins_sqrtN = floor(sqrt(N));

% The Sturges formula:    
nbins_str = ceil(log2(N) +1);

% The Freedman–Diaconis-like choice:    
IQRs = iqr(A);              % Get the IQ ranges across each dimension
Hs = 2* IQRs* N^(-1/3);     % Get the bandwidths across each dimension
Ranges = range(A);          % Get the range of values across each dimension
% Get the suggested number of bins along each dimension
nbins_dim1 = ceil(Ranges(1)/Hs(1)); % 12 here
nbins_dim2 = ceil(Ranges(2)/Hs(2)); % 15 here
% Get the maximum of the two
nbins_fd_1 = max( [nbins_dim1, nbins_dim2]);


% The Freedman–Diaconis choice on the norms

Norms = sqrt(sum(A.^2,2));        % Get the norm of each point in th 2-D sample
H_norms = 2* iqr(Norms)* N^(-1/3);% Get the "norm" bandwidth
nbins_fd_2 = ceil(range(Norms)/ H_norms);   % Get number of bins 

[nbins_sqrtN nbins_str nbins_fd_1 nbins_fd_2]

% Plot the results / Make bivariate histograms
% I use the hist3 function from MATLAB
figure(1);
subplot(2,2,1);
hist3(A,[ nbins_sqrtN nbins_sqrtN] );
title('Square Root rule');

subplot(2,2,2);
hist3(A,[ nbins_str nbins_str] );
title('Sturges formula rule');

subplot(2,2,3);
hist3(A,[ nbins_fd_1 nbins_fd_1]);
title('Freedman–Diaconis-like rule');

subplot(2,2,4);
hist3(A,[ nbins_fd_2 nbins_fd_2]);
title('Freedman–Diaconis rule on the norms');

在此处输入图像描述

正如其他人所指出的那样,平滑几乎肯定更适合这种情况(即获得 KDE)。我希望这能让您了解我在评论中描述的关于一维样本规则到二维样本规则的直接概括(可能带来的所有问题)的概念。值得注意的是,大多数程序确实假设样本中存在某种程度的“正态性”。如果您有一个明显不是正态分布的样本(例如,它是 leptokurtotic),那么这些过程(即使在一维中)将非常失败。

我的建议通常是,在可能的情况下进行平滑比一维更重要,即进行核密度估计(或其他类似方法,如对数样条估计),这往往比使用更有效直方图。正如 whuber 指出的那样,很可能会被直方图的外观所迷惑,尤其是在很少的 bin 和小到中等的样本大小的情况下。

例如,如果您要优化均方积分平方误差 (MISE),则有适用于更高维度的规则(箱的数量取决于观察的数量、方差、维度和“形状”),对于核密度估计和直方图。

[事实上,一个问题的许多问题也是另一个问题,因此这篇维基百科文章中的一些信息将是相关的。]

这种对形状的依赖似乎意味着要进行最佳选择,您已经需要知道您正在绘制什么。但是,如果您准备做出一些合理的假设,您可以使用这些假设(例如,有些人可能会说“近似高斯”),或者,您可以使用某种形式的“插件”估计器功能性的。

Wand, 1997 涵盖了一维情况。如果您能够获得那篇文章,请尽可能多地查看与更高维度的情况相关的内容(就所做的分析而言)。(如果您无法访问该期刊,它以工作文件形式存在于互联网上。)[1]

更高维度的分析稍微复杂一些(与从一维到 r 维度进行核密度估计的方式几乎相同),但是维度中有一个项是 n 的幂。

Scott, 1992 的 Sec 3.4 Eqn 3.61 (p83)给出了渐近最优的 binwidth:[2]

h=R(fk)1/2(6i=1dR(fi)1/2)1/(2+d)n1/(2+d)

其中 是粗糙度项(不是唯一可能的项),我相信R(f)=Rdf(x)2dxfifithx

因此,对于 2D,它建议 binwidth 缩小为n1/4

在独立正态变量的情况下,近似规则是,其中是维度的 binwidth ,表示渐近最优值,和是维度的总体标准差。hk3.5σkn1/(2+d)hkkσkk

对于具有相关性的二元正态,binwidth 为ρ

hi=3.504σi(1ρ2)3/8n1/4

当分布偏斜、重尾或多峰分布时,通常会产生更小的 binwidth;因此,正常结果通常最多是 bindwith 的上限。

当然,您完全有可能对均方积分平方误差不感兴趣,而是对其他一些标准感兴趣。

[1]:Wand,MP (1997),
“基于数据的直方图箱宽度选择”,
美国统计学家 51 , 59-64

[2]:Scott, DW (1992),
多元密度估计:理论、实践和可视化
John Wiley & Sons, Inc.,美国新泽西州霍博肯。