Stan与PYMC3的离散混合物模型

时间:2019-03-24 10:47:05

标签: bayesian pymc3 mcmc stan pystan

我正在研究零膨胀计数时间数据。我建立了一个stan模型,该模型使用if块中的model语句处理了零膨胀数据。正如他们在《 Stan参考指南》中所建议的那样。例如,

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并没有太多的经验,但是我的理解是,它可以处理Gibbs更新步骤(从离散的bernoulli可能性中采样)。然后以零膨胀值为条件,它可以对依赖于泊松可能性的参数执行Metropolis或NUTS更新。

我的问题是:可以(,如果可以,如何pymc3以这样的方式从具有零值的离散零变量中采样:使用NUTS更新对连续变量进行更新?如果可以的话,性能是否比stan中的上述实现显着提高(边缘化了离散随机变量)?此外,如果pymc3仅支持Gibbs + Metropolis更新,那么此更改是否值得考虑?

0 个答案:

没有答案