Thank you @junpenglao.
That was very helpful. However not having bounds actually makes the ppc samples poor
fig, ax = plt.subplots(figsize=(8,6))
ax.hist(x2ppc[80], bins=50, normed=True, alpha=0.3, color='green', label='Posterior predictions')
ax.hist(df['x2'].values, bins=50, normed=True, alpha=0.3, label='Training data')
ax.legend(loc=1)
As an example,
mupost[0].max(), x2ppc[0].max(), x2ppc[10].max(), df['x2'].values.max(),
yields:
(454.5148963473755, 108.0, 97.0, 56)
I tried Bounding mu as below, but that does not work:
mu = pm.Bound(pm.Deterministic, lower=1, upper=70)('mu', eta + delta * x1_shift)
AttributeError: 'function' object has no attribute 'dist'
