Paket perangkat lunak optimal untuk analisis bayesian

14

Saya ingin tahu paket statistik perangkat lunak mana yang Anda rekomendasikan untuk melakukan Bayesian Inference.

Sebagai contoh, saya tahu bahwa Anda dapat menjalankan openBUGS atau winBUGS sebagai standalones atau Anda juga dapat memanggil mereka dari R. Tetapi R juga memiliki beberapa paket sendiri (MCMCPack, BACCO) yang dapat melakukan analisis bayesian.

Adakah yang punya saran mengenai paket statistik bayesian mana dalam R yang terbaik atau tentang alternatif lain (Matlab atau Mathematica?)

Fitur utama yang ingin saya bandingkan adalah kinerja, kemudahan penggunaan, stabilitas dan fleksibilitas

BYS2
sumber
1
(1) Saya tidak berpikir ada paket yang bisa memenuhi syarat sebagai optimal . (2) Analisis Bayesian tidak hanya mencakup pengambilan sampel. (3) Paket R ini berguna untuk pengambilan sampel: Rtwalk , mcmc . Mereka hanya membutuhkan pemrograman log-posterior tetapi tidak ada paket yang sempurna. (4) Diketahui bahwa, dalam pemrograman yang tepat: R<(Matlab,Python)<Cdalam hal efisiensi (lihat misalnya tautan ).
2
poin adil, meskipun ulang: 4 - ini tidak selalu benar jika Anda memasukkan waktu pengembangan. Juga, solusi berbasis R (baik berinteraksi dengan R atau berjalan sebagai paket R) biasanya menggunakan C / C ++ untuk kode sampel.
user4733
@ user4733, solusi berbasis C ++ 5-10x lebih cepat dari varian BUGS, dan jauh lebih cepat dari solusi R, lihat jawaban saya.
Penasaran
pertanyaan serupa: stats.stackexchange.com/q/9202/5509
Curious

Jawaban:

11

Varian BUGS eksternal adalah standar. Bekerja di dalam R mungkin mudah, tetapi saya akan terkejut jika paket-paket itu matang dan berkinerja juga. Menggunakan perpustakaan yang menjembatani R dan program eksternal biasanya merupakan kompromi yang paling umum.

Saya menggunakan kombinasi jags / rjags (jags mungkin secara kasar dianggap sebagai dialek bug). Saya belum pernah mencoba varian bug lainnya, tetapi laporan yang saya dengar adalah bahwa kinerja jags dan kemampuannya untuk menangani masalah numerik sedikit lebih baik daripada varian bug lainnya. Saya menemukan jags mudah digunakan, tetapi tentu saja, Anda perlu pengetahuan tentang analisis data bayesian untuk mengetahui cara menggunakannya.

pengguna4733
sumber
Hmm ok terima kasih atas saran Anda! Jadi menurut Anda varian BUGS adalah cara tercepat untuk melakukan analisis bayesian?
BYS2
4
Ya tapi baca buku dulu. Analisis Data Bayesian Gelman adalah yang kanonik, meskipun Kruschke melakukan analisis data bayesian memiliki hambatan masuk yang lebih rendah (meskipun mungkin tidak serendah yang disarankan anak anjing pada sampul).
user4733
7

Dalam 3 varian BUGS (openBUGS / winBUGS, jags) jags tampaknya menjadi yang paling menjanjikan untuk pengembangan fitur di masa depan, dan openBUGS / winBUGS tampaknya merupakan proyek mati. Namun, jags masih kekurangan beberapa basa-basi di openBUGS / winBUGS (lihat juga di sini ). Di sisi lain, jags telah menghapus beberapa batasan yang ada di WinBUGS, misalnya:

x ~ dnorm(0, tau) 
tau ~ dgamma(1.0E-3, 1.0E-3) # in WinBUGS, you cannot do this, 1.0E-3 is too small 
                             # for dgamma (use e.g. dgamma(0.01, 0.01))

Berita baiknya adalah bahwa dengan sebagian besar model, Anda dapat menjalankannya di semua 3 alat hanya dengan sedikit perubahan, sehingga Anda dapat beralih ke alat lain nanti tanpa banyak masalah (itulah yang saya lakukan).

Namun, untuk beberapa alasan (misalnya kurangnya paralelisme dan sifat penafsir) , tidak benar bahwa varian BUGS ini adalah cara tercepat untuk melakukan analisis bayesian! Padahal, justru sebaliknya. Proyek BUGS baik untuk menguji dan mengembangkan model rumit pada dataset kecil . Setelah Anda memiliki model yang dikembangkan, dan perlu menjalankannya berulang kali pada dataset besar, lebih efisien untuk menggunakan alat yang berbeda.

Misalnya kombo CppBugs / rcpp dikatakan 5-10x lebih cepat dari varian BUGS. Prinsipnya adalah pada dasarnya Anda mengkompilasi model Anda ke dalam program C ++, yang berjalan lebih cepat. Lihat juga blog Dirk Eddelbuettel untuk uji Rcpp - terlihat sangat cepat. Anda juga bisa bermain dengan paralelisme.

Anda juga dapat melakukan perhitungan paralel di WinBUGS menggunakan bugsparallel .

Ingin tahu
sumber
Oh wow, ok terima kasih atas semua saran Anda, itu sangat berguna :)
BYS2
Sama sama. Apa bidang penelitian Anda? Jika itu ekologi, saya bisa merekomendasikan buku tentang analisis Bayesian menggunakan WinBUGS dalam Population Ecology.
Penasaran
menarik, apakah ada referensi tentang bagaimana cppbugs dibandingkan dengan jags? Karena jags ditulis dalam C ++, tidak segera jelas berapa banyak overhead lapisan interpretasi akan memerlukan.
user4733
2
Andrew gelman memiliki proyek yang menjanjikan bernama Stan ( mc-stan.org ) yang pada dasarnya adalah dialek bug yang mengkompilasi ke c ++ dan yang tampaknya sangat cepat dibandingkan dengan bug.
Rasmus Bååth
2
@ RasmusBååth Anda harus membuat jawabannya sendiri. Stankemungkinan akan menjadi yang software untuk model Bayesian.
Ari B. Friedman