bayesian - 用于离散混合模型的 Stan 与 PYMC3
问题描述
我正在研究零膨胀计数时间数据。我已经建立了一个模型,该模型使用块中的语句stan
来处理这种零膨胀数据。正如他们在 Stan 参考指南中所建议的那样。例如,if
model
model {
for (n in 1:N) {
if (y[n] == 0)
target += log_sum_exp(bernoulli_lpmf(1 | theta), bernoulli_lpmf(0 | theta) + poisson_lpmf(y[n] | lambda));
else
target += bernoulli_lpmf(0 | theta) + poisson_lpmf(y[n] | lambda);
}
}
这个if
声明显然是必要的,因为 Stan 使用 NUTS 作为不处理离散变量的采样器(因此我们正在边缘化这个离散随机变量而不是从中采样)。我没有太多经验,pymc3
但我的理解是它可以处理吉布斯更新步骤(从离散的伯努利可能性中采样)。然后以零膨胀值为条件,它可以对依赖于泊松可能性的参数执行 Metropolis 或 NUTS 更新。
我的问题是:可以(如果可以的话)pymc3
以这样的方式使用从离散的零膨胀变量中采样,并通过 NUTS 更新对连续变量进行更新?如果可以,性能是否比上述实现显着提高stan
(边缘化了离散随机变量)?此外,如果pymc3
只能支持 Gibbs + Metropolis 更新,那么这种远离 NUTS 的变化是否值得考虑?
解决方案
推荐阅读
- android - 在应用程序之间传输文件 (.txt)
- windows - 按进程及其线程查找 CPU 使用率和内核数
- android - 在哪里可以找到 android 中的第 0 块闪存?
- c# - 事件限制是什么意思?
- django - 如何查询组并根据用户数降序排列?
- python - 有人能告诉我为什么我的代码不起作用吗?
- android - Admob Adview 启用手势
- java - 是否有等效于 VB6 Strconv 的 Java (Android)
- python - 合并 2 个变量时,concat 不会按照我想要的方式打印它们
- android - Android Datepicker 单格颜色