Lebar bin optimal untuk histogram dua dimensi

8

Ada banyak aturan untuk memilih lebar nampan optimal dalam histogram 1D (lihat misalnya )

Saya mencari aturan yang menerapkan pemilihan lebar bin sama optimal pada histogram dua dimensi .

Apakah ada aturan seperti itu? Mungkin salah satu aturan terkenal untuk histogram 1D dapat dengan mudah diadaptasi, jika demikian, dapatkah Anda memberikan sedikit detail tentang cara melakukannya?

Gabriel
sumber
Optimal untuk tujuan apa? Harap perhatikan juga bahwa histogram 2D ​​akan mengalami masalah yang sama dengan yang terlihat pada histogram biasa sehingga Anda mungkin ingin mengalihkan perhatian Anda ke alternatif seperti perkiraan kepadatan kernel.
whuber
1
Apakah ada alasan mengapa Anda tidak akan mengadaptasi sesuatu yang sederhana seperti aturan atau rumus Sturges 'untuk masalah Anda secara langsung? Di sepanjang setiap dimensi Anda memiliki jumlah bacaan yang sama. Jika Anda menginginkan sesuatu yang sedikit lebih canggih (misalnya aturan Freedman-Diaconis), Anda dapat "secara naif" mengambil maks antara jumlah tempat sampah yang dikembalikan untuk setiap dimensi secara mandiri. Anda pada dasarnya mencari ke dalam diskrit (2d) KDE jadi mungkin itu adalah pilihan terbaik Anda. (n)
usεr11852
Untuk tujuan tidak harus memilih lebar bin secara manual maka secara subjektif? Untuk memilih lebar yang akan menggambarkan data yang mendasarinya dengan tidak terlalu banyak noise dan tidak terlalu halus? Saya tidak yakin saya mengerti pertanyaan Anda. Apakah "optimal" kata yang terlalu samar? Interpretasi lain apa yang bisa Anda lihat di sini? Bagaimana lagi yang bisa saya sampaikan pertanyaan itu? Ya, saya mengetahui tentang KDE tetapi saya membutuhkan histogram 2D.
Gabriel
@ usεr11852 Bisakah Anda memperluas komentar Anda dalam suatu jawaban, mungkin dengan beberapa perincian lainnya?
Gabriel
@ Glen_b dapatkah Anda menuliskannya dalam bentuk jawaban? Pengetahuan saya tentang statistik sangat terbatas dan banyak hal yang Anda sampaikan tepat di kepala saya, sehingga banyak detail mungkin akan dihargai.
Gabriel

Jawaban:

4

Saran saya umumnya adalah bahwa itu bahkan lebih penting daripada dalam 1-D untuk memuluskan jika memungkinkan yaitu melakukan sesuatu seperti estimasi kepadatan kernel (atau beberapa metode lain, seperti estimasi log-spline), yang cenderung jauh lebih efisien daripada menggunakan histogram. Seperti yang ditunjukkan oleh whuber, sangat mungkin untuk dibodohi oleh penampilan histogram, terutama dengan beberapa nampan dan ukuran sampel kecil hingga sedang.

Jika Anda mencoba untuk mengoptimalkan mean squared error kuadrat (MISE), katakanlah, ada aturan yang berlaku di dimensi yang lebih tinggi (jumlah tempat sampah tergantung pada jumlah pengamatan, varians, dimensi, dan "bentuk"), untuk estimasi kepadatan kernel dan histogram.

[Memang banyak masalah untuk satu juga masalah untuk yang lain, sehingga beberapa informasi dalam hal ini artikel wikipedia akan relevan.]

Ketergantungan pada bentuk ini tampaknya menyiratkan bahwa untuk memilih secara optimal, Anda sudah perlu tahu apa yang Anda rencanakan. Namun, jika Anda siap untuk membuat beberapa asumsi yang masuk akal, Anda dapat menggunakannya (jadi misalnya, beberapa orang mungkin mengatakan "kira-kira Gaussian"), atau sebagai alternatif, Anda dapat menggunakan beberapa bentuk penduga "plug-in" yang sesuai. fungsional.

Wand, 1997 mencakup kasus 1-D. Jika Anda bisa mendapatkan artikel itu, lihat apa yang ada juga relevan dengan situasi di dimensi yang lebih tinggi (sejauh jenis analisis yang dilakukan). (Itu ada dalam bentuk kertas kerja di internet jika Anda tidak memiliki akses ke jurnal.)[1]

Analisis dalam dimensi yang lebih tinggi agak lebih rumit (dalam cara yang hampir sama ia melanjutkan dari 1-D ke r-dimensi untuk estimasi kepadatan kernel), tetapi ada istilah dalam dimensi yang datang ke dalam kekuatan n.

Sec 3.4 Eqn 3.61 (p83) dari Scott, 1992 memberikan binwidth optimal asimptotik:[2]

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

di mana adalah istilah kekasaran (bukan satu-satunya yang mungkin), dan saya percaya adalah turunan dari sehubungan dengan istilah dalam .R(f)=Rdf(x)2dxfifithx

Jadi untuk 2D yang menyarankan binwidth yang menyusut sebagai .n1/4

Dalam kasus variabel normal independen, aturan perkiraannya adalah , di mana adalah binwidth dalam dimensi , tanda menunjukkan nilai optimal asimptotik, dan adalah simpangan baku populasi dalam dimensi .hk3.5σkn1/(2+d)hkkσkk

Untuk bivariat normal dengan korelasi , binwidth adalahρ

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

Ketika distribusinya miring, atau berekor berat, atau multimodal, umumnya hasil binwidth yang jauh lebih kecil; akibatnya hasil yang normal akan sering berada di batas atas pada bindwith.

Tentu saja, sangat mungkin Anda tidak tertarik pada rata-rata kesalahan kuadrat terintegrasi, tetapi dalam beberapa kriteria lainnya.

[1]: Wand, MP (1997),
"Pilihan data berdasarkan lebar histogram bin",
American Statistician 51 , 59-64

[2]: Scott, DW (1992),
Estimasi Kepadatan Multivariat: Teori, Praktik, dan Visualisasi ,
John Wiley & Sons, Inc., Hoboken, NJ, USA.

Glen_b -Reinstate Monica
sumber
Glen, apa itu σkparameter dalam jawaban Anda?
Gabriel
1
Permintaan maaf saya; Saya telah menambahkan artinya seperti yang saya mengerti - populasi sd dalam dimensik. (Saya punya tautan ke pdf dalam komentar sebelumnya, tetapi setelah kemudian mencari tahu itu adalah bab dari buku - referensi Scott dalam jawaban saya - saya menghapus tautan.)
Glen_b -Reinstate Monica
4

Mengingat Anda memiliki nomor terprogram N data (mis. Anda memiliki jumlah bacaan yang sama pada kedua dimensi) Anda dapat langsung menggunakan:

  1. Aturan akar kuadrat dibulatkan ke bawah (N), (mis. cara Excel :))
  2. Aturan Sturges (log2N+1),
  3. Beberapa aturan lain yang hanya didasarkan pada jumlah titik data yang tersedia (mis. Aturan Rick).

Untuk menemukan jumlah sampah yang umum M di setiap dimensi.

Di sisi lain, Anda mungkin ingin mencoba sesuatu yang lebih kuat seperti aturan Freedman-Diaconis yang pada dasarnya menentukan bandwidthh sama dengan:

h=2IQR(x)N1/3,

di mana IQR adalah rentang interkuartil data Andax. Anda kemudian menghitung jumlah sampahM sepanjang setiap dimensi sama dengan:

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

Anda melakukan ini di kedua dimensi data Anda x; ini memberi Anda dua, jumlah bin yang mungkin berbeda, yang "harus" digunakan di setiap dimensi. Anda secara naif mengambil yang lebih besar sehingga Anda tidak "kehilangan" informasi.

Namun, pilihan keempat adalah mencoba memperlakukan sampel Anda sebagai dua dimensi, menghitung norma untuk masing-masing titik sampel dan kemudian melakukan aturan Freedman-Diaconis pada norma sampel. yaitu.:

xnew=x12+x22

OK, berikut ini beberapa kode dan plot untuk prosedur yang saya jelaskan:

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');

masukkan deskripsi gambar di sini

Seperti orang lain telah mencatat smoothing hampir pasti lebih cocok untuk kasus ini (mis. Mendapatkan KDE). Saya harap berpikir ini memberi Anda ide tentang apa yang saya jelaskan dalam komentar saya mengenai generalisasi langsung (dengan semua masalah yang mungkin terjadi) dari aturan sampel 1-D ke aturan sampel 2-D. Khususnya, sebagian besar prosedur mengasumsikan beberapa tingkat "normalitas" dalam sampel. Jika Anda memiliki sampel yang jelas tidak terdistribusi normal (mis. Itu leptokurtotik) prosedur ini (bahkan dalam 1-D) akan gagal cukup parah.

usεr11852
sumber
1
Saya senang Anda menemukan hal itu membantu Gabriel tetapi saya akan mengusulkan menerima jawaban Glen_b. Meskipun nyaman metode yang dijelaskan dalam jawaban saya adalah heuristik generalisasi dari kasus 1-D; Saya menambahkannya untuk mengilustrasikan poin yang saya buat dalam komentar saya. Saya benar-benar menghargai acungan jempol (sehingga Anda masih dapat memilih saya sebagai memberikan jawaban yang berguna jika Anda belum :)) tetapi jawaban yang benar adalah Glen_b.
usεr11852