1Dヒストグラムで最適なビン幅を選択するための多くのルールがあります(例を参照)
2次元のヒストグラムに最適な等ビン幅の選択を適用するルールを探しています。
そのようなルールはありますか?おそらく、1Dヒストグラムのよく知られたルールの1つは簡単に適応できます。
1Dヒストグラムで最適なビン幅を選択するための多くのルールがあります(例を参照)
2次元のヒストグラムに最適な等ビン幅の選択を適用するルールを探しています。
そのようなルールはありますか?おそらく、1Dヒストグラムのよく知られたルールの1つは簡単に適応できます。
回答:
私のアドバイスは一般に、可能な場合は平滑化すること、つまりカーネル密度推定(またはログスプライン推定などの他のメソッド)を実行することが1-Dよりもさらに重要であるということです。ヒストグラム。whuberが指摘しているように、ヒストグラムの外観にだまされる可能性は非常に高いです。
たとえば、平均積分二乗誤差(MISE)を最適化しようとしている場合、より高い次元に適用されるルールがあります(ビンの数は、観測数、分散、次元、および「形状」に依存します)。カーネル密度推定とヒストグラムの両方。
[確かに、一方の問題の多くはもう一方の問題でもあるので、このウィキペディアの記事の情報のいくつかは関連があります。]
この形状への依存は、最適に選択するためには、何をプロットするかをすでに知っている必要があることを意味するようです。ただし、妥当な仮定を行う準備ができている場合は、それらを使用できます(たとえば、「おおよそガウス」と言う人もいます)。あるいは、適切な「プラグイン」推定器を使用できます。機能的。
ワンド、1997 は1次元のケースをカバーしています。その記事を入手できた場合は、より高い次元の状況にも関連するもの(可能な限りの分析について)を調べてください。(ジャーナルにアクセスできない場合は、インターネット上のワーキングペーパー形式で存在します。)
高次元での分析はやや複雑ですが(カーネル密度推定の1次元からr次元に進むのとほとんど同じように)、次元にはnのべき乗になる項があります。
1992年スコットのセクション3.4 Eqn 3.61(p83)は漸近的に最適なビン幅を与えます:
ここで、 は粗さの項であり(唯一の可能なものではありません)、はに関するの導関数であると思います項。
したがって、として縮小するビン幅を示唆する2Dの。
独立通常の変数の場合には、近似ルールが、寸法にビン幅であり、、、漸近的に最適値を示しそして、、ディメンションの人口標準偏差である。
相関がある 2変量正規の場合、ビン幅は
分布が歪んでいる、または裾が重い、またはマルチモーダルである場合、一般にはるかに小さいビン幅が得られます。その結果、通常の結果は、多くの場合、bindwithの上限にすぎません。
もちろん、平均積分二乗誤差ではなく、他の基準に関心がないことは完全に可能です。
[1]:ワンド、MP(1997)、
"ヒストグラムのビン幅のデータ・ベースの選択"、
アメリカの統計学者 51、59-64
[2]:スコット、DW(1992)、
多変量密度推定:理論、実践、および視覚化、
John Wiley&Sons、Inc.、ホーボーケン、ニュージャージー州、米国。
固定数のデータがある場合(つまり、両方の次元で同じ数の読み取りがある場合)、すぐに使用できます。
各次元でビンの共通数を見つける。
一方で、基本的に帯域幅ように定義するFreedman–Diaconisルールのようなより堅牢なものを試してみるとよいでしょう。
、
ここで、IQRはデータ四分位範囲です。次に、各次元に沿ったビンの数を次の値に等しいものとして計算します。
。
データ両方の次元にわたってこれを行います。これにより、各次元で使用する必要がある2つの、場合によっては異なる数のビンが得られます。あなたは、単純にあなたが情報を「失う」しませんので、大きい方を取ります。
それでも、4番目のオプションは、サンプルをネイティブの2次元として扱い、各サンプルポイントのノルムを計算してから、サンプルのノルムに対してフリードマンダイアコニスルールを実行することです。つまり:
OK、ここに私が説明する手順のコードとプロットがあります:
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を取得する)。1次元のサンプルルールから2次元のサンプルルールへの直接的な一般化(それに伴うすべての問題を含む)に関するコメントで私が説明したことについて、これがあなたにアイデアを与えると思います。特に、ほとんどの手順では、サンプルにある程度の「正常性」があると想定しています。明らかに正常に分布していないサンプルがある場合(例:レプトクール)、これらの手順(1-Dでも)は非常に失敗します。