Dengan rantai 10M MCMC, bagaimana saya bisa menentukan mode posteriornya di R?

10

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:

  1. Kami percaya bahwa distribusinya mungkin cukup miring; karenanya, kami ingin mengidentifikasi mode posterior dan bukan cara posterior.

  2. Kami khawatir bahwa mungkin ada beberapa mode posterior.

  3. 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.

M. Tibbits
sumber
Silakan lihat tema tentang metode estimasi mode cepat, stats.stackexchange.com/questions/33625
Pavel Ruzankin

Jawaban:

9

Sudahkah Anda mempertimbangkan untuk menggunakan pendekatan tetangga terdekat?

mis. membangun daftar ktetangga terdekat untuk masing-masing dari 100.000 titik dan kemudian mempertimbangkan titik data dengan jarak terkecil dari kthtetangga mode. Dengan kata lain: cari titik dengan 'gelembung terkecil' yang mengandung ktitik-titik lain di sekitar titik ini.

Saya tidak yakin seberapa kuat ini dan pilihan untuk kjelas mempengaruhi hasil.

Andre Holzner
sumber
Terkadang saya hanya ingin menggulingkan kepala saya. Saran yang sangat baik.
M. Tibbits
1
Saya juga hanya berpikir untuk menggunakan kmeansfungsi dalam R. Saya benar-benar tidak boleh bertanya antara tengah malam dan 4 pagi.
M. Tibbits
4

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.

csgillespie
sumber
3

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.

John Salvatier
sumber
Ini adalah jawaban yang paling relevan, setidaknya bagian pertama! Dalam banyak simulasi MCMC, kemungkinan (log-) dihitung untuk semua proposal dan dengan demikian dapat disimpan. Atau nilai tertinggi sejauh ini dan argumennya dapat disimpan. Asalkan algoritma MCMC telah terkonvergensi pada jumlah simulasi yang Anda jalankan, ini adalah pendekatan yang valid.
Xi'an
2

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 estimationmetode yang tepat ].

Andre Holzner
sumber
Ya, ada paket prim , dengan sketsa R: Menggunakan prim untuk berburu benjolan . Bagi saya tidak jelas bagaimana cara kerjanya dalam kasus ini.
chl