İstatistiklerde bir başka göz korkutucu sorun. Soru eskidir, ancak çevrimiçi tanıtım örneklerine ulaşmak zordur. Öyleyse , MCMC tarafından sarhoş ve burada takip edilmesi kolay bir cevap için beklentiyle dolu PageRank topraklarının Markov rastgele yürüyüşünü izleyen birinin olması durumunda iki harika örneği basitleştireyim . Ne kadar muhtemel? Bu bir takip sorusu olabilir.
FIRST EXAMPLE:
Sonrası standart normal dağılımı yeniden Hastings algoritması - Metropolis kullanılmıştır. Zor bir davadan uzak ama diseksiyon için iyi bir dava. Kolaylık ve ek açıklamalar için buradaki postadan kodu topladım .N(0,1)
İkili karar: zorluk tüm mekanik adımlarla geçtikten sonra, sadece bir büyülü hile olduğunu anlayarak olduğunu kabul veya reddetme bir teklif değer .
İstediğimiz şeyin , bir histogramda çizildiğinde ( ) merkezli ve standart sapması ( ) olan bir çan eğrisi gibi görünen bir grup değer ( ) oluşturmak olduğunu akılda tutmak iyi olur . Sorun şu ki önceden belirlenmiş parametrelerimiz yok; bu çok kolay olurdu, sadece çizgisinde bir şey çalıştırmak .0 1xmean
0sd
1rnorm(10000)
Bunu, sahte sayı üreteçleri kullanarak rastgele (veya daha büyük, sonuçları çok fazla değiştirmeyecek) rasgele stokastik adımlar atarak yapıyoruz. Örnekte, adımın büyüklüğü eps
, değerini veya önceki kabul edilen değerden ( ) sola veya sağa adımın boyutunu belirleyen tarafından ayarlanır . Bu , "zincir" in bir sonraki "bağlantısını" ( doldurmak için yeni bir önerilen değer üreten sürecin başlangıç satırı olacaktır . Tamam, ben çıkarma ya da eklemek için bahsediyoruz .x i x i + 1 x iϵxixi+1runif(1, - eps, eps)
xi
Dolayısıyla, önerilen her değer, önceki değerden rastgele bir şekilde ve sınırları dahilinde farklılık gösterir [- eps,+ eps]
.
Markov çekirdeğini girin . Biz zamanında çok belirli bir durumu üzerinde bir geçiş Markov matris içinde olduğu gibi, her nasılsa yeni önerilen değere geçiş olasılığını değerlendirmek gerekir süre sonunda yeni devletin olasılığı anlatır . Şüphe duyuyorsanız buraya gidin veya tüm "Nanna'ya kuantum fiziğini nasıl açıklarsınız?" soru türü (matrisler hoş görünmüyor mu? ;-)).i + 1ii+1
Bu kabul olasılığını itlaf edilen değerler için, önerilen yeni değerdeki ( ) yoğunluğunun yüksekliğini önceki (zaten kabul edilen değer) ile karşılaştırırız, ( ) gibi:x i + 1 x iN(0,1)xi+1xi
Ve ikimiz de değerlerin oranını atın: min(1, dnorm(candidate_value)/dnorm(x))
. Bir olasılık istediğimizden, sonuç hesaplaması üzerine çıkamaz ; bu , (aday değer) ' deki , değerinden büyük olduğunda , önerilen değerin otomatik olarak kabul edilmesine karşılık gelir ve kodun bir kısmını açıklar . Aksi takdirde, daha yakın değeri , önerilen değeri olan bir önceki değeri , bunun daha yüksek bir oran olarak kabul edilir.N ( 0 , 1 ) p d f x i + 1 x i1N(0,1) pdfxi+1ximin(1, ...)
dnorm
Kabul etme olasılığımız var, ancak ikili bir karar vermeliyiz (önerilen yeni değeri kabul et veya reddet). Ve işte sihir hilesi geliyor: Eğer olarak eşit min(1, dnorm(candidate_value)/dnorm(x))
bir runif(1)
çekişten daha büyük bir olasılık hesaplanırsa (sürekli bir değer için bir jetona yaklaştığında), zincirin girişini kabul eder ve doldururuz. önerilen değeri ; aksi takdirde, önceki değerin tekrarlanmasıyla doldururuz , ... Fikir, kuyruklardan birine göre çok daha iyisi.101x[i+1]
x[i]
Bunu binlerce kez yapıyoruz ve tüm bu değerleri topluyoruz (sadece kabul edilen ve tekrarlanan değerler) ve histogramı çizdiğimizde,sd
yakın ve merkezli ortalanmış güzel bir normal eğri elde ediyoruz .010
Son bir nokta: Nereden başlayalım? Muhtemelen alakalı, ama simülasyonunda, biz ilk değerindeki doldurmayın , tüm aracılığıyla tekrarlamalar geri kalanını döngü önce ve sürecin seyrini takip edelim.0x = 0; vec[1] = x
SECOND EXAMPLE:
Bu daha heyecan vericidir ve bir veri kümesi verilen rastgele parametreler için günlük olasılıklarını hesaplayarak doğrusal regresyon eğrisinin parametrelerini tahmin etmeye referans verir . Bununla birlikte, kod satırlarının telafisi , ilk örneğe çok benzer adımları izleyerek burada kaydedilen yoğunlaştırılmış simülasyonda inşa edilmiştir .