Saya mencoba menerapkan algoritma MCMC hit and run, tetapi saya mengalami sedikit kesulitan untuk memahami bagaimana cara melakukannya. Gagasan umum, adalah sebagai berikut:
Untuk menghasilkan lompatan proposal di MH, kami:
- Hasilkan arah dari distribusi di permukaan unit bola O
- Hasilkan jarak yang ditandatangani sepanjang ruang terbatas.
Namun, saya tidak tahu bagaimana saya harus menerapkan ini dalam R (atau bahasa lainnya).
Adakah yang memiliki potongan kode yang akan mengarahkan saya ke arah yang benar?
BTW, saya tidak begitu tertarik pada perpustakaan yang melakukan metode ini, saya ingin mencoba dan membuat kode sendiri.
Terimakasih banyak.
Jawaban:
Saya tidak melihat kertas yang Anda berikan, tetapi biarkan saya mencoba:
Jika Anda memiliki ruang parameter berdimensi Anda dapat menghasilkan arah acak d merata pada permukaan unit bola denganp d
(lih Wiki ).
Kemudian, gunakan ini untuk menghasilkan proposal untuk untuk sampel penolakan (dengan asumsi Anda benar-benar dapat mengevaluasi distribusi untuk dd d ).
Dengan asumsi Anda mulai di posisi dan telah menerima d , buat proposal bersama yx d y
dan lakukan Langkah Metropolis-Hastings untuk memutuskan apakah akan pindah key atau tidak.
Tentu saja, seberapa baik ini dapat bekerja akan tergantung pada distribusi dan seberapa mahal untuk (berulang kali) mengevaluasi kepadatannya dalam langkah sampel penolakan, tetapi karena menghasilkan proposal untuk d adalah murah, Anda mungkin lolos begitu saja.d d
Ditambahkan untuk manfaat @ csgillespie:
Dari apa yang saya dapat kumpulkan oleh beberapa googling, MCMC hit-and-run berguna terutama untuk pencampuran cepat jika Anda memiliki target (multivarian) yang memiliki dukungan sewenang-wenang tetapi tidak terhubung, karena memungkinkan Anda untuk bergerak dari titik mana pun dalam mendukung satu sama lain dalam satu langkah. Lebih banyak di sini dan di sini .
sumber
Saya menemukan pertanyaan Anda ketika saya sedang mencari referensi asli untuk Hit-and-Run. Terima kasih untuk itu! Saya baru saja menyusun implementasi konsep-bukti hit-and-run untuk PyMC di akhir blog baru-baru ini .
sumber