Bagaimana cara mengidentifikasi distribusi bimodal?


48

Saya mengerti bahwa begitu kita memplot nilai-nilai sebagai grafik, kita dapat mengidentifikasi distribusi bimodal dengan mengamati puncak kembar, tetapi bagaimana kita menemukannya secara terprogram? (Saya mencari sebuah algoritma.)


5
Pertanyaan menarik. Saya tidak tahu apa-apa tentang hal ini sehingga tidak akan mencoba menjawab, tetapi uji bimodality + googling memberikan beberapa petunjuk yang menjanjikan. google.co.uk/search?q=bimodality+test
onestop

kode terprogram untuk menguji multimodalitas tersedia di www.estima.com dan disebut MODES.SRC. Anda dapat dengan mudah mengonversinya ke Matlab, R atau perangkat lunak lain. Salam, guido.

1
Anda tidak dapat mengidentifikasi jumlah mode (tidak ada batasan untuk jumlah gerak kecil yang bisa dimiliki distribusi), tetapi Anda bisa mendapatkan batas bawah. mis. lihat di sini projecteuclid.org/euclid.aos/1176351045
Glen_b

Jawaban:


27

Mengidentifikasi mode untuk distribusi kontinu membutuhkan perataan atau pemadaman data.

Binning biasanya terlalu procrustean: hasilnya seringkali tergantung pada tempat Anda meletakkan cutpoints bin.

Pemulusan kernel (khususnya, dalam bentuk estimasi kepadatan kernel ) adalah pilihan yang baik. Walaupun banyak bentuk kernel yang mungkin, biasanya hasilnya tidak banyak bergantung pada bentuk. Itu tergantung pada bandwidth kernel. Dengan demikian, orang-orang baik menggunakan kernel smoothing adaptif atau melakukan urutan smoothing kernel untuk memvariasikan bandwidth tetap untuk memeriksa stabilitas mode yang diidentifikasi. Meskipun menggunakan yang lebih adaptif atau "optimal" menarik, perlu disadari bahwa sebagian besar (semua?) Ini dirancang untuk mencapai keseimbangan antara presisi dan akurasi rata-rata: mereka tidak dirancang untuk mengoptimalkan estimasi lokasi mode.

Sejauh implementasi berjalan, kernel lebih baik secara lokal menggeser dan skala fungsi yang telah ditentukan untuk menyesuaikan data. Asalkan fungsi dasar ini dapat dibedakan - Gaussians adalah pilihan yang baik karena Anda dapat membedakannya sebanyak yang Anda suka - maka yang harus Anda lakukan adalah menggantinya dengan turunannya untuk mendapatkan turunan dari smooth. Maka itu hanya masalah menerapkan prosedur penemuan nol standar untuk mendeteksi dan menguji titik-titik kritis. ( Metode Brent bekerja dengan baik.) Tentu saja Anda dapat melakukan trik yang sama dengan turunan kedua untuk mendapatkan tes cepat apakah ada titik kritis adalah maksimum lokal - yaitu, mode.


2
@venkasub, Anda mungkin juga melihat metode Muller untuk menemukan root. Ini lebih sederhana daripada metode Brent dan "hampir" seefisien metode Newton, tetapi tanpa perlu mengetahui turunan dari fungsi target.
kardinal

25

Ada makalah terkenal oleh Silverman yang membahas masalah ini. Ini menggunakan estimasi kernel-density. Lihat

BW Silverman, Menggunakan perkiraan kepadatan kernel untuk menyelidiki multimodality , J. Royal Stat. Soc. B , vol. 43, tidak. 1, 1981, hlm. 97-99.

Perhatikan bahwa ada beberapa kesalahan dalam tabel kertas. Ini hanyalah titik awal, tetapi cukup bagus. Ini menyediakan algoritma yang terdefinisi dengan baik untuk digunakan, jika itu yang paling Anda cari. Anda dapat melihat Google Cendekia di makalah yang mengutipnya untuk pendekatan yang lebih "modern".


4
+1 Tulisan ini mengeksploitasi informasi tentang bagaimana jumlah mode yang terlihat tergantung pada lebar kernel (untuk kernel Gaussian) untuk memilih lebar yang sesuai dan kemudian melanjutkan seperti yang dijelaskan dalam balasan saya.
whuber

2

Saya datang terlambat ke pesta, tetapi jika Anda hanya tertarik pada apakah itu multimodal atau tidak, berarti Anda tidak tertarik pada jumlah mode, Anda harus melihat diptest .

Dalam Rpaket disebut diptest.


2
Nama lengkapnya adalah Hartigan's Dip Test of Unimodality. Makalah asli menjelaskan memberikan deskripsi ini: Tes dip mengukur multimodality dalam sampel dengan perbedaan maksimum, di atas semua titik sampel, antara fungsi distribusi empiris, dan fungsi distribusi unimodal yang meminimalkan perbedaan maksimum. Algoritma ini tidak sepele, tetapi Anda dapat dengan mudah menemukan C, Python, MATLAB, dan terjemahan Fortran modern berdasarkan pada implementasi Fortran asli dalam Perhitungan Statistik Dip untuk Menguji Unimodality .
mortehu


0

Definisi dalam wiki sedikit membingungkan bagi saya. Probabilitas kumpulan data kontinu yang hanya memiliki satu mode adalah nol. Cara sederhana untuk memprogram distrubiton bimodal adalah dengan dua distribusi normal yang terpisah berpusat secara berbeda. Ini menciptakan dua puncak atau apa yang disebut mode wiki. Anda benar-benar dapat menggunakan hampir dua distribusi, tetapi salah satu peluang statistik yang lebih sulit adalah menemukan bagaimana set data terbentuk setelah menggabungkan dua distribusi data acak.


Bagaimana Anda mengidentifikasi pusat dari dua distribusi normal?
venkasub

@venkasub, pusat distribusi normal adalah artinya. Jika Anda tahu bahwa bimodality berasal dari dua distribusi normal, Anda dapat menyesuaikan model campuran untuk memperkirakan rata-rata, yang merupakan dua mode.
mpiktas
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.