MCMC programlarında hata ayıklamak çok zordur. Zorluk, bazıları şunlardır:
(a) Algoritmanın döngüsel yapısı
Parametreleri diğer tüm parametrelere bağlı olarak tekrarlı olarak çiziyoruz. Bu nedenle, bir uygulama düzgün çalışmıyorsa, sorunu yinelemeli örnekleyicinin herhangi bir yerinde olabileceğinden hatayı izole etmek zordur.
(b) Doğru cevap mutlaka bilinmemektedir.
Yakınsama sağlayıp sağlamadığımızı anlamanın hiçbir yolu yok. Bir dereceye kadar bu, simüle edilmiş veriler üzerinde kod test edilerek hafifletilebilir.
Yukarıdaki sorunlar ışığında, MCMC programlarında hata ayıklamak için kullanılabilecek standart bir teknik olup olmadığını merak ediyordum.
Düzenle
Kendi programımda hata ayıklamak için kullandığım yaklaşımı paylaşmak istedim. Elbette PeterR'ın bahsettiği her şeyi yapıyorum. Bunların dışında, simüle edilmiş verileri kullanarak aşağıdaki testleri yapıyorum:
Tüm parametreleri gerçek değerlerden başlatın ve örnekleyicinin gerçek değerlerden çok farklı olup olmadığını görün.
Yinelemeli örnekleyicimde bu parametreyi yinelemeli örnekleyicide çizip çizmediğimi belirleyen her parametre için bayraklar var. Örneğin, 'gen_param1' bayrağı true olarak ayarlanmışsa, yinelemeli örnekleyicideki tam koşulundan 'param1' çizerim. Bu false olarak ayarlanırsa, 'param1' gerçek değerine ayarlanır.
Örnekleyiciyi yazmayı bitirdikten sonra, aşağıdaki tarifi kullanarak programı test ederim:
- Bir parametre için oluşturma bayrağını true değerine ve diğer her şeyi false değerine ayarlayın ve yakınsamayı gerçek değere göre değerlendirin.
- Birincisi ile birlikte başka bir parametre için oluşturma bayrağını ayarlayın ve tekrar yakınsamayı değerlendirin.
Yukarıdaki adımlar bana çok yardımcı oldu.