['μ = pm.Normal(\'μ\', mu=0, sd=10)\n    σ = pm.HalfNormal(\'σ\', sd=10)\n    \n    # Define the likelihood\n    likelihood = pm.Poisson(\'likelihood\', mu=μ + σ * np.exp(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# Plot the posterior distributions\naz.plot_posterior(trace, var_names=[\'μ\', \'σ\'], hdi_prob=0.95)\nplt.show()\n\n# Plot the observed data and the posterior predictive distribution\nwith trace:\n    ppc = pm.sample_posterior_predictive(trace, samples=500, var_names=[\'likelihood\'])\n\nplt.scatter(year, C, color=\'blue\', label=\'Observed counts\')\nplt.plot(year, ppc[\'likelihood\'].mean(axis=0), color=\'red\', label=\'Posterior predictive mean\')\nplt.fill_between(year, ppc[\'likelihood\'].quantile(0.025, axis=0), ppc[\'likelihood\'].quantile(0.975, axis=0), color=\'red\', alpha=0.5, label=\'95% credible interval\')\nplt.xlabel(\'Year\')\nplt.ylabel(\'Peregrine counts\')\nplt.legend()\nplt.show()\n\n']