如何制作截断的正常事先:将pymc2转换为pymc3

Kem*_*emp 9 mcmc pymc3

在pymc3中如何配置截断的正常先验?在pymc2中,它非常简单(下图),但在pymc3中似乎不再有截断的正态分布.

Pymc2:

TruncatedNormal('gamma_own_%i_' % i, mu=go, tau=v_gamma_inv, value=0, a=-np.inf, b=0)
Run Code Online (Sandbox Code Playgroud)

Pymc3 :?

小智 11

在PyMC3中,您可以使用截断任何分布Bound.首先,您必须构造有界分布(此处称为BoundedNormal),然后创建一个变量,您可以在其中输入基础分布的常用参数:

with pm.Model() as model:
    BoundedNormal = pm.Bound(pm.Normal, lower=0, upper=1)
    n = BoundedNormal('n', mu=0, tau=10)
    tr = pm.sample(2000, pm.NUTS())
Run Code Online (Sandbox Code Playgroud)

生成的分布如下所示: KDE和有界正态分布的痕迹