贝叶斯分析的最佳软件包


14

我想知道你们推荐哪种软件统计软件包来执行贝叶斯推理。

例如,我知道您可以独立运行openBUGS或winBUGS,也可以从R调用它们。但是R也有几个自己的软件包(MCMCPack,BACCO)可以进行贝叶斯分析。

是否有人对R中的哪个贝叶斯统计软件包最好或其他替代方案(Matlab或Mathematica)有任何建议?

我要比较的主要功能是性能,易用性,稳定性和灵活性


1
(1)我认为没有一个软件包可以视为最佳。(2)贝叶斯分析不仅包括抽样。(3)这些R软件包对于采样很有用:Rtwalkmcmc。他们只需要对后编程,而没有任何软件包是绝对可靠的。(4)众所周知,在适当的编程下:R<(Matlab,Python)<C就效率而言(例如参见link)。

2
公平点,尽管re:4-如果包括开发时间,则不一定正确。同样,基于R的解决方案(与R接口或作为R包运行)通常使用C / C ++作为采样代码。
2012年

@ user4733,基于C ++的解决方案比BUGS变体快5-10倍,比R解决方案快得多,请参阅我的答案。
2012年

Answers:


11

外部BUGS变体是标准配置。在R中工作可能很方便,但是如果这些软件包既成熟又性能良好,我会感到惊讶。使用桥接R和外部程序的库通常是最常见的折衷方案。

我使用“ jags / rjags”组合(“ jags”可能被认为是bug的方言)。我还没有尝试过其他Bug变体,但是据我所知,报告说Jags的性能和处理数字问题的能力比其他Bug变体要好一些。我发现锯齿易于使用,但是,当然,您需要一些贝叶斯数据分析的知识才能知道如何使用它。


好的,谢谢您的指教!因此,您认为BUGS变体是进行贝叶斯分析的最快方法吗?
BYS2

4
是的,但请先读书。吉尔曼的贝叶斯数据分析是一种典型的方法,尽管克鲁斯克进行贝叶斯数据分析的准入门槛较低(尽管可能不如封面上的幼犬低)。
user4733 2012年

7

在3个BUGS变体(openBUGS / winBUGS,jags)中,对于未来的功能开发,jags似乎是最受推崇的,而openBUGS / winBUGS似乎是已死的项目。但是,jags仍然缺少openBUGS / winBUGS中存在的一些细微之处(另请参见此处)。另一方面,尖齿消除了WinBUGS中存在的一些限制,例如:

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

好消息是,对于大多数模型,您只需很少的更改就可以在所有3个工具中运行它们,因此您以后可以切换到其他工具而不会遇到很多问题(这就是我要做的)。

但是,由于某些原因(例如,缺乏并行性和解释器性质),这些BUGS变体不是进行贝叶斯分析的最快方法是不正确的!实际上,恰恰相反。BUGS项目非常适合在小型数据集上测试和开发复杂的模型。一旦开发了模型,并且需要在大型数据集上重复运行它,使用不同的工具会更有效。

例如,据说CppBugs / rcpp组合比BUGS变体快5-10倍。原理是您基本上将模型编译为C ++程序,运行速度更快。也可以看看Dirk Eddelbuettel的Rcpp测试博客 -看起来非常快。您还可以使用并行性。

您还可以使用bugsparallel在WinBUGS中进行并行计算。


噢,谢谢您的建议,它非常有用:)
BYS2

别客气。您的研究领域是什么?如果是生态学的话,我可以推荐有关在人口生态学中使用WinBUGS进行贝叶斯分析的书籍。
2012年

有趣的是,有关于cppbugs与jags比较的参考吗?由于Jags是用C ++编写的,因此立即不明显的是解释层会产生多少开销。
user4733 2012年

2
安德鲁·盖尔曼(Andrew Gelman)有一个很有前途的项目,叫做Stan(mc-stan.org),它基本上是一个bug方言,可以编译为c ++,与bug相比,它看起来确实非常快。
RasmusBååth2012年

2
@RasmusBååth您应该自己回答。 Stan很可能成为贝叶斯模型的软件。
Ari B. Friedman 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.