Pacchetto software ottimale per l'analisi bayesiana


14

Mi chiedevo quale pacchetto statistico di software mi consigliate per eseguire Bayesian Inference.

Ad esempio, so che puoi eseguire openBUGS o winBUGS come standalones o puoi anche chiamarli da R. Ma R ha anche molti dei suoi pacchetti (MCMCPack, BACCO) che possono fare analisi bayesiane.

Qualcuno ha qualche suggerimento su quale pacchetto di statistiche bayesiane in R sia il migliore o su altre alternative (Matlab o Mathematica?)

Le caratteristiche principali che sto cercando di confrontare sono prestazioni, facilità d'uso, stabilità e flessibilità


1
(1) Non credo che esista un pacchetto che possa essere considerato ottimale . (2) L'analisi bayesiana non include solo il campionamento. (3) Questi pacchetti R sono utili per il campionamento: Rtwalk , mcmc . Richiedono solo la programmazione del registro posteriore, ma nessun pacchetto è infallibile. (4) È risaputo che, con un'adeguata programmazione: R<(Matlab,Python)<Cin termini di efficienza (cfr. Ad es. Collegamento ).

2
punti giusti, anche se ri: 4 - questo non è necessariamente vero se si include il tempo di sviluppo. Inoltre, le soluzioni basate su R (che si interfacciano con R o funzionano come pacchetti R) utilizzano in genere C / C ++ per il codice di campionamento.
user4733

@ user4733, le soluzioni basate su C ++ sono 5-10 volte più veloci delle varianti BUGS e molto più veloci delle soluzioni R, vedi la mia risposta.
Curioso

Risposte:


11

Le varianti BUGS esterne sono lo standard. Lavorare all'interno di R può essere conveniente, ma sarei sorpreso se quei pacchetti fossero altrettanto maturi e funzionassero. L'uso di una libreria che collega R e il programma esterno è di solito il compromesso più comune.

Uso la combinazione jags / rjags (jags potrebbe essere approssimativamente considerato un dialetto di bug). Non ho provato le altre varianti di bug, ma i rapporti che ho sentito dire sono che le prestazioni di jags e la capacità di gestire problemi numerici sono leggermente migliori rispetto alle altre varianti di bug. Trovo jags facili da usare, ma ovviamente è necessaria una certa conoscenza dell'analisi dei dati bayesiani per sapere come usarli.


Hmm ok grazie per il tuo consiglio! Quindi pensi che le varianti di BUGS siano il modo più veloce per fare analisi bayesiane?
BYS2

4
Sì, ma leggi prima un libro. L'analisi dei dati bayesiani di Gelman è quella canonica, sebbene Kruschke stia eseguendo l'analisi dei dati bayesiani abbia una barriera inferiore all'ingresso (anche se forse non così bassa come suggeriscono i cuccioli sulle copertine).
user4733

7

All'interno delle 3 varianti BUGS (openBUGS / winBUGS, jags) jags sembra essere il più promettente per quanto riguarda lo sviluppo delle funzionalità future, e openBUGS / winBUGS sembrano essere progetti morti. Tuttavia, a jags mancano ancora alcune delizie presenti in openBUGS / winBUGS (guarda anche qui ). D'altra parte, jags ha rimosso alcune limitazioni presenti in WinBUGS, ad esempio:

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))

La buona notizia è che con la maggior parte dei modelli, è possibile eseguirli in tutti e 3 gli strumenti con modifiche minime, in modo da poter passare a strumenti diversi in seguito senza molti problemi (è quello che faccio).

Tuttavia, per alcuni motivi (ad es. Mancanza di parallelismo e natura dell'interprete) , non è vero che queste varianti di BUGS siano il modo più veloce per fare analisi bayesiane! In effetti, al contrario. I progetti BUGS sono utili per testare e sviluppare modelli complessi su piccoli set di dati . Una volta sviluppato il modello e necessario eseguirlo ripetutamente su set di dati di grandi dimensioni, è più efficiente utilizzare strumenti diversi.

Ad esempio, si dice che la combinazione CppBugs / rcpp sia 5-10 volte più veloce delle varianti BUGS. Il principio è che fondamentalmente compili il tuo modello in un programma C ++, che funziona molto più velocemente. Dai un'occhiata anche al blog di Dirk Eddelbuettel per il test Rcpp : sembra brutalmente veloce. Puoi anche giocare con il parallelismo.

Puoi anche eseguire calcoli paralleli in WinBUGS usando bugsparallel .


Oh wow, ok grazie per tutti i tuoi consigli, è stato molto utile :)
BYS2

Prego. Qual è la tua area di ricerca? Se è ecologia, posso consigliare libri sull'analisi bayesiana usando WinBUGS in Population Ecology.
Curioso

interessante, ci sono riferimenti su come cppbugs si confronta con jags? Dal momento che jags è scritto in C ++, non è immediatamente ovvio quanto sovraccarico comporterebbe il livello di interpretazione.
user4733

2
Andrew gelman ha un promettente progetto chiamato Stan ( mc-stan.org ) che in pratica è un dialetto di bug che si compila in c ++ e che sembra molto veloce rispetto ai bug.
Rasmus Bååth,

2
@ RasmusBååth Dovresti rispondere da solo. Stanrischia di diventare il software per i modelli bayesiani.
Ari B. Friedman,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.