Optimales Softwarepaket für die Bayes'sche Analyse

14

Ich habe mich gefragt, welches statistische Softwarepaket Sie für die Durchführung von Bayesian Inference empfehlen.

Ich weiß zum Beispiel, dass Sie openBUGS oder winBUGS als Standalones ausführen oder sie auch von R aus aufrufen können. R verfügt jedoch auch über mehrere eigene Pakete (MCMCPack, BACCO), die Bayes-Analysen durchführen können.

Hat jemand Vorschläge, welches bayesianische Statistikpaket in R am besten ist oder über andere Alternativen (Matlab oder Mathematica?)

Die Hauptmerkmale, die ich vergleichen möchte, sind Leistung, Benutzerfreundlichkeit, Stabilität und Flexibilität

BYS2
quelle
1
(1) Ich glaube nicht, dass es ein Paket gibt, das als optimal gelten könnte . (2) Die Bayes'sche Analyse umfasst nicht nur die Probenahme. (3) Diese R-Pakete sind für die Probenahme nützlich: Rtwalk , mcmc . Sie müssen nur den log-posterior programmieren, aber kein Paket ist unfehlbar. (4) Es ist bekannt, dass bei entsprechender Programmierung: R<(Matlab,Python)<Cin Bezug auf die Effizienz (siehe zB Link ).
2
faire Punkte, obwohl zu 4 - dies ist nicht unbedingt wahr, wenn Sie Entwicklungszeit einbeziehen. Außerdem verwenden die R-basierten Lösungen (die entweder mit R verbunden sind oder als R-Pakete ausgeführt werden) normalerweise C / C ++ für den Stichprobencode.
User4733
@ user4733, die auf C ++ basierenden Lösungen sind 5-10x schneller als BUGS-Varianten und viel schneller als R-Lösungen, siehe meine Antwort.
Neugierig
ähnliche Frage: stats.stackexchange.com/q/9202/5509
Curious

Antworten:

11

Externe BUGS-Varianten sind der Standard. Das Arbeiten in R mag praktisch sein, aber ich wäre überrascht, wenn diese Pakete so ausgereift und leistungsfähig wären. Die Verwendung einer Bibliothek, die R und das externe Programm verbindet, ist normalerweise der häufigste Kompromiss.

Ich benutze die Jags / Rjags-Kombination (Jags können in etwa als ein Dialekt von Bugs angesehen werden). Ich habe die anderen Bugs-Varianten nicht ausprobiert, aber die Berichte, die ich gehört habe, lauten, dass die Leistung und die Fähigkeit von jags, mit numerischen Problemen umzugehen, ein bisschen besser sind als die anderen Bugs-Varianten. Ich finde, dass Jags einfach zu verwenden sind, aber Sie benötigen natürlich Kenntnisse in der Bayes'schen Datenanalyse, um zu wissen, wie man sie verwendet.

user4733
quelle
Hmm ok danke für deinen Rat! Glauben Sie also, dass BUGS-Varianten der schnellste Weg zur Bayes'schen Analyse sind?
BYS2
4
Ja, aber zuerst ein Buch lesen. Gelmans Bayesianische Datenanalyse ist die kanonische, obwohl Kruschkes Bayesianische Datenanalyse eine geringere Eintrittsbarriere aufweist (obwohl sie möglicherweise nicht so niedrig ist, wie die Welpen auf den Deckblättern vermuten lassen).
user4733
7

Innerhalb der 3 BUGS-Varianten (openBUGS / winBUGS, jags) scheinen jags für die zukünftige Feature-Entwicklung am vielversprechendsten zu sein, und openBUGS / winBUGS scheinen tote Projekte zu sein. Allerdings jags noch einige Feinheiten in openBUGS Gegenwart fehlt / Windoof (auch sehen hier ). Andererseits hat Jags einige Einschränkungen in WinBUGS beseitigt, zB:

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

Die gute Nachricht ist, dass Sie sie mit den meisten Modellen in allen drei Tools mit nur minimalen Änderungen ausführen können, sodass Sie später ohne große Probleme zu einem anderen Tool wechseln können (das ist, was ich tue).

Aus bestimmten Gründen (z. B. mangelnde Parallelität und fehlender Interpretercharakter) ist es jedoch nicht richtig, dass diese BUGS-Varianten die schnellste Methode zur Bayes'schen Analyse sind! Im Gegenteil. BUGS-Projekte eignen sich gut zum Testen und Entwickeln komplizierter Modelle auf kleinen Datensätzen . Sobald Sie das Modell entwickelt haben und es wiederholt für große Datasets ausführen müssen, ist es effizienter, verschiedene Tools zu verwenden.

Zum Beispiel soll die CppBugs / rcpp-Kombination 5-10x schneller sein als BUGS-Varianten. Das Prinzip ist, dass Sie Ihr Modell im Grunde genommen in ein C ++ - Programm kompilieren, das viel schneller läuft. Schauen Sie sich auch den Blog von Dirk Eddelbüttel für den Rcpp-Test an - sieht brutal schnell aus. Sie können auch mit Parallelität spielen.

Sie können in WinBUGS auch mit bugsparallel parallel rechnen .

Neugierig
quelle
Oh wow, ok danke für all deine Ratschläge, es war sehr nützlich :)
BYS2
Bitte schön. Was ist Ihr Forschungsgebiet? Wenn es um Ökologie geht, kann ich Bücher zur Bayes'schen Analyse mit WinBUGS in Population Ecology empfehlen.
Neugierig
Interessant, gibt es Hinweise darauf, wie sich cppbugs von jags unterscheidet? Da jags in C ++ geschrieben ist, ist es nicht sofort ersichtlich, wie viel Aufwand die Interpretationsebene mit sich bringen würde.
User4733
2
Andrew Gelman hat ein vielversprechendes Projekt namens Stan ( mc-stan.org ), bei dem es sich im Grunde um einen Bugs-Dialekt handelt, der bis zu C ++ kompiliert und im Vergleich zu Bugs sehr schnell zu sein scheint.
Rasmus Bååth
2
@RasmusBååth Du solltest das selbst beantworten. Stanwird wahrscheinlich das Stück Software für Bayesianische Modelle werden.
Ari B. Friedman