Algoritma MCMC seperti Metropolis-Hastings dan Gibbs sampling adalah cara pengambilan sampel dari distribusi posterior bersama.
Saya pikir saya mengerti dan dapat mengimplementasikan metropolis-hasting dengan cukup mudah - Anda cukup memilih titik awal, dan 'berjalan di ruang parameter' secara acak, dipandu oleh kepadatan posterior dan kepadatan proposal. Pengambilan sampel Gibbs tampaknya sangat mirip tetapi lebih efisien karena hanya memperbarui satu parameter pada satu waktu, sementara yang lain tetap konstan, efektif berjalan di ruang dengan cara ortogonal.
Untuk melakukan ini, Anda memerlukan persyaratan penuh dari setiap parameter secara analitis dari *. Tetapi dari mana datangnya kondisi penuh ini? Untuk mendapatkan penyebut Anda perlu memarginalkan sambungan lebih darix1. Itu sepertinya banyak pekerjaan yang harus dilakukan secara analitik jika ada banyak parameter, dan mungkin tidak dapat ditelusuri jika distribusi bersama tidak terlalu 'bagus'. Saya menyadari bahwa jika Anda menggunakan konjugasi di seluruh model, kondisi penuh mungkin mudah, tetapi harus ada cara yang lebih baik untuk situasi yang lebih umum.
Semua contoh pengambilan sampel Gibbs yang saya lihat online menggunakan contoh mainan (seperti pengambilan sampel dari multivarian normal, di mana kondisional hanya normalnya sendiri), dan tampaknya menghindari masalah ini.
* Atau apakah Anda memerlukan persyaratan penuh dalam bentuk analitik? Bagaimana program seperti winBUGS melakukannya?
Jawaban:
Ya, Anda benar, distribusi bersyarat perlu ditemukan secara analitis, tetapi saya pikir ada banyak contoh di mana distribusi bersyarat penuh mudah ditemukan, dan memiliki bentuk yang jauh lebih sederhana daripada distribusi bersama.
sumber
I think you've missed the main advantage of algorithms like of Metropolis-Hastings. For Gibbs sampling, you will need to sample from the full conditionals. You are right, that is rarely easy to do. The main advantage of Metropolis-Hastings algorithms is that you can still sample one parameter at a time, but you only need to know the full conditionals up to proportionality. This is because the denominators cancel in the acceptance criteria function
The unnormalized full conditionals are often available. For instance, in your exampleP(x1|x2,...,xn)∝P(x1,...,xn) , which you have. You don't need to do any integrals analytically. In most applications, a lot more will likely cancel too.
Programs like WinBugs/Jags typically take Metropolis-Hastings or slice sampling steps that only require the conditionals up to proportionality. These are easily available from the DAG. Given conjugacy, they also sometimes take straight Gibbs steps or fancy block stops.
sumber