Saya baru dalam penelitian Bayesian Statistics. Saya mendengar dari peneliti bahwa peneliti Bayesian lebih baik mengimplementasikan MCMC sendiri daripada menggunakan alat seperti JAGS / Stan. Bolehkah saya bertanya apa manfaat menerapkan algoritma MCMC sendiri (dalam bahasa "tidak terlalu cepat" seperti R), kecuali untuk tujuan pembelajaran?
13
Jawaban:
Secara umum, saya sangat menyarankan untuk tidak mengkode MCMC Anda sendiri untuk analisis Bayesian nyata. Ini adalah pekerjaan dan waktu yang baik dan sangat mungkin untuk memperkenalkan bug dalam kode. Sampler blackbox, seperti Stan, sudah menggunakan sampler yang sangat canggih. Percayalah, Anda tidak akan membuat kode sampler kaliber ini hanya untuk satu analisis!
Ada kasus khusus di mana dalam hal ini tidak akan cukup. Misalnya, jika Anda perlu melakukan analisis secara real time (yaitu keputusan komputer berdasarkan data yang masuk), program ini tidak akan menjadi ide yang baik. Ini karena Stan memerlukan kompilasi kode C ++, yang mungkin memerlukan waktu lebih lama daripada hanya menjalankan sampler yang sudah disiapkan untuk model yang relatif sederhana. Dalam hal ini, Anda mungkin ingin menulis kode Anda sendiri. Selain itu, saya percaya ada kasus-kasus khusus di mana paket-paket seperti Stan melakukan sangat buruk, seperti model ruang-ruang Non-Gaussian (pengungkapan penuh: Saya percaya Stan melakukan buruk dalam kasus ini, tetapi tidak tahu). Dalam hal itu, mungkin layak untuk mengimplementasikan MCMC khusus. Tapi ini pengecualian, bukan aturannya!
Sejujurnya, saya pikir sebagian besar peneliti yang menulis sampler untuk analisis tunggal (dan ini memang terjadi, saya telah melihatnya) melakukannya karena mereka suka menulis sampler sendiri. Paling tidak, saya dapat mengatakan bahwa saya termasuk dalam kategori itu (yaitu saya kecewa karena menulis sampler sendiri bukan cara terbaik untuk melakukan sesuatu).
Juga, walaupun tidak masuk akal untuk menulis sampler Anda sendiri untuk analisis tunggal , akan lebih masuk akal untuk menulis kode Anda sendiri untuk kelas analisis. Menjadi bahwa JAG, Stan, dll. Adalah sampler kotak hitam, Anda selalu dapat membuat segalanya lebih cepat dengan mengkhususkan untuk model yang diberikan, meskipun jumlah peningkatan tergantung pada model. Tetapi menulis sampler yang sangat efisien dari bawah ke atas mungkin 10-1.000 jam kerja, tergantung pada pengalaman, kompleksitas model, dll. Jika Anda melakukan penelitian dalam metode Bayesian atau menulis perangkat lunak statistik, itu bagus; itu pekerjaanmu. Tetapi jika bos Anda mengatakan, "Hei, Anda bisa menganalisis kumpulan data pengukuran berulang ini?" dan Anda menghabiskan 250 jam menulis sampler yang efisien, bos Anda cenderung kesal. Sebaliknya, Anda bisa menulis model ini di Stan dalam, katakanlah, 2 jam, dan memiliki 2 menit waktu berjalan alih-alih 1 menit waktu berjalan yang dicapai oleh sampler efisien.
sumber
Pertanyaan ini terutama didasarkan pada pendapat, tetapi saya pikir ada cukup di sini menuliskan jawaban. Mungkin ada banyak alasan untuk mengkode sampler sendiri untuk masalah penelitian. Ini beberapa di antaranya
Proposal: Seperti yang disarankan fcop dalam komentar mereka, jika sampelnya adalah MH, maka pengodean sampler Anda sendiri memungkinkan Anda bermain-main dengan distribusi proposal untuk mendapatkan sampler pencampuran terbaik.
Fleksibilitas: Program bawaan mungkin tidak memberikan Anda fleksibilitas yang Anda inginkan. Anda mungkin ingin memulai dengan nilai acak tertentu, atau menggunakan struktur benih tertentu.
Memahami: Pengodean sampler Anda sendiri membantu Anda memahami perilaku sampler, memberikan wawasan tentang proses rantai Markov. Ini berguna bagi seorang peneliti yang sedang mengerjakan masalah.
Tanggung jawab: Jika data di mana saya membuat semua inferensi Bayesian saya berasal dari program yang tidak saya kode, maka tanggung jawab pada inferensi tidak lagi pada saya. Sebagai seorang peneliti, saya ingin bertanggung jawab penuh atas metode / hasil yang saya sajikan. Menggunakan metode bawaan tidak memungkinkan Anda melakukan itu.
Mungkin ada lebih banyak alasan, tetapi ini adalah empat yang membuat saya membuat kode samplers sendiri.
sumber
Saya memberi +1 pada jawaban Cliff AB. Untuk menambahkan sedikit berita gembira, jika Anda ingin bekerja di level yang lebih rendah tetapi tidak turun ke level code-everything-yourself, Anda harus mencari- cari paket LaplacesDemon . Penulis asli brilian, tetapi tampaknya telah turun dari grid, dan paket tersebut telah diambil alih oleh orang lain. (Ada di Github, saya percaya.)
Ini mengimplementasikan mengesankan jumlah algoritma yang digunakan dalam MCMC dan sketsa termasuk adalah layak dibaca bahkan jika Anda tidak menggunakan paket. Cukup banyak jenis sampler yang Anda baca, yang dimilikinya. Anda kode dengan cara yang berbeda dari BUGS / JAGS atau Stan, dan semuanya dalam R, tetapi sering kali itu sangat efisien sehingga kompetitif.
sumber
LaplacesDemon
, jika Anda terbiasa dengan itu. Senang mendengarnyanimble
juga. Setidaknya saya akan mengunduhnya. (Meskipun beberapa sketsa LaplacesDemon mungkin layak diunduh bahkan jika Anda menggunakan gesit.) ... Ohhh, baru saja pergi ke halaman. Jika SMC-nya mudah digunakan, saya akan menjadi penggemar berat. Satu-satunya paket R yang saya lihat yang melakukan SMC sangat kompleks.nimble
situs web, ini cukup mengesankan. Mengapa saya tidak pernah mendengarnya? Sepertinya pilihan yang bagus untuk orang yang terbiasa dengan bahasa pemodelan BUGS / JAGS. Tentu saja, mereka akan membuat perbandingan terbaik di situs web, tetapi saya masih menyukainya sejauh ini. (Kecuali bahwa denganrstanarm
danbrms
, yang menggunakan Stan di bawah tenda, juara yang mudah digunakan adalah R.)