我想知道你们推荐哪种软件统计软件包来执行贝叶斯推理。
例如,我知道您可以独立运行openBUGS或winBUGS,也可以从R调用它们。但是R也有几个自己的软件包(MCMCPack,BACCO)可以进行贝叶斯分析。
是否有人对R中的哪个贝叶斯统计软件包最好或其他替代方案(Matlab或Mathematica)有任何建议?
我要比较的主要功能是性能,易用性,稳定性和灵活性
我想知道你们推荐哪种软件统计软件包来执行贝叶斯推理。
例如,我知道您可以独立运行openBUGS或winBUGS,也可以从R调用它们。但是R也有几个自己的软件包(MCMCPack,BACCO)可以进行贝叶斯分析。
是否有人对R中的哪个贝叶斯统计软件包最好或其他替代方案(Matlab或Mathematica)有任何建议?
我要比较的主要功能是性能,易用性,稳定性和灵活性
Answers:
外部BUGS变体是标准配置。在R中工作可能很方便,但是如果这些软件包既成熟又性能良好,我会感到惊讶。使用桥接R和外部程序的库通常是最常见的折衷方案。
我使用“ jags / rjags”组合(“ jags”可能被认为是bug的方言)。我还没有尝试过其他Bug变体,但是据我所知,报告说Jags的性能和处理数字问题的能力比其他Bug变体要好一些。我发现锯齿易于使用,但是,当然,您需要一些贝叶斯数据分析的知识才能知道如何使用它。
在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中进行并行计算。
Stan
很可能成为了贝叶斯模型的软件。
R<(Matlab,Python)<C
就效率而言(例如参见link)。