Pertanyaan: Dengan rantai MCMC 10 dimensi, katakanlah saya siap memberikan Anda sebuah matriks undian: 100.000 iterasi (baris) dengan 10 parameter (kolom), bagaimana cara terbaik saya mengidentifikasi mode posterior? Saya terutama memperhatikan beberapa mode.
Latar Belakang:Saya menganggap diri saya seorang ahli statistik yang mengerti secara komputasi, tetapi ketika seorang kolega bertanya kepada saya, saya malu karena saya tidak dapat memberikan jawaban yang masuk akal. Perhatian utama adalah bahwa beberapa mode dapat muncul, tetapi hanya jika setidaknya delapan atau lebih dari sepuluh dimensi dipertimbangkan. Pikiran pertama saya adalah menggunakan estimasi kepadatan kernel, tetapi pencarian melalui R tidak mengungkapkan apa pun yang menjanjikan masalah yang lebih besar dari tiga dimensi. Rekan itu telah mengusulkan strategi pengaliran ad-hoc dalam sepuluh dimensi dan mencari yang maksimal, tetapi kekhawatiran saya adalah bahwa bandwidth dapat menyebabkan masalah sparsity yang signifikan atau kurangnya resolusi untuk membedakan beberapa mode. Yang mengatakan, saya dengan senang hati menerima saran untuk saran bandwidth otomatis, tautan ke penaksir kepadatan kernel 10, atau apa pun yang Anda ketahui.
Kekhawatiran:
Kami percaya bahwa distribusinya mungkin cukup miring; karenanya, kami ingin mengidentifikasi mode posterior dan bukan cara posterior.
Kami khawatir bahwa mungkin ada beberapa mode posterior.
Jika memungkinkan, kami lebih suka saran berbasis R. Tetapi algoritma apa pun akan dilakukan selama itu tidak terlalu sulit untuk diterapkan. Saya kira saya lebih suka untuk tidak mengimplementasikan penduga kepadatan kernel Nd dengan pemilihan bandwidth otomatis dari awal.
Jawaban:
Sudahkah Anda mempertimbangkan untuk menggunakan pendekatan tetangga terdekat?
mis. membangun daftar
k
tetangga terdekat untuk masing-masing dari 100.000 titik dan kemudian mempertimbangkan titik data dengan jarak terkecil darikth
tetangga mode. Dengan kata lain: cari titik dengan 'gelembung terkecil' yang mengandungk
titik-titik lain di sekitar titik ini.Saya tidak yakin seberapa kuat ini dan pilihan untuk
k
jelas mempengaruhi hasil.sumber
kmeans
fungsi dalam R. Saya benar-benar tidak boleh bertanya antara tengah malam dan 4 pagi.Ini hanya sebagian jawaban.
Saya baru-baru ini menggunakan figtree untuk perkiraan kepadatan kernel multidimensi. Ini adalah paket C dan saya membuatnya bekerja dengan cukup mudah. Namun, saya hanya menggunakannya untuk memperkirakan kepadatan pada titik-titik tertentu, bukan menghitung statistik ringkasan.
sumber
Jika Anda menyimpan kemungkinan log, Anda bisa memilih yang dengan nilai tertinggi. Juga, jika minat Anda terutama adalah mode, cukup lakukan optimasi untuk menemukan poin dengan kemungkinan log tertinggi sudah cukup.
sumber
Sudahkah Anda mempertimbangkan 'PRIM / berburu perburuan'? (lihat misalnya Bagian 9.3. dari 'Elemen Pembelajaran Statistik' oleh Tibshirani et al. atau tanyakan mesin pencari favorit Anda). Tidak yakin apakah itu diterapkan di R sekalipun.
[Sejauh yang saya mengerti adalah Anda mencoba untuk menemukan mode kepadatan probabilitas dari mana 100'000 baris Anda diambil. Jadi masalah Anda akan sebagian diselesaikan dengan menemukan
density estimation
metode yang tepat ].sumber