import numpy as np import pymc as pm import arviz as az from matplotlib import pyplot as plt x = np.random.normal(3, 2, size=30) # plt.hist(x) # plt.show() with pm.Model() as model: mu = pm.Uniform('mu', lower=-5, upper=5) sig = pm.HalfNormal('sig', sigma=10) data = pm.Normal('data', mu=mu, sigma=sig, observed=x) pm.model_to_graphviz(model) with model: trace = pm.sample(5000, tune=1000) # plt.plot(trace.posterior.data_vars["mu"][0, 1:100]) # az.plot_trace(trace) summary = az.summary(trace) with model: post = pm.sample_posterior_predictive(trace) plt.hist(post.posterior_predictive.data.to_numpy().flatten(), density=True, bins=50) plt.hist(x, alpha=0.4, density=True, bins=6) az.plot_ppc(post) plt.show()