MCMC'ye basın ve çalıştırın


16

Vur ve çalıştır MCMC algoritmasını uygulamaya çalışıyorum, ancak bunun hakkında nasıl gideceğimizi anlamakta biraz sorun yaşıyorum. Genel fikir şöyledir:

MH'de teklif atlama oluşturmak için:

  • Birim küresinin yüzeyindeki bir dağılımdan yönü oluşturundÖ
  • Kısıtlı alan boyunca işaretli bir mesafe oluşturun .λ

Ancak, bunu R (veya başka bir dilde) uygulamaya nasıl devam etmem gerektiği hakkında hiçbir fikrim yok.

Beni doğru yönde gösterecek bir kod pasajı var mı?

BTW, bu yöntemi yapan bir kütüphaneyle ilgilenmiyorum, kendim kodlamayı denemek istiyorum.

Çok teşekkürler.


1
Bu algoritmayı daha önce hiç duymamıştım ama kulağa oldukça ilginç geliyor. Açıklayıcı bir kaynağa link verebilir misiniz? Teşekkür ederim !
steffen

@steffen İşte orijinal makaleye bir bağlantı - aslında teknik rapor. Ben de bu prosedürü hiç kullanmadım.
csgillespie

1
Hit ve run MCMC'nin diğer yöntemlere göre avantajı nedir? Yakınsama hızı?
RockScience

@fRed: Bu yüzden ödül teklif ettim. Vur ve koş hakkında okudum, ama hangi koşullar altında yararlı olacağını bilmiyorum.
csgillespie

3
Bağlantı kesildi.
daknowles

Yanıtlar:


11

Verdiğiniz kağıda bakmadım, ama yine de izin ver:

Bir -boyutlu parametre alanınız varsa , birim kürenin yüzeyine eşit olarak dağıtılmış rastgele bir yön oluşturabilirsiniz.pd

x <- rnorm(p)
d <- x/sqrt(sum(x^2))

(cf Wiki ).

Ardından, reddetme örneklemesi için için teklifler oluşturmak üzere bunu kullanın ( nin dağılımını gerçekten değerlendirebileceğiniz varsayılarak ).dd

Eğer pozisyon başlayacak varsayarsak ve kabul etmiş , bir öneri oluşturmak ilexdy

 lambda <- r<SOMEDISTRIBUTION>(foo, bar)
 y <- x + lambda * d

ve taşınmayacağınıza karar vermek için bir Metropolis-Hastings-Adımı yapın .y

Tabii ki, bunun ne kadar iyi çalışabileceği, nin dağılımına ve ret örnekleme adımındaki yoğunluğunu (tekrar tekrar) değerlendirmenin ne kadar pahalı olduğuna bağlı olacaktır , ancak d için teklif oluşturmak ucuz olduğundan ondan kurtulabilirsiniz.dd


@ Csgillespie'nin yararı için eklendi:

Bazı googling ile toplayabildiğim kadarıyla, vur ve çalıştır MCMC, rastgele sınırlanmış ancak zorunlu olarak bağlı desteği olmayan (çok değişkenli) bir hedefiniz varsa hızlı karıştırma için faydalıdır, çünkü herhangi bir noktadan hareket etmenizi sağlar bir adımda başka birine destek. Burada ve burada daha fazlası .


1
Bu cevap tatmin edici değilse, nedenini açıklayabilir misiniz?
John Salvatier

@Fred hakkında emin değilim, ama lütuf teklif ettiğimde, vur-ve-çalıştır MCMC hakkında biraz daha fazla bilgi istediğimi varsayalım. Örneğin, hangi tür problemlere en uygun olur? Tabii ki, başka cevap yoksa, bu soru cömertliği kazanırdı.
csgillespie

3
@ csgillespie: İlginizi daha iyi karşılamak için cevabımı düzenledim. Şeref hakkımı haketmediğimi söyleyemem. ;)
fabians

2
Bağlantı için çok teşekkürler. Ödül yerleştirmemizin nedenlerinden biri, google aramalarımın yöntemin birkaç matematiksel tartışmasını, ancak pratik uygulamaların yolunda çok az olmasıydı. Ödül vermeden önce 48 saat daha beklersem lütfen biraz almayın (özellikle cömert bir ödül!)
csgillespie

4

Hit-and-Run için orijinal referans ararken sorunuzla karşılaştım. Bunun için teşekkürler! Bu son blogun sonunda PyMC için hit-run kavramının bir kanıtı uygulamasını bir araya getirdim .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.