1

所以我必须运行在 R 中不可行的大型 mcmc。因此我在 C 中写出循环并使用 .C 从 R 中调用它

然而,在这个循环中,我偶尔会有采样步骤或建模步骤,其中有 R 中的标准包。从头开始用 C 编写这些东西对我来说太过分了。

这就是为什么我想在这里调用 R 函数。我将在“编写 R 扩展”中使用“8.1 Embedding R under Unix-likes”来做到这一点。

所以它变成了,R 被嵌入到 C 中,这本身就是来自 R 的 .C 调用。就以下方面而言,这种方法是否可行

  • 简单,还是有更优雅的框架?

  • 稳定性(R调用C,后者调用R)

  • 可扩展性(R 调用 C,它调用 R),我将在亚马逊上运行多个这样的 mcmc 采样器?

  • 内存使用情况?

我只对嵌入 C(不是 c++)的 R 感兴趣。速度对我来说非常重要。

4

1 回答 1

2

我们在 CRAN 上的 mcmc 包中正是这样做的,http: //cran.us.r-project.org/web/packages/mcmc/index.html 。该链接包括下载源代码的方式。

这个包实现了 Metropolis-Hastings 算法。具体来说,C 代码处理运行 MH 循环,但调用用户提供的 R 函数来评估每次迭代的对数非标准化目标密度,它还将调用用户提供的输出函数。

我已经使用非常大的模型和数据集运行此代码,因此使用这种方法在 R 中运行“大型”MCMC 估计绝对是可行的。

于 2013-08-28T07:31:48.590 回答