Saya memiliki kemungkinan yang cukup datar untuk mengarahkan sampler Metropolis-Hastings untuk bergerak melalui ruang parameter dengan sangat tidak teratur, yaitu tidak ada konvergensi yang dapat dicapai, apa pun parameter distribusi proposal (dalam kasus saya ini adalah gaussian). Tidak ada kompleksitas tinggi dalam model saya - hanya 2 parameter, tetapi tampaknya MH tidak dapat menangani tugas ini. Jadi, apakah ada trik untuk mengatasi masalah ini? Apakah ada sampler yang tidak akan menghasilkan rantai Markov bergerak sangat jauh ke ekor posterior?
Pembaruan masalah:
Saya akan mencoba merumuskan kembali pertanyaan saya dengan memberikan lebih banyak detail. Pertama-tama saya akan menjelaskan modelnya.
Saya memiliki model grafis dengan dua node. Setiap node diatur oleh model auto-Poisson (Besag, 1974) sebagai berikut:
p (Xj|Xk=xk, ∀ k ≠ j , Θ ) ∼ Po i s s o n (eθj+∑j ≠ kθk jxk)
Atau, karena hanya ada dua node dan mengasumsikan intensitas global yang sama:
p (X1|X2=x2, θ , α ) ∼ Po i s s o n (eθ + αx2)
p (X2|X1=x1, θ , α ) ∼ Po i s s o n (eθ + αx1)
Karena itu adalah bidang Markov, distribusi bersama (atau kemungkinan realisasi X= [x1,x2]) adalah sebagai berikut:
p ( X) =e x p ( θ (x1+x2) + 2x1x2α )Z( θ , α )=e x p ( E( θ , α , X) )Z( θ , α )
Karena saya mengasumsikan prior flat
α dan
θ, posterior kemudian sebanding dengan
π( θ , α | X) ∝e x p ( E( θ , α , X) )Z( θ , α )
Sejak
Z( θ , α )secara umum sangat sulit untuk mengevaluasi (banyak penjumlahan) Saya menggunakan metode variabel tambahan karena J. Moller (2006). Menurut metode ini, pertama saya menggambar sampel data
X′ oleh Gibbs sampler (karena conditional hanya distribusi poisson) maka saya menggambar proposal dari distribusi Gaussian dan menghitung sesuai dengan kriteria penerimaan
H(X′,α′,θ′|X,α,θ). Dan di sini saya mendapatkan rantai Markov liar. Ketika saya memaksakan beberapa batas di mana rantai dapat bergerak, sampler tampaknya menyatu dengan beberapa distribusi, tetapi begitu saya memindahkan setidaknya satu batas, distribusi yang dihasilkan juga bergerak dan selalu menunjukkan trancation.
Saya pikir @ Xi'an wright - posterior mungkin tidak pantas.
mcmc
dan perintahmetrop
juga. Anda mungkin perlu sampler adaptif. Sampler ini (the twalk) dapat digunakan dalam kasus-kasus semacam ini mengingat bahwa itu adaptif (mungkin hanya sebagai "pendapat kedua"). Ini diimplementasikan dalam R, C dan Python. Kode dapat diunduh dari salah satu halaman web penulis .Jawaban:
Saya menemukan mengejutkan bahwa datar kemungkinan menghasilkan isu-isu konvergensi: biasanya kasus sebaliknya yang menyebabkan masalah! Pemeriksaan pertama yang biasa untuk situasi seperti itu adalah untuk memastikan bahwa posterior Anda benar : jika tidak itu akan menjelaskan untuk perjalanan tanpa akhir di "ekor". Jika posterior benar, Anda dapat menggunakan proposal ekor yang lebih gemuk seperti distribusi Cauchy ... Dan algoritma adaptif à la Roberts dan Rosenthal.
Jika ini masih "tidak berhasil", saya sarankan mempertimbangkan reparameterisasi model, menggunakan misalnya (yaitu jika tidak ada parameter alami lainnya) transformasi logistik,
Mengenai jawaban sebelumnya, pengambilan sampel Gibbs terdengar seperti solusi yang lebih mungkin daripada accept-reject, yang membutuhkan menemukan batas dan meningkatkan distribusi ke arah posterior, yang tampaknya tidak layak untuk sampel sampler Metropolis-Hastings yang lebih kuat ...
sumber
Bisakah Anda menuliskan distribusi parameter pertama Anda pada kondisi kedua dan sebaliknya? Jika demikian, pengambilan sampel Gibbs akan menjadi opsi yang layak. Ini hanya beberapa baris kode dan dapat dicampur hampir secara instan dalam banyak kasus.
sumber
EDIT: Lihat jawaban @ Xi'an dan diskusi setelahnya untuk melihat masalah dengan pendekatan berikut.
Jika Metropolis-Hastings gagal dan model Anda relatif sederhana, Anda bisa memikirkan untuk menggunakan algoritma accept-reject dengan Studentt distribusi dengan tingkat kebebasan yang rendah (1-6) untuk proposal.
Jika Anda menggunakan R, Anda dapat dengan mudah mensimulasikan siswat dengan t variabel dengan perangkat lunak Anda tetapi Anda dapat mensimulasikan Γ , lalu menggambar varian Gaussian dari a Γ pada setiap langkah dan mensimulasikan Gaussian dengan varian itu setara.
rt()
. Jika Anda tidak memiliki cara mudah untuk menghasilkansumber