c++ - 从 C++ 程序调用 Stan 例程

标签 c++ bayesian mcmc stan

我读到here可以(我的解释很简单)调用 Stan来自 C++ 程序的例程。

我有一些复杂的对数似然函数,我用 C++ 编写了它们,但我真的不知道如何使用 Stan 语言对它们进行编码。是否可以使用我已经用 C++ 编写的对数似然函数来调用 Stan 中的蒙特卡洛例程?如果有的话,有这方面的例子吗?

这似乎是一件很自然的事情,但我找不到任何关于如何做到这一点的示例或指示。

最佳答案

经过进一步审查(您可能想不接受我之前的答案),您可以尝试以下操作:在 functions 中编写一个带有用户定义函数的 .stan 程序。具有正确签名(并解析)但基本上不执行任何操作的 block 。像这样 functions { real foo_log(real[] y, vector beta, matrix X, real sigma) { return not_a_number(); // replace this after parsing to C++ } } data { int<lower=1> N; int<lower=1> K; matrix[N,K] X; real y[N]; } parameters { vector[K] beta; real<lower=0> sigma; } model { y ~ foo(beta, X, sigma); // priors here } 然后,使用 CmdStan 编译该模型,这将生成一个 .hpp 文件作为中间步骤。编辑 foo_log 正文中的 .hpp 文件调用您的模板化 C++ 函数,并#include 定义您的内容的头文件。然后重新编译并执行二进制文件。

这实际上可能对您有用,但如果您所做的任何事情都有广泛的用途,我们希望您贡献 C++ 内容。

关于c++ - 从 C++ 程序调用 Stan 例程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31862831/

相关文章:

c++ - 从 C++ 创建共享库

php - FastCGI C++ 与脚本语言 (PHP/Python/Perl)

c++ - 使用 pcl 或 opencv 在 2d 场景中匹配 3d 模型

python - 在 TensorFlow Probability 中,与贝叶斯层的损失属性相关的损失是什么?

python - 在 Stan 模型中将概率乘以常数

c++ - 如何为 Microsoft Excel 创建过滤器?

python - PyMC3 和 Arviz : Visualizing highest posterior density for multiple conditions using arviz plot_hpd

rstanarm 用于二项式实验的贝叶斯分层建模

python - PyMC 中的狄利克雷分布

neural-network - pymc 3's NUTS can' t 在我的贝叶斯神经网络分层模型中表现良好吗?