Mempelajari statistik Bayesian untuk pertama kalinya; sebagai sudut pandang untuk memahami MCMC saya bertanya-tanya: apakah ia melakukan sesuatu yang pada dasarnya tidak dapat dilakukan dengan cara lain, atau hanya melakukan sesuatu yang jauh lebih efisien daripada alternatifnya?
Sebagai ilustrasi, misalkan kita mencoba menghitung probabilitas parameter kita mengingat data diberi model yang menghitung sebaliknya, . Untuk menghitung ini secara langsung dengan teorema Bayes kita membutuhkan penyebut seperti yang ditunjukkan di sini . Tetapi dapatkah kita menghitungnya dengan integrasi, katakan sebagai berikut:
p_d = 0.
for x in range(xmin,xmax,dx):
for y in range(ymin,ymax,dy):
for z in range(zmin,zmax,dz):
p_d_given_x_y_z = cdf(model(x,y,z),d)
p_d += p_d_given_x_y_z * dx * dy * dz
Apakah itu akan berhasil (walaupun sangat tidak efisien dengan jumlah variabel yang lebih tinggi) atau ada hal lain yang akan menyebabkan pendekatan ini gagal?
Jawaban:
Anda menggambarkan perkiraan kisi ke posterior, dan itu adalah pendekatan yang valid, meskipun bukan yang paling populer. Ada beberapa kasus di mana distribusi posterior dapat dihitung secara analitis. Monte Carlo Markov Chains, atau metode perkiraan lainnya, adalah metode untuk mendapatkan sampel dari distribusi posterior, yang kadang-kadang berfungsi ketika solusi analitis tidak dapat ditemukan.
Solusi analitis yang dapat ditemukan biasanya adalah kasus keluarga "konjugat", dan Anda dapat menemukan lebih banyak tentang itu dengan googling, lihat misalnya https://en.wikipedia.org/wiki/Conjugate_prior .
Sebagai contoh pertama, jika sebelumnya Anda
p
seragam aktif[0, 1]
, di manap
merupakan parameter keberhasilan dalam percobaan binomial sederhana, posterior sama dengan distribusi Beta. Integrasi, atau penjumlahan, dapat dilakukan secara eksplisit dalam kasus ini.Jika Anda memiliki banyak pilihan parameter, atau Anda menggunakan perkiraan kisi-kisi seperti pada contoh Anda, penjumlahan sederhana mungkin yang Anda butuhkan. Namun, jumlah perhitungan dapat meledak dengan cepat, jika Anda memiliki beberapa variabel dan ingin menggunakan kotak yang padat.
Ada beberapa algoritma untuk pengambilan sampel dari posterior. Hamiltonian Monte Carlo, khususnya NUTS sampler, sekarang populer dan digunakan di
stan
danPyMC3
, Metropolis Hastings adalah yang klasik. Variational Inference adalah pendatang baru, bukan metode pengambilan sampel sebenarnya tetapi cara yang berbeda untuk mendapatkan perkiraan. Saat ini, tidak ada metode, termasuk solusi analitis, yang terbaik, semuanya bekerja dengan baik dalam kasus-kasus tertentu.sumber
Menghitung penyebut tidak membantu dalam memahami sifat distribusi posterior (atau distribusi apa pun). Sebagaimana dibahas dalam pertanyaan baru - baru ini , untuk mengetahui bahwa kepadatan vektor d-dimensi adalah tidak memberi tahu saya di mana wilayah yang diminati untuk distribusi posterior ini.θ
sumber
Metode Monte Carlo adalah teknik yang memanfaatkan angka acak. Tujuannya adalah untuk menemukan sampel yang didistribusikan menurut dan diasumsikan bahwa kompleks. Ini berarti bahwa kami tidak dapat mengevaluasinya secara langsung. Jika bukan ini masalahnya, Anda bisa menghitungnya secara analitis. Seperti dalam contoh Anda ini akan menjadi .x P(x) P(x) P(D)
Apa yang Anda usulkan pada dasarnya adalah pencarian kotak melalui ruang dan . Ini bisa sangat lengkap jika dan berdimensi tinggi dan tidak layak jika kontinu. Masalah lain adalah Anda harus menghitung cdf di setiap langkah.x y x y
Metode MCMC mencoba menyelesaikan ini dengan mengajukan sampel kandidat dan kemudian menerima atau menolaknya tergantung pada beberapa ukuran. Secara teori ini bisa lebih cepat daripada melalui semua kombinasi yang mungkin. jadi pada dasarnya Anda menemukan sampel yang diambil dari . Masalah teoretis di sini adalah bahwa ini hanya terjadi pada batas jumlah sampel yang diambil, yaitu setelah sampel. Jadi, Anda tidak tahu kapan harus menghentikan Rantai Markov.ci P(D) ∞
sumber