['μ_σ = pm.Normal(\'μ_σ\', mu=0, sd=10, shape=8)\n    μ = pm.Normal(\'μ\', mu=μ_σ, sd=σ, observed=y)\n    σ = pm.HalfNormal(\'σ\', sd=1)\n    \n    trace = pm.sample(1000, tune=1000, chains=4, return_inferencedata=True, idata_kwargs={"log_likelihood": True})\naz.plot_trace(trace)\nplt.show()\n\naz.summary(trace)\naz.plot_posterior(trace, var_names=[\'μ_σ\', \'μ\', \'σ\'])\nplt.show()\n\naz.plot_posterior(trace, hdi_prob=0.95, round_to=2)\nplt.show()\n\n# Posterior predictive checks\nwith m:\n    ppc = pm.sample_posterior_predictive(trace, samples=500, model=m)\n\nplt.figure(figsize=(10, 6))\nplt.plot(y, \'o\', label=\'Observed\')\nplt.plot(ppc[\'μ\'].T, \'C1\', label=\'Predicted\')\nplt.legend()\nplt.show()\n\n# Model comparison\nwith m:\n    model_trace = pm.sample(1000, tune=1000, chains=4)\n\nwith pm.Model() as m2:\n    α = pm.Normal(\'α\', mu=0, sd=10)\n    β = pm.Normal(\'β\', mu=0, sd=10, shape=']