所以我必须运行在R中不可行的大型mcmc
但是,在这个循环中,我偶尔会有一些采样步骤或建模步骤,R中有标准的包。从头开始用C编写这些东西对我来说太麻烦了。
所以我想在这里调用R函数。我将使用“writing R extensions”中的“8.1 Embedding R under Unix alikes”。
所以它变成了,R被嵌入到C中,C本身就是R的一个.C调用
简单,还是有更优雅的框架?
稳定性(R调用C,C调用R)
可伸缩性(R调用C,哪个调用R),我将在amazon上运行多个这样的mcmc采样器?
内存使用?
我只对R嵌入C(不是C++)感兴趣。速度对我很重要。

最佳答案

我们在CRAN上的mcmc包中做的就是这个,http://cran.us.r-project.org/web/packages/mcmc/index.html。该链接包括下载源代码的方法。
这个包实现了Metropolis-Hastings算法。具体来说,C代码处理MH循环的运行,但在每次迭代时调用用户提供的R函数来计算日志未规范化的目标密度,它还将调用用户提供的输出函数。
我已经用非常大的模型和数据集运行了这段代码,所以用这种方法在R中运行“大型”MCMC估计是绝对可行的。

关于c - 从mcmc中的R从C调用R,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18480592/

10-11 22:05
查看更多