{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Survival Analysis" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "Think Bayes, Second Edition\n", "\n", "Copyright 2020 Allen B. Downey\n", "\n", "License: [Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)](https://creativecommons.org/licenses/by-nc-sa/4.0/)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:34.889427Z", "iopub.status.busy": "2021-04-16T19:37:34.888019Z", "iopub.status.idle": "2021-04-16T19:37:34.891992Z", "shell.execute_reply": "2021-04-16T19:37:34.891386Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# If we're running on Colab, install empiricaldist\n", "# https://pypi.org/project/empiricaldist/\n", "\n", "import sys\n", "IN_COLAB = 'google.colab' in sys.modules\n", "\n", "if IN_COLAB:\n", " !pip install empiricaldist" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:34.895783Z", "iopub.status.busy": "2021-04-16T19:37:34.895192Z", "iopub.status.idle": "2021-04-16T19:37:34.896815Z", "shell.execute_reply": "2021-04-16T19:37:34.897202Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Get utils.py\n", "\n", "from os.path import basename, exists\n", "\n", "def download(url):\n", " filename = basename(url)\n", " if not exists(filename):\n", " from urllib.request import urlretrieve\n", " local, _ = urlretrieve(url, filename)\n", " print('Downloaded ' + local)\n", " \n", "download('https://github.com/AllenDowney/ThinkBayes2/raw/master/soln/utils.py')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:34.900465Z", "iopub.status.busy": "2021-04-16T19:37:34.899738Z", "iopub.status.idle": "2021-04-16T19:37:35.562654Z", "shell.execute_reply": "2021-04-16T19:37:35.562138Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "from utils import set_pyplot_params\n", "set_pyplot_params()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This chapter introduces \"survival analysis\", which is a set of statistical methods used to answer questions about the time until an event.\n", "In the context of medicine it is literally about survival, but it can be applied to the time until any kind of event, or instead of time it can be about space or other dimensions.\n", "\n", "Survival analysis is challenging because the data we have are often incomplete. But as we'll see, Bayesian methods are particularly good at working with incomplete data.\n", "\n", "As examples, we'll consider two applications that are a little less serious than life and death: the time until light bulbs fail and the time until dogs in a shelter are adopted.\n", "To describe these \"survival times\", we'll use the Weibull distribution." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Weibull Distribution\n", "\n", "The [Weibull distribution](https://en.wikipedia.org/wiki/Weibull_distribution) is often used in survival analysis because it is a good model for the distribution of lifetimes for manufactured products, at least over some parts of the range.\n", "\n", "SciPy provides several versions of the Weibull distribution; the one we'll use is called `weibull_min`.\n", "To make the interface consistent with our notation, I'll wrap it in a function that takes as parameters $\\lambda$, which mostly affects the location or \"central tendency\" of the distribution, and $k$, which affects the shape." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.566415Z", "iopub.status.busy": "2021-04-16T19:37:35.565864Z", "iopub.status.idle": "2021-04-16T19:37:35.569596Z", "shell.execute_reply": "2021-04-16T19:37:35.569017Z" } }, "outputs": [], "source": [ "from scipy.stats import weibull_min\n", "\n", "def weibull_dist(lam, k):\n", " return weibull_min(k, scale=lam)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As an example, here's a Weibull distribution with parameters $\\lambda=3$ and $k=0.8$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.575101Z", "iopub.status.busy": "2021-04-16T19:37:35.574198Z", "iopub.status.idle": "2021-04-16T19:37:35.576663Z", "shell.execute_reply": "2021-04-16T19:37:35.577224Z" } }, "outputs": [], "source": [ "lam = 3\n", "k = 0.8\n", "actual_dist = weibull_dist(lam, k)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is an object that represents the distribution.\n", "Here's what the Weibull CDF looks like with those parameters." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.584820Z", "iopub.status.busy": "2021-04-16T19:37:35.583794Z", "iopub.status.idle": "2021-04-16T19:37:35.757065Z", "shell.execute_reply": "2021-04-16T19:37:35.756515Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "from empiricaldist import Cdf\n", "from utils import decorate\n", "\n", "qs = np.linspace(0, 12, 101)\n", "ps = actual_dist.cdf(qs)\n", "cdf = Cdf(ps, qs)\n", "cdf.plot()\n", "\n", "decorate(xlabel='Duration in time', \n", " ylabel='CDF',\n", " title='CDF of a Weibull distribution')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`actual_dist` provides `rvs`, which we can use to generate a random sample from this distribution." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.760484Z", "iopub.status.busy": "2021-04-16T19:37:35.760006Z", "iopub.status.idle": "2021-04-16T19:37:35.762412Z", "shell.execute_reply": "2021-04-16T19:37:35.761932Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "np.random.seed(17)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.766596Z", "iopub.status.busy": "2021-04-16T19:37:35.765998Z", "iopub.status.idle": "2021-04-16T19:37:35.768601Z", "shell.execute_reply": "2021-04-16T19:37:35.768230Z" } }, "outputs": [ { "data": { "text/plain": [ "array([0.80497283, 2.11577082, 0.43308797, 0.10862644, 5.17334866,\n", " 3.25745053, 3.05555883, 2.47401062, 0.05340806, 1.08386395])" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = actual_dist.rvs(10)\n", "data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So, given the parameters of the distribution, we can generate a sample.\n", "Now let's see if we can go the other way: given the sample, we'll estimate the parameters.\n", "\n", "Here's a uniform prior distribution for $\\lambda$:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.773021Z", "iopub.status.busy": "2021-04-16T19:37:35.772572Z", "iopub.status.idle": "2021-04-16T19:37:35.778527Z", "shell.execute_reply": "2021-04-16T19:37:35.778919Z" } }, "outputs": [], "source": [ "from utils import make_uniform\n", "\n", "lams = np.linspace(0.1, 10.1, num=101)\n", "prior_lam = make_uniform(lams, name='lambda')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And a uniform prior for $k$:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.783338Z", "iopub.status.busy": "2021-04-16T19:37:35.782851Z", "iopub.status.idle": "2021-04-16T19:37:35.784420Z", "shell.execute_reply": "2021-04-16T19:37:35.784771Z" } }, "outputs": [], "source": [ "ks = np.linspace(0.1, 5.1, num=101)\n", "prior_k = make_uniform(ks, name='k')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll use `make_joint` to make a joint prior distribution for the two parameters." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.788549Z", "iopub.status.busy": "2021-04-16T19:37:35.787996Z", "iopub.status.idle": "2021-04-16T19:37:35.789987Z", "shell.execute_reply": "2021-04-16T19:37:35.790430Z" } }, "outputs": [], "source": [ "from utils import make_joint\n", "\n", "prior = make_joint(prior_lam, prior_k)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is a `DataFrame` that represents the joint prior, with possible values of $\\lambda$ across the columns and values of $k$ down the rows.\n", "\n", "Now I'll use `meshgrid` to make a 3-D mesh with $\\lambda$ on the first axis (`axis=0`), $k$ on the second axis (`axis=1`), and the data on the third axis (`axis=2`)." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.794031Z", "iopub.status.busy": "2021-04-16T19:37:35.793470Z", "iopub.status.idle": "2021-04-16T19:37:35.798668Z", "shell.execute_reply": "2021-04-16T19:37:35.798094Z" } }, "outputs": [], "source": [ "lam_mesh, k_mesh, data_mesh = np.meshgrid(\n", " prior.columns, prior.index, data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can use `weibull_dist` to compute the PDF of the Weibull distribution for each pair of parameters and each data point." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.803606Z", "iopub.status.busy": "2021-04-16T19:37:35.802941Z", "iopub.status.idle": "2021-04-16T19:37:35.829401Z", "shell.execute_reply": "2021-04-16T19:37:35.828903Z" } }, "outputs": [ { "data": { "text/plain": [ "(101, 101, 10)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "densities = weibull_dist(lam_mesh, k_mesh).pdf(data_mesh)\n", "densities.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The likelihood of the data is the product of the probability densities along `axis=2`." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.832478Z", "iopub.status.busy": "2021-04-16T19:37:35.831851Z", "iopub.status.idle": "2021-04-16T19:37:35.835448Z", "shell.execute_reply": "2021-04-16T19:37:35.835040Z" } }, "outputs": [ { "data": { "text/plain": [ "2.0938302958838208e-05" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "likelihood = densities.prod(axis=2)\n", "likelihood.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can compute the posterior distribution in the usual way." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.839158Z", "iopub.status.busy": "2021-04-16T19:37:35.838606Z", "iopub.status.idle": "2021-04-16T19:37:35.843194Z", "shell.execute_reply": "2021-04-16T19:37:35.842756Z" }, "tags": [ "hide-output" ] }, "outputs": [ { "data": { "text/plain": [ "2.052573567183434e-09" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from utils import normalize\n", "\n", "posterior = prior * likelihood\n", "normalize(posterior)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following function encapsulates these steps.\n", "It takes a joint prior distribution and the data, and returns a joint posterior distribution." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.847328Z", "iopub.status.busy": "2021-04-16T19:37:35.846908Z", "iopub.status.idle": "2021-04-16T19:37:35.849172Z", "shell.execute_reply": "2021-04-16T19:37:35.848696Z" } }, "outputs": [], "source": [ "def update_weibull(prior, data):\n", " \"\"\"Update the prior based on data.\"\"\"\n", " lam_mesh, k_mesh, data_mesh = np.meshgrid(\n", " prior.columns, prior.index, data)\n", " \n", " densities = weibull_dist(lam_mesh, k_mesh).pdf(data_mesh)\n", " likelihood = densities.prod(axis=2)\n", "\n", " posterior = prior * likelihood\n", " normalize(posterior)\n", "\n", " return posterior" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's how we use it." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.852532Z", "iopub.status.busy": "2021-04-16T19:37:35.852026Z", "iopub.status.idle": "2021-04-16T19:37:35.875653Z", "shell.execute_reply": "2021-04-16T19:37:35.875092Z" } }, "outputs": [], "source": [ "posterior = update_weibull(prior, data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's a contour plot of the joint posterior distribution." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:35.889429Z", "iopub.status.busy": "2021-04-16T19:37:35.888348Z", "iopub.status.idle": "2021-04-16T19:37:36.051329Z", "shell.execute_reply": "2021-04-16T19:37:36.050848Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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kgJKREQCSQElIiKBpIASEZFAUkCJiEggKaBERCSQFFAiIhJICigREQkkBZSIiASSAkpERAJJASUiIoGkgBIRkUBSQImISCApoEREJJAUUCIiEkgKKBERCSQFlIiIBJICSkREAkkBJSIigaSAEhGRQFJAiYhIICmgREQkkBRQIiISSAooEREJJAWUiIgEkgJKREQCSQElIiKBFLGAMrMEM/vczOaa2QIz+32k6hIRkc4nJoJlVwPHOufKzSwWmGpm7zjnpkewThER6SQiFlDOOQeU+//G+g8XqfpERKRzieg5KDOLNrM5wHrgA+fcjEjWJyIinUdEA8o5V++cGwn0Bkab2fCG05jZ5WY2y8xmFRYWRrI5IiLSgeyWXnzOuVJgMnByI+Medc6Ncs6NysnJ2R3NERGRDiCSvfhyzCzDf54IHA8sjlR9IiLSuUSyF18P4Ckzi8YLwhecc29GsD4REelEItmL7ytg/0iVLyIinZuuJCEiIoGkgBIRkUBSQImISCApoEREJJAUUCIiEkgKKBERCSQFlIiIBJICSkREAkkBJSIigaSAEhGRQFJAiYhIILUooMzswEaGnbbrmyMiIuJp6R7UY2a275Z/zOw84JbINElERKTlVzM/G3jJzM4HjgB+BJwYsVaJiMger0UB5ZxbbmbnAq8C+cCJzrmqSDZMRET2bDsMKDObB7iwQZlANDDDzHDOjYhk40REZM/V3B7UqbulFSIiIg3sMKCccyt2V0NERETC6XdQIiISSAooEREJJAWUiIgEkgJKREQCSQElIiKBpIASEZFAUkCJiEggKaBERCSQFFAiIhJICigREQkkBZSIiASSAkpERAJJASUiIoGkgBIRkUBSQImISCApoEREJJAUUCIiEkgRCygz62NmH5vZIjNbYGZXR6ouERHpfHZ4y/edVAdc65z7wsxSgdlm9oFzbmEE6xQRkU4iYntQzrk1zrkv/OdlwCKgV6TqExGRzmW3nIMys1xgf2BGI+MuN7NZZjarsLBwdzRHREQ6gIgHlJmlABOBa5xzmxqOd8496pwb5ZwblZOTE+nmiIhIBxHRgDKzWLxwmuCcezmSdYmISOcSyV58BjwOLHLO/T1S9YiISOcUyT2ow4ELgWPNbI7/GBfB+kREpBOJWDdz59xUwCJVvoiIdG66koSIiASSAkpERAJJASUiIoGkgBIR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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from utils import plot_contour\n", "\n", "plot_contour(posterior)\n", "decorate(title='Posterior joint distribution of Weibull parameters')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks like the range of likely values for $\\lambda$ is about 1 to 4, which contains the actual value we used to generate the data, 3.\n", "And the range for $k$ is about 0.5 to 1.5, which contains the actual value, 0.8." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "## Marginal Distributions\n", "\n", "To be more precise about these ranges, we can extract the marginal distributions:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.055939Z", "iopub.status.busy": "2021-04-16T19:37:36.055450Z", "iopub.status.idle": "2021-04-16T19:37:36.057535Z", "shell.execute_reply": "2021-04-16T19:37:36.057916Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "from utils import marginal\n", "\n", "posterior_lam = marginal(posterior, 0)\n", "posterior_k = marginal(posterior, 1)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "And compute the posterior means and 90% credible intervals." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.083939Z", "iopub.status.busy": "2021-04-16T19:37:36.077060Z", "iopub.status.idle": "2021-04-16T19:37:36.242353Z", "shell.execute_reply": "2021-04-16T19:37:36.241898Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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ElQCaTndwa/u618QdOFlM7j74ffy0X+5ikByAICqvfVs3jh0AjPGxIaWlhauu+46li5dyqJFi3jyyScBqKysZP78+dx2220sXLiQD3/4w/zxj3/ksssuY86cObz66quhc7zxxhtce+21zJkzh+9///uA03e9fv16ysvLWb16NbW1taHyX/3qV1m+fDkLFy7k9ttvH5f+beuDShCqypP/9Sotje0AZE3K4OY7VzAhK43yFSVc/f4F/OnRHQA8/ZPXKV9ZTG7BRD9DNiZm3bXmp2E79//57UdGLJOens4TTzxBdnY29fX1rFy5kptuugmAAwcO8Mtf/pIHH3yQ5cuX87Of/YwXX3yRDRs28LWvfY3f/OY3AOzYsYPNmzfT2trKhRdeyOrVq9m8eTN79+5l586dnDhxgvLycj7xiU8AsH79er70pS8B8NGPfpSnnnqKNWvWnNPPajWoBLFrcxVv/vVIaP+9n72ECVlpof2r37+AwuIcwOmX2nD/FhvhZ0yMUlXuvvtuFi9ezPXXX8/Ro0c5ceIEAGVlZSxatIikpCQWLFjAddddh4iwaNEiKisrQ+dYu3YtGRkZFBQUcM011/Dqq6+yadMm1q1bRyAQoKioiGuvvTZU/vnnn2fFihUsWrSI5557joqKinP+OSxBJYhtfzwY2r74hjnMu6howOPJKQFuXr8itL/7lWr2bjsWsfiMMePnkUceoa6ujm3btvH6668zZcqU0P1HaWn9H0yTkpJC+0lJSfT09IQeGzwkPLg/1FDxjo4OPv3pT/P444+zc+dOPvWpT43LjBrWxJcAOtu72f9a/6rkV76nfMhyZQsms/xv5oQGUbyycR/zl02PSIzGxJPRNMOF0+nTp5k8eTIpKSk8//zzHD485GoWZ/Tkk09y11130draygsvvMC9995Lb28vDzzwALfeeiu1tbU8//zzfOhDHwolo4KCAlpaWnj88cd53/ved84/hyWoBLB32zF6unsBmFo6ifxpwy8GeNV7y0MJat+2Gpob28nKzYhInMaY8fHhD3+YNWvWsGzZMpYsWcL8+fPHfI6LL76Y1atXc+TIEb74xS9SVFTEzTffzHPPPceiRYuYO3cuV111FQC5ubl86lOfYtGiRZSWlrJ8+fJx+TkknvoZli1bprZg4ds9+u9/YcdfnE9Q139oMdetW3zG8g/88zNU7nJG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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.axvline(3, color='C5')\n", "posterior_lam.plot(color='C4', label='lambda')\n", "decorate(xlabel='lam',\n", " ylabel='PDF', \n", " title='Posterior marginal distribution of lam')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The vertical gray line show the actual value of $\\lambda$.\n", "\n", "Here's the marginal posterior distribution for $k$." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.258259Z", "iopub.status.busy": "2021-04-16T19:37:36.255943Z", "iopub.status.idle": "2021-04-16T19:37:36.436794Z", "shell.execute_reply": "2021-04-16T19:37:36.436423Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.axvline(0.8, color='C5')\n", "posterior_k.plot(color='C12', label='k')\n", "decorate(xlabel='k',\n", " ylabel='PDF', \n", " title='Posterior marginal distribution of k')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The posterior distributions are wide, which means that with only 10 data points we can't estimated the parameters precisely.\n", "But for both parameters, the actual value falls in the credible interval." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.440827Z", "iopub.status.busy": "2021-04-16T19:37:36.440375Z", "iopub.status.idle": "2021-04-16T19:37:36.443293Z", "shell.execute_reply": "2021-04-16T19:37:36.442768Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3 [1.2 4.4]\n" ] } ], "source": [ "print(lam, posterior_lam.credible_interval(0.9))" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.448649Z", "iopub.status.busy": "2021-04-16T19:37:36.448148Z", "iopub.status.idle": "2021-04-16T19:37:36.450658Z", "shell.execute_reply": "2021-04-16T19:37:36.450297Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8 [0.6 1.4]\n" ] } ], "source": [ "print(k, posterior_k.credible_interval(0.9))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Incomplete Data\n", "\n", "In the previous example we were given 10 random values from a Weibull distribution, and we used them to estimate the parameters (which we pretended we didn't know).\n", "\n", "But in many real-world scenarios, we don't have complete data; in particular, when we observe a system at a point in time, we generally have information about the past, but not the future.\n", "\n", "As an example, suppose you work at a dog shelter and you are interested in the time between the arrival of a new dog and when it is adopted.\n", "Some dogs might be snapped up immediately; others might have to wait longer.\n", "The people who operate the shelter might want to make inferences about the distribution of these residence times.\n", "\n", "Suppose you monitor arrivals and departures over 8 weeks and 10 dogs arrive during that interval.\n", "I'll assume that their arrival times are distributed uniformly, so I'll generate random values like this." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.454085Z", "iopub.status.busy": "2021-04-16T19:37:36.453519Z", "iopub.status.idle": "2021-04-16T19:37:36.455347Z", "shell.execute_reply": "2021-04-16T19:37:36.455719Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "np.random.seed(19)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.459627Z", "iopub.status.busy": "2021-04-16T19:37:36.459000Z", "iopub.status.idle": "2021-04-16T19:37:36.461880Z", "shell.execute_reply": "2021-04-16T19:37:36.462341Z" } }, "outputs": [ { "data": { "text/plain": [ "array([0.78026881, 6.08999773, 1.97550379, 1.1050535 , 2.65157251,\n", " 0.66399652, 5.37581665, 6.45275039, 7.86193532, 5.08528588])" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "start = np.random.uniform(0, 8, size=10)\n", "start" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's suppose that the residence times follow the Weibull distribution we used in the previous example.\n", "We can generate a sample from that distribution like this:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.466403Z", "iopub.status.busy": "2021-04-16T19:37:36.465743Z", "iopub.status.idle": "2021-04-16T19:37:36.467654Z", "shell.execute_reply": "2021-04-16T19:37:36.468115Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "np.random.seed(17)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.473358Z", "iopub.status.busy": "2021-04-16T19:37:36.472568Z", "iopub.status.idle": "2021-04-16T19:37:36.476129Z", "shell.execute_reply": "2021-04-16T19:37:36.475500Z" } }, "outputs": [ { "data": { "text/plain": [ "array([0.80497283, 2.11577082, 0.43308797, 0.10862644, 5.17334866,\n", " 3.25745053, 3.05555883, 2.47401062, 0.05340806, 1.08386395])" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "duration = actual_dist.rvs(10)\n", "duration" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll use these values to construct a `DataFrame` that contains the arrival and departure times for each dog, called `start` and `end`." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.481746Z", "iopub.status.busy": "2021-04-16T19:37:36.480901Z", "iopub.status.idle": "2021-04-16T19:37:36.483162Z", "shell.execute_reply": "2021-04-16T19:37:36.483712Z" } }, "outputs": [], "source": [ "import pandas as pd\n", "\n", "d = dict(start=start, end=start+duration)\n", "obs = pd.DataFrame(d)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For display purposes, I'll sort the rows of the `DataFrame` by arrival time." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.489558Z", "iopub.status.busy": "2021-04-16T19:37:36.488816Z", "iopub.status.idle": "2021-04-16T19:37:36.497799Z", "shell.execute_reply": "2021-04-16T19:37:36.497392Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
startend
00.6639973.921447
10.7802691.585242
21.1050531.213680
31.9755042.408592
42.6515737.824921
55.0852866.169150
65.3758178.431375
76.0899988.205769
86.4527508.926761
97.8619357.915343
\n", "
" ], "text/plain": [ " start end\n", "0 0.663997 3.921447\n", "1 0.780269 1.585242\n", "2 1.105053 1.213680\n", "3 1.975504 2.408592\n", "4 2.651573 7.824921\n", "5 5.085286 6.169150\n", "6 5.375817 8.431375\n", "7 6.089998 8.205769\n", "8 6.452750 8.926761\n", "9 7.861935 7.915343" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "obs = obs.sort_values(by='start', ignore_index=True)\n", "obs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that several of the lifelines extend past the observation window of 8 weeks.\n", "So if we observed this system at the beginning of Week 8, we would have incomplete information.\n", "Specifically, we would not know the future adoption times for Dogs 6, 7, and 8.\n", "\n", "I'll simulate this incomplete data by identifying the lifelines that extend past the observation window:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.501084Z", "iopub.status.busy": "2021-04-16T19:37:36.500671Z", "iopub.status.idle": "2021-04-16T19:37:36.503464Z", "shell.execute_reply": "2021-04-16T19:37:36.503887Z" } }, "outputs": [], "source": [ "censored = obs['end'] > 8" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`censored` is a Boolean Series that is `True` for lifelines that extend past Week 8.\n", "\n", "Data that is not available is sometimes called \"censored\" in the sense that it is hidden from us.\n", "But in this case it is hidden because we don't know the future, not because someone is censoring it.\n", "\n", "For the lifelines that are censored, I'll modify `end` to indicate when they are last observed and `status` to indicate that the observation is incomplete. " ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.509515Z", "iopub.status.busy": "2021-04-16T19:37:36.508879Z", "iopub.status.idle": "2021-04-16T19:37:36.510902Z", "shell.execute_reply": "2021-04-16T19:37:36.511348Z" } }, "outputs": [], "source": [ "obs.loc[censored, 'end'] = 8\n", "obs.loc[censored, 'status'] = 0" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can plot a \"lifeline\" for each dog, showing the arrival and departure times on a time line." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.517051Z", "iopub.status.busy": "2021-04-16T19:37:36.516471Z", "iopub.status.idle": "2021-04-16T19:37:36.519153Z", "shell.execute_reply": "2021-04-16T19:37:36.518641Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "def plot_lifelines(obs):\n", " \"\"\"Plot a line for each observation.\n", " \n", " obs: DataFrame\n", " \"\"\"\n", " for y, row in obs.iterrows():\n", " start = row['start']\n", " end = row['end']\n", " status = row['status']\n", " \n", " if status == 0:\n", " # ongoing\n", " plt.hlines(y, start, end, color='C0')\n", " else:\n", " # complete\n", " plt.hlines(y, start, end, color='C1')\n", " plt.plot(end, y, marker='o', color='C1')\n", " \n", " decorate(xlabel='Time (weeks)',\n", " ylabel='Dog index',\n", " title='Lifelines showing censored and uncensored observations')\n", "\n", " plt.gca().invert_yaxis()" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.541732Z", "iopub.status.busy": "2021-04-16T19:37:36.537157Z", "iopub.status.idle": "2021-04-16T19:37:36.697499Z", "shell.execute_reply": "2021-04-16T19:37:36.697069Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_lifelines(obs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And I'll add one more column to the table, which contains the duration of the observed parts of the lifelines." ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.701567Z", "iopub.status.busy": "2021-04-16T19:37:36.701132Z", "iopub.status.idle": "2021-04-16T19:37:36.703232Z", "shell.execute_reply": "2021-04-16T19:37:36.702836Z" } }, "outputs": [], "source": [ "obs['T'] = obs['end'] - obs['start']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What we have simulated is the data that would be available at the beginning of Week 8." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using Incomplete Data\n", "\n", "Now, let's see how we can use both kinds of data, complete and incomplete, to infer the parameters of the distribution of residence times.\n", "\n", "First I'll split the data into two sets: `data1` contains residence times for dogs whose arrival and departure times are known; `data2` contains incomplete residence times for dogs who were not adopted during the observation interval." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.707495Z", "iopub.status.busy": "2021-04-16T19:37:36.706904Z", "iopub.status.idle": "2021-04-16T19:37:36.709424Z", "shell.execute_reply": "2021-04-16T19:37:36.708865Z" } }, "outputs": [], "source": [ "data1 = obs.loc[~censored, 'T']\n", "data2 = obs.loc[censored, 'T']" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.714502Z", "iopub.status.busy": "2021-04-16T19:37:36.713805Z", "iopub.status.idle": "2021-04-16T19:37:36.717518Z", "shell.execute_reply": "2021-04-16T19:37:36.716979Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "0 3.257451\n", "1 0.804973\n", "2 0.108626\n", "3 0.433088\n", "4 5.173349\n", "5 1.083864\n", "9 0.053408\n", "Name: T, dtype: float64" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data1" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.722147Z", "iopub.status.busy": "2021-04-16T19:37:36.721569Z", "iopub.status.idle": "2021-04-16T19:37:36.724025Z", "shell.execute_reply": "2021-04-16T19:37:36.724393Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "6 2.624183\n", "7 1.910002\n", "8 1.547250\n", "Name: T, dtype: float64" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the complete data, we can use `update_weibull`, which uses the PDF of the Weibull distribution to compute the likelihood of the data." ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.727904Z", "iopub.status.busy": "2021-04-16T19:37:36.727229Z", "iopub.status.idle": "2021-04-16T19:37:36.745191Z", "shell.execute_reply": "2021-04-16T19:37:36.744717Z" } }, "outputs": [], "source": [ "posterior1 = update_weibull(prior, data1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the incomplete data, we have to think a little harder.\n", "At the end of the observation interval, we don't know what the residence time will be, but we can put a lower bound on it; that is, we can say that the residence time will be greater than `T`.\n", "\n", "And that means that we can compute the likelihood of the data using the survival function, which is the probability that a value from the distribution exceeds `T`.\n", "\n", "The following function is identical to `update_weibull` except that it uses `sf`, which computes the survival function, rather than `pdf`." ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.748842Z", "iopub.status.busy": "2021-04-16T19:37:36.748416Z", "iopub.status.idle": "2021-04-16T19:37:36.750080Z", "shell.execute_reply": "2021-04-16T19:37:36.750423Z" } }, "outputs": [], "source": [ "def update_weibull_incomplete(prior, data):\n", " \"\"\"Update the prior using incomplete data.\"\"\"\n", " lam_mesh, k_mesh, data_mesh = np.meshgrid(\n", " prior.columns, prior.index, data)\n", " \n", " # evaluate the survival function\n", " probs = weibull_dist(lam_mesh, k_mesh).sf(data_mesh)\n", " likelihood = probs.prod(axis=2)\n", "\n", " posterior = prior * likelihood\n", " normalize(posterior)\n", "\n", " return posterior" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the update with the incomplete data." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.753329Z", "iopub.status.busy": "2021-04-16T19:37:36.752847Z", "iopub.status.idle": "2021-04-16T19:37:36.760899Z", "shell.execute_reply": "2021-04-16T19:37:36.760377Z" } }, "outputs": [], "source": [ "posterior2 = update_weibull_incomplete(posterior1, data2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what the joint posterior distribution looks like after both updates." ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.778276Z", "iopub.status.busy": "2021-04-16T19:37:36.777834Z", "iopub.status.idle": "2021-04-16T19:37:36.913674Z", "shell.execute_reply": "2021-04-16T19:37:36.913302Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_contour(posterior2)\n", "decorate(title='Posterior joint distribution, incomplete data')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Compared to the previous contour plot, it looks like the range of likely values for $\\lambda$ is substantially wider.\n", "We can see that more clearly by looking at the marginal distributions." ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.917569Z", "iopub.status.busy": "2021-04-16T19:37:36.916847Z", "iopub.status.idle": "2021-04-16T19:37:36.920372Z", "shell.execute_reply": "2021-04-16T19:37:36.919902Z" } }, "outputs": [], "source": [ "posterior_lam2 = marginal(posterior2, 0)\n", "posterior_k2 = marginal(posterior2, 1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the posterior marginal distribution for $\\lambda$ compared to the distribution we got using all complete data." ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:36.960290Z", "iopub.status.busy": "2021-04-16T19:37:36.959500Z", "iopub.status.idle": "2021-04-16T19:37:37.098684Z", "shell.execute_reply": "2021-04-16T19:37:37.099061Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior_lam.plot(color='C5', label='All complete',\n", " linestyle='dashed')\n", "posterior_lam2.plot(color='C2', label='Some censored')\n", "\n", "decorate(xlabel='lambda',\n", " ylabel='PDF', \n", " title='Marginal posterior distribution of lambda')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The distribution with some incomplete data is substantially wider.\n", "\n", "As an aside, notice that the posterior distribution does not come all the way to 0 on the right side.\n", "That suggests that the range of the prior distribution is not wide enough to cover the most likely values for this parameter.\n", "If I were concerned about making this distribution more accurate, I would go back and run the update again with a wider prior.\n", "\n", "Here's the posterior marginal distribution for $k$:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.139823Z", "iopub.status.busy": "2021-04-16T19:37:37.139316Z", "iopub.status.idle": "2021-04-16T19:37:37.272916Z", "shell.execute_reply": "2021-04-16T19:37:37.272485Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior_k.plot(color='C5', label='All complete',\n", " linestyle='dashed')\n", "posterior_k2.plot(color='C12', label='Some censored')\n", "\n", "decorate(xlabel='k',\n", " ylabel='PDF', \n", " title='Posterior marginal distribution of k')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this example, the marginal distribution is shifted to the left when we have incomplete data, but it is not substantially wider.\n", "\n", "In summary, we have seen how to combine complete and incomplete data to estimate the parameters of a Weibull distribution, which is useful in many real-world scenarios where some of the data are censored.\n", "\n", "In general, the posterior distributions are wider when we have incomplete data, because less information leads to more uncertainty.\n", "\n", "This example is based on data I generated; in the next section we'll do a similar analysis with real data." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Light Bulbs\n", "\n", "In 2007 [researchers ran an experiment](https://www.researchgate.net/publication/225450325_Renewal_Rate_of_Filament_Lamps_Theory_and_Experiment) to characterize the distribution of lifetimes for light bulbs.\n", "Here is their description of the experiment:\n", "\n", "> An assembly of 50 new Philips (India) lamps with the rating 40 W, 220 V (AC) was taken and installed in the horizontal orientation and uniformly distributed over a lab area 11 m x 7 m.\n", ">\n", "> The assembly was monitored at regular intervals of 12 h to look for failures. The instants of recorded failures were [recorded] and a total of 32 data points were obtained such that even the last bulb failed. " ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.276799Z", "iopub.status.busy": "2021-04-16T19:37:37.276346Z", "iopub.status.idle": "2021-04-16T19:37:37.278661Z", "shell.execute_reply": "2021-04-16T19:37:37.278236Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "download('https://gist.github.com/epogrebnyak/7933e16c0ad215742c4c104be4fbdeb1/raw/c932bc5b6aa6317770c4cbf43eb591511fec08f9/lamps.csv')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can load the data into a `DataFrame` like this:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.282359Z", "iopub.status.busy": "2021-04-16T19:37:37.281849Z", "iopub.status.idle": "2021-04-16T19:37:37.291574Z", "shell.execute_reply": "2021-04-16T19:37:37.292000Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
hfK
i
00050
1840248
2852147
3936146
4960145
\n", "
" ], "text/plain": [ " h f K\n", "i \n", "0 0 0 50\n", "1 840 2 48\n", "2 852 1 47\n", "3 936 1 46\n", "4 960 1 45" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv('lamps.csv', index_col=0)\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Column `h` contains the times when bulbs failed in hours; Column `f` contains the number of bulbs that failed at each time.\n", "We can represent these values and frequencies using a `Pmf`, like this:" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.296777Z", "iopub.status.busy": "2021-04-16T19:37:37.296262Z", "iopub.status.idle": "2021-04-16T19:37:37.298609Z", "shell.execute_reply": "2021-04-16T19:37:37.298966Z" } }, "outputs": [ { "data": { "text/plain": [ "50" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from empiricaldist import Pmf\n", "\n", "pmf_bulb = Pmf(df['f'].to_numpy(), df['h'])\n", "pmf_bulb.normalize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because of the design of this experiment, we can consider the data to be a representative sample from the distribution of lifetimes, at least for light bulbs that are lit continuously." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The average lifetime is about 1400 h." ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.302433Z", "iopub.status.busy": "2021-04-16T19:37:37.301719Z", "iopub.status.idle": "2021-04-16T19:37:37.305072Z", "shell.execute_reply": "2021-04-16T19:37:37.304694Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "1413.84" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pmf_bulb.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Assuming that these data are well modeled by a Weibull distribution, let's estimate the parameters that fit the data.\n", "Again, I'll start with uniform priors for $\\lambda$ and $k$:" ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.309226Z", "iopub.status.busy": "2021-04-16T19:37:37.308759Z", "iopub.status.idle": "2021-04-16T19:37:37.310609Z", "shell.execute_reply": "2021-04-16T19:37:37.311018Z" } }, "outputs": [], "source": [ "lams = np.linspace(1000, 2000, num=51)\n", "prior_lam = make_uniform(lams, name='lambda')" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.315203Z", "iopub.status.busy": "2021-04-16T19:37:37.314719Z", "iopub.status.idle": "2021-04-16T19:37:37.316795Z", "shell.execute_reply": "2021-04-16T19:37:37.317307Z" } }, "outputs": [], "source": [ "ks = np.linspace(1, 10, num=51)\n", "prior_k = make_uniform(ks, name='k')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For this example, there are 51 values in the prior distribution, rather than the usual 101. That's because we are going to use the posterior distributions to do some computationally-intensive calculations.\n", "They will run faster with fewer values, but the results will be less precise.\n", "\n", "As usual, we can use `make_joint` to make the prior joint distribution." ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.321446Z", "iopub.status.busy": "2021-04-16T19:37:37.320851Z", "iopub.status.idle": "2021-04-16T19:37:37.322797Z", "shell.execute_reply": "2021-04-16T19:37:37.323250Z" } }, "outputs": [], "source": [ "prior_bulb = make_joint(prior_lam, prior_k)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Although we have data for 50 light bulbs, there are only 32 unique lifetimes in the dataset. For the update, it is convenient to express the data in the form of 50 lifetimes, with each lifetime repeated the given number of times.\n", "We can use `np.repeat` to transform the data." ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.327777Z", "iopub.status.busy": "2021-04-16T19:37:37.327199Z", "iopub.status.idle": "2021-04-16T19:37:37.330359Z", "shell.execute_reply": "2021-04-16T19:37:37.330844Z" } }, "outputs": [ { "data": { "text/plain": [ "50" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data_bulb = np.repeat(df['h'], df['f'])\n", "len(data_bulb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can use `update_weibull` to do the update." ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.334786Z", "iopub.status.busy": "2021-04-16T19:37:37.334174Z", "iopub.status.idle": "2021-04-16T19:37:37.363731Z", "shell.execute_reply": "2021-04-16T19:37:37.364153Z" } }, "outputs": [], "source": [ "posterior_bulb = update_weibull(prior_bulb, data_bulb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the posterior joint distribution looks like:" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.376746Z", "iopub.status.busy": "2021-04-16T19:37:37.372073Z", "iopub.status.idle": "2021-04-16T19:37:37.531370Z", "shell.execute_reply": "2021-04-16T19:37:37.530980Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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iIhIKCmgREQklBRQIiISSgooEREJJQWUiIiEkgJKRERCSQElIiKhpIASEZFQUkCJiEgoKaBERCSUFFAiIhJKCigREQklBZSIiISSAkpEREJJASUiIqEUk4Ays9+Y2Rwzm21mL5lZUizaISIi4VXnAWVm7YBfA5nu3geIAy6p63aIiEi4xeoUXzzQyMzigWQgK0btEBGRkKrzgHL3VcBDwHIgG9jk7h+WLWdmw81ssplNzsnJqetmiohIjMXiFF8qcC5wCNAWaGxmV5Qt5+4j3D3T3TPT09PrupkiIhJjsTjFdwrwnbvnuHsRMAo4JgbtEBGREItFQC0HjjazZDMz4GRgXgzaISIiIRaLa1ATgdeAqcCsoA0j6rodIiISbvGxqNTd7wDuiEXdIiJSP2gmCRERCSUFlIiIhJICSkREQkkBJSIioaSAEhGRUFJAiYhIKCmgREQklBRQIiISSgooEREJJQWUiIiEkgJKRERCSQElIiKhpIASEZFQUkCJiEgoKaBERCSU6jygzKynmU2P+tlsZjfUdTtERCTc6vyGhe6+AOgHYGZxwCpgdF23Q0REwi3Wp/hOBr5192UxboeIiIRMrAPqEuClGLdBRERCKGYBZWaJwDnAq5WsH25mk81sck5OTt02TkREYi6WR1BnAFPdfU1FK919hLtnuntmenp6HTdNRERiLZYBdSk6vSciIpWISUCZWTJwKjAqFvWLiEj41fkwcwB3zwNaxKJuERGpH2I9ik9ERKRCCigREQklBZSIiISSAkpEREJJASUiIqGkgBIRkVBSQImISCgpoEREJJQUUCIiEkoKKBERCSUFlIiIhJICSkREQkkBJSIioaSAEhGRUFJAiYhIKCmgREQklGJ1R93mZvaamc03s3lmNjgW7RARkfCKyR11gceA9939QjNLBJJj1A4REQmpOg8oM2sGDAWuBnD3QqCwrtshIiLhFotTfF2AHOBZM5tmZk+bWeOyhcxsuJlNNrPJOTk5dd9KERGJqVgEVDwwAHjS3fsD24BbyhZy9xHununumenp6XXdRhERibFYBNRKYKW7Twx+f41IYImIiOxU5wHl7quBFWbWM1h0MjC3rtshIiLhFqtRfNcBI4MRfEuAH8WoHSIiElIxCSh3nw5kxqJuERGpHzSThIiIhJICSkREQkkBJSIioaSAEhGRUFJAiYhIKO1V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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_contour(posterior_bulb)\n", "decorate(title='Joint posterior distribution, light bulbs')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To summarize this joint posterior distribution, we'll compute the posterior mean lifetime." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior Means\n", "\n", "To compute the posterior mean of a joint distribution, we'll make a mesh that contains the values of $\\lambda$ and $k$." ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.534652Z", "iopub.status.busy": "2021-04-16T19:37:37.534197Z", "iopub.status.idle": "2021-04-16T19:37:37.536544Z", "shell.execute_reply": "2021-04-16T19:37:37.536146Z" } }, "outputs": [], "source": [ "lam_mesh, k_mesh = np.meshgrid(\n", " prior_bulb.columns, prior_bulb.index)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now for each pair of parameters we'll use `weibull_dist` to compute the mean." ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.540341Z", "iopub.status.busy": "2021-04-16T19:37:37.539900Z", "iopub.status.idle": "2021-04-16T19:37:37.543970Z", "shell.execute_reply": "2021-04-16T19:37:37.544466Z" } }, "outputs": [ { "data": { "text/plain": [ "(51, 51)" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "means = weibull_dist(lam_mesh, k_mesh).mean()\n", "means.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is an array with the same dimensions as the joint distribution.\n", "\n", "Now we need to weight each mean with the corresponding probability from the joint posterior." ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.549477Z", "iopub.status.busy": "2021-04-16T19:37:37.548505Z", "iopub.status.idle": "2021-04-16T19:37:37.551293Z", "shell.execute_reply": "2021-04-16T19:37:37.550670Z" } }, "outputs": [], "source": [ "prod = means * posterior_bulb" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally we compute the sum of the weighted means." ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.556060Z", "iopub.status.busy": "2021-04-16T19:37:37.555354Z", "iopub.status.idle": "2021-04-16T19:37:37.559241Z", "shell.execute_reply": "2021-04-16T19:37:37.558666Z" } }, "outputs": [ { "data": { "text/plain": [ "1412.7242774305005" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prod.to_numpy().sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Based on the posterior distribution, we think the mean lifetime is about 1413 hours.\n", "\n", "The following function encapsulates these steps:" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.564528Z", "iopub.status.busy": "2021-04-16T19:37:37.563826Z", "iopub.status.idle": "2021-04-16T19:37:37.566786Z", "shell.execute_reply": "2021-04-16T19:37:37.566099Z" } }, "outputs": [], "source": [ "def joint_weibull_mean(joint):\n", " \"\"\"Compute the mean of a joint distribution of Weibulls.\"\"\"\n", " lam_mesh, k_mesh = np.meshgrid(\n", " joint.columns, joint.index)\n", " means = weibull_dist(lam_mesh, k_mesh).mean()\n", " prod = means * joint\n", " return prod.to_numpy().sum()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "## Incomplete Information\n", "\n", "The previous update was not quite right, because it assumed each light bulb died at the instant we observed it. \n", "According to the report, the researchers only checked the bulbs every 12 hours. So if they see that a bulb has died, they know only that it died during the 12 hours since the last check.\n", "\n", "It is more strictly correct to use the following update function, which uses the CDF of the Weibull distribution to compute the probability that a bulb dies during a given 12 hour interval." ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.572709Z", "iopub.status.busy": "2021-04-16T19:37:37.572014Z", "iopub.status.idle": "2021-04-16T19:37:37.574370Z", "shell.execute_reply": "2021-04-16T19:37:37.574922Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "def update_weibull_between(prior, data, dt=12):\n", " \"\"\"Update the prior based on data.\"\"\"\n", " lam_mesh, k_mesh, data_mesh = np.meshgrid(\n", " prior.columns, prior.index, data)\n", " dist = weibull_dist(lam_mesh, k_mesh)\n", " cdf1 = dist.cdf(data_mesh)\n", " cdf2 = dist.cdf(data_mesh-12)\n", " likelihood = (cdf1 - cdf2).prod(axis=2)\n", "\n", " posterior = prior * likelihood\n", " normalize(posterior)\n", "\n", " return posterior" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The probability that a value falls in an interval is the difference between the CDF at the beginning and end of the interval.\n", "\n", "Here's how we run the update." ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.580024Z", "iopub.status.busy": "2021-04-16T19:37:37.579225Z", "iopub.status.idle": "2021-04-16T19:37:37.617913Z", "shell.execute_reply": "2021-04-16T19:37:37.617496Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "posterior_bulb2 = update_weibull_between(prior_bulb, data_bulb)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "And here are the results." ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.637793Z", "iopub.status.busy": "2021-04-16T19:37:37.634750Z", "iopub.status.idle": "2021-04-16T19:37:37.784827Z", "shell.execute_reply": "2021-04-16T19:37:37.785224Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_contour(posterior_bulb2)\n", "decorate(title='Joint posterior distribution, light bulbs')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Visually this result is almost identical to what we got using the PDF.\n", "And that's good news, because it suggests that using the PDF can be a good approximation even if it's not strictly correct.\n", "\n", "To see whether it makes any difference at all, let's check the posterior means." ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.789388Z", "iopub.status.busy": "2021-04-16T19:37:37.788691Z", "iopub.status.idle": "2021-04-16T19:37:37.793773Z", "shell.execute_reply": "2021-04-16T19:37:37.794199Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "1412.7242774305005" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "joint_weibull_mean(posterior_bulb)" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.799345Z", "iopub.status.busy": "2021-04-16T19:37:37.798512Z", "iopub.status.idle": "2021-04-16T19:37:37.803590Z", "shell.execute_reply": "2021-04-16T19:37:37.804088Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "1406.8171982320873" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "joint_weibull_mean(posterior_bulb2)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "When we take into account the 12-hour interval between observations, the posterior mean is about 6 hours less.\n", "And that makes sense: if we assume that a bulb is equally likely to expire at any point in the interval, the average would be the midpoint of the interval." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior Predictive Distribution\n", "\n", "Suppose you install 100 light bulbs of the kind in the previous section, and you come back to check on them after 1000 hours. Based on the posterior distribution we just computed, what is the distribution of the number of bulbs you find dead?\n", "\n", "If we knew the parameters of the Weibull distribution for sure, the answer would be a binomial distribution.\n", "\n", "For example, if we know that $\\lambda=1550$ and $k=4.25$, we can use `weibull_dist` to compute the probability that a bulb dies before you return:" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.810920Z", "iopub.status.busy": "2021-04-16T19:37:37.810150Z", "iopub.status.idle": "2021-04-16T19:37:37.814082Z", "shell.execute_reply": "2021-04-16T19:37:37.813392Z" } }, "outputs": [ { "data": { "text/plain": [ "0.14381685899960547" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lam = 1550\n", "k = 4.25\n", "t = 1000\n", "\n", "prob_dead = weibull_dist(lam, k).cdf(t)\n", "prob_dead" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If there are 100 bulbs and each has this probability of dying, the number of dead bulbs follows a binomial distribution." ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.818684Z", "iopub.status.busy": "2021-04-16T19:37:37.818078Z", "iopub.status.idle": "2021-04-16T19:37:37.820328Z", "shell.execute_reply": "2021-04-16T19:37:37.819814Z" } }, "outputs": [], "source": [ "from utils import make_binomial\n", "\n", "n = 100\n", "p = prob_dead\n", "dist_num_dead = make_binomial(n, p)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "And here's what it looks like." ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:37.902574Z", "iopub.status.busy": "2021-04-16T19:37:37.892613Z", "iopub.status.idle": "2021-04-16T19:37:38.033693Z", "shell.execute_reply": "2021-04-16T19:37:38.034038Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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AKqrq7nuuusAuOiii3jkkUf4+Mc/DkBJSQlPP/00N910E/Pnz2fp0qUMHz6co446iquvvprNmzfzu9/9jueee47i4mKuuOIK7rnnHm688UZuueUWli9fDsDKlSvTbnfxxRcnxVNfX8/nPvc53nzzTcyM7du3H+pbqRJUvnr5rU1s3bkXgMHlpYwfNRSApuYWHl28JpehicRWXV0d8+fP5+6772b69Olty0877TSGDh1KWVkZ1dXVrFu3jsWLF3PqqadSVVVFUVERF154IU8//TSHHXYYu3btoqGhgZqaGi644AKefvppnnnmmaQEdfbZZwNwwgknsHbt2rTxnH766VRWVjJgwADOPvtsnn32WQBuvvlmjjvuOObMmUNNTQ1vvRXUjBQWFnLOOee07f/kk08ye/Zspk6dyhNPPMGKFSva1n3iE58AYOrUqRx77LGMHj2a0tJSjjzySGpqanj88cdZunQps2bNYvr06Tz++OOsWXPgd0dn20XjGTJkCGVlZXz+85/nwQcfpLy8vKdvzwGUoPLUY5HS04eOP4K/O2Vy2/zC59+msSlz9dMi+Wro0KGMGzeO5557Lml5aWl7jUNhYSHNzc10NpjrSSedxJ133snkyZM55ZRTeOaZZ3j++ed5//vff8AxE8dLJ7XZtZmxaNEi/vznP/P888/zyiuvcPzxx7c9O1RWVkZhYSEQPFd2xRVX8MADD/Daa69x2WWXJT1jlDh/QUFB0usrKChoe32XXHIJy5cvZ/ny5axatYrrr7/+gBg72y4aT1FRES+99BLnnHMODz30EPPmzevw+nWXqvjy0Nade1m6amPb/GkzJzJq2EDu/tNrbN25lx279/HMq+9w2gnde1pbJNu6qobLlJKSEh566CE++tGPMmjQIC644IIOt509ezZXXXUVW7ZsYdiwYdx7771ceeWVAMydO5frrruO6667juOPP54nn3ySAQMGMHTo0B7F89hjj1FfX8+AAQN46KGHuOOOO1i/fj3Dhg2jvLycN998kxdeeCHtvolkNGLECHbt2sUDDzzAued2/7qedtppzJ8/n6uvvpqRI0dSX19PQ0MDRxxxBMXFxTQ1NVFcXNzpdlG7du1iz549nHnmmcyZM4f3vOc9PboW6ShB5aHHl/6N1vDX3bETqhgzYjAAZ500id88+mqwzbK1SlAiaQwcOJBHHnmE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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "dist_num_dead.plot(label='known parameters')\n", "\n", "decorate(xlabel='Number of dead bulbs',\n", " ylabel='PMF',\n", " title='Predictive distribution with known parameters')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But that's based on the assumption that we know $\\lambda$ and $k$, and we don't.\n", "Instead, we have a posterior distribution that contains possible values of these parameters and their probabilities.\n", "\n", "So the posterior predictive distribution is not a single binomial; instead it is a mixture of binomials, weighted with the posterior probabilities.\n", "\n", "We can use `make_mixture` to compute the posterior predictive distribution. \n", "It doesn't work with joint distributions, but we can convert the `DataFrame` that represents a joint distribution to a `Series`, like this:" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:38.037138Z", "iopub.status.busy": "2021-04-16T19:37:38.036652Z", "iopub.status.idle": "2021-04-16T19:37:38.042709Z", "shell.execute_reply": "2021-04-16T19:37:38.042213Z" } }, "outputs": [ { "data": { "text/plain": [ "k lambda\n", "1.0 1000.0 8.146763e-25\n", " 1020.0 1.210486e-24\n", " 1040.0 1.738327e-24\n", " 1060.0 2.418201e-24\n", " 1080.0 3.265549e-24\n", "dtype: float64" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior_series = posterior_bulb.stack()\n", "posterior_series.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is a `Series` with a `MultiIndex` that contains two \"levels\": the first level contains the values of `k`; the second contains the values of `lam`.\n", "\n", "With the posterior in this form, we can iterate through the possible parameters and compute a predictive distribution for each pair." ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:38.059067Z", "iopub.status.busy": "2021-04-16T19:37:38.056752Z", "iopub.status.idle": "2021-04-16T19:37:40.599814Z", "shell.execute_reply": "2021-04-16T19:37:40.600201Z" } }, "outputs": [], "source": [ "pmf_seq = []\n", "for (k, lam) in posterior_series.index:\n", " prob_dead = weibull_dist(lam, k).cdf(t)\n", " pmf = make_binomial(n, prob_dead)\n", " pmf_seq.append(pmf)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can use `make_mixture`, passing as parameters the posterior probabilities in `posterior_series` and the sequence of binomial distributions in `pmf_seq`." ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:40.673531Z", "iopub.status.busy": "2021-04-16T19:37:40.638022Z", "iopub.status.idle": "2021-04-16T19:37:40.898812Z", "shell.execute_reply": "2021-04-16T19:37:40.899237Z" } }, "outputs": [], "source": [ "from utils import make_mixture\n", "\n", "post_pred = make_mixture(posterior_series, pmf_seq)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the posterior predictive distribution looks like, compared to the binomial distribution we computed with known parameters." ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:40.938328Z", "iopub.status.busy": "2021-04-16T19:37:40.915391Z", "iopub.status.idle": "2021-04-16T19:37:41.080448Z", "shell.execute_reply": "2021-04-16T19:37:41.080783Z" }, "scrolled": true, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "dist_num_dead.plot(label='known parameters')\n", "post_pred.plot(label='unknown parameters')\n", "decorate(xlabel='Number of dead bulbs',\n", " ylabel='PMF',\n", " title='Posterior predictive distribution')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior predictive distribution is wider because it represents our uncertainty about the parameters as well as our uncertainty about the number of dead bulbs." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summary\n", "\n", "This chapter introduces survival analysis, which is used to answer questions about the time until an event, and the Weibull distribution, which is a good model for \"lifetimes\" (broadly interpreted) in a number of domains.\n", "\n", "We used joint distributions to represent prior probabilities for the parameters of the Weibull distribution, and we updated them three ways: knowing the exact duration of a lifetime, knowing a lower bound, and knowing that a lifetime fell in a given interval.\n", "\n", "These examples demonstrate a feature of Bayesian methods: they can be adapted to handle incomplete, or \"censored\", data with only small changes. As an exercise, you'll have a chance to work with one more type of censored data, when we are given an upper bound on a lifetime.\n", "\n", "The methods in this chapter work with any distribution with two parameters.\n", "In the exercises, you'll have a chance to estimate the parameters of a two-parameter gamma distribution, which is used to describe a variety of natural phenomena.\n", "\n", "And in the next chapter we'll move on to models with three parameters!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercises" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "**Exercise:** Using data about the lifetimes of light bulbs, we computed the posterior distribution from the parameters of a Weibull distribution, $\\lambda$ and $k$, and the posterior predictive distribution for the number of dead bulbs, out of 100, after 1000 hours.\n", "\n", "Now suppose you do the experiment: You install 100 light bulbs, come back after 1000 hours, and find 20 dead light bulbs.\n", "Update the posterior distribution based on this data.\n", "How much does it change the posterior mean?" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true, "tags": [ "hide-cell" ] }, "source": [ "Suggestions:\n", "\n", "1. Use a mesh grid to compute the probability of finding a bulb dead after 1000 hours for each pair of parameters.\n", "\n", "2. For each of those probabilities, compute the likelihood of finding 20 dead bulbs out of 100.\n", "\n", "3. Use those likelihoods to update the posterior distribution." ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.085218Z", "iopub.status.busy": "2021-04-16T19:37:41.084757Z", "iopub.status.idle": "2021-04-16T19:37:41.088304Z", "shell.execute_reply": "2021-04-16T19:37:41.088622Z" } }, "outputs": [ { "data": { "text/plain": [ "(51, 51)" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "t = 1000\n", "\n", "lam_mesh, k_mesh = np.meshgrid(\n", " prior_bulb.columns, prior_bulb.index)\n", "prob_dead = weibull_dist(lam_mesh, k_mesh).cdf(t)\n", "prob_dead.shape" ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.093414Z", "iopub.status.busy": "2021-04-16T19:37:41.092096Z", "iopub.status.idle": "2021-04-16T19:37:41.095793Z", "shell.execute_reply": "2021-04-16T19:37:41.096159Z" } }, "outputs": [ { "data": { "text/plain": [ "(51, 51)" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "from scipy.stats import binom\n", "\n", "k = 20\n", "n = 100\n", "likelihood = binom(n, prob_dead).pmf(k)\n", "likelihood.shape" ] }, { "cell_type": "code", "execution_count": 74, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.117695Z", "iopub.status.busy": "2021-04-16T19:37:41.112432Z", "iopub.status.idle": "2021-04-16T19:37:41.236742Z", "shell.execute_reply": "2021-04-16T19:37:41.237307Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "posterior_bulb3 = posterior_bulb * likelihood\n", "normalize(posterior_bulb3)\n", "plot_contour(posterior_bulb3)\n", "decorate(title='Joint posterior distribution with k=20')" ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.241318Z", "iopub.status.busy": "2021-04-16T19:37:41.240598Z", "iopub.status.idle": "2021-04-16T19:37:41.246161Z", "shell.execute_reply": "2021-04-16T19:37:41.246507Z" } }, "outputs": [ { "data": { "text/plain": [ "1378.3949572816412" ] }, "execution_count": 75, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# Since there were more dead bulbs than expected,\n", "# the posterior mean is a bit less after the update.\n", "\n", "joint_weibull_mean(posterior_bulb3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** In this exercise, we'll use one month of data to estimate the parameters of a distribution that describes daily rainfall in Seattle.\n", "Then we'll compute the posterior predictive distribution for daily rainfall and use it to estimate the probability of a rare event, like more than 1.5 inches of rain in a day.\n", "\n", "According to hydrologists, the distribution of total daily rainfall (for days with rain) is well modeled by a two-parameter\n", "gamma distribution.\n", "\n", "When we worked with the one-parameter gamma distribution in <<_TheGammaDistribution>>, we used the Greek letter $\\alpha$ for the parameter.\n", "\n", "For the two-parameter gamma distribution, we will use $k$ for the \"shape parameter\", which determines the shape of the distribution, and the Greek letter $\\theta$ or `theta` for the \"scale parameter\". " ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The following function takes these parameters and returns a `gamma` object from SciPy." ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.250070Z", "iopub.status.busy": "2021-04-16T19:37:41.249652Z", "iopub.status.idle": "2021-04-16T19:37:41.252217Z", "shell.execute_reply": "2021-04-16T19:37:41.252548Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "import scipy.stats\n", "\n", "def gamma_dist(k, theta):\n", " \"\"\"Makes a gamma object.\n", " \n", " k: shape parameter\n", " theta: scale parameter\n", " \n", " returns: gamma object\n", " \"\"\"\n", " return scipy.stats.gamma(k, scale=theta)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Now we need some data.\n", "The following cell downloads data I collected from the National Oceanic and Atmospheric Administration ([NOAA](http://www.ncdc.noaa.gov/cdo-web/search)) for Seattle, Washington in May 2020." ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.256571Z", "iopub.status.busy": "2021-04-16T19:37:41.256055Z", "iopub.status.idle": "2021-04-16T19:37:41.258114Z", "shell.execute_reply": "2021-04-16T19:37:41.257746Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "# Load the data file\n", "\n", "download('https://github.com/AllenDowney/ThinkBayes2/raw/master/data/2203951.csv')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Now we can load it into a `DataFrame`:" ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.261365Z", "iopub.status.busy": "2021-04-16T19:37:41.260827Z", "iopub.status.idle": "2021-04-16T19:37:41.274723Z", "shell.execute_reply": "2021-04-16T19:37:41.274264Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
STATIONNAMEDATEAWNDPRCPTMAXTMINWT01WT03WT08
0USW00024233SEATTLE TACOMA AIRPORT, WA US2020-05-014.470.006643NaNNaNNaN
1USW00024233SEATTLE TACOMA AIRPORT, WA US2020-05-029.400.2458471.0NaNNaN
2USW00024233SEATTLE TACOMA AIRPORT, WA US2020-05-0311.630.0657441.0NaNNaN
3USW00024233SEATTLE TACOMA AIRPORT, WA US2020-05-044.470.006539NaNNaNNaN
4USW00024233SEATTLE TACOMA AIRPORT, WA US2020-05-057.830.007149NaNNaNNaN
\n", "
" ], "text/plain": [ " STATION NAME DATE AWND PRCP TMAX \\\n", "0 USW00024233 SEATTLE TACOMA AIRPORT, WA US 2020-05-01 4.47 0.00 66 \n", "1 USW00024233 SEATTLE TACOMA AIRPORT, WA US 2020-05-02 9.40 0.24 58 \n", "2 USW00024233 SEATTLE TACOMA AIRPORT, WA US 2020-05-03 11.63 0.06 57 \n", "3 USW00024233 SEATTLE TACOMA AIRPORT, WA US 2020-05-04 4.47 0.00 65 \n", "4 USW00024233 SEATTLE TACOMA AIRPORT, WA US 2020-05-05 7.83 0.00 71 \n", "\n", " TMIN WT01 WT03 WT08 \n", "0 43 NaN NaN NaN \n", "1 47 1.0 NaN NaN \n", "2 44 1.0 NaN NaN \n", "3 39 NaN NaN NaN \n", "4 49 NaN NaN NaN " ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "weather = pd.read_csv('2203951.csv')\n", "weather.head()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "I'll make a Boolean Series to indicate which days it rained." ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.278994Z", "iopub.status.busy": "2021-04-16T19:37:41.278485Z", "iopub.status.idle": "2021-04-16T19:37:41.280829Z", "shell.execute_reply": "2021-04-16T19:37:41.281256Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "14" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rained = weather['PRCP'] > 0\n", "rained.sum()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "And select the total rainfall on the days it rained." ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.288529Z", "iopub.status.busy": "2021-04-16T19:37:41.287802Z", "iopub.status.idle": "2021-04-16T19:37:41.291569Z", "shell.execute_reply": "2021-04-16T19:37:41.291072Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "count 14.000000\n", "mean 0.222857\n", "std 0.301060\n", "min 0.010000\n", "25% 0.052500\n", "50% 0.110000\n", "75% 0.225000\n", "max 1.140000\n", "Name: PRCP, dtype: float64" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prcp = weather.loc[rained, 'PRCP']\n", "prcp.describe()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Here's what the CDF of the data looks like." ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.327363Z", "iopub.status.busy": "2021-04-16T19:37:41.311942Z", "iopub.status.idle": "2021-04-16T19:37:41.416224Z", "shell.execute_reply": "2021-04-16T19:37:41.416543Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "cdf_data = Cdf.from_seq(prcp)\n", "cdf_data.plot()\n", "decorate(xlabel='Total rainfall (in)',\n", " ylabel='CDF',\n", " title='Distribution of rainfall on days it rained')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The maximum is 1.14 inches of rain is one day.\n", "To estimate the probability of more than 1.5 inches, we need to extrapolate from the data we have, so our estimate will depend on whether the gamma distribution is really a good model." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I suggest you proceed in the following steps:\n", "\n", "1. Construct a prior distribution for the parameters of the gamma distribution. Note that $k$ and $\\theta$ must be greater than 0.\n", "\n", "2. Use the observed rainfalls to update the distribution of parameters.\n", "\n", "3. Compute the posterior predictive distribution of rainfall, and use it to estimate the probability of getting more than 1.5 inches of rain in one day." ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.420568Z", "iopub.status.busy": "2021-04-16T19:37:41.420152Z", "iopub.status.idle": "2021-04-16T19:37:41.424495Z", "shell.execute_reply": "2021-04-16T19:37:41.424149Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "(0.8898876017525283, 0.25043291132301665)" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# I'll use the MLE parameters of the gamma distribution\n", "# to help me choose priors\n", "\n", "k_est, _, theta_est = scipy.stats.gamma.fit(prcp, floc=0)\n", "k_est, theta_est" ] }, { "cell_type": "code", "execution_count": 83, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.428911Z", "iopub.status.busy": "2021-04-16T19:37:41.428490Z", "iopub.status.idle": "2021-04-16T19:37:41.431090Z", "shell.execute_reply": "2021-04-16T19:37:41.431568Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "# I'll use uniform priors for the parameters.\n", "# I chose the upper bounds by trial and error.\n", "\n", "ks = np.linspace(0.01, 2, num=51)\n", "prior_k = make_uniform(ks, name='k')" ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.435824Z", "iopub.status.busy": "2021-04-16T19:37:41.435397Z", "iopub.status.idle": "2021-04-16T19:37:41.438583Z", "shell.execute_reply": "2021-04-16T19:37:41.438240Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "thetas = np.linspace(0.01, 1.5, num=51)\n", "prior_theta = make_uniform(thetas, name='theta')" ] }, { "cell_type": "code", "execution_count": 85, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.441827Z", "iopub.status.busy": "2021-04-16T19:37:41.441245Z", "iopub.status.idle": "2021-04-16T19:37:41.444095Z", "shell.execute_reply": "2021-04-16T19:37:41.444570Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "# Here's the joint prior\n", "\n", "prior = make_joint(prior_k, prior_theta)" ] }, { "cell_type": "code", "execution_count": 86, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.448288Z", "iopub.status.busy": "2021-04-16T19:37:41.447637Z", "iopub.status.idle": "2021-04-16T19:37:41.450859Z", "shell.execute_reply": "2021-04-16T19:37:41.450497Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "# I'll use a grid to compute the densities\n", "\n", "k_mesh, theta_mesh, data_mesh = np.meshgrid(\n", " prior.columns, prior.index, prcp)" ] }, { "cell_type": "code", "execution_count": 87, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.455536Z", "iopub.status.busy": "2021-04-16T19:37:41.454731Z", "iopub.status.idle": "2021-04-16T19:37:41.462470Z", "shell.execute_reply": "2021-04-16T19:37:41.462038Z" } }, "outputs": [ { "data": { "text/plain": [ "(51, 51, 14)" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# Here's the 3-D array of densities\n", "\n", "densities = gamma_dist(k_mesh, theta_mesh).pdf(data_mesh) \n", "densities.shape" ] }, { "cell_type": "code", "execution_count": 88, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.466277Z", "iopub.status.busy": "2021-04-16T19:37:41.465631Z", "iopub.status.idle": "2021-04-16T19:37:41.468004Z", "shell.execute_reply": "2021-04-16T19:37:41.468364Z" } }, "outputs": [ { "data": { "text/plain": [ "150287.91980136462" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# Which we reduce by multiplying along axis 2\n", "\n", "likelihood = densities.prod(axis=2)\n", "likelihood.sum()" ] }, { "cell_type": "code", "execution_count": 89, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.472830Z", "iopub.status.busy": "2021-04-16T19:37:41.472258Z", "iopub.status.idle": "2021-04-16T19:37:41.475159Z", "shell.execute_reply": "2021-04-16T19:37:41.474721Z" } }, "outputs": [ { "data": { "text/plain": [ "57.780822684107896" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# Now we can do the update in the usual way\n", "\n", "posterior = prior * likelihood\n", "normalize(posterior)" ] }, { "cell_type": "code", "execution_count": 90, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.492554Z", "iopub.status.busy": "2021-04-16T19:37:41.488649Z", "iopub.status.idle": "2021-04-16T19:37:41.647173Z", "shell.execute_reply": "2021-04-16T19:37:41.646742Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "# And here's what the posterior looks like\n", "\n", "plot_contour(posterior)\n", "\n", "decorate(title='Posterior distribution, parameters of a gamma distribution')" ] }, { "cell_type": "code", "execution_count": 91, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.651740Z", "iopub.status.busy": "2021-04-16T19:37:41.651267Z", "iopub.status.idle": "2021-04-16T19:37:41.653711Z", "shell.execute_reply": "2021-04-16T19:37:41.653349Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "# I'll check the marginal distributions to make sure the\n", "# range of the priors is wide enough\n", "\n", "from utils import marginal\n", "\n", "posterior_k = marginal(posterior, 0)\n", "posterior_theta = marginal(posterior, 1)" ] }, { "cell_type": "code", "execution_count": 92, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.689643Z", "iopub.status.busy": "2021-04-16T19:37:41.675794Z", "iopub.status.idle": "2021-04-16T19:37:41.824132Z", "shell.execute_reply": "2021-04-16T19:37:41.824491Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "# The marginal distribution for k is close to 0 at both ends\n", "\n", "posterior_k.plot(color='C4')\n", "decorate(xlabel='k',\n", " ylabel='PDF', \n", " title='Posterior marginal distribution of k')" ] }, { "cell_type": "code", "execution_count": 93, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.831274Z", "iopub.status.busy": "2021-04-16T19:37:41.830519Z", "iopub.status.idle": "2021-04-16T19:37:41.834487Z", "shell.execute_reply": "2021-04-16T19:37:41.835136Z" } }, "outputs": [ { "data": { "text/plain": [ "(0.8437218523899558, array([0.4478, 1.3632]))" ] }, "execution_count": 93, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "posterior_k.mean(), posterior_k.credible_interval(0.9)" ] }, { "cell_type": "code", "execution_count": 94, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:41.855628Z", "iopub.status.busy": "2021-04-16T19:37:41.854320Z", "iopub.status.idle": "2021-04-16T19:37:42.012073Z", "shell.execute_reply": "2021-04-16T19:37:42.011701Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "# Same with the marginal distribution of theta\n", "\n", "posterior_theta.plot(color='C2')\n", "decorate(xlabel='theta',\n", " ylabel='PDF', \n", " title='Posterior marginal distribution of theta')" ] }, { "cell_type": "code", "execution_count": 95, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:42.016693Z", "iopub.status.busy": "2021-04-16T19:37:42.016116Z", "iopub.status.idle": "2021-04-16T19:37:42.018530Z", "shell.execute_reply": "2021-04-16T19:37:42.018903Z" } }, "outputs": [ { "data": { "text/plain": [ "(0.367761307460383, array([0.159 , 0.7848]))" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "posterior_theta.mean(), posterior_theta.credible_interval(0.9)" ] }, { "cell_type": "code", "execution_count": 96, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:42.022546Z", "iopub.status.busy": "2021-04-16T19:37:42.021767Z", "iopub.status.idle": "2021-04-16T19:37:42.027862Z", "shell.execute_reply": "2021-04-16T19:37:42.027491Z" } }, "outputs": [ { "data": { "text/plain": [ "theta k \n", "0.01 0.0100 4.306265e-156\n", " 0.0498 1.304069e-145\n", " 0.0896 2.463890e-141\n", " 0.1294 2.077828e-138\n", " 0.1692 4.227218e-136\n", "dtype: float64" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# To compute the posterior predictive distribution,\n", "# I'll stack the joint posterior to make a Series\n", "# with a MultiIndex\n", "\n", "posterior_series = posterior.stack()\n", "posterior_series.head()" ] }, { "cell_type": "code", "execution_count": 97, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:42.030840Z", "iopub.status.busy": "2021-04-16T19:37:42.030357Z", "iopub.status.idle": "2021-04-16T19:37:42.033846Z", "shell.execute_reply": "2021-04-16T19:37:42.033353Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "# I'll extend the predictive distribution up to 2 inches\n", "\n", "low, high = 0.01, 2" ] }, { "cell_type": "code", "execution_count": 98, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:42.064699Z", "iopub.status.busy": "2021-04-16T19:37:42.052712Z", "iopub.status.idle": "2021-04-16T19:37:45.138382Z", "shell.execute_reply": "2021-04-16T19:37:45.137916Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "# Now we can iterate through `posterior_series`\n", "# and make a sequence of predictive Pmfs, one\n", "# for each possible pair of parameters\n", "\n", "from utils import pmf_from_dist\n", "\n", "qs = np.linspace(low, high, num=101)\n", "pmf_seq = []\n", "for (theta, k) in posterior_series.index:\n", " dist = gamma_dist(k, theta)\n", " pmf = pmf_from_dist(dist, qs)\n", " pmf_seq.append(pmf)" ] }, { "cell_type": "code", "execution_count": 99, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:45.155754Z", "iopub.status.busy": "2021-04-16T19:37:45.150818Z", "iopub.status.idle": "2021-04-16T19:37:45.515419Z", "shell.execute_reply": "2021-04-16T19:37:45.514852Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "# And we can use `make_mixture` to make the posterior predictive\n", "# distribution\n", "\n", "post_pred = make_mixture(posterior_series, pmf_seq)" ] }, { "cell_type": "code", "execution_count": 100, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:45.537004Z", "iopub.status.busy": "2021-04-16T19:37:45.534520Z", "iopub.status.idle": "2021-04-16T19:37:45.659852Z", "shell.execute_reply": "2021-04-16T19:37:45.659355Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAv9UlEQVR4nO3deXwc9X3/8ddHlyVbtmXL923jCxt8gA1OgGAgECBOSBpaIJSENISQhjb5kZamuY+SpA1NUwIppRRIGgIhkIOACSEcgXD6wBjf+LZ8yqdsWefq8/tjRqvVeiWtZK1mJb2fj4ceO8d3Zj67Gumz3+985zvm7oiIiGSbnKgDEBERSUUJSkREspISlIiIZCUlKBERyUpKUCIikpWUoEREJCspQclJMbNrzewPUceRLjPbambvDae/ZGb3dnA/q81sYWfG1sJxOiXeFvZ9zMwmhdMPmNm/dOK+7zazr3bW/tpx3M+Y2d7wvZV2wv7Sfh9mVmRmvzOzI2b2yzTKJ/5uv2FmPzvZeHuavKgDkPSZ2VZgOBADKoHFwN+5+7EO7u8bwGR3/+uOxuTuDwIPdnT7KLn7d9IpZ2YPAGXu/pWEbWdmKq6WtCPeF4CfuXuryczdizsjLjO7HrjB3c9N2PdNnbHvdsaRD/wAWODub3XGPtv5Pq4k+Pssdff6zjh+b6caVPfzgfAfyxnAfOArbZTPGDPr8BccC5zU+Xcyx+/NevDnNhwoBFanUzgDn8N4YIOSU+dRguqm3H0n8BRwGoCZfTBsdjpsZi+Y2amNZc3sn8xsp5kdNbP1ZnaRmV0KfAm4KmwOeSssO9DM/tfMdofb/IuZ5Ybrrjezl83sP8zsIPCNcNmfE471bjNbEjZzLDGzdyese8HMbjOzl4HjwKTk9xU2e/yzma0xs0Nmdr+ZFYbrFppZWfh+9gD3m1mOmX3RzDaZ2QEze8TMBifs7zoz2xau+3LSsZo1q5jZuWb2SvgZ7gjf243AtcCt4ef0u4Q432tmo8ysKumYc81sf/iNHjP7GzNbG76fp81sfEu/13TjNbNCM/tZWO5w+FkPN7PbgPOAO8N47wzLu5l91szeAd5JWDY54RBDzOyZ8Dz5U2OcZjYhLJuXEMsLZnZDeJ7dDbwrPN7hcH2zJkMz+5SZbTSzg2b2uJmNSljnZnaTmb0TfkZ3mZm18Pn0MbMfmtmu8OeH4bKpwPqw2GEzey7Fto3v45Nmth14Llz+SzPbE56zL5rZzIRt4u8j4fz7gpnts+Bv5BPhum8CX6Pp7+mTZnaKmT0X/o72m9mDZlbSwq9eUlCC6qbMbCxwOfBm+Mf5EPB5YChB09/vzKzAzKYBNwPz3b0/8D5gq7v/HvgO8At3L3b32eGufwLUA5OBucAlwA0Jhz4b2AwMA25Limkw8CRwB1BK0NzypDW/FnAdcCPQH9jWwtu7NozzFGAqzWuJI4DBBN9WbwT+HvgQcD4wCjgE3BXGMwP4r/CYo8KYxqQ6oJmNI0j4PyL4DOcAK9z9HoImzH8LP6cPJG7n7ruAV4GPJCz+KPCou9eZ2YcIvgj8Rbjflwh+V6liSDte4OPAQGBsWO4moMrdvxwe4+Yw3psTtvkQwe9vRgv7vBb4NjAEWEEaTbfuvjY89qvh8UpSvK8Lge8CfwWMJPi9P5xUbBFBi8DssNz7Wjjkl4EFBL+f2cBZwFfcfQPQmFhK3P3CVsI+Hzg14RhPAVMIzunltP6+RxB87qOBTwJ3mdkgd/86zf+e/hew8H2PCo83FvhGK/uWJEpQ3c9vwm+pfwb+RPBHcRXwpLs/4+51wO1AEfBugutVfYAZZpbv7lvdfVOqHZvZcOAy4PPuXunu+4D/AK5OKLbL3X/k7vXuXpW0i/cD77j7/4XrHwLWAYn/1B9w99Xh+roW3uOd7r7D3Q8SJMFrEtY1AF9395rw+J8GvuzuZe5eQ/AP4Mrw2/6VwBPu/mK47qvh9qlcC/zR3R9y9zp3P+DuK1oom+znjTGG3/yvDpcRxvddd18bNv18B5jTQi2qPfHWESSmye4ec/dl7l7RRpzfdfeDKX5vjZ5MOPaXCWpFY9vYZzquBe5z9+Xhvv853PeEhDLfc/fD7r4deJ4gAbW0r2+5+z53Lwe+SZDQ2+Mb4fldBeDu97n70YTzZ7aZDWxh27rw+HXuvhg4BkxLVdDdN4Z/kzVhrD8gSI6SJiWo7udD7l7i7uPd/W/DP7JRJNRG3L0B2AGMdveNBDWrbwD7zOzhxOaVJOOBfGB32Gx0GPhvgm+WjXa0EluzOELbCL5tprN9qjLbwv02Knf36qSYf50Q71qCpDw83C6+L3evBA60cMyxQMrEnYZHCf7hjgLeAzhBLaYxvv9MiO8gwTfr0Sn20554/w94Gng4bOr6t8YmxVa09dknHvtYGGtL50p7JJ+fxwjeV+JnsCdh+jjQUgeO5HMs+fxIR/x9mlmumX3PgibiCmBruGpIC9seSLrG1GKsZjYs/HvbGe77Z63sV1JQguoZdhH8IwTi3+LHAjsB3P3nYQ+r8QT/PP81LJo8lP0OoAYYEibBEncfkNRjrbXh75vFERrXGEca2zdK/NY+LtxvS9vvAC5LiLfE3QvDa3S7E/dlZn0Jah2p7CBoUkyl1Zjd/TDwB4KmqY8CD3nTYwJ2AJ9Oiq/I3V9Jsau04w2/wX/T3WcQ1JQXAR9rI962PvvEYxcTNKXuIugxCtA3oeyIduw3+fzsR/C+dra4RZr74sTzIx2J8X4UuAJ4L0HT3YTGMDsQW7Lvhsea5e4DgL/upP32GkpQPcMjwPst6PyQD3yBING8YmbTzOxCM+sDVANVBDUMgL3ABAt707n7boJ/tP9uZgMs6IBwipml2yyxGJhqZh81szwzu4rgescT7Xw/nzWzMeE1rS8Bv2il7N3AbQkX9Iea2RXhukeBRRZ0figAvkXL5/yDwHvN7K/C2EvNbE64bi8pOnQk+TlBgvgITc17jfH9c+OFdws6ofxlC/tIO14zu8DMTregA0sFQdNT4u+1rXhTuTzh2N8GXg+bWssJkslfhzWOv6F5Mt8LjAm3S+XnwCfMbE54Hn4n3PfWDsT4EPCV8Pc8hKBjwsncP9Sf4G/lAEECTqsrfzv2fYyg08Zo4B87cd+9ghJUD+Du6wm+nf0I2E9wzecD7l5LcP3pe+HyPQTNdV8KN228mfCAmS0Ppz8GFABrCDocPEpwYTudOA4QfJP/AsEf/K3AInff38639HOCRLk5/GntBtL/BB4H/mBmR4HXCDoC4O6rgc+G+9sdvp+yFmLfTtDp5AsETVsrCC7CA/wvwTW8w2b2mxbieJzgQvvexHtw3P3XBDXWh8NmnlUE1/lSxZB2vAQ1mEcJktNaguuRjf+o/5PgOtwhM7ujhe1T+TnwdYL3fybB9Z5GnyL4B3uAoDNCYg3wOYKu3XvM7ITftbs/S3A97bHwfZ1C8+ua7fEvwFJgJfA2QaeGk7nB+KcEzYQ7Cc75105iX8m+SXA7yBGCzkO/6sR99wrmemChZBELbka+wd3/GHUsIhIt1aBERCQrKUGJiEhWUhOfiIhkJdWgREQkK3W7QSOHDBniEyZMiDoMERHpJMuWLdvv7kOTl3e7BDVhwgSWLl0adRgiItJJzCzluJxq4hMRkaykBCUiIllJCUpERLJSt7sGlUpdXR1lZWVUV1e3XbgXKSwsZMyYMeTntzXItYhI9ukRCaqsrIz+/fszYcIELPWDOHsdd+fAgQOUlZUxceLEqMMREWm3jDXxmdl94WORV7Ww3szsDgseA73SzM7o6LGqq6spLS1VckpgZpSWlqpWKSLdViZrUA8AdxKMFpzKZQSjP08hGH36v8LXDlFyOpE+ExHpKHcn1uA0NDgN7sRiDcFruCyWsHzYoH7k5XZ+fSdjCcrdX0x6pHOyK4Cfhg92e83MSsxsZPhMIhGRbqehwamrj1Efa6Au1hC81gevyT+Jy2MJy2MNTl3jsoYG6mNOQ8K6WIOH0wnL4usaiMW8aTppWUPCssYkkzzf4E5DzPG0ni0auPsLlzO0pG/bBdspymtQo2n+COqycNkJCcrMbgRuBBg3blyXBJcpN9xwA7fccgszZsxosUx5eTmLFi2itraWO+64g/POOy9luYULF3L77bczb968+A3MQ4boidLSuzU0OLX1MWrqYtTU1lNTF6O2LkZNXT219Q3UhvO19Qmv9THq6hqC1/rG1xi19Q3U1cWoi8WorWugLhasr69viC8LklGM+vqghtEbZep9R5mgUrU/pXyX7n4PcA/AvHnzsv4McHfcnZycE6u89957b5vbP/vss0yfPp2f/OQnmQhPJCu4OzV1MY5X11FVW091TT1VtfVU1dRRUxvjeE0d1bX1wU9NPdV1Mapr66lpXFYbzDcmn+raICnVx2JtH1zSkpOTQ44ZuTlGTk7iaw45Rnw6UxcTokxQZcDYhPkxwK6IYjlpW7du5bLLLuOCCy7g1VdfZc6cObz99ttUVVVx5ZVX8s1vfhNoXuspLi7mc5/7HE888QRFRUX89re/Zffu3dx6661UVVUxZ84cXn31VW655RaWLFlywr5EolRXH+NYVR3HqmqprKqlsrqO49V1VFbXcay6luNVdRyvqaeyuo6qmrr4+qqaYHl1TX27mpG6A8PIy8shLzeH/Lwc8nLC19wc8vJyycu1YF1u03Rebg65ja85Tcsa55PX5ebkxLfNzQmW5ySszzFr2jbcPrcxqSQsa0w8jesT53MsSERRizJBPQ7cbGYPE3SOONIZ158+8tVHTzqwljz27StbXb9+/Xruv/9+fvzjH3Pw4EEGDx5MLBbjoosuYuXKlcyaNatZ+crKShYsWMBtt93Grbfeyv/8z//wla98hW9961ssXbqUO++8E4DbbrutzX2JdJS7U1VTz5HKGo4er6HieC1HK8PX4zUcPV7LsapaKsLXY8drOVZdS21d9tZUCvJz6ZOfR0FeTvCan0ufglwK8sKf/PAnL5c++bnk5+VQkJ9LfuP6cD4vL5f83HBdmHTy83KbXhOWNSYFdU7qPBlLUGb2ELAQGGJmZcDXgXwAd78bWAxcDmwEjgOfyFQsXWX8+PEsWLAAgEceeYR77rmH+vp6du/ezZo1a05IKgUFBSxatAiAM888k2eeeSblftPZl0gid+dYVS2HjtVw+Gg1h49Vc+hoNUeOVXO4siZ4PRYkpMOVNcRiDZHEmZ+XS98++RT1yaOwII+iPnnhdD6FBcG6woI8+hTkUtQnn8L8XPoUBGX75OdSWBAkn8KCPAoLgqSUn5ejJNFDZLIX3zVtrHfgs5k6fhT69esHwJYtW7j99ttZsmQJgwYN4vrrr095P1J+fn78Dyk3N5f6+voTyqS7L+k96mMNHKio4sCR4xw4UsWBiioOHq3iQEU1h45WcbCiikNHazJ+LSYnJ4fionyKCwvoV5RPv8J8+hUVBK+F+fQtzKdvn2C6qHFZmIz6FuZTVJBHbga6JkvP0SNGkkjUVjNcV6ioqKBfv34MHDiQvXv38tRTT7Fw4cLI9yXdQ01tPXsPH2ffoUr2h6/7Dh9n/5Hj7D9SxeGj1Z1+7aYgP5eB/fowoF8fBvTtQ/++BQzo24fivgX0Lyqgf78+wWvfAorD1z75uaqpSEb1uASVDWbPns3cuXOZOXMmkyZN4pxzzsmKfUn2OHq8ht0HjgU/ByvZe/AYew5WsvdgJUcqO6eGXFiQx6D+hQzqX8TAfn0Y1L+QgcV9GFRcyMDiQkrChDSwXx/6FOhfgWQf827Wb3/evHme/MDCtWvXcuqpp0YUUXbTZxOdWKyBPYcq2Vl+lLLyCnbuP8rO8qPsPnCMY1W1Hd6vYZT0L2TIwCJKBxRROrCIwf2D6UEDihjcv5DBA4ooVNKRbsLMlrn7vOTlOoNFTpK7s+/wcbbtOcL2fUfYvreCHfsq2LX/WIeuA+Xk5DCspC9Dw59hg/oxrKQvQwYG84MHFGVkWBmRbKMEJdIO9bEGduyrYPOuQ2zZfYQtuw+zbe8Rqmrq2rWf/LxcRpYWM6q0mBGDixkxuB8jSosZPqgfpQOK1HlAhB6UoNxdF2yTdLfm22zT0ODsKK9g085DbNx5iI07D7J1z5F2dcke3L+IMcP6M2boAEYN6c+o0mJGD+1P6YAina8ibegRCaqwsJADBw7okRsJGp8HVVhYGHUo3UZlVS3rdxxk/fYDrN9xgHfKDlJde2LX/1SKiwqYMKKEccMHMG7YAMaGP/2KCjIctUjP1SMS1JgxYygrK6O8vDzqULJK4xN1JbUjlTWs2lLOmi3lrNm2nx17K9Lqvj2spB+TRpUwcVQJE0aUMHFkCYP7F+rLkUgn6xEJKj8/X0+NlTZVVtWyaks5KzftY9WWcsrKK9rcpqS4kCljBjN5zCCmjB7MpFEl9O/bpwuiFZEekaBEUmlocDbuPMjyd/ay4p09bCw71GoNKceMiaNKmD6ulKljS5k6ZjBDS/qqZiQSESUo6VEqq2pZsWkfS9bu4s139rR6v1Fubg5Txwxm5oShzJgwhKljB1PUJ78LoxWR1ihBSbd36Gg1b6zdyWtrdrJqy34aGlL3sjOMSaNLmH3KcE6fNIxpYwdrBAWRLKa/TumWDh2t5pVVZby8agcbth9ssemupLiQOVOGc8bUkcyaNFTXj0S6ESUo6TYqq2p5dfVOXlq5g9VbyltMShNHljB/+ijmTx/JxJEluoYk0k0pQUlWi8UaWLFxLy+s2M6Sdbuoqz9x6CDDmDFhCAtmjuasU0cxZGDfCCIVkc6mBCVZae+hSp5duoXn3tzGoaNVJ6xvTErnzhrL2TNGM7Cfmu5EeholKMkaDQ3Osg27+f3rm1ixcW/KMhNGlLBw7njOOW0MgwcUdXGEItKVlKAkcseqanlm6RaefmMT5YePn7B+QL8+LJwznoVzxjN+xMAIIhSRKChBSWT2HDzGk69u5NllW6mpaz7mnWHMmTKci86cwPzpo/R4CZFeSAlKutzW3Yd57MX1vLqq7ISeeMVFBbz3zIlcctYkhg/qF1GEIpINlKCky2zYcYBHX1jHsg27T1g3dthAPvDuyZw3axwF+bkRRCci2UYJSjJu865DPPzsmpSJafYpw/nguVOZfcow3a8kIs0oQUnGlJVX8NAfV/Pamp3NlhvG2TNG8ZHzpzNp1KCIohORbKcEJZ3u0NFqfvHcGp5dtoWGhKf6GsY5s8Zw5fmnMnbYgAgjFJHuQAlKOk1tXYzfvryBX7+4/oReeQtmjuGqC2cwTolJRNKkBCUnzd1Zsm439y9+i32HK5utO33SMD72vtPVlCci7aYEJSdlz8Fj3PvECt58Z0+z5WOHDeRj7zuduVOGq/ODiHSIEpR0SH2sgd+98g6/eG5NswFci4sKuOaimVwyfxI5OUpMItJxSlDSbpt2HuKu3yxj257D8WWGcfH8iXz0vTP1zCUR6RRKUJK2+lgDj/5pHY+9sLZZ77zxI0r42yvOYPKYwRFGJyI9jRKUpGXb3iPc8egStibUmvLzcrn6whksevcUjZUnIp1OCUpa5e78/o3NPPDUSupjTdeapo8bws1/MY+RpcURRiciPZkSlLTo6PEa7vr1Mpas2xVflpeby7UXz2TRu6aoE4SIZJQSlKS0btt+fvDI6xyoaHqa7fgRJfy/vzxLo0CISJdQgpJm3J2nXt/E/U+tpKGhIb788gWTue6S0zXSuIh0GSUoiauprefux5fz4lvb48uKiwq4+S/mMX/6qAgjE5HeKKNdr8zsUjNbb2YbzeyLKdYPNLPfmdlbZrbazD6RyXikZfuPHOdL//NCs+Q0adQgvv+Zi5ScRCQSGatBmVkucBdwMVAGLDGzx919TUKxzwJr3P0DZjYUWG9mD7p7babikhNt2nmI7z74CoeONl1vuvCMCXxq0Vw16YlIZDLZxHcWsNHdNwOY2cPAFUBignKgvwWDtRUDB4H65B1J5ry6uoz/fHRJfLiinJwcbnj/bC6ZP0lj6IlIpDKZoEYDOxLmy4Czk8rcCTwO7AL6A1e5e0NSGczsRuBGgHHjxmUk2N7oyVc3ct/iFfH5voX53HrNuzh90rDoghIRCWXyGlSqr9+eNP8+YAUwCpgD3GlmJ/Rhdvd73H2eu88bOnRoZ8fZ67g7P39mVbPkNGJwMd/79IVKTiKSNTKZoMqAsQnzYwhqSok+AfzKAxuBLcD0DMbU68ViDfz4N8t47MV18WXTxpXyvU9fwOgh/SOMTESkuUwmqCXAFDObaGYFwNUEzXmJtgMXAZjZcGAasDmDMfVq9bEGfvDI6zy3fGt82ZlTR/L1j5+nEchFJOtk7BqUu9eb2c3A00AucJ+7rzazm8L1dwPfBh4ws7cJmgT/yd33Zyqm3qyuPsa//+L1ZsMWLZw7ns9ccaYGehWRrJTRG3XdfTGwOGnZ3QnTu4BLMhmDQG1djO8//CrLNzQ99XbRu6Zw/WWz1FNPRLKWRpLo4WrrYnzvwVd4a9Pe+LIPnzeNay8+TclJRLKaElQP1njNKTE5XXn+qVx90QwlJxHJekpQPZS786NfLWl2zekvL5jB1RfOiDAqEZH06ep4D+Tu/Pfjb/LnlU33SX/o3GlcdcGpEUYlItI+SlA90EN/XM0zS5t6618yfxJ/fYmuOYlI96IE1cM8s2Rzs5tw3zN7HDd+YK6Sk4h0O0pQPcjyDXu453dvxufPmDqCmz88T8lJRLolJageYvOuQ9z+8Gs0eDDc4cSRJXzhqgXk6iZcEemm9N+rBzhYUcV3fvYKNXXBk0qGlvTly9edS2GBOmmKSPelBNXN1dXH+LeHXo0/bLBvYT5fvu5cBvUvjDgyEZGTowTVjbk79/zuTd4pOwiAYfzDVQsYO+yEJ5aIiHQ7SlDd2FOvb2o2MvnHL5vF7MnDowtIRKQTKUF1U2u2lnP/4rfi8+fPGc+id02OMCIRkc6lBNUNHams4QePvBHvsXfK6EHc9MEz1J1cRHoUJahuxt350WNL4p0iiosKuPWad1GQnxtxZCIinUsJqpv59UvrefOdpuc6fe7KsxgysG+EEYmIZIYSVDeydtt+Hvrj6vj8h8+bxhlTR0QYkYhI5ihBdROVVbX88JdN152mjSvl6otmRhyViEjmKEF1E/c99Rb7jxwHgutOt/zV2eRpGCMR6cH0H64beHV1GS+8uS0+f+MHz9B1JxHp8ZSgstyho9Xc/dvl8fnzZo3jnNPGRBiRiEjXUILKYu7Of/1mGceqagEoHVDEpxbNiTYoEZEuogSVxV58azvLNuyOz9/8F/PpV1QQYUQiIl1HCSpLHams4b6EoYwuXzCZWacMizAiEZGupQSVpR546q14096QgX259uLTIo5IRKRrKUFloTff2cOLb22Pz3/6g2fo4YMi0usoQWWZ6tp6/vvxpl57584aq9EiRKRXUoLKMo88t4byw0035P7N5XOiDUhEJCJKUFlk5/6jPPHaxvj89ZfOYmC/PhFGJCISHSWoLOHu3PfkCmKxBgCmjxvCwrnjI45KRCQ6SlBZYsm63azYuBcAw7hh0Rw9gFBEejUlqCxQWxdr9vj2i+dPZOLIkugCEhHJAkpQWeC3L29g3+FKIOgY8dH36jEaIiJKUBE7WFHFr15cF5+/5qKZ9O+rjhEiIkpQEXvk+bXU1sUAGDd8IJfMnxRxRCIi2UEJKkI79x/l2WVb4vPXXXI6OTnqGCEiAhlOUGZ2qZmtN7ONZvbFFsosNLMVZrbazP6UyXiyzYN/WBV/hPtpE4cxd8rwiCMSEckeGRvgzcxygbuAi4EyYImZPe7uaxLKlAA/Bi519+1m1muG6163bT+vr90Zn//Y+05Xt3IRkQSZrEGdBWx0983uXgs8DFyRVOajwK/cfTuAu+/LYDxZw935vz+sis+fc/pYThk9KMKIRESyTyYT1GhgR8J8Wbgs0VRgkJm9YGbLzOxjqXZkZjea2VIzW1peXp6hcLvOsg17WLd9PwC5uTnqVi4ikkImE1Sq9ipPms8DzgTeD7wP+KqZTT1hI/d73H2eu88bOnRo50fahdydXzwXb+XkffMnMWJwcYQRiYhkp0w+ZKgMGJswPwbYlaLMfnevBCrN7EVgNrAhg3FFatmGPWzedQiA/LxcPnzetIgjEhHJTq3WoMzsgYTpj7dz30uAKWY20cwKgKuBx5PK/BY4z8zyzKwvcDawtp3H6TbcnUeeb157GjygKMKIRESyV1tNfLMTpj/Xnh27ez1wM/A0QdJ5xN1Xm9lNZnZTWGYt8HtgJfAGcK+7r2ppn93dsg172LSzqfZ0xbkntGaKiEiorSa+5GtG7eLui4HFScvuTpr/PvD9kzlOd5Bce7pk/kTVnkREWtFWghpjZncQdHhonI5z97/PWGQ9zPKk2tOHztW1JxGR1rSVoP4xYXppJgPpydydX77QdGlNtScRkba1mqDc/SddFUhPtm77Ad4pOwgE9z2p9iQi0rY274Mys4+b2XIzqwx/lrZ0Q62k9puX1senz589TrUnEZE0tFqDChPR54FbgOUE16LOAL5vZrj7TzMeYTe3Y18FS9fvjs9/8Bz13BMRSUdbNai/BT7s7s+7+xF3P+zuzwEfCddJGx5/ueme4/nTRzF22IAIoxER6T7aSlAD3H1r8sJwmf7TtuFgRRV/emt7fF73PYmIpK+tBFXVwXUCLH5tI7FYAwBTxgxm+rjSiCMSEek+2upmfqqZrUyx3AA9m7wV1bX1PL1kc3z+Q+dN0/OeRETaoa0ENRsYTvPHZgCM58SBXyXBC29u43h1HQAjS4s5a/qoiCMSEele2mri+w+gwt23Jf4Ax8N1koK78/vXN8XnLzt7Mjk5qj2JiLRHWwlqgruf0MTn7kuBCRmJqAdYvXU/O8orAOiTn8fCOeMijkhEpPtpK0EVtrJOd5u24KmE2tPCuePpV1QQYTQiIt1TWwlqiZl9KnmhmX0SWJaZkLq3/UeO88aanfH5S88+JcJoRES6r7Y6SXwe+LWZXUtTQpoHFAAfzmBc3dYzS7fQ4MFTSmZOGMo43ZgrItIhbQ0Wuxd4t5ldAJwWLn4yHE1CktTHGnhmyZb4vGpPIiId11YNCgB3fx54PsOxdHuvrd7JkcpqAAb3L+KsU9W1XESko9oczVzS98zSptrTxfMnkperj1dEpKP0H7ST7Dl4jFVb9gFgGBedOTHiiEREujclqE7y/PJt8em5U4dTqmc+iYicFCWoTtDQ4Dz/5tb4/IVnTIgsFhGRnkIJqhO8tWkvByqCwd0H9OvDfI27JyJy0pSgOsGzy7bGp8+fPU6dI0REOoH+k56kisoa3ljXNLD7BWreExHpFEpQJ+mllTviDyWcPHow44cPjDgiEZGeQQnqJD27fGt8+qIzJ0QWh4hIT6MEdRK27TnCtj2HAcjPy+Wc08ZEG5CISA+iBHUS/vx204OG500bqcdqiIh0IiWoDnJ3Xlq5PT7/ntl6KKGISGdSguqgDTsOUn74OAB9C/OZO2V4xBGJiPQsSlAd9NLKpua9d80cQ35eboTRiIj0PEpQHRCLNfDyqqYEdd6ssRFGIyLSMylBdcDKzfuoqKwBYFD/ImZOGBpxRCIiPY8SVAck9t4757Qx5ORYhNGIiPRMSlDtVFsX47XVO+Pzat4TEcmMjCYoM7vUzNab2UYz+2Ir5eabWczMrsxkPJ1h2YbdVNfWAzCytJhTRg+KOCIRkZ4pYwnKzHKBu4DLgBnANWY2o4Vy/wo8nalYOtPra5oGhj3ntLGYqXlPRCQTMlmDOgvY6O6b3b0WeBi4IkW5vwMeA/ZlMJZOUR9rYOn63fH5BTNHRxiNiEjPlskENRrYkTBfFi6LM7PRwIeBu1vbkZndaGZLzWxpeXl5pwearpWb9lFVUwfA0JK+TBihkctFRDIlkwkqVduXJ83/EPgnd4+1tiN3v8fd57n7vKFDo+vS/cbapua9BTNGq3lPRCSD8jK47zIgsYvbGGBXUpl5wMPhP/ohwOVmVu/uv8lgXB3S0OC8vrap996CGWreExHJpEwmqCXAFDObCOwErgY+mljA3Sc2TpvZA8AT2ZicANbvOBC/OXdgv0KmjSuNOCIRkZ4tYwnK3evN7GaC3nm5wH3uvtrMbgrXt3rdKdsk3vt01qmj1LwnIpJhmaxB4e6LgcVJy1ImJne/PpOxnAz35s17Z88YFWE0IiK9g0aSSMPWPUeaPVrj9EnDIo5IRKTnU4JKQ2Lz3plTR5KXq49NRCTT9J82DW+sa+p8qOY9EZGuoQTVhv1HjrN97xEAcnNzmDtlRMQRiYj0DkpQbVjxzt749MwJQygsyGi/EhERCSlBtWH5hj3x6TOmjowwEhGR3kUJqhX1sQZWbGyqQc2dMjzCaEREehclqFas3bafmrrg2U/DSvoxekj/iCMSEek9lKBa0bx5b4RGjxAR6UJKUK1ITlAiItJ1lKBasO9QJWXlFQDk5eZy2sToHvMhItIbKUG1ILH2dPqkofRR93IRkS6lBNWCxASlm3NFRLqeElQKtXUxVm7eF5/X9ScRka6nBJXC+h0HqKsPnkI/srSYkaXFEUckItL7KEGl8PamptrTrFN0c66ISBSUoFJ4e0t5fFq990REoqEElaSqpo6NZQfj80pQIiLRUIJKsmbrfhrcAZgwooQB/fpEHJGISO+kBJVkVULz3umTVHsSEYmKElSSlQkdJE6bNCzCSEREejclqARHj9ewbU/w9NwcM2aMHxJxRCIivZcSVIJVW8pxgutPk8cMpm9hfsQRiYj0XkpQCd7enHD9Sb33REQipQSVYFXC8Eann6LrTyIiUVKCCh2sqGLn/qNA8HiNaWNLI45IRKR3U4IKJXYvnz6ulIL83AijERERJajQ6sThjXT/k4hI5JSgQuu2H4hPq3u5iEj0lKCAY1W18ce75+TkMHn0oIgjEhERJShgw46mwWEnjhyox7uLiGQBJShg3bb98enp49R7T0QkGyhBAesTalDTxun6k4hINuj1CSoWa2BDWVMHiWljB0cYjYiINOr1CWrrniPU1sUAGDKwL0MG9o04IhERASWoZt3Lp+n6k4hI1shogjKzS81svZltNLMvplh/rZmtDH9eMbPZmYwnlWYJSsMbiYhkjYwlKDPLBe4CLgNmANeY2YykYluA8919FvBt4J5MxdOS9dubevCdOl4JSkQkW2SyBnUWsNHdN7t7LfAwcEViAXd/xd0PhbOvAWMyGM8J9h85zoGKKgAK8nMZP3xgVx5eRERakckENRrYkTBfFi5rySeBp1KtMLMbzWypmS0tLy9PVaRDEpv3po4pJTe311+SExHJGpn8j2wplnnKgmYXECSof0q13t3vcfd57j5v6NDOG8h1fUKC0g26IiLZJZNj+pQBYxPmxwC7kguZ2SzgXuAydz+QvD6T1u9QDz4RkWyVyRrUEmCKmU00swLgauDxxAJmNg74FXCdu2/IYCwnqKuPsWX3kfj8VN2gKyKSVTJWg3L3ejO7GXgayAXuc/fVZnZTuP5u4GtAKfBjMwOod/d5mYop0fa9FTQ0NAAwYnAxxUUFXXFYERFJU0aH7Xb3xcDipGV3J0zfANyQyRhasmX34fj0hJElUYQgIiKt6LXd1jYnJKhJSlAiIlmn9yaoXYfi05NGlUQXiIiIpNQrE1Qs1sDWPU0dJCaN0hN0RUSyTa9MUDsPHKOuPhjBfHD/Igb26xNxRCIikqxXJqgtCc17E3X9SUQkK/XKBLV51+H49ERdfxIRyUq9MkFtUQ8+EZGs1+sSlLuzZc/h+Lw6SIiIZKdel6D2HqrkeHUdAMVFBQwZWBRxRCIikkqvS1CJ158mjSohHGJJRESyTK9LUFubXX9S856ISLbqdQkqcYgjdTEXEclevSpBuTubEu+BUhdzEZGs1asS1KGj1VRU1gDQJz+PUaXFEUckIiIt6VUJKrl5Tx0kRESyV+9KUBrBXESk28joAwuzzQfPmcqsScPYsucIE0YMjDocERFpRa9KUIUFeUwfP4Tp44dEHYqIiLShVzXxiYhI96EEJSIiWUkJSkREspISlIiIZCUlKBERyUpKUCIikpWUoEREJCuZu0cdQ7uYWTmwrYObDwH2d2I4maRYO193iRMUayZ0lzih98U63t2HJi/sdgnqZJjZUnefF3Uc6VCsna+7xAmKNRO6S5ygWBupiU9ERLKSEpSIiGSl3pag7ok6gHZQrJ2vu8QJijUTukucoFiBXnYNSkREuo/eVoMSEZFuQglKRESyUo9JUGZ2qZmtN7ONZvbFFOvNzO4I1680szPS3TaCWK8NY1xpZq+Y2eyEdVvN7G0zW2FmSyOOc6GZHQljWWFmX0t32whi/ceEOFeZWczMBofruvIzvc/M9pnZqhbWZ9N52las2XKethVnNp2nbcWaLefpWDN73szWmtlqM/tcijKZP1fdvdv/ALnAJmASUAC8BcxIKnM58BRgwALg9XS3jSDWdwODwunLGmMN57cCQ7LkM10IPNGRbbs61qTyHwCe6+rPNDzWe4AzgFUtrM+K8zTNWCM/T9OMMyvO03RiTSob5Xk6EjgjnO4PbIjif2pPqUGdBWx0983uXgs8DFyRVOYK4KceeA0oMbORaW7bpbG6+yvufiicfQ0Yk8F4WnIyn0vWfaZJrgEeymA8LXL3F4GDrRTJlvO0zViz5DxN5zNtSdZ9pkmiPE93u/vycPoosBYYnVQs4+dqT0lQo4EdCfNlnPhhtlQmnW07U3uP90mCbymNHPiDmS0zsxszEF+jdON8l5m9ZWZPmdnMdm7bWdI+npn1BS4FHktY3FWfaTqy5Txtr6jO03Rlw3matmw6T81sAjAXeD1pVcbP1byObJSFLMWy5P7zLZVJZ9vOlPbxzOwCgj/8cxMWn+Puu8xsGPCMma0Lv5VFEedygjG0jpnZ5cBvgClpbtuZ2nO8DwAvu3vit9iu+kzTkS3nadoiPk/TkS3naXtkxXlqZsUESfLz7l6RvDrFJp16rvaUGlQZMDZhfgywK80y6WzbmdI6npnNAu4FrnD3A43L3X1X+LoP+DVBdTqSON29wt2PhdOLgXwzG5LOtl0da4KrSWo26cLPNB3Zcp6mJQvO0zZl0XnaHpGfp2aWT5CcHnT3X6UokvlztSsuuGX6h6AmuBmYSNNFuZlJZd5P8wt6b6S7bQSxjgM2Au9OWt4P6J8w/QpwaYRxjqDpZu+zgO3h55t1n2lYbiBB+3+/KD7ThGNOoOUL+llxnqYZa+TnaZpxZsV5mk6s2XKehp/PT4EftlIm4+dqj2jic/d6M7sZeJqgB8l97r7azG4K198NLCbodbIROA58orVtI471a0Ap8GMzA6j3YLTg4cCvw2V5wM/d/fcRxnkl8BkzqweqgKs9OEOz8TMF+DDwB3evTNi8yz5TADN7iKBX2RAzKwO+DuQnxJkV52masUZ+nqYZZ1acp2nGCllwngLnANcBb5vZinDZlwi+lHTZuaqhjkREJCv1lGtQIiLSwyhBiYhIVlKCEhGRrKQEJSIiWUkJSkREspISlPRKZlaaMGr0HjPbmTBfkFT28+HQM23t8wUzm3cSMd1kZh9Lo9xD4ejR/6+VMt8ws38Ipx8wsytbKPdDM3tPOH2vmc1o49g3m9kn2opRpDP0iPugRNrLg1EP5kDwzxw45u63t1D888DPCO71OClmluvusRZiujvV8qTtRxDcGDu+E2IZDCxw98+Hx78hjc3uA14G7j/Z44u0RTUokZCZXWRmb4bP3LnPzPqY2d8Do4Dnzez5sNx/mdnS8Dk530xjv1vN7Gtm9mfgL83sU2a2JBy89LHG2llSrecFM/tXM3vDzDaY2Xnh7v4ADAtreue1tK80XQnEb/ZMrAGa2TEzuy3c72tmNhzA3Y8DW80syuGgpJdQghIJFAIPAFe5++kErQufcfc7CMYRu8DdLwjLfjkcMWEWcH44Hl1bqt39XHd/GPiVu89399kEjzH4ZAvb5Ln7WQQ1uK+Hyz4IbHL3Oe7+Ujv2lco5wLIW1vUDXgv3+yLwqYR1S4HzUm4l0omUoEQCucAWd98Qzv+E4OFyqfyVmS0H3gRmAq1etwn9ImH6NDN7yczeBq4N95FK4wCdywjGb0sl3X2lMhIob2FdLfBEC8ffR1CrFMkoXYMSCVS2XQTMbCLwD8B8dz9kZg8Q1L7as/8HgA+5+1tmdj3B2Gyp1ISvMVr+W013X6lU0XLsdd40Dlry8QvDbUUySjUokUAhMMHMJofz1wF/CqePEjz2GmAAQbI5El6XuawDx+oP7A4fZ3Btx0M+6X2tBSa3WepEU4FVHdhOpF2UoEQC1QSjMf8ybC5rABp71d0DPGVmz7v7WwRNe6tp6tHWXl8leDrpM8C6k4z7ZPb1JO2rcTU6B/hjB7YTaReNZi7Si4U9Cxe5++E0y88FbnH36zIamAhKUCK9mpmdDVS5+8o0y18MvOPuWzMamAhKUCIikqV0DUpERLKSEpSIiGQlJSgREclKSlAiIpKVlKBERCQr/X/kda/zBO+tZQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "# Here's what it looks like.\n", "\n", "post_pred.make_cdf().plot(label='rainfall')\n", "decorate(xlabel='Total rainfall (in)',\n", " ylabel='CDF',\n", " title='Posterior predictive distribution of rainfall')" ] }, { "cell_type": "code", "execution_count": 101, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:45.664168Z", "iopub.status.busy": "2021-04-16T19:37:45.663749Z", "iopub.status.idle": "2021-04-16T19:37:45.667926Z", "shell.execute_reply": "2021-04-16T19:37:45.668412Z" } }, "outputs": [ { "data": { "text/plain": [ "0.00900003598887611" ] }, "execution_count": 101, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution \n", "\n", "# The probability of more than 1.5 inches of rain is small\n", "\n", "cdf = post_pred.make_cdf()\n", "p_gt = 1 - cdf(1.5)\n", "p_gt" ] }, { "cell_type": "code", "execution_count": 102, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:37:45.671553Z", "iopub.status.busy": "2021-04-16T19:37:45.671143Z", "iopub.status.idle": "2021-04-16T19:37:45.675804Z", "shell.execute_reply": "2021-04-16T19:37:45.675337Z" } }, "outputs": [ { "data": { "text/plain": [ "111.11066680577532" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution \n", "\n", "# So it's easier to interpret as the number of rainy\n", "# days between events, on average\n", "\n", "1 / p_gt" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Tags", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.8" } }, "nbformat": 4, "nbformat_minor": 1 }