{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Approximate Bayesian Computation" ] }, { "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:41:51.844006Z", "iopub.status.busy": "2021-04-16T19:41:51.843315Z", "iopub.status.idle": "2021-04-16T19:41:51.846056Z", "shell.execute_reply": "2021-04-16T19:41:51.845531Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# If we're running on Colab, install libraries\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:41:51.850496Z", "iopub.status.busy": "2021-04-16T19:41:51.849719Z", "iopub.status.idle": "2021-04-16T19:41:51.852344Z", "shell.execute_reply": "2021-04-16T19:41:51.851813Z" }, "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:41:51.856461Z", "iopub.status.busy": "2021-04-16T19:41:51.855818Z", "iopub.status.idle": "2021-04-16T19:41:52.549587Z", "shell.execute_reply": "2021-04-16T19:41:52.548943Z" }, "tags": [ "remove-cell" ] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "In /home/downey/anaconda3/envs/ThinkBayes2/lib/python3.8/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: \n", "The text.latex.preview rcparam was deprecated in Matplotlib 3.3 and will be removed two minor releases later.\n", "In /home/downey/anaconda3/envs/ThinkBayes2/lib/python3.8/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: \n", "The mathtext.fallback_to_cm rcparam was deprecated in Matplotlib 3.3 and will be removed two minor releases later.\n", "In /home/downey/anaconda3/envs/ThinkBayes2/lib/python3.8/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: Support for setting the 'mathtext.fallback_to_cm' rcParam is deprecated since 3.3 and will be removed two minor releases later; use 'mathtext.fallback : 'cm' instead.\n", "In /home/downey/anaconda3/envs/ThinkBayes2/lib/python3.8/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: \n", "The validate_bool_maybe_none function was deprecated in Matplotlib 3.3 and will be removed two minor releases later.\n", "In /home/downey/anaconda3/envs/ThinkBayes2/lib/python3.8/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: \n", "The savefig.jpeg_quality rcparam was deprecated in Matplotlib 3.3 and will be removed two minor releases later.\n", "In /home/downey/anaconda3/envs/ThinkBayes2/lib/python3.8/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: \n", "The keymap.all_axes rcparam was deprecated in Matplotlib 3.3 and will be removed two minor releases later.\n", "In /home/downey/anaconda3/envs/ThinkBayes2/lib/python3.8/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: \n", "The animation.avconv_path rcparam was deprecated in Matplotlib 3.3 and will be removed two minor releases later.\n", "In /home/downey/anaconda3/envs/ThinkBayes2/lib/python3.8/site-packages/matplotlib/mpl-data/stylelib/_classic_test.mplstyle: \n", "The animation.avconv_args rcparam was deprecated in Matplotlib 3.3 and will be removed two minor releases later.\n" ] } ], "source": [ "from utils import set_pyplot_params\n", "set_pyplot_params()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This chapter introduces a method of last resort for the most complex problems, Approximate Bayesian Computation (ABC).\n", "I say it is a last resort because it usually requires more computation than other methods, so if you can solve a problem any other way, you should.\n", "However, for the examples in this chapter, ABC is not just easy to implement; it is also efficient.\n", "\n", "The first example is my solution to a problem posed by a patient\n", "with a kidney tumor.\n", "I use data from a medical journal to model tumor growth, and use simulations to estimate the age of a tumor based on its size.\n", "\n", "The second example is a model of cell counting, which has applications in biology, medicine, and zymurgy (beer-making).\n", "Given a cell count from a diluted sample, we estimate the concentration of cells.\n", "\n", "Finally, as an exercise, you'll have a chance to work on a fun sock-counting problem.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Kidney Tumor Problem\n", "\n", "I am a frequent reader and occasional contributor to the online\n", "statistics forum at . \n", "In November 2011, I read the following message:\n", "\n", "> \"I have Stage IV Kidney Cancer and am trying to determine if the cancer formed before I retired from the military. ... Given the dates of retirement and detection is it possible to determine when there was a 50/50 chance that I developed the disease? Is it possible to determine the probability on the retirement date? My tumor was 15.5 cm x 15 cm at detection. Grade II.\"\n", "\n", "I contacted the author of the message to get more information; I\n", "learned that veterans get different benefits if it is \"more likely than not\" that a tumor formed while they were in military service (among other considerations).\n", "So I agree to help him answer his question.\n", "\n", "Because renal tumors grow slowly, and often do not cause symptoms, they are sometimes left untreated. As a result, doctors can observe the rate of growth for untreated tumors by comparing scans from the same patient at different times. Several papers have reported these growth rates.\n", "\n", "For my analysis I used data from a paper by [Zhang et al](https://pubs.rsna.org/doi/full/10.1148/radiol.2501071712). \n", "They report growth rates in two forms:\n", "\n", "* Volumetric doubling time, which is the time it would take for a tumor to double in size.\n", "\n", "* Reciprocal doubling time (RDT), which is the number of doublings per year.\n", "\n", "The next section shows how we work with these growth rates." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Zhang et al, Distribution of Renal Tumor Growth Rates Determined\n", " by Using Serial Volumetric CT Measurements, January 2009\n", " *Radiology*, 250, 137-144.\n", " \n", "https://pubs.rsna.org/doi/full/10.1148/radiol.2501071712" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A Simple Growth Model\n", "\n", "We'll start with a simple model of tumor growth based on two assumptions:\n", "\n", "* Tumors grow with a constant doubling time, and \n", "\n", "* They are roughly spherical in shape.\n", "\n", "And I'll define two points in time:\n", "\n", "* `t1` is when my correspondent retired.\n", "\n", "* `t2` is when the tumor was detected.\n", "\n", "The time between `t1` and `t2` was about 9.0 years.\n", "As an example, let's assume that the diameter of the tumor was 1 cm at `t1`, and estimate its size at `t2`.\n", "\n", "I'll use the following function to compute the volume of a sphere with a given diameter." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.553341Z", "iopub.status.busy": "2021-04-16T19:41:52.552758Z", "iopub.status.idle": "2021-04-16T19:41:52.555050Z", "shell.execute_reply": "2021-04-16T19:41:52.554605Z" } }, "outputs": [], "source": [ "import numpy as np\n", "\n", "def calc_volume(diameter):\n", " \"\"\"Converts a diameter to a volume.\"\"\"\n", " factor = 4 * np.pi / 3\n", " return factor * (diameter/2.0)**3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Assuming that the tumor is spherical, we can compute its volume at `t1`." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.560317Z", "iopub.status.busy": "2021-04-16T19:41:52.559803Z", "iopub.status.idle": "2021-04-16T19:41:52.562340Z", "shell.execute_reply": "2021-04-16T19:41:52.562692Z" } }, "outputs": [ { "data": { "text/plain": [ "0.5235987755982988" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d1 = 1\n", "v1 = calc_volume(d1)\n", "v1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The median volume doubling time reported by Zhang et al. is 811 days, which corresponds to an RDT of 0.45 doublings per year." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.566541Z", "iopub.status.busy": "2021-04-16T19:41:52.565998Z", "iopub.status.idle": "2021-04-16T19:41:52.568663Z", "shell.execute_reply": "2021-04-16T19:41:52.568289Z" } }, "outputs": [ { "data": { "text/plain": [ "0.45006165228113443" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "median_doubling_time = 811\n", "rdt = 365 / median_doubling_time\n", "rdt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can compute the number of doublings that would have happened in the interval between `t1` and `t2`:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.571772Z", "iopub.status.busy": "2021-04-16T19:41:52.571326Z", "iopub.status.idle": "2021-04-16T19:41:52.574266Z", "shell.execute_reply": "2021-04-16T19:41:52.573874Z" } }, "outputs": [ { "data": { "text/plain": [ "4.05055487053021" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "interval = 9.0\n", "doublings = interval * rdt\n", "doublings" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Given `v1` and the number of doublings, we can compute the volume at `t2`." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.577514Z", "iopub.status.busy": "2021-04-16T19:41:52.576916Z", "iopub.status.idle": "2021-04-16T19:41:52.579959Z", "shell.execute_reply": "2021-04-16T19:41:52.580427Z" } }, "outputs": [ { "data": { "text/plain": [ "8.676351488087187" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v2 = v1 * 2**doublings\n", "v2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following function computes the diameter of a sphere with the given volume." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.584716Z", "iopub.status.busy": "2021-04-16T19:41:52.584090Z", "iopub.status.idle": "2021-04-16T19:41:52.586232Z", "shell.execute_reply": "2021-04-16T19:41:52.586737Z" } }, "outputs": [], "source": [ "def calc_diameter(volume):\n", " \"\"\"Converts a volume to a diameter.\"\"\"\n", " factor = 3 / np.pi / 4\n", " return 2 * (factor * volume)**(1/3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So we can compute the diameter of the tumor at `t2`:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.591419Z", "iopub.status.busy": "2021-04-16T19:41:52.590657Z", "iopub.status.idle": "2021-04-16T19:41:52.593714Z", "shell.execute_reply": "2021-04-16T19:41:52.594212Z" } }, "outputs": [ { "data": { "text/plain": [ "2.5494480788327483" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d2 = calc_diameter(v2)\n", "d2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If the diameter of the tumor was 1 cm at `t1`, and it grew at the median rate, the diameter would be about 2.5 cm at `t2`.\n", "\n", "This example demonstrates the growth model, but it doesn't answer the question my correspondent posed." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A More General Model\n", "\n", "Given the size of a tumor at time of diagnosis, we would like to know the distribution of its age.\n", "To find it, we'll run simulations of tumor growth to get the distribution of size conditioned on age. \n", "Then we'll compute the distribution of age conditioned on size.\n", "\n", "The simulation starts with a small tumor and runs these steps:\n", "\n", "1. Choose a value from the distribution of growth rates.\n", "\n", "2. Compute the size of the tumor at the end of an interval.\n", "\n", "3. Repeat until the tumor exceeds the maximum relevant size.\n", "\n", "So the first thing we need is the distribution of growth rates." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using the figures in the paper by Zhange et al., I created an array, `rdt_sample`, that contains estimated values of RDT for the 53 patients in the study.\n", "\n", "Again, RDT stands for \"reciprocal doubling time\", which is in doublings per year.\n", "So if `rdt=1`, a tumor would double in volume in one year.\n", "If `rdt=2`, it would double twice; that is, the volume would quadruple.\n", "And if `rdt=-1`, it would halve in volume." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.599936Z", "iopub.status.busy": "2021-04-16T19:41:52.599340Z", "iopub.status.idle": "2021-04-16T19:41:52.606276Z", "shell.execute_reply": "2021-04-16T19:41:52.606689Z" }, "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "53" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Data from the histogram in Figure 3\n", "\n", "import numpy as np\n", "from empiricaldist import Pmf\n", "\n", "counts = [2, 29, 11, 6, 3, 1, 1]\n", "rdts = np.arange(-1, 6) + 0.01\n", "pmf_rdt = Pmf(counts, rdts)\n", "pmf_rdt.normalize()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.612166Z", "iopub.status.busy": "2021-04-16T19:41:52.611547Z", "iopub.status.idle": "2021-04-16T19:41:52.614310Z", "shell.execute_reply": "2021-04-16T19:41:52.613940Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "53" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Data from the scatter plot in Figure 4\n", "\n", "rdts = [5.089, 3.572, 3.242, 2.642, 1.982, 1.847, 1.908, 1.798,\n", " 1.798, 1.761, 2.703, -0.416, 0.024, 0.869, 0.746, 0.257,\n", " 0.269, 0.086, 0.086, 1.321, 1.052, 1.076, 0.758, 0.587,\n", " 0.367, 0.416, 0.073, 0.538, 0.281, 0.122, -0.869, -1.431,\n", " 0.012, 0.037, -0.135, 0.122, 0.208, 0.245, 0.404, 0.648,\n", " 0.673, 0.673, 0.563, 0.391, 0.049, 0.538, 0.514, 0.404,\n", " 0.404, 0.33, -0.061, 0.538, 0.306]\n", "\n", "rdt_sample = np.array(rdts)\n", "len(rdt_sample)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use the sample of RDTs to estimate the PDF of the distribution." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.619256Z", "iopub.status.busy": "2021-04-16T19:41:52.618756Z", "iopub.status.idle": "2021-04-16T19:41:52.620385Z", "shell.execute_reply": "2021-04-16T19:41:52.620736Z" } }, "outputs": [], "source": [ "from utils import kde_from_sample\n", "\n", "qs = np.linspace(-2, 6, num=201)\n", "pmf_rdt = kde_from_sample(rdt_sample, qs)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.625269Z", "iopub.status.busy": "2021-04-16T19:41:52.624587Z", "iopub.status.idle": "2021-04-16T19:41:52.627265Z", "shell.execute_reply": "2021-04-16T19:41:52.627710Z" }, "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "651.7857142857142" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 / pmf_rdt.median() * 365" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.632230Z", "iopub.status.busy": "2021-04-16T19:41:52.631295Z", "iopub.status.idle": "2021-04-16T19:41:52.839571Z", "shell.execute_reply": "2021-04-16T19:41:52.839060Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from utils import decorate\n", "\n", "pmf_rdt.plot(label='rdts')\n", "\n", "decorate(xlabel='Reciprocal doubling time (RDT)',\n", " ylabel='PDF',\n", " title='Distribution of growth rates')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the next section we will use this distribution to simulate tumor growth. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulation\n", "\n", "Now we're ready to run the simulations.\n", "Starting with a small tumor, we'll simulate a series of intervals until the tumor reaches a maximum size.\n", "\n", "At the beginning of each simulated interval, we'll choose a value from the distribution of growth rates and compute the size of the tumor at the end.\n", "\n", "I chose an interval of 245 days (about 8 months) because that is the\n", "median time between measurements in the data source\n", "\n", "For the initial diameter I chose 0.3 cm, because carcinomas smaller than that are less likely to be invasive and less likely to have the blood supply needed for rapid growth (see [this page on carcinoma](http://en.wikipedia.org/wiki/Carcinoma_in_situ)).\n", "For the maximum diameter I chose 20 cm. " ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.842953Z", "iopub.status.busy": "2021-04-16T19:41:52.842531Z", "iopub.status.idle": "2021-04-16T19:41:52.845337Z", "shell.execute_reply": "2021-04-16T19:41:52.844751Z" } }, "outputs": [], "source": [ "interval = 245 / 365 # year\n", "min_diameter = 0.3 # cm\n", "max_diameter = 20 # cm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll use `calc_volume` to compute the initial and maximum volumes:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.850568Z", "iopub.status.busy": "2021-04-16T19:41:52.849935Z", "iopub.status.idle": "2021-04-16T19:41:52.855403Z", "shell.execute_reply": "2021-04-16T19:41:52.854810Z" } }, "outputs": [ { "data": { "text/plain": [ "(0.014137166941154066, 4188.790204786391)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "v0 = calc_volume(min_diameter)\n", "vmax = calc_volume(max_diameter)\n", "v0, vmax" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following function runs the simulation." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.861678Z", "iopub.status.busy": "2021-04-16T19:41:52.860787Z", "iopub.status.idle": "2021-04-16T19:41:52.863092Z", "shell.execute_reply": "2021-04-16T19:41:52.863555Z" } }, "outputs": [], "source": [ "import pandas as pd\n", "\n", "def simulate_growth(pmf_rdt):\n", " \"\"\"Simulate the growth of a tumor.\"\"\"\n", " age = 0\n", " volume = v0\n", " res = []\n", " \n", " while True:\n", " res.append((age, volume))\n", " if volume > vmax:\n", " break\n", "\n", " rdt = pmf_rdt.choice()\n", " age += interval \n", " doublings = rdt * interval\n", " volume *= 2**doublings\n", " \n", " columns = ['age', 'volume']\n", " sim = pd.DataFrame(res, columns=columns)\n", " sim['diameter'] = calc_diameter(sim['volume'])\n", " return sim" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`simulate_growth` takes as a parameter a `Pmf` that represents the distribution of RDT.\n", "It initializes the age and volume of the tumor, then runs a loop that simulates one interval at a time.\n", "\n", "Each time through the loop, it checks the volume of the tumor and exits if it exceeds `vmax`.\n", "\n", "Otherwise it chooses a value from `pmf_rdt` and updates `age` and `volume`. Since `rdt` is in doublings per year, we multiply by `interval` to compute the number of doublings during each interval.\n", "\n", "At the end of the loop, `simulate_growth` puts the results in a `DataFrame` and computes the diameter that corresponds to each volume.\n", "\n", "Here's how we call this function:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.867352Z", "iopub.status.busy": "2021-04-16T19:41:52.866802Z", "iopub.status.idle": "2021-04-16T19:41:52.869469Z", "shell.execute_reply": "2021-04-16T19:41:52.868926Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "np.random.seed(17)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.874628Z", "iopub.status.busy": "2021-04-16T19:41:52.873934Z", "iopub.status.idle": "2021-04-16T19:41:52.883136Z", "shell.execute_reply": "2021-04-16T19:41:52.882586Z" } }, "outputs": [], "source": [ "sim = simulate_growth(pmf_rdt)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the results for the first few intervals:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.887549Z", "iopub.status.busy": "2021-04-16T19:41:52.887004Z", "iopub.status.idle": "2021-04-16T19:41:52.895537Z", "shell.execute_reply": "2021-04-16T19:41:52.895988Z" } }, "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", "
agevolumediameter
00.0000000.0141370.300000
10.6712330.0149490.305635
21.3424660.0197630.335441
\n", "
" ], "text/plain": [ " age volume diameter\n", "0 0.000000 0.014137 0.300000\n", "1 0.671233 0.014949 0.305635\n", "2 1.342466 0.019763 0.335441" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sim.head(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the last few intervals." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.902596Z", "iopub.status.busy": "2021-04-16T19:41:52.902080Z", "iopub.status.idle": "2021-04-16T19:41:52.904533Z", "shell.execute_reply": "2021-04-16T19:41:52.904879Z" } }, "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", "
agevolumediameter
4328.8630141882.06742715.318357
4429.5342472887.56327717.667603
4530.2054794953.61827321.149883
\n", "
" ], "text/plain": [ " age volume diameter\n", "43 28.863014 1882.067427 15.318357\n", "44 29.534247 2887.563277 17.667603\n", "45 30.205479 4953.618273 21.149883" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sim.tail(3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To show the results graphically, I'll run 101 simulations:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.908057Z", "iopub.status.busy": "2021-04-16T19:41:52.907618Z", "iopub.status.idle": "2021-04-16T19:41:52.909349Z", "shell.execute_reply": "2021-04-16T19:41:52.909718Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "np.random.seed(17)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:52.913652Z", "iopub.status.busy": "2021-04-16T19:41:52.913163Z", "iopub.status.idle": "2021-04-16T19:41:53.164914Z", "shell.execute_reply": "2021-04-16T19:41:53.165292Z" } }, "outputs": [], "source": [ "sims = [simulate_growth(pmf_rdt) for _ in range(101)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And plot the results." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:53.189541Z", "iopub.status.busy": "2021-04-16T19:41:53.185173Z", "iopub.status.idle": "2021-04-16T19:41:53.780985Z", "shell.execute_reply": "2021-04-16T19:41:53.781369Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "diameters = [4, 8, 16]\n", "for diameter in diameters:\n", " plt.axhline(diameter,\n", " color='C5', linewidth=2, ls=':')\n", "\n", "for sim in sims:\n", " plt.plot(sim['age'], sim['diameter'],\n", " color='C1', linewidth=0.5, alpha=0.5)\n", " \n", "decorate(xlabel='Tumor age (years)',\n", " ylabel='Diameter (cm, log scale)',\n", " ylim=[0.2, 20],\n", " yscale='log')\n", "\n", "yticks = [0.2, 0.5, 1, 2, 5, 10, 20]\n", "plt.yticks(yticks, yticks);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this figure, each thin, solid line shows the simulated growth of a tumor over time, with diameter on a log scale.\n", "The dotted lines are at 4, 8, and 16 cm.\n", "\n", "By reading across the dotted lines, you can get a sense of the distribution of age at each size.\n", "For example, reading across the top line, we see that the age of a 16 cm tumor might be as low 10 years or as high as 40 years, but it is most likely to be between 15 and 30.\n", "\n", "To compute this distribution more precisely, we can interpolate the growth curves to see when each one passes through a given size.\n", "The following function takes the results of the simulations and returns the age when each tumor reached a given diameter." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:53.785378Z", "iopub.status.busy": "2021-04-16T19:41:53.784796Z", "iopub.status.idle": "2021-04-16T19:41:53.786486Z", "shell.execute_reply": "2021-04-16T19:41:53.786833Z" } }, "outputs": [], "source": [ "from scipy.interpolate import interp1d\n", "\n", "def interpolate_ages(sims, diameter):\n", " \"\"\"Estimate the age when each tumor reached a given size.\"\"\"\n", " ages = []\n", " for sim in sims:\n", " interp = interp1d(sim['diameter'], sim['age'])\n", " age = interp(diameter)\n", " ages.append(float(age))\n", " return ages" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can call this function like this:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:53.805598Z", "iopub.status.busy": "2021-04-16T19:41:53.805034Z", "iopub.status.idle": "2021-04-16T19:41:53.807918Z", "shell.execute_reply": "2021-04-16T19:41:53.808340Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "22.31854530374061 [13.47056554 34.49632276]\n" ] } ], "source": [ "from empiricaldist import Cdf\n", "\n", "ages = interpolate_ages(sims, 15)\n", "cdf = Cdf.from_seq(ages)\n", "print(cdf.median(), cdf.credible_interval(0.9))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For a tumor 15 cm in diameter, the median age is about 22 years, the 90% credible interval is between 13 and 34 years, and the probability that it formed less than 9 years ago is less than 1%." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:53.812244Z", "iopub.status.busy": "2021-04-16T19:41:53.811688Z", "iopub.status.idle": "2021-04-16T19:41:53.814099Z", "shell.execute_reply": "2021-04-16T19:41:53.814464Z" } }, "outputs": [ { "data": { "text/plain": [ "0.9900990099009901" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "1 - cdf(9.0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But this result is based on two modeling decisions that are potentially problematic:\n", "\n", "* In the simulations, growth rate during each interval is independent of previous growth rates. In reality it is plausible that tumors that have grown quickly in the past are likely to grow quickly in the future. In other words, there is probably a serial correlation in growth rate.\n", "\n", "* To convert from linear measure to volume, we assume that tumors are approximately spherical.\n", "\n", "In additional experiments, I implemented a simulation that chooses growth rates with serial correlation; the effect is that the fast-growing tumors grow faster and the slow-growing tumors grow slower.\n", "Nevertheless, with moderate correlation (0.5), the probability that a 15 cm tumor is less than 9 years old is only about 1%. \n", "\n", "The assumption that tumors are spherical is probably fine for tumors up to a few centimeters, but not for a tumor with linear dimensions 15.5 x 15 cm.\n", "If, as seems likely, a tumor this size is relatively flat, it might have the same volume as a 6 cm sphere.\n", "But even with this smaller volume and correlation 0.5, the probability that this tumor is less than 9 years old is about 5%.\n", "\n", "So even taking into account modeling errors, it is unlikely that such a large tumor could have formed after my correspondent retired from military service." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The following figure shows the distribution of ages for tumors with diameters 4, 8, and 15 cm." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:53.848074Z", "iopub.status.busy": "2021-04-16T19:41:53.824687Z", "iopub.status.idle": "2021-04-16T19:41:54.018702Z", "shell.execute_reply": "2021-04-16T19:41:54.018329Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "for diameter in diameters:\n", " ages = interpolate_ages(sims, diameter)\n", " cdf = Cdf.from_seq(ages)\n", " cdf.plot(label=f'{diameter} cm')\n", " \n", "decorate(xlabel='Tumor age (years)',\n", " ylabel='CDF')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Approximate Bayesian Calculation\n", "\n", "At this point you might wonder why this example is in a book about Bayesian statistics.\n", "We never defined a prior distribution or did a Bayesian update.\n", "Why not? Because we didn't have to.\n", "\n", "Instead, we used simulations to compute ages and sizes for a collection of hypothetical tumors.\n", "Then, implicitly, we used the simulation results to form a joint distribution of age and size.\n", "If we select a column from the joint distribution, we get a distribution of size conditioned on age.\n", "If we select a row, we get a distribution of age conditioned on size.\n", "\n", "So this example is like the ones we saw in <<_Probability>>: if you have all of the data, you don't need Bayes's theorem; you can compute probabilities by counting.\n", "\n", "This example is a first step toward Approximate Bayesian Computation (ABC).\n", "The next example is a second step." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Counting Cells\n", "\n", "This example comes from [this blog post](https://dataorigami.net/blogs/napkin-folding/bayesian-cell-counting), by Cameron Davidson-Pilon.\n", "In it, he models the process biologists use to estimate the concentration of cells in a sample of liquid.\n", "The example he presents is counting cells in a \"yeast slurry\", which is a mixture of yeast and water used in brewing beer.\n", "\n", "There are two steps in the process:\n", "\n", "* First, the slurry is diluted until the concentration is low enough that it is practical to count cells.\n", "\n", "* Then a small sample is put on a hemocytometer, which is a specialized microscope slide that holds a fixed amount of liquid on a rectangular grid.\n", "\n", "The cells and the grid are visible in a microscope, making it possible to count the cells accurately.\n", "\n", "As an example, suppose we start with a yeast slurry with unknown concentration of cells.\n", "Starting with a 1 mL sample, we dilute it by adding it to a shaker with 9 mL of water and mixing well.\n", "Then we dilute it again, and then a third time.\n", "Each dilution reduces the concentration by a factor of 10, so three dilutions reduces the concentration by a factor of 1000.\n", "\n", "Then we add the diluted sample to the hemocytometer, which has a capacity of 0.0001 mL spread over a 5x5 grid.\n", "Although the grid has 25 squares, it is standard practice to inspect only a few of them, say 5, and report the total number of cells in the inspected squares." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This process is simple enough, but at every stage there are sources of error:\n", "\n", "* During the dilution process, liquids are measured using pipettes that introduce measurement error.\n", "\n", "* The amount of liquid in the hemocytometer might vary from the specification.\n", "\n", "* During each step of the sampling process, we might select more or less than the average number of cells, due to random variation.\n", "\n", "Davidson-Pilon presents a PyMC model that describes these errors.\n", "I'll start by replicating his model; then we'll adapt it for ABC.\n", "\n", "Suppose there are 25 squares in the grid, we count 5 of them, and the total number of cells is 49." ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:54.021855Z", "iopub.status.busy": "2021-04-16T19:41:54.021429Z", "iopub.status.idle": "2021-04-16T19:41:54.024368Z", "shell.execute_reply": "2021-04-16T19:41:54.024023Z" } }, "outputs": [], "source": [ "total_squares = 25\n", "squares_counted = 5\n", "yeast_counted = 49" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the first part of the model, which defines the prior distribution of `yeast_conc`, which is the concentration of yeast we're trying to estimate.\n", "\n", "`shaker1_vol` is the actual volume of water in the first shaker, which should be 9 mL, but might be higher or lower, with standard deviation 0.05 mL.\n", "`shaker2_vol` and `shaker3_vol` are the volumes in the second and third shakers." ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:54.028284Z", "iopub.status.busy": "2021-04-16T19:41:54.027782Z", "iopub.status.idle": "2021-04-16T19:41:55.599701Z", "shell.execute_reply": "2021-04-16T19:41:55.599305Z" } }, "outputs": [], "source": [ "import pymc3 as pm\n", "billion = 1e9\n", "\n", "with pm.Model() as model:\n", " yeast_conc = pm.Normal(\"yeast conc\", \n", " mu=2 * billion, sd=0.4 * billion)\n", "\n", " shaker1_vol = pm.Normal(\"shaker1 vol\", \n", " mu=9.0, sd=0.05)\n", " shaker2_vol = pm.Normal(\"shaker2 vol\", \n", " mu=9.0, sd=0.05)\n", " shaker3_vol = pm.Normal(\"shaker3 vol\", \n", " mu=9.0, sd=0.05)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, the sample drawn from the yeast slurry is supposed to be 1 mL, but might be more or less.\n", "And similarly for the sample from the first shaker and from the second shaker.\n", "The following variables model these steps." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:55.757355Z", "iopub.status.busy": "2021-04-16T19:41:55.721470Z", "iopub.status.idle": "2021-04-16T19:41:55.796399Z", "shell.execute_reply": "2021-04-16T19:41:55.795959Z" } }, "outputs": [], "source": [ "with model:\n", " yeast_slurry_vol = pm.Normal(\"yeast slurry vol\",\n", " mu=1.0, sd=0.01)\n", " shaker1_to_shaker2_vol = pm.Normal(\"shaker1 to shaker2\",\n", " mu=1.0, sd=0.01)\n", " shaker2_to_shaker3_vol = pm.Normal(\"shaker2 to shaker3\",\n", " mu=1.0, sd=0.01)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Given the actual volumes in the samples and in the shakers, we can compute the effective dilution, `final_dilution`, which should be 1000, but might be higher or lower." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:55.806783Z", "iopub.status.busy": "2021-04-16T19:41:55.800081Z", "iopub.status.idle": "2021-04-16T19:41:55.808781Z", "shell.execute_reply": "2021-04-16T19:41:55.808387Z" } }, "outputs": [], "source": [ "with model:\n", " dilution_shaker1 = (yeast_slurry_vol / \n", " (yeast_slurry_vol + shaker1_vol))\n", " dilution_shaker2 = (shaker1_to_shaker2_vol / \n", " (shaker1_to_shaker2_vol + shaker2_vol))\n", " dilution_shaker3 = (shaker2_to_shaker3_vol / \n", " (shaker2_to_shaker3_vol + shaker3_vol))\n", " \n", " final_dilution = (dilution_shaker1 * \n", " dilution_shaker2 * \n", " dilution_shaker3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The next step is to place a sample from the third shaker in the chamber of the hemocytomer.\n", "The capacity of the chamber should be 0.0001 mL, but might vary; to describe this variance, we'll use a gamma distribution, which ensures that we don't generate negative values." ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:55.814594Z", "iopub.status.busy": "2021-04-16T19:41:55.813918Z", "iopub.status.idle": "2021-04-16T19:41:55.967345Z", "shell.execute_reply": "2021-04-16T19:41:55.966880Z" } }, "outputs": [], "source": [ "with model:\n", " chamber_vol = pm.Gamma(\"chamber_vol\", \n", " mu=0.0001, sd=0.0001 / 20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On average, the number of cells in the chamber is the product of the actual concentration, final dilution, and chamber volume.\n", "But the actual number might vary; we'll use a Poisson distribution to model this variance." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:55.972552Z", "iopub.status.busy": "2021-04-16T19:41:55.972041Z", "iopub.status.idle": "2021-04-16T19:41:56.039972Z", "shell.execute_reply": "2021-04-16T19:41:56.039599Z" } }, "outputs": [], "source": [ "with model:\n", " yeast_in_chamber = pm.Poisson(\"yeast in chamber\", \n", " mu=yeast_conc * final_dilution * chamber_vol)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, each cell in the chamber will be in one of the squares we count with probability `p=squares_counted/total_squares`.\n", "So the actual count follows a binomial distribution." ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:56.052542Z", "iopub.status.busy": "2021-04-16T19:41:56.051571Z", "iopub.status.idle": "2021-04-16T19:41:56.510543Z", "shell.execute_reply": "2021-04-16T19:41:56.510863Z" } }, "outputs": [], "source": [ "with model:\n", " count = pm.Binomial(\"count\", \n", " n=yeast_in_chamber, \n", " p=squares_counted/total_squares,\n", " observed=yeast_counted)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With the model specified, we can use `sample` to generate a sample from the posterior distribution." ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:41:56.515738Z", "iopub.status.busy": "2021-04-16T19:41:56.515055Z", "iopub.status.idle": "2021-04-16T19:42:06.933329Z", "shell.execute_reply": "2021-04-16T19:42:06.934337Z" }, "tags": [ "hide-output" ] }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Multiprocess sampling (2 chains in 2 jobs)\n", "CompoundStep\n", ">NUTS: [chamber_vol, shaker2 to shaker3, shaker1 to shaker2, yeast slurry vol, shaker3 vol, shaker2 vol, shaker1 vol, yeast conc]\n", ">Metropolis: [yeast in chamber]\n" ] }, { "data": { "text/html": [ "\n", "
\n", " \n", " \n", " 100.00% [4000/4000 00:03<00:00 Sampling 2 chains, 0 divergences]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stderr", "output_type": "stream", "text": [ "Sampling 2 chains for 1_000 tune and 1_000 draw iterations (2_000 + 2_000 draws total) took 4 seconds.\n", "The estimated number of effective samples is smaller than 200 for some parameters.\n" ] } ], "source": [ "options = dict(return_inferencedata=False)\n", "\n", "with model:\n", " trace = pm.sample(1000, **options)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can use the sample to estimate the posterior distribution of `yeast_conc` and compute summary statistics." ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:06.938492Z", "iopub.status.busy": "2021-04-16T19:42:06.938018Z", "iopub.status.idle": "2021-04-16T19:42:06.944515Z", "shell.execute_reply": "2021-04-16T19:42:06.943729Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.2712488367301873 [1.8531491 2.7017654]\n" ] } ], "source": [ "posterior_sample = trace['yeast conc'] / billion\n", "cdf_pymc = Cdf.from_seq(posterior_sample)\n", "print(cdf_pymc.mean(), cdf_pymc.credible_interval(0.9))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior mean is about 2.3 billion cells per mL, with a 90% credible interval from 1.8 and 2.7.\n", "\n", "So far we've been following in Davidson-Pilon's footsteps.\n", "And for this problem, the solution using MCMC is sufficient.\n", "But it also provides an opportunity to demonstrate ABC." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cell Counting with ABC\n", "\n", "The fundamental idea of ABC is that we use the prior distribution to generate a sample of the parameters, and then simulate the system for each set of parameters in the sample.\n", "\n", "In this case, since we already have a PyMC model, we can use `sample_prior_predictive` to do the sampling and the simulation." ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:06.948761Z", "iopub.status.busy": "2021-04-16T19:42:06.948266Z", "iopub.status.idle": "2021-04-16T19:42:07.487156Z", "shell.execute_reply": "2021-04-16T19:42:07.486684Z" } }, "outputs": [], "source": [ "with model:\n", " prior_sample = pm.sample_prior_predictive(10000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is a dictionary that contains samples from the prior distribution of the parameters and the prior predictive distribution of `count`." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:07.490679Z", "iopub.status.busy": "2021-04-16T19:42:07.490235Z", "iopub.status.idle": "2021-04-16T19:42:07.492457Z", "shell.execute_reply": "2021-04-16T19:42:07.492806Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "40.1144\n" ] } ], "source": [ "count = prior_sample['count']\n", "print(count.mean())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, to generate a sample from the posterior distribution, we'll select only the elements in the prior sample where the output of the simulation, `count`, matches the observed data, 49." ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:07.496486Z", "iopub.status.busy": "2021-04-16T19:42:07.495613Z", "iopub.status.idle": "2021-04-16T19:42:07.498936Z", "shell.execute_reply": "2021-04-16T19:42:07.499282Z" } }, "outputs": [ { "data": { "text/plain": [ "221" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mask = (count == 49)\n", "mask.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use `mask` to select the values of `yeast_conc` for the simulations that yield the observed data." ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:07.503109Z", "iopub.status.busy": "2021-04-16T19:42:07.502604Z", "iopub.status.idle": "2021-04-16T19:42:07.504717Z", "shell.execute_reply": "2021-04-16T19:42:07.504277Z" } }, "outputs": [], "source": [ "posterior_sample2 = prior_sample['yeast conc'][mask] / billion" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can use the posterior sample to estimate the CDF of the posterior distribution." ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:07.509962Z", "iopub.status.busy": "2021-04-16T19:42:07.509535Z", "iopub.status.idle": "2021-04-16T19:42:07.511879Z", "shell.execute_reply": "2021-04-16T19:42:07.511516Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.275872303142668 [1.87509925 2.72428803]\n" ] } ], "source": [ "cdf_abc = Cdf.from_seq(posterior_sample2)\n", "print(cdf_abc.mean(), cdf_abc.credible_interval(0.9))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior mean and credible interval are similar to what we got with MCMC.\n", "Here's what the distributions look like." ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:07.531093Z", "iopub.status.busy": "2021-04-16T19:42:07.519716Z", "iopub.status.idle": "2021-04-16T19:42:07.720598Z", "shell.execute_reply": "2021-04-16T19:42:07.720179Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "cdf_pymc.plot(label='MCMC', ls=':')\n", "cdf_abc.plot(label='ABC')\n", "\n", "decorate(xlabel='Yeast concentration (cells/mL)',\n", " ylabel='CDF',\n", " title='Posterior distribution',\n", " xlim=(1.4, 3.4))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The distributions are similar, but the results from ABC are noisier because the sample size is smaller." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## When Do We Get to the Approximate Part?\n", "\n", "The examples so far are similar to Approximate Bayesian Computation, but neither of them demonstrates all of the elements of ABC.\n", "More generally, ABC is characterized by:\n", "\n", "1. A prior distribution of parameters.\n", "\n", "2. A simulation of the system that generates the data.\n", "\n", "3. A criterion for when we should accept that the output of the simulation matches the data.\n", "\n", "The kidney tumor example was atypical because we didn't represent the prior distribution of age explicitly.\n", "Because the simulations generate a joint distribution of age and size, we we able to get the marginal posterior distribution of age directly from the results.\n", "\n", "The yeast example is more typical because we represented the distribution of the parameters explicitly.\n", "But we accepted only simulations where the output matches the data exactly.\n", "\n", "The result is approximate in the sense that we have a sample from the posterior distribution rather than the posterior distribution itself.\n", "But it is not approximate in the sense of Approximate Bayesian Computation, which typically accepts simulations where the output matches the data only approximately." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To show how that works, I will extend the yeast example with an approximate matching criterion.\n", "\n", "In the previous section, we accepted a simulation if the output is precisely 49 and rejected it otherwise.\n", "As a result, we got only a few hundred samples out of 10,000 simulations, so that's not very efficient.\n", "\n", "We can make better use of the simulations if we give \"partial credit\" when the output is close to 49.\n", "But how close? And how much credit?\n", "\n", "One way to answer that is to back up to the second-to-last step of the simulation, where we know the number of cells in the chamber, and we use the binomial distribution to generate the final count.\n", "\n", "If there are `n` cells in the chamber, each has a probability `p` of being counted, depending on whether it falls in one of the squares in the grid that get counted.\n", "\n", "We can extract `n` from the prior sample, like this:" ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:07.724224Z", "iopub.status.busy": "2021-04-16T19:42:07.723759Z", "iopub.status.idle": "2021-04-16T19:42:07.726550Z", "shell.execute_reply": "2021-04-16T19:42:07.726183Z" } }, "outputs": [ { "data": { "text/plain": [ "(10000,)" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = prior_sample['yeast in chamber']\n", "n.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And compute `p` like this:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:07.730122Z", "iopub.status.busy": "2021-04-16T19:42:07.729489Z", "iopub.status.idle": "2021-04-16T19:42:07.731874Z", "shell.execute_reply": "2021-04-16T19:42:07.732357Z" } }, "outputs": [ { "data": { "text/plain": [ "0.2" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p = squares_counted/total_squares\n", "p" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now here's the idea: we'll use the binomial distribution to compute the likelihood of the data, `yeast_counted`, for each value of `n` and the fixed value of `p`." ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:07.738178Z", "iopub.status.busy": "2021-04-16T19:42:07.737367Z", "iopub.status.idle": "2021-04-16T19:42:07.743134Z", "shell.execute_reply": "2021-04-16T19:42:07.742703Z" } }, "outputs": [], "source": [ "from scipy.stats import binom\n", "\n", "likelihood = binom(n, p).pmf(yeast_counted).flatten()" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:07.746932Z", "iopub.status.busy": "2021-04-16T19:42:07.746395Z", "iopub.status.idle": "2021-04-16T19:42:07.748798Z", "shell.execute_reply": "2021-04-16T19:42:07.749215Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/plain": [ "(10000,)" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "likelihood.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When the expected count, `n * p`, is close to the actual count, `likelihood` is relatively high; when it is farther away, `likelihood` is lower.\n", "\n", "The following is a scatter plot of these likelihoods versus the expected counts." ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:07.768338Z", "iopub.status.busy": "2021-04-16T19:42:07.764397Z", "iopub.status.idle": "2021-04-16T19:42:07.898747Z", "shell.execute_reply": "2021-04-16T19:42:07.897763Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(n*p, likelihood, '.', alpha=0.03, color='C2')\n", "\n", "decorate(xlabel='Expected count (number of cells)',\n", " ylabel='Likelihood')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can't use these likelihoods to do a Bayesian update because they are incomplete; that is, each likelihood is the probability of the data given `n`, which is the result of a single simulation.\n", "\n", "But we *can* use them to weight the results of the simulations.\n", "Instead of requiring the output of the simulation to match the data exactly, we'll use the likelihoods to give partial credit when the output is close.\n", "\n", "Here's how: I'll construct a `Pmf` that contains yeast concentrations as quantities and the likelihoods as unnormalized probabilities." ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:07.904279Z", "iopub.status.busy": "2021-04-16T19:42:07.903638Z", "iopub.status.idle": "2021-04-16T19:42:07.906506Z", "shell.execute_reply": "2021-04-16T19:42:07.906861Z" } }, "outputs": [], "source": [ "qs = prior_sample['yeast conc'] / billion\n", "ps = likelihood\n", "posterior_pmf = Pmf(ps, qs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this `Pmf`, values of `yeast_conc` that yield outputs close to the data map to higher probabilities.\n", "If we sort the quantities and normalize the probabilities, the result is an estimate of the posterior distribution." ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:07.911101Z", "iopub.status.busy": "2021-04-16T19:42:07.910407Z", "iopub.status.idle": "2021-04-16T19:42:07.916302Z", "shell.execute_reply": "2021-04-16T19:42:07.916646Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.2723483584950497 [1.85449376 2.70563828]\n" ] } ], "source": [ "posterior_pmf.sort_index(inplace=True)\n", "posterior_pmf.normalize()\n", "\n", "print(posterior_pmf.mean(), posterior_pmf.credible_interval(0.9)) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior mean and credible interval are similar to the values we got from MCMC.\n", "And here's what the posterior distributions look like." ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:07.940658Z", "iopub.status.busy": "2021-04-16T19:42:07.937661Z", "iopub.status.idle": "2021-04-16T19:42:08.102746Z", "shell.execute_reply": "2021-04-16T19:42:08.102213Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "cdf_pymc.plot(label='MCMC', ls=':')\n", "#cdf_abc.plot(label='ABC')\n", "posterior_pmf.make_cdf().plot(label='ABC2')\n", "\n", "decorate(xlabel='Yeast concentration (cells/mL)',\n", " ylabel='CDF',\n", " title='Posterior distribution',\n", " xlim=(1.4, 3.4))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The distributions are similar, but the results from MCMC are a little noisier.\n", "In this example, ABC is more efficient than MCMC, requiring less computation to generate a better estimate of the posterior distribution.\n", "But that's unusual; usually ABC requires a lot of computation.\n", "For that reason, it is generally a method of last resort." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summary\n", "\n", "In this chapter we saw two examples of Approximate Bayesian Computation (ABC), based on simulations of tumor growth and cell counting.\n", "\n", "The definitive elements of ABC are:\n", "\n", "1. A prior distribution of parameters.\n", "\n", "2. A simulation of the system that generates the data.\n", "\n", "3. A criterion for when we should accept that the output of the simulation matches the data.\n", "\n", "ABC is particularly useful when the system is too complex to model with tools like PyMC.\n", "For example, it might involve a physical simulation based on differential equations.\n", "In that case, each simulation might require substantial computation, and many simulations might be needed to estimate the posterior distribution.\n", "\n", "Next, you'll have a chance to practice with one more example." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercises" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** This exercise is based on [a blog post by Rasmus Bååth](http://www.sumsar.net/blog/2014/10/tiny-data-and-the-socks-of-karl-broman), which is motivated by a tweet from Karl Broman, who wrote:\n", "\n", "> That the first 11 socks in the laundry are distinct suggests that there are a lot of socks.\n", "\n", "Suppose you pull 11 socks out of the laundry and find that no two of them make a matched pair. Estimate the number of socks in the laundry.\n", "\n", "To solve this problem, we'll use the model Bååth suggests, which is based on these assumptions:\n", "\n", "* The laundry contains some number of pairs of socks, `n_pairs`, plus some number of odd (unpaired) socks, `n_odds`.\n", "\n", "* The pairs of socks are different from each other and different from the unpaired socks; in other words, the number of socks of each type is either 1 or 2, never more.\n", "\n", "We'll use the prior distributions Bååth suggests, which are:\n", "\n", "* The number of socks follows a negative binomial distribution with mean 30 and standard deviation 15.\n", "\n", "* The proportion of socks that are paired follows a beta distribution with parameters `alpha=15` and `beta=2`.\n", "\n", "In the notebook for this chapter, I'll define these priors. Then you can simulate the sampling process and use ABC to estimate the posterior distributions." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "To get you started, I'll define the priors." ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.108208Z", "iopub.status.busy": "2021-04-16T19:42:08.107675Z", "iopub.status.idle": "2021-04-16T19:42:08.110553Z", "shell.execute_reply": "2021-04-16T19:42:08.110183Z" }, "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "(29.999999999999996, 14.999996250001402)" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy.stats import nbinom, beta\n", "\n", "mu = 30\n", "p = 0.8666666\n", "r = mu * (1-p) / p\n", "\n", "prior_n_socks = nbinom(r, 1-p)\n", "prior_n_socks.mean(), prior_n_socks.std()" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.115392Z", "iopub.status.busy": "2021-04-16T19:42:08.114843Z", "iopub.status.idle": "2021-04-16T19:42:08.117801Z", "shell.execute_reply": "2021-04-16T19:42:08.117430Z" }, "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "0.8823529411764706" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior_prop_pair = beta(15, 2)\n", "prior_prop_pair.mean()" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.140833Z", "iopub.status.busy": "2021-04-16T19:42:08.134898Z", "iopub.status.idle": "2021-04-16T19:42:08.255343Z", "shell.execute_reply": "2021-04-16T19:42:08.255871Z" }, "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "qs = np.arange(90)\n", "ps = prior_n_socks.pmf(qs)\n", "pmf = Pmf(ps, qs)\n", "pmf.normalize()\n", "\n", "pmf.plot(label='prior', drawstyle='steps')\n", "\n", "decorate(xlabel='Number of socks',\n", " ylabel='PMF')" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.274344Z", "iopub.status.busy": "2021-04-16T19:42:08.259770Z", "iopub.status.idle": "2021-04-16T19:42:08.436751Z", "shell.execute_reply": "2021-04-16T19:42:08.437075Z" }, "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from utils import pmf_from_dist\n", "\n", "qs = np.linspace(0, 1, 101)\n", "pmf = pmf_from_dist(prior_prop_pair, qs)\n", "pmf.plot(label='prior', color='C1')\n", "\n", "decorate(xlabel='Proportion of socks in pairs',\n", " ylabel='PDF')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "We can sample from the prior distributions like this:" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.441478Z", "iopub.status.busy": "2021-04-16T19:42:08.440805Z", "iopub.status.idle": "2021-04-16T19:42:08.444064Z", "shell.execute_reply": "2021-04-16T19:42:08.443630Z" }, "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "(28, 0.9701935770106817)" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n_socks = prior_n_socks.rvs()\n", "prop_pairs = prior_prop_pair.rvs()\n", "\n", "n_socks, prop_pairs" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "And use the values to compute `n_pairs` and `n_odds`:" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.448230Z", "iopub.status.busy": "2021-04-16T19:42:08.447541Z", "iopub.status.idle": "2021-04-16T19:42:08.450759Z", "shell.execute_reply": "2021-04-16T19:42:08.450369Z" }, "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "(14.0, 0.0)" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n_pairs = np.round(n_socks//2 * prop_pairs)\n", "n_odds = n_socks - n_pairs*2\n", "\n", "n_pairs, n_odds" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "Now you take it from there." ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.454626Z", "iopub.status.busy": "2021-04-16T19:42:08.454172Z", "iopub.status.idle": "2021-04-16T19:42:08.456306Z", "shell.execute_reply": "2021-04-16T19:42:08.456654Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[ 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 9 10 11 12 13]\n" ] } ], "source": [ "# Solution\n", "\n", "n_pairs = 9\n", "n_odds = 5\n", "\n", "socks = np.append(np.arange(n_pairs), \n", " np.arange(n_pairs + n_odds))\n", "\n", "print(socks)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.461385Z", "iopub.status.busy": "2021-04-16T19:42:08.460694Z", "iopub.status.idle": "2021-04-16T19:42:08.463646Z", "shell.execute_reply": "2021-04-16T19:42:08.463281Z" } }, "outputs": [ { "data": { "text/plain": [ "array([ 6, 5, 8, 7, 1, 0, 8, 5, 10, 12, 6])" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "picked_socks = np.random.choice(socks, size=11, replace=False)\n", "picked_socks" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.467312Z", "iopub.status.busy": "2021-04-16T19:42:08.466789Z", "iopub.status.idle": "2021-04-16T19:42:08.469206Z", "shell.execute_reply": "2021-04-16T19:42:08.469556Z" } }, "outputs": [ { "data": { "text/plain": [ "array([ 0, 1, 5, 6, 7, 8, 10, 12])" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "values, counts = np.unique(picked_socks, return_counts=True)\n", "values" ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.472963Z", "iopub.status.busy": "2021-04-16T19:42:08.472423Z", "iopub.status.idle": "2021-04-16T19:42:08.475583Z", "shell.execute_reply": "2021-04-16T19:42:08.475055Z" } }, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 2, 2, 1, 2, 1, 1])" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "counts" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.479850Z", "iopub.status.busy": "2021-04-16T19:42:08.479136Z", "iopub.status.idle": "2021-04-16T19:42:08.481962Z", "shell.execute_reply": "2021-04-16T19:42:08.481538Z" } }, "outputs": [ { "data": { "text/plain": [ "(5, 3)" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "solo = np.sum(counts==1)\n", "pairs = np.sum(counts==2)\n", "\n", "solo, pairs" ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.486360Z", "iopub.status.busy": "2021-04-16T19:42:08.485851Z", "iopub.status.idle": "2021-04-16T19:42:08.488237Z", "shell.execute_reply": "2021-04-16T19:42:08.487800Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "def pick_socks(n_pairs, n_odds, n_pick):\n", " socks = np.append(np.arange(n_pairs), \n", " np.arange(n_pairs + n_odds))\n", " \n", " picked_socks = np.random.choice(socks, \n", " size=n_pick, \n", " replace=False)\n", " \n", " values, counts = np.unique(picked_socks, \n", " return_counts=True)\n", " pairs = np.sum(counts==2)\n", " odds = np.sum(counts==1)\n", " return pairs, odds" ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.492100Z", "iopub.status.busy": "2021-04-16T19:42:08.491462Z", "iopub.status.idle": "2021-04-16T19:42:08.494263Z", "shell.execute_reply": "2021-04-16T19:42:08.493877Z" } }, "outputs": [ { "data": { "text/plain": [ "(2, 7)" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "pick_socks(n_pairs, n_odds, 11)" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:08.501495Z", "iopub.status.busy": "2021-04-16T19:42:08.500775Z", "iopub.status.idle": "2021-04-16T19:42:10.455065Z", "shell.execute_reply": "2021-04-16T19:42:10.455418Z" } }, "outputs": [ { "data": { "text/plain": [ "1156" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "data = (0, 11)\n", "res = []\n", "for i in range(10000):\n", " n_socks = prior_n_socks.rvs()\n", " if n_socks < 11:\n", " continue\n", " prop_pairs = prior_prop_pair.rvs()\n", " n_pairs = np.round(n_socks//2 * prop_pairs)\n", " n_odds = n_socks - n_pairs*2\n", " result = pick_socks(n_pairs, n_odds, 11)\n", " if result == data:\n", " res.append((n_socks, n_pairs, n_odds))\n", "\n", "len(res)" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:10.464778Z", "iopub.status.busy": "2021-04-16T19:42:10.464087Z", "iopub.status.idle": "2021-04-16T19:42:10.467723Z", "shell.execute_reply": "2021-04-16T19:42:10.467177Z" } }, "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_socksn_pairsn_odds
05225.02.0
15426.02.0
24118.05.0
33514.07.0
45719.019.0
\n", "
" ], "text/plain": [ " n_socks n_pairs n_odds\n", "0 52 25.0 2.0\n", "1 54 26.0 2.0\n", "2 41 18.0 5.0\n", "3 35 14.0 7.0\n", "4 57 19.0 19.0" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "columns = ['n_socks', 'n_pairs', 'n_odds']\n", "results = pd.DataFrame(res, columns=columns)\n", "results.head()" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:10.474896Z", "iopub.status.busy": "2021-04-16T19:42:10.472460Z", "iopub.status.idle": "2021-04-16T19:42:10.477967Z", "shell.execute_reply": "2021-04-16T19:42:10.477410Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "44.0 [27. 74.]\n" ] } ], "source": [ "# Solution\n", "\n", "qs = np.arange(15, 100)\n", "posterior_n_socks = Pmf.from_seq(results['n_socks'])\n", "print(posterior_n_socks.median(),\n", " posterior_n_socks.credible_interval(0.9))" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:42:10.498627Z", "iopub.status.busy": "2021-04-16T19:42:10.497929Z", "iopub.status.idle": "2021-04-16T19:42:10.659185Z", "shell.execute_reply": "2021-04-16T19:42:10.658762Z" } }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAjIElEQVR4nO3df7RU5X3v8fdHQIlGiz9ISgELjdBI/IH2RE30xgQ1FyhLTCIVvQET0yJXaRJX01vSrvQmtV3LJjFWb7wQjChYr2iC0bMsibFoYm39wVEJ8iMqMUSPcvVUq9F6/XH0e//Y+8RxnDkzA7PPPHPm81pr1sze+3n2/s6Bc77zPPuZ51FEYGZmlpo9Wh2AmZlZJU5QZmaWJCcoMzNLkhOUmZklyQnKzMySNLLVAQyFgw46KCZNmtTqMMzMrIL777//3yNibPn+jkhQkyZNoqenp9VhmJlZBZJ+VWm/u/jMzCxJTlBmZpYkJygzM0tSR9yDMjNrhtdff53e3l5eeeWVVofSlkaPHs2ECRMYNWpUXeWdoMzM6tTb28u+++7LpEmTkNTqcNpKRPDss8/S29vL5MmT66rjLj4zszq98sorHHjggU5Ou0ASBx54YEOtTycoM7MGODntukZ/dk5QZmaWJN+Dso51812PcP3tW3n19f7f7Ntr1EjOmDGNuSdMbWFkZsW66aabmDp1KtOmTWuoXnd3N1u3bmXp0qUFRfZ2bkFZxypPTgCvvt7P9bdvbVFEZkPjpptuYuvWxv6f9/f3c+qppzaUnPr7+2sXGoRbUNaxypNTrf1mKdixYwczZ87k2GOP5cEHH2Tq1KmsXr2au+++my996Uv09/fzwQ9+kGXLlrHXXnuxdOlSuru7GTlyJB//+Mf55Cc/SXd3Nz/96U/527/9W9auXQvA+eefT19fH3vvvTdXXHEF73//+/nMZz7DAQccwIMPPsjRRx/N4YcfTk9PD9/+9rf51a9+xTnnnENfXx9jx47lqquu4uCDD35HnYsvvniX36sTlBmw9sLT+dRXvt/qMKyNFPn/Ze2Fpw96/OGHH+bKK6/k+OOP55xzzuFb3/oW3/nOd1i/fj1Tp05l4cKFLFu2jIULF/KDH/yAn//850ji+eefZ8yYMZx66qnMmTOH00/PrnPSSSexfPlypkyZwr333st5553H7bffDsAjjzzCP//zPzNixAiuvvrq38SwZMkSFi5cyNlnn83KlSv5/Oc/z0033fSOOrvDXXxmZm1m4sSJHH/88QB8+tOfZv369UyePJmpU7N7p2effTZ33nkn++23H6NHj+aP//iPufHGG9l7773fca6XXnqJf/u3f2PevHlMnz6dc889l507d/7m+Lx58yommrvvvpuzzjoLgAULFnDXXXfVrNMot6DMzNpMvcO1R44cyX333cf69etZs2YN3/72t3/TMhrw5ptvMmbMGDZu3FjxHPvss0/DMdVbpxYnKDOzXVCrG65Ijz/+OHfffTcf+tCHuO666zj55JP5zne+w/bt2znkkEO45pprOPHEE3nppZd4+eWXmT17NscddxyHHHIIAPvuuy8vvvgiAPvttx+TJ0/me9/7HvPmzSMi2LRpE0ceeeSgMXz4wx9mzZo1LFiwgGuvvZYTTjih6e/TXXxmZm3m0EMPZdWqVRxxxBE899xzXHDBBVx11VXMmzePww8/nD322IPFixfz4osvMmfOHI444ghOPPFELrnkEgDmz5/PN77xDY466ih+8YtfcO2113LllVdy5JFH8oEPfICbb765ZgyXXXYZV111FUcccQTXXHMNl156adPfpyKi6SdNTVdXV3jBQitXepO7fJBEKz8dW7q2bdvGoYce2tIYduzYwZw5c9i8eXNL49hVlX6Gku6PiK7ysm5BmZlZknwPygrhWRrMijFp0qS2bT01yi0oK4RnabDhqhNuixSl0Z+dE5QVwrM02HA0evRonn32WSepXTCwHtTo0aPrruMuPiucZ2mw4WLChAn09vbS19fX6lDa0sCKuvVygjIzq9OoUaPqXg3Wdp+7+MzMLEmFJihJMyU9LGm7pHfM0a7MZfnxTZKOzvePlnSfpJ9J2iLpayV1virpSUkb88fsIt+DmZm1RmFdfJJGAJcDpwC9wAZJ3RFROoxrFjAlfxwLLMufXwVmRMRLkkYBd0n6YUTck9e7JCK+WVTsZmbWekW2oI4BtkfEYxHxGrAGmFtWZi6wOjL3AGMkjcu3X8rLjMofHjZjZtZBikxQ44EnSrZ78311lZE0QtJG4Bngtoi4t6TckrxLcKWk/StdXNIiST2Sejzixsys/RQ5iq/SfPDlraCqZSLiDWC6pDHADyQdFhGbyboBL8zLXQhcDJzzjpNErABWQDYX3y6+B6tiKGaK8GwU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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "posterior_n_socks.plot(label='posterior', drawstyle='steps')\n", "\n", "decorate(xlabel='Number of socks',\n", " ylabel='PMF')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Tags", "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.12" } }, "nbformat": 4, "nbformat_minor": 4 }