在 pymc3 中,如何配置截断的正常先验?在 pymc2 中它非常简单(如下),但在 pymc3 中似乎不再有可用的截断正态分布。
Pymc2:
TruncatedNormal('gamma_own_%i_' % i, mu=go, tau=v_gamma_inv, value=0, a=-np.inf, b=0)
Pymc3:?
以下代码适用于 Pymc3 3.0 版
a, b=np.float32(0.0), np.float32(10.0)
K_lo, K_hi = 0.0, 1.0
BoundedNormal = pm.Bound(pm.Normal, lower=K_lo, upper=K_hi)
with pm.Model() as model:
n = BoundedNormal('n', mu=a, tau=b)
tr = pm.sample(2000, pm.NUTS())
traceplot(tr)
以下是截断法线的完整代码,类似于来自 Meysam Hashemi 和 Kiudee 的先前解决方案,来自 PyMC3 版本 3.6:
import pymc3 as pm
with pm.Model() as model:
n = pm.TruncatedNormal('n', mu=0, tau=10, lower=0, upper=1)
tr = pm.sample(2000, pm.NUTS())