['μ = pm.Normal(\'μ\', mu=0, sd=10)\n    σ = pm.HalfNormal(\'σ\', sd=10)\n    \n    # Priors for the growth rate\n    growth_rate = pm.Normal(\'growth_rate\', mu=μ, sd=σ, shape=len(X))\n    \n    # Expected value of outcome\n    mu = growth_rate[np.arange(len(X))]\n    \n    # Likelihood (sampling distribution) of observations\n    Y_obs = pm.Normal(\'Y_obs\', mu=mu, sd=0.1, observed=y)\n    \n    # Handle missing data\n    mask = ~np.isnan(X)\n    growth_rate_masked = growth_rate[mask]\n    mu_masked = mu[mask]\n    Y_obs_masked = Y_obs[mask]\n    \n    # Sample from the posterior\n    trace = pm.sample(1000, tune=1000, chains=4, return_inferencedata=True, idata_kwargs={"log_likelihood": True})\n    \naz.plot_trace(trace)\nplt.show()\naz.summary(trace)\naz.plot_posterior(trace, var_names=[\'μ\', \'σ\', \'growth_rate\'])\nplt.show()\naz.plot_posterior(trace, var_names=[\'mu\', \'Y_obs\'])\nplt.show()\n\n']