['μ = pm.Normal(\'μ\', mu=0, sd=10)\n    σ = pm.HalfNormal(\'σ\', sd=10)\n    \n    # Define the likelihood\n    likelihood = pm.Poisson(\'likelihood\', mu=μ + σ * year, observed=C)\n    \n    # Sample from the posterior\n    trace = pm.sample(1000, tune=1000, chains=4, return_inferencedata=True, idata_kwargs={"log_likelihood": True})\n\n# Visualize the posterior\naz.plot_posterior(trace, var_names=[\'μ\', \'σ\'], hdi_prob=0.95);\nplt.show()\n\n# Visualize the posterior predictive checks\nwith trace:\n    ppc = pm.sample_posterior_predictive(trace, samples=500, var_names=[\'likelihood\'])\n\nplt.figure(figsize=(10, 6))\nfor i in range(len(year)):\n    plt.plot(year[i], C[i], \'o\', color=\'blue\', label=\'Observed\' if i == 0 else "")\n    plt.plot(year[i], ppc[\'likelihood\'][:, i].mean(axis=0), \'o\', color=\'red\', label=\'Predicted\' if i == 0 else "")\nplt.xlabel(\'Year\')\nplt.ylabel(\'Population Count\')\nplt.legend()\nplt.show()\n\n']