Example:
import pymc3 as pm
import arviz as az
with pm.Model() as model:
foo = pm.Beta('foo', 1.3, 1.4)
bar = pm.Beta('bar', 1 + foo, 2 - foo, shape=50)
trace = pm.sample(draws=600, chains=2, tune=500, return_inferencedata=True)
trace_ppc = pm.fast_sample_posterior_predictive(
trace, var_names=['bar'])
trace_aux = az.from_pymc3(posterior_predictive=trace_ppc)
trace.extend(trace_aux)
with model:
summary = pm.summary(trace, group='posterior_predictive', var_names=['bar'])
summary
Results:
Another example, with keep_size=True:
with pm.Model() as model2:
foo = pm.Beta('foo', 1.3, 1.4)
bar = pm.Beta('bar', 1 + foo, 2 - foo, shape=50)
trace = pm.sample(draws=600, chains=2, tune=500, return_inferencedata=True)
trace_ppc = pm.fast_sample_posterior_predictive(
trace, var_names=['bar'], keep_size=True)
trace_aux = az.from_pymc3(posterior_predictive=trace_ppc)
trace.extend(trace_aux)
bar in the posterior predictive has a bogus shape:
There appear to be 30,000 error messages:
with model2:
summary = pm.summary(trace, group='posterior_predictive', var_names=['bar'])
summary
etc.


