Son birkaç gündür Markov Zinciri Monte Carlo'nun (MCMC) nasıl çalıştığını anlamaya çalışıyorum. Özellikle Metropolis-Hastings algoritmasını anlamaya ve uygulamaya çalışıyorum. Şimdiye kadar algoritma hakkında genel bir anlayışa sahip olduğumu düşünüyorum ama henüz net olmayan birkaç şey var. Bazı modelleri verilere uydurmak için MCMC kullanmak istiyorum. Bu nedenle, gözlemlenen bazı veriler düz bir uydurmak için Metropolis-Hastings algoritması konusundaki anlayışımı anlatacağım :
1) için ilk tahminde bulunun . Bu ayarla mevcut olarak ( ). Ayrıca Markov Zinciri'nin ( ) sonuna ekleyin .
2) Aşağıdaki adımları birkaç kez tekrarlayın.
3) Mevcut olasılığını (değerlendirmek ) verilen ve .
4) ve ile normal bir dağılımdan örnek alarak yeni ( ) önerin . Şimdilik, sabittir.
5) Yeni olasılığını (değerlendirmek ) verilen ve .
6) Eğer daha büyük , kabul yeni olarak , ekleme bunun sonunda ve adım 2'ye geçin.
7) ise küçüktür bir sayı (üretmek düzgün bir dağılım aralığında [0,1])
8) ise iki likelihoods arasındaki farktan daha küçüktür ( - ), kabul yeni ürün olarak , ekleme bu sonunda ve adım 2'ye geçin.
9) Eğer , iki likelihoods arasındaki farktan daha büyük olan ( - ), ekleme sonunda , aynı kullanmaya devam , adım 2'ye gidin.
10) Tekrar Sonu.
11) (yakma aşaması) başlangıcından bazı elemanları çıkarın .
12) Şimdi değerlerin ortalamasını alın . Bu ortalama tahmin ediliyor .
Şimdi yukarıdaki adımlarla ilgili bazı sorularım var:
- Nasıl için olabilirlik fonksiyonunu inşaa ederler değil, aynı zamanda herhangi bir keyfi bir işlev için?
- Bu Metropolis-Hastings algoritmasının doğru bir uygulaması mı?
- 7. Adımda rastgele sayı oluşturma yönteminin seçimi sonuçları nasıl değiştirebilir?
- Birden fazla model parametresim varsa bu algoritma nasıl değişecek? Örneğin, modeline sahip olsaydım .
Notlar / Krediler: Yukarıda açıklanan algoritmanın ana yapısı, bir MPIA Python Workshop'tan alınan koda dayanmaktadır.