[' # Priors\n    mu = pm.Normal(\'mu\', mu=0, sigma=10)\n    tau = pm.HalfNormal(\'tau\', sigma=10)\n    \n    # Likelihood\n    theta = pm.Normal(\'theta\', mu=mu, sigma=tau, observed=y)\n    \n    # Posterior\n    trace = pm.sample(1000, tune=1000, chains=4, return_inferencedata=True, idata_kwargs={"log_likelihood": True})\n\n# Plot the posterior distributions of the parameters\naz.plot_posterior(trace, var_names=[\'mu\', \'tau\'], hdi_prob=0.95)\n\n# Plot the posterior predictive distribution\npm.plot_posterior_predictive_glm(trace, samples=100, eval=np.linspace(-5, 5, 100), y=\'y\', var_names=[\'theta\'])\n\n# Print the summary statistics of the posterior\nprint(az.summary(trace, var_names=[\'mu\', \'tau\']))\n\n# Print the summary statistics of the posterior predictive distribution\nprint(az.summary(trace, var_names=[\'y\']))\n\n# Print the summary statistics of the posterior predictive distribution\nprint(az.summary(trace, var_names=[\'y\'], hdi_prob=0.95))\n\n# Print the summary statistics of the posterior predictive distribution\nprint(az.summary(trace, var_names=[\'y\'], hdi_prob=0.95, filter_vars=\'like\'))\n\n# Print the summary statistics of the posterior predictive distribution\nprint(az.summary(trace, var_names=[\'y\'], hdi_prob=0.95, filter_vars=\'like\', filter_kwargs={\'var_names\': [\'theta\']}))\n\n# Print the summary statistics of the posterior predictive distribution\nprint(az.summary(trace, var_names=[\'y\'], hdi_prob=0.95, filter_vars=\'like\', filter_kwargs={\'var_names\': [\'theta\']}, filter_kwargs={\'var_names\': [\'mu\']}))\n\n# Print the']