Cara menafsirkan plot autokorelasi di MCMC

12

Saya mulai mengenal statistik Bayesian dengan membaca buku Doing Bayesian Data Analysis , oleh John K. Kruschke yang juga dikenal sebagai "buku anak anjing". Dalam bab 9, model hierarkis diperkenalkan dengan contoh sederhana ini: dan pengamatan Bernoulli adalah 3 koin, masing-masing 10 membalik. Satu menunjukkan 9 kepala, yang lain 5 kepala dan yang lainnya 1 kepala.

yjiBernoulli(θj)θjBeta(μκ,(1μ)κ)μBeta(Aμ,Bμ)κGamma(Sκ,Rκ)

Saya telah menggunakan pymc untuk menyimpulkan hyperparamteres.

with pm.Model() as model:
# define the     
    mu = pm.Beta('mu', 2, 2)
    kappa = pm.Gamma('kappa', 1, 0.1)
    # define the prior
    theta = pm.Beta('theta', mu * kappa, (1 - mu) * kappa, shape=len(N))
    # define the likelihood
    y = pm.Bernoulli('y', p=theta[coin], observed=y)

    # Generate a MCMC chain
    step = pm.Metropolis()
    trace = pm.sample(5000, step, progressbar=True)
    trace = pm.sample(5000, step, progressbar=True)


burnin = 2000  # posterior samples to discard
thin = 10  # thinning 
pm.autocorrplot(trace[burnin::thin], vars =[mu, kappa])

Pertanyaan saya adalah tentang autokorelasi. Bagaimana saya menafsirkan autokorelasi? Bisakah Anda membantu saya menafsirkan plot autokorelasi?

masukkan deskripsi gambar di sini

Dikatakan sebagai sampel semakin jauh dari satu sama lain korelasi di antara mereka berkurang. Baik? Bisakah kita menggunakan ini untuk merencanakan untuk menemukan penipisan yang optimal? Apakah penipisan mempengaruhi sampel posterior? lagipula, apa gunanya plot ini?

Adham
sumber

Jawaban:

13

Pertama-tama: jika memori dan waktu komputasi untuk menangani output MCMC tidak terbatas, penipisan tidak pernah "optimal". Pada jumlah yang sama dari iterasi MCMC, penipisan rantai selalu mengarah (rata-rata) ke presisi kehilangan perkiraan MCMC.

Oleh karena itu penipisan secara rutin berdasarkan autokorelasi atau diagnostik lainnya tidak dianjurkan . Lihat Link, WA & Eaton, MJ (2012) Tentang penipisan rantai di MCMC. Metode dalam Ekologi dan Evolusi, 3, 112-115.

Namun, dalam praktik setiap hari, ada kasus umum bahwa Anda harus bekerja dengan model yang sampelnya tidak tercampur dengan baik (autokorelasi tinggi). Pada kasus ini

1) Elemen rantai dekat sangat mirip, artinya membuang satu tidak kehilangan banyak informasi (itulah yang ditunjukkan plot autokorelasi)

2) Anda perlu banyak pengulangan untuk mendapatkan konvergensi, artinya Anda mendapatkan rantai yang sangat besar jika Anda tidak kurus. Karena itu, bekerja dengan rantai penuh bisa sangat lambat, menghabiskan banyak penyimpanan, atau bahkan menyebabkan masalah memori saat memantau banyak variabel.

3) Selain itu, saya punya perasaan (tapi yang saya belum pernah diuji secara sistematis) bahwa penipisan membuat JAGS sedikit lebih cepat juga, jadi mungkin bisa mendapatkan beberapa iterasi lagi dalam waktu yang sama.

Jadi, maksud saya adalah: plot autokorelasi memberi Anda perkiraan kasar tentang berapa banyak informasi yang Anda kehilangan melalui penjarangan (perlu dicatat bahwa ini adalah rata-rata di seluruh posterior, kerugian mungkin lebih tinggi di wilayah tertentu).

Apakah harga ini layak dibayar tergantung pada apa yang Anda peroleh dengan menipis dalam hal menghemat sumber daya komputasi dan waktu kemudian. Jika iterasi MCMC murah, Anda selalu dapat mengkompensasi hilangnya penjarangan dengan menjalankan beberapa iterasi lagi.

Florian Hartig
sumber
Terima kasih Florian atas jawaban Anda. Itu sangat berguna bagi saya.
Adham