Repository: AllenDowney/BayesMadeSimple Branch: master Commit: bb42972c44ea Files: 47 Total size: 3.5 MB Directory structure: gitextract_l0qxa50k/ ├── 01_cookie.ipynb ├── 01_cookie_soln.ipynb ├── 02_euro.ipynb ├── 02_euro_soln.ipynb ├── 03_bandit.ipynb ├── 03_bandit_soln.ipynb ├── 03_euro.ipynb ├── 04_bandit.ipynb ├── README.md ├── _config.yml ├── bandit_soln.ipynb ├── billiards.py ├── cookie_soln.ipynb ├── debug.ipynb ├── dice.py ├── dice_soln.ipynb ├── dice_soln.py ├── distribution.py ├── empyrical_dist.py ├── environment.yml ├── euro.py ├── euro2.py ├── euro2_soln.py ├── euro_soln.ipynb ├── euro_soln.py ├── flip.ipynb ├── install_test.py ├── lincoln.py ├── sat.py ├── sat_ranks.csv ├── sat_scale.csv ├── sat_soln.py ├── thinkbayes.py ├── thinkbayes2.py ├── thinkplot.py ├── train.py ├── train2.py ├── train_soln.py ├── tutorial.md ├── volunteer.py ├── world_cup01.ipynb ├── world_cup01soln.ipynb ├── world_cup02.ipynb ├── world_cup_soln.ipynb ├── zigzag.ipynb ├── zigzag2.ipynb └── zigzag3.ipynb ================================================ FILE CONTENTS ================================================ ================================================ FILE: 01_cookie.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bayesian Statistics Made Simple\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2020 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The cookie problem\n", "\n", "> Suppose you have two bowls of cookies. Bowl 1 contains 30 vanilla and 10 chocolate cookies. Bowl 2 contains 20 vanilla of each.\n", ">\n", "> You choose one of the bowls at random and, without looking into the bowl, choose one of the cookies at random. It turns out to be a vanilla cookie.\n", ">\n", "> What is the chance that you chose Bowl 1?\n", "\n", "Assume that there was an equal chance of choosing either bowl and an equal chance of choosing any cookie in the bowl.\n", "\n", "Here are the hypotheses and prior probabilities." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "hypos = 'Bowl 1', 'Bowl 2'\n", "probs = 1/2, 1/2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To compute the answer, I'll use a Pandas `Series` to represent the hypotheses and their probabilities." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "prior = pd.Series(probs, hypos)\n", "prior" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This `Series` represents a probability mass function (PMF)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we compute the likelihood of the data under each hypothesis.\n", "\n", "* The chance of getting a vanilla cookie from Bowl 1 is 3/4.\n", "\n", "* The chance of getting a vanilla cookie from Bowl 2 is 1/2." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "likelihood = 3/4, 1/2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The next step is to multiply the priors by the likelihoods:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "unnorm = prior * likelihood\n", "unnorm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is called `unnorm` because it is an \"unnormalized posterior\".\n", "\n", "To compute the posteriors, we have to divide through by $P(D)$, which is the sum of the unnormalized posteriors." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "prob_data = unnorm.sum()\n", "prob_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that we get 5/8, which is what we got by computing $P(D)$ directly.\n", "\n", "Now we divide by `prob_data` to get the normalized posteriors:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "posterior = unnorm / prob_data\n", "posterior" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior probability for Bowl 1 is 0.6, which is what we got using Bayes's Theorem explicitly.\n", "\n", "As a bonus, we also get the posterior probability of Bowl 2, which is 0.4.\n", "\n", "The posterior probabilities add up to 1, which they should, because the hypotheses are \"complementary\"; that is, either one of them is true or the other, but not both.\n", "\n", "When we add up the unnormalized posteriors and divide through, we force the posteriors to add up to 1. This process is called \"normalization\", which is why the total probability of the data is also called the \"[normalizing constant](https://en.wikipedia.org/wiki/Normalizing_constant#Bayes'_theorem)\"\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 1\n", "\n", "Suppose we put the first cookie back, stir, draw another cookie from the same bowl, and it's a chocolate cookie. What is the probability we drew both cookies from Bowl 1?\n", "\n", "Hint: The prior for the second update is the posterior from the first update." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "prior2 = posterior\n", "prior2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now \n", "\n", "1. Compute the likelihood of the data under each hypothesis,\n", "2. Multiply the new prior by the likelihoods.\n", "3. Divide through by the total probability of the data." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 101 Bowls\n", "\n", "Suppose instead of 2 bowls there are 101 bowls:\n", "\n", "* Bowl 0 contains no vanilla cookies,\n", "\n", "* Bowl 1 contains 1% vanilla cookies,\n", "\n", "* Bowl 2 contains 2% vanilla cookies,\n", "\n", "and so on, up to\n", "\n", "* Bowl 99 contains 99% vanilla cookies, and\n", "\n", "* Bowl 100 contains all vanilla cookies.\n", "\n", "As in the previous problem, there are only two kinds of cookies, vanilla and chocolate. So Bowl 0 is all chocolate cookies, Bowl 1 is 99% chocolate, and so on.\n", "\n", "Suppose we choose a bowl at random, choose a cookie at random, and it turns out to be vanilla. What is the probability that the cookie came from Bowl $x$, for each value of $x$?\n", "\n", "To represent the prior, I'll use a Pandas `Series` with 101 equally spaced quantities from 0 to 1." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "xs = np.linspace(0, 1, num=101)\n", "prob = 1/101\n", "\n", "prior = pd.Series(prob, xs)\n", "prior.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "prior.plot()\n", "\n", "plt.xlabel('Fraction of vanilla cookies')\n", "plt.ylabel('Probability')\n", "plt.title('Prior');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have a prior, we need to compute likelihoods.\n", "\n", "Here are the likelihoods for a vanilla cookie:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "likelihood_vanilla = xs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And for a chocolate cookie." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "likelihood_chocolate = 1 - xs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To compute unnormalized posteriors, we multiply the priors and the likelihoods." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "unnorm = prior * likelihood_vanilla" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To normalize, we divide through by the total probability of the data." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "posterior = unnorm / unnorm.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the posterior looks like." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "posterior.plot()\n", "\n", "plt.xlabel('Fraction of vanilla cookies')\n", "plt.ylabel('Probability')\n", "plt.title('Posterior, one vanilla');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose we put the first cookie back, stir the bowl, draw from the same bowl again, and get a vanilla cookie again.\n", "\n", "What's are the posterior probabilities now?\n", "\n", "We can do another update, using the posterior from the first draw as the prior for the second draw." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "prior2 = posterior\n", "unnorm2 = prior2 * likelihood_vanilla\n", "posterior2 = unnorm2 / unnorm2.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it looks like." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "posterior2.plot()\n", "\n", "plt.xlabel('Fraction of vanilla cookies')\n", "plt.ylabel('Probability')\n", "plt.title('Posterior, two vanilla');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 2\n", "\n", "Suppose we put the second cookie back, stir the bowl, draw from the same bowl again, and get a chocolate cookie.\n", "\n", "Now what are the posterior probabilities?" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] } ], "metadata": { "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.5" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 01_cookie_soln.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bayesian Statistics Made Simple\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2020 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The cookie problem\n", "\n", "> Suppose you have two bowls of cookies. Bowl 1 contains 30 vanilla and 10 chocolate cookies. Bowl 2 contains 20 vanilla of each.\n", ">\n", "> You choose one of the bowls at random and, without looking into the bowl, choose one of the cookies at random. It turns out to be a vanilla cookie.\n", ">\n", "> What is the chance that you chose Bowl 1?\n", "\n", "Assume that there was an equal chance of choosing either bowl and an equal chance of choosing any cookie in the bowl.\n", "\n", "Here are the hypotheses and prior probabilities." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "hypos = 'Bowl 1', 'Bowl 2'\n", "probs = 1/2, 1/2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To compute the answer, I'll use a Pandas `Series` to represent the hypotheses and their probabilities." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Bowl 1 0.5\n", "Bowl 2 0.5\n", "dtype: float64" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior = pd.Series(probs, hypos)\n", "prior" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This `Series` represents a probability mass function (PMF)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we compute the likelihood of the data under each hypothesis.\n", "\n", "* The chance of getting a vanilla cookie from Bowl 1 is 3/4.\n", "\n", "* The chance of getting a vanilla cookie from Bowl 2 is 1/2." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "likelihood = 3/4, 1/2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The next step is to multiply the priors by the likelihoods:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Bowl 1 0.375\n", "Bowl 2 0.250\n", "dtype: float64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "unnorm = prior * likelihood\n", "unnorm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is called `unnorm` because it is an \"unnormalized posterior\".\n", "\n", "To compute the posteriors, we have to divide through by $P(D)$, which is the sum of the unnormalized posteriors." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.625" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prob_data = unnorm.sum()\n", "prob_data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice that we get 5/8, which is what we got by computing $P(D)$ directly.\n", "\n", "Now we divide by `prob_data` to get the normalized posteriors:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Bowl 1 0.6\n", "Bowl 2 0.4\n", "dtype: float64" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior = unnorm / prob_data\n", "posterior" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior probability for Bowl 1 is 0.6, which is what we got using Bayes's Theorem explicitly.\n", "\n", "As a bonus, we also get the posterior probability of Bowl 2, which is 0.4.\n", "\n", "The posterior probabilities add up to 1, which they should, because the hypotheses are \"complementary\"; that is, either one of them is true or the other, but not both.\n", "\n", "When we add up the unnormalized posteriors and divide through, we force the posteriors to add up to 1. This process is called \"normalization\", which is why the total probability of the data is also called the \"[normalizing constant](https://en.wikipedia.org/wiki/Normalizing_constant#Bayes'_theorem)\"\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 1\n", "\n", "Suppose we put the first cookie back, stir, draw another cookie from the same bowl, and it's a chocolate cookie. What is the probability we drew both cookies from Bowl 1?\n", "\n", "Hint: The prior for the second update is the posterior from the first update." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Bowl 1 0.6\n", "Bowl 2 0.4\n", "dtype: float64" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior2 = posterior\n", "prior2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now \n", "\n", "1. Compute the likelihood of the data under each hypothesis,\n", "2. Multiply the new prior by the likelihoods.\n", "3. Divide through by the total probability of the data." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Solution\n", "\n", "likelihood2 = 1/4, 1/2" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Bowl 1 0.15\n", "Bowl 2 0.20\n", "dtype: float64" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "unnorm2 = prior2 * likelihood2\n", "unnorm2" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.35" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "prob_data2 = unnorm2.sum()\n", "prob_data2" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Bowl 1 0.428571\n", "Bowl 2 0.571429\n", "dtype: float64" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "posterior2 = unnorm2 / prob_data2\n", "posterior2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 101 Bowls\n", "\n", "Suppose instead of 2 bowls there are 101 bowls:\n", "\n", "* Bowl 0 contains no vanilla cookies,\n", "\n", "* Bowl 1 contains 1% vanilla cookies,\n", "\n", "* Bowl 2 contains 2% vanilla cookies,\n", "\n", "and so on, up to\n", "\n", "* Bowl 99 contains 99% vanilla cookies, and\n", "\n", "* Bowl 100 contains all vanilla cookies.\n", "\n", "As in the previous problem, there are only two kinds of cookies, vanilla and chocolate. So Bowl 0 is all chocolate cookies, Bowl 1 is 99% chocolate, and so on.\n", "\n", "Suppose we choose a bowl at random, choose a cookie at random, and it turns out to be vanilla. What is the probability that the cookie came from Bowl $x$, for each value of $x$?\n", "\n", "To represent the prior, I'll use a Pandas `Series` with 101 equally spaced quantities from 0 to 1." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.00 0.009901\n", "0.01 0.009901\n", "0.02 0.009901\n", "0.03 0.009901\n", "0.04 0.009901\n", "dtype: float64" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xs = np.linspace(0, 1, num=101)\n", "prob = 1/101\n", "\n", "prior = pd.Series(prob, xs)\n", "prior.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "prior.plot()\n", "\n", "plt.xlabel('Fraction of vanilla cookies')\n", "plt.ylabel('Probability')\n", "plt.title('Prior');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have a prior, we need to compute likelihoods.\n", "\n", "Here are the likelihoods for a vanilla cookie:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "likelihood_vanilla = xs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And for a chocolate cookie." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "likelihood_chocolate = 1 - xs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To compute unnormalized posteriors, we multiply the priors and the likelihoods." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "unnorm = prior * likelihood_vanilla" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To normalize, we divide through by the total probability of the data." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "posterior = unnorm / unnorm.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the posterior looks like." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior.plot()\n", "\n", "plt.xlabel('Fraction of vanilla cookies')\n", "plt.ylabel('Probability')\n", "plt.title('Posterior, one vanilla');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose we put the first cookie back, stir the bowl, draw from the same bowl again, and get a vanilla cookie again.\n", "\n", "What's are the posterior probabilities now?\n", "\n", "We can do another update, using the posterior from the first draw as the prior for the second draw." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "prior2 = posterior\n", "unnorm2 = prior2 * likelihood_vanilla\n", "posterior2 = unnorm2 / unnorm2.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it looks like." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEWCAYAAABxMXBSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAykUlEQVR4nO3dd3xW5f3/8debsPfGsDcKKisMba2oVRG1aOvABVItWouj1bb+utTafmttrbtaqghqBXGCSrUUZxGEsEFWREaYYYURQtbn98c5aW9jSO5A7tx3ks/z8bgf9xnXOedz3YT7c5/rnHNdMjOcc865aNWIdwDOOecqF08czjnnysQTh3POuTLxxOGcc65MPHE455wrE08czjnnysQTh3NHIekaSf+KdxyJSFJHSQclJYXzH0q6MZy+XtJ/4huhiyVPHC4hSNog6XD4ZbRD0nOSGh7H/u6V9OLxxGRm/zCz845nH0cjqbMkk1QzFvuPNTPbZGYNzSw/3rG4iueJwyWSi82sITAAGAT8Kl6BHM8XugL+f8tVWf7H7RKOmW0B/gmcDCDpO5JWStoXNomcVFhW0s8lbZF0QNIaSedIGg78ArgyPINZGpZtIulZSdvCbX4X0dRyvaQ5kh6WtAe4t2iTi6TTJS2QlBm+nx6x7kNJv5c0B8gCupZSzY/D931hjKdJ2ihpYLi/a8Mzkt7h/I2S3gyn60h6RNLW8PWIpDpFDxCW2yfp5IhlrcIzu9aSmkl6W1KGpL3hdPsidbo//FwOSPqXpJbhuqjPmCQ9KmmzpP2SFko6o7RtXGLzxOESjqQOwAhgsaSewBTgDqAVMBN4S1JtSb2A8cAgM2sEnA9sMLN3gf8DXg6bU/qGu54M5AHdgf7AecCNEYceAqwHWgO/LxJTc+Ad4DGgBfAX4B1JLSKKXQeMAxoBG0up5rfC96ZhjHOBj4BhEevXA2dGzH8UTv8SGAr0A/oCgynm7MzMjgCvA1dFLL4C+MjMdhL8/38O6AR0BA4DTxTZzdXAWILPpDZwVyn1Ks6CMNbmwEvAK5LqHsN+XILwxOESyZuS9gH/IfiS/D/gSuAdM5tlZrnAn4F6wOlAPlAH6C2plpltMLMvituxpDbABcAdZnYo/OJ8GBgVUWyrmT1uZnlmdrjILi4E1pnZC+H6KcBq4OKIMpPMbGW4PvcY6v8R/0sUZwB/iJg/k/8ljmuA35rZTjPLAO4jSFrFeYmvJo6rw2WY2W4ze83MsszsAEGyPLPI9s+Z2drw85hGkADKxMxeDI+VZ2YPEfyb9Srrflzi8MThEsklZtbUzDqZ2S3hl1VbIn69m1kBsBloZ2ZpBGci9wI7JU2V1PYo++4E1AK2hc03+4C/EfySLrS5hNi+EkdoI9Auyu2j8RFwhqQTgCTgZeAbkjoDTYAlR4llY7isOO8D9SQNkdSJ4Iv/DQBJ9SX9LWwi20/QfNa0sPkutD1iOgso8w0Lku6UtCps4tsX1qVlWffjEocnDpfothJ86QPBhWegA7AFwMxeMrNvhmUM+GNYtGi3z5uBI0DLMDk1NbPGZtYnokxJXUV/JY5Qx8I4oti+qK+VDRNhFnAb8HF4FrCdoPnrP2HSLC6WjuGyrx8k2GYawVnH1cDb4X4B7iT45T/EzBrzv+YzlaEeJQqvZ/ycoImsmZk1BTLL8xiu4nnicIluGnBheNG7FsGX3RHgU0m9JJ0dXhjOJmijL7w9dAfQufDuJjPbBvwLeEhSY0k1JHWTVLRp5mhmAj0lXS2ppqQrgd7A20fbQMEtwR8eZXUGUMDXL6J/RHDdprBZ6sMi8xBc8/lVeKG7JfAboKRbj18iaPK7Jpwu1IjgM9sXXsO5p4R9HKtGBNeVMoCakn4DNI7BcVwF8sThEpqZrQGuBR4HdhFcU7jYzHII2sofCJdvJ2h2+kW46Svh+25Ji8Lp0QQXeD8H9gKvAslRxrEbuIggce0GfgZcZGa7StisAzDnKPvLIrimMCdsOhsarvqI4Mv246PMA/wOSAWWAcuBReGyo8X+GXCIoDnrnxGrHiG4XrQLmAe8W0JdjtV74THXEjSpZXP8TXouzuQDOTkXG5KWAOeESce5KsMTh3POuTLxpirnnHNl4onDOedcmXjicM45VyaVsmfOsmrZsqV17tw53mE451ylsnDhwl1m1qro8mqRODp37kxqamq8w3DOuUpFUrF9rnlTlXPOuTLxxOGcc65MYpo4JA0Px0hIk3R3Mesl6bFw/TJJA8LldSXNl7RUwTgM90Vs01zSLEnrwvdmsayDc865r4pZ4gh72HySoCvr3sBVhYPSRLgA6BG+xgFPhcuPAGeH4yj0A4ZHdMlwNzDbzHoAs8N555xzFSSWZxyDgTQzWx/2KzQVGFmkzEjgeQvMI+jSOTmcPxiWqRW+LGKbyeH0ZOCSGNbBOedcEbFMHO34amdm6Xx17IISy0hKCvv62QnMCjtqA2gT9nRa2ONp5HgK/yVpnKRUSakZGRnHWxfnnHOhWCaO4vrbL9ox1lHLmFm+mfUD2gODI8dNjoaZTTCzFDNLadXqa7chO+ecO0axTBzpBN1KF2rP1webKbWMme0jGJNgeLhoh6RkgPB9Z7lF7JxzVUR2bj73zljJnkM55b7vWCaOBUAPSV0k1SYY23lGkTIzgNHh3VVDgUwz2xYOUNMUQFI94NsE4zsXbjMmnB4DTI9hHZxzrtIxM3715gomz93Aii2Z5b7/mD05bmZ5ksYTDOSSBEw0s5WSbg7XP00wqtoIoHDIzLHh5snA5PDOrBrANDMrHGntAWCapBuATcDlsaqDc85VRi8v2MyrC9O57ZwefKtn+TfVV4vxOFJSUsy7HHHOVQfL0zP53tOfMqRLcyaNHUxSjWMf3l3SQjNLKbrcnxx3zrkqYl9WDj/8x0JaNqjNo6P6H1fSKEm16OTQOeequoIC4/apS9ixP5tpN51G8wa1Y3YsP+Nwzrkq4NHZ6/hobQb3XNyH/h1j2xOTJw7nnKvk3l+9g0dnr+N7A9pzzZCOMT+eJw7nnKvENu3O4o6pS+id3JjfX3oyUmyua0TyxOGcc5XU4Zx8xr2QiiSevnYgdWslVchx/eK4c85VQmbG3a8vY82OAzx3/SA6tqhfYcf2Mw7nnKuEJn26gelLtnLnuT0Z1qvYvl5jxhOHc85VMp+t383v31nFub3bcMuw7hV+fE8czjlXiWzdd5hb/rGIjs3r89AVfakRo4f8SuKJwznnKons3Hx++OJCjuQVMGF0Co3r1opLHH5x3DnnKgEz49dvrmBpeiZ/u24g3Vs3jFssfsbhnHOVwIvzNvLKwnRuO7s75/c5Ia6xeOJwzrkE99n63dz31uecfWJr7vh2z3iH44nDOecS2ZbCi+Et6vPIqH5xuRhelCcO55xLUIdz8rnphVRy8gr4exwvhhflF8edcy4BFT4ZvnLrfp4ZnUK3VvG7GF6Un3E451wCmvDxeqYv2cpd5/XinJPaxDucr/DE4ZxzCeaDNTt54N3VXHhqMrcM6xbvcL7GE4dzziWQ9RkHuW3KYk46oTF/uuzUCukmvaw8cTjnXILIPJzLjZNTqZVUgwmjB1K/dmJehvbE4ZxzCSAvv4Bbpyxm894snr52IO2bVVw36WWVmOnMOeeqmT/8czUfr83gge+ewuAuzeMdTon8jMM55+JsWupmnv3Pl1x/emdGDY79mOHHyxOHc87F0fwv9/DLN5ZzRo+W/OrCk+IdTlRimjgkDZe0RlKapLuLWS9Jj4Xrl0kaEC7vIOkDSaskrZR0e8Q290raImlJ+BoRyzo451ysbN6Txc0vLqRDs/o8cdUAaiZVjt/yMbvGISkJeBI4F0gHFkiaYWafRxS7AOgRvoYAT4XvecCdZrZIUiNgoaRZEds+bGZ/jlXszjkXaweP5HHj5FTy8gt4ZkwKTeonRnci0YhlehsMpJnZejPLAaYCI4uUGQk8b4F5QFNJyWa2zcwWAZjZAWAV0C6GsTrnXIXJLzBun7KYtIyD/PWagXRNoO5EohHLxNEO2Bwxn87Xv/xLLSOpM9Af+Cxi8fiwaWuipGbFHVzSOEmpklIzMjKOsQrOOVf+/jBzFbNX7+Te7/Thmz1axjucMotl4ijucUcrSxlJDYHXgDvMbH+4+CmgG9AP2AY8VNzBzWyCmaWYWUqrVq3KGLpzzsXGlPmbeCa8g+q6oZ3iHc4xiWXiSAc6RMy3B7ZGW0ZSLYKk8Q8ze72wgJntMLN8MysA/k7QJOaccwnv07Rd/PrNFZzZs1WluYOqOLFMHAuAHpK6SKoNjAJmFCkzAxgd3l01FMg0s20KOmd5FlhlZn+J3EBScsTspcCK2FXBOefKxxcZB7n5xYV0admAx6/uX2nuoCpOzO6qMrM8SeOB94AkYKKZrZR0c7j+aWAmMAJIA7KAseHm3wCuA5ZLWhIu+4WZzQQelNSPoElrA3BTrOrgnHPlYc+hHL4/aQG1a9Zg4vWDEmZApmMls6KXHaqelJQUS01NjXcYzrlq6EhePtc+8xlL0zOZOm4oAzoWez9PQpK00MxSii6vvOdKzjmX4MyMu19bzoINe3no8r6VKmmUxBOHc87FyKOz1/HG4i3ceW5PLu7bNt7hlBtPHM45FwOvL0rnkX+v47KB7Rl/dvd4h1OuPHE451w5m7d+Nz9/bRmndW3B/116SkKO4nc8PHE451w5Stt5kJteWEjH5vV5+tqB1K5Z9b5mq16NnHMuTjIOHOH65+ZTK0lMGju4UnVcWBY+AqBzzpWDwzn53Ph8KrsOHuHlcafRoXniDv16vDxxOOfcccovMG6buphl6fv427UD6duhabxDiilvqnLOueNgZtz31kpmfb6Dey7qzXl9Toh3SDHnicM5547DhI/X8/zcjfzgjC5c/40u8Q6nQnjicM65YzRj6Vb+8M/VXHhqMv/vgsrb221ZeeJwzrljMPeL3dw1bSmDOzfnocv7UqNG1XpWoySeOJxzroxWb9/PuBdS6dSiPn8fnULdWknxDqlCeeJwzrky2LrvMNdPXED92klM+n7VfVajJJ44nHMuSplZuVz/3HwOHclj0tjBtGtaL94hxYU/x+Gcc1HIzs3nxucXsGFXFpO+P4iTkhvHO6S48cThnHOlyMsv4NYpi0nduJfHr+rP6d1axjukuPKmKuecK4GZ8evp/3vA76JTq864GsfKE4dzzpXg4VlrmTJ/E7cM61ZtHvArjScO55w7ismfbuCx99O4IqU9Pz2/V7zDSRieOJxzrhhvL9vKvW+t5NzebarkYEzHwxOHc84V8cm6DH788hJSOjXj8av6UzPJvyoj+afhnHMRFm/ay00vLKRbq4Y8M2ZQtXsqPBqeOJxzLrR2xwHGTlpAq0Z1eP6GwTSpV/2eCo9GTBOHpOGS1khKk3R3Mesl6bFw/TJJA8LlHSR9IGmVpJWSbo/YprmkWZLWhe/NYlkH51z1sHlPFqOfnU+tpBq88P0htG5UN94hJayYJQ5JScCTwAVAb+AqSb2LFLsA6BG+xgFPhcvzgDvN7CRgKPCjiG3vBmabWQ9gdjjvnHPHbOeBbK599jMO5+bzwg2D6dii6g77Wh5iecYxGEgzs/VmlgNMBUYWKTMSeN4C84CmkpLNbJuZLQIwswPAKqBdxDaTw+nJwCUxrINzrorLzMpl9LPz2bn/CM+NHcSJJ1TfrkSiFcvE0Q7YHDGfzv++/KMuI6kz0B/4LFzUxsy2AYTvrYs7uKRxklIlpWZkZBxrHZxzVdihI3mMnTSf9RmHmDB6IAM6est3NGKZOIq76dnKUkZSQ+A14A4z21+Wg5vZBDNLMbOUVq1alWVT51w1kJ2bz7gXUlmyeR+PXdWPM3r490S0Ypk40oEOEfPtga3RlpFUiyBp/MPMXo8os0NSclgmGdhZznE756q43LDTwjlpu/nTZX0ZfnJyvEOqVGKZOBYAPSR1kVQbGAXMKFJmBjA6vLtqKJBpZtsUPKL5LLDKzP5SzDZjwukxwPTYVcE5V9UUFBg/fWUpsz7fwW9H9uF7A9vHO6RKJ2bdqptZnqTxwHtAEjDRzFZKujlc/zQwExgBpAFZwNhw828A1wHLJS0Jl/3CzGYCDwDTJN0AbAIuj1UdnHNVi5nxyzdX8OaSrfz0/F6MPq1zvEOqlGRW9LJD1ZOSkmKpqanxDsM5F0dmxv1vr2LinC8Zf1Z37vJOC0slaaGZpRRd7k+OO+eqhYf+tZaJc75k7Dc6c+d5PeMdTqXmicM5V+U9PnsdT3yQxlWDO/Cbi3p7T7fHyROHc65Km/DxFzw0ay3f7d+O313i3aOXB08czrkqa/KnG/i/mau58NRkHrzsVJJqeNIoD544nHNV0kufbeKeGcFATI9c2c/H1ChHUX2Ski6S5J+6c65SmJa6mV+8sZyzerXiiav7U8uTRrmK9tMcBayT9KCkk2IZkHPOHY/XF6Xz89eWcUaPljx17UDq1PSBmMpbVInDzK4l6GjwC+A5SXPDTgQbxTQ655wrg+lLtnDXK0s5rWsL/j46xUfvi5Goz9/CTgZfI+gePRm4FFgk6dYYxeacc1GbsXQrP355CYO7NOeZMZ40YinaaxzfkfQG8D5QCxhsZhcAfYG7Yhifc86V6q2lW7lj6mIGdW7OxOsHUb92zHpTckTfV9VlwMNm9nHkQjPLkvT98g/LOeei89bSrdzx8hJSOjfnubGeNCpCtE1V24omDUl/BDCz2eUelXPORWH6ki3cPnUxAzs24zk/06gw0SaOc4tZdkF5BuKcc2UxfckWfhxxptGgjieNilLiJy3ph8AtQDdJyyJWNQLmxDIw55w7mjcWp3PntKUM7uLXNOKhtE/7JeCfwB+AuyOWHzCzPTGLyjnnjuKV1M387LVlnNa1Bc+MSfGkEQelfeJmZhsk/ajoCknNPXk45yrSlPmb+H+vL+eMHi2ZcF0K9Wr7LbfxEM0Zx0XAQsCAyB7CDOgao7icc+4rXpi7gV9PX8mwXq14+tqB/pxGHJWYOMzsovC9S8WE45xzX/fMJ+v53Tur+PZJbXjymv7ejUiclXZxfEBJ681sUfmG45xzX/XkB2n86b01XHhKMo+M6ucdFiaA0pqqHiphnQFnl2Mszjn3X2bGX2at5fH307i0fzv+dNmp3jV6giitqeqsigrEOecKmRn3v72KiXO+ZNSgDvz+0lN8EKYEUlpT1dlm9r6k7xa33sxej01YzrnqKr/A+OUby5m6YDNjv9HZxwhPQKU1VZ1J0LHhxcWsM8ATh3Ou3OTmF3DntKXMWLqVH53VjbvO6+VJIwGV1lR1T/g+tmLCcc5VV9m5+Yx/aRH/XrWTnw3vxS3Dusc7JHcU0Xar3kLSY5IWSVoo6VFJLaLYbrikNZLSJN1dzHqF+02TtCzyLi5JEyXtlLSiyDb3StoiaUn4GhFNHZxzievgkTzGPreAf6/ayf0j+3jSSHDR3qIwFcgAvkfQxXoG8HJJG0hKAp4k6AyxN3CVpN5Fil0A9Ahf44CnItZNAoYfZfcPm1m/8DUzyjo45xLQ3kM5XPP3eczfsIe/XNGX607rHO+QXCmiTRzNzex+M/syfP0OaFrKNoOBNDNbb2Y5BMlnZJEyI4HnLTAPaCopGSDsxt27NHGuCtuemc0Vf5vLqu0HePragXx3QPt4h+SiEG3i+EDSKEk1wtcVwDulbNMO2Bwxnx4uK2uZ4owPm7YmSmoWRXnnXILZsOsQlz39Kdsys5k8djDn9m4T75BclEpMHJIOSNoP3ETQb1VO+JoK/LiUfRd3K4QdQ5mingK6Af2AbRzlIUVJ4ySlSkrNyMgoZZfOuYq0Yksmlz39KVk5+bz0gyGc1q3US6YugZSYOMyskZk1Dt9rmFnN8FXDzBqXsu90oEPEfHtg6zGUKRrTDjPLN7MC4O8ETWLFlZtgZilmltKqVatSQnXOVZS5X+xm1IR51KmZxCs3n8ap7ZvGOyRXRlE/vy+pmaTBkr5V+CplkwVAD0ldJNUGRgEzipSZAYwO764aCmSa2bZS4kiOmL0UWHG0ss65xPLuiu2MmTif5CZ1efWHp9GtVcN4h+SOQVQjoEi6Ebid4IxgCTAUmEsJfVWZWZ6k8cB7QBIw0cxWSro5XP80MBMYAaQBWcB/nxeRNAUYBrSUlA7cY2bPAg9K6kfQpLWBoBnNOZfgXpy3kd9MX0HfDk2ZOGYQzRrUjndI7hjJrLRLCiBpOTAImGdm/SSdCNxnZlfGOsDykJKSYqmpqfEOw7lqycx45N/reHT2Os4+sTVPXN3fR+2rJCQtNLOUosuj/dfLNrNsSUiqY2arJfUq5xidc1VMXn4Bv56+kinzN3HZwPb84buneLfoVUC0iSNdUlPgTWCWpL2UchHbOVe9Hc7J59YpQRcitwzrxk/P936nqoqoEoeZXRpO3ivpA6AJ8G7MonLOVWp7DuXw/UkLWJq+j/tH9vGnwauYqBsaw36kvklwUXpO+DS4c859xYZdh7j+uflsy8zmqWsGMvzkE+Idkitn0XZy+BtgMtACaAk8J+lXsQzMOVf5LN60l+8+9SmZh3N56QdDPGlUUdGecVwF9DezbABJDwCLgN/FKjDnXOXy3srt3D51MW0a12XS2MF0adkg3iG5GIk2cWwA6gLZ4Xwd4ItYBOScq1zMjIlzNvC7dz6nb/umPDMmhZYN68Q7LBdDpQ0d+zjBNY0jwEpJs8L5c4H/xD4851wiy8sv4P63P2fy3I0M73MCD1/Zj3q1k+Idloux0s44Cp+aWwi8EbH8w5hE45yrNA4eyeP2KYuZvXon477VlbuHn0iNGn67bXVQ2tCxkwunw/6meoaza8wsN5aBOecS19Z9h7lhciprdxzg/ktO5rqhneIdkqtA0fZVNYzgrqoNBF2hd5A0JhxsyTlXjSxPz+SGyQs4nJPPxOsHcWZP7326uon24vhDwHlmtgZAUk9gCjAwVoE55xLPzOXb+Mm0JbRoUIcXfjiEXic0indILg6iTRy1CpMGgJmtlVQrRjE55xKMmfHE+2k8NGstAzo2ZcJov3OqOos2cSyU9CzwQjh/DcEFc+dcFZedm8/PXl3GjKVbuaRfWx743qnUreV3TlVn0SaOm4EfAbcRXOP4GPhrrIJyziWG7ZnZjHshlWXpmdx1Xk9+dFZ376jQlZ44JNUAFprZycBfYh+Scy4RLN28jx88n8rBI3lMuG4g5/Xx7kNcoNS+qsKxvZdK6lgB8TjnEsDri9K5/G9zqV2zBq/fcronDfcV0TZVJRM8OT4fOFS40My+E5OonHNxkZdfwB/fXc3fP/mSoV2b89drBtLch3h1RUSbOO6LaRTOubjbl5XDrVMW88m6XYw5rRO/uqi3j9bnilVaX1V1CS6MdweWA8+aWV5FBOacqzirtu1n3Aup7Mg8wh+/dwpXDvKWaXd0pZ1xTAZygU+AC4DewO2xDso5V3FmLN3Kz19dRuN6NZl601AGdGwW75BcgistcfQ2s1MAwuc45sc+JOdcRcjNL+CBf67m2f98SUqnZvz12gG0blQ33mG5SqC0xPHfjgzNLM/v33auasg4cITxLy3isy/3MOa0Tvzywt7UrunXM1x0SkscfSXtD6cF1AvnBZiZNY5pdM65crdw4x5+9I/F7Ducw8NX9uXS/u3jHZKrZErrVt37FXCuijAzJn26gd+/s4q2Tevx2g9Pp0/bJvEOy1VCMT03lTRc0hpJaZLuLma9JD0Wrl8maUDEuomSdkpaUWSb5pJmSVoXvvuVPOdKcfBIHrdOWcx9b33OsF6teevWb3rScMcsZolDUhLwJP+7G+sqSb2LFLsA6BG+xgFPRaybBAwvZtd3A7PNrAcwO5x3zh3F6u37+c7j/2Hm8m38bHgvJlw3kCb1vHNrd+xiecYxGEgzs/VmlgNMBUYWKTMSeN4C84CmkpIBwkGi9hSz35EEtwkTvl8Si+CdqwpeSd3MJU/O4cCRPF76wVBuGdbdh3d1xy3aJ8ePRTtgc8R8OjAkijLtgG0l7LeNmW0DMLNtkloXV0jSOIKzGDp29IeZXPWSlZPHr99cyWuL0jm9WwseHdWfVo18/AxXPmKZOIr7WWPHUOaYmNkEYAJASkpKuezTucpgzfYD/OilRXyRcZDbzunB7ef0IMnPMlw5imXiSAc6RMy3B7YeQ5midkhKDs82koGdxx2pc1WAmfHygs3c+9ZKGtapxYs3DOEb3VvGOyxXBcXyGscCoIekLpJqA6OAGUXKzABGh3dXDQUyC5uhSjADGBNOjwGml2fQzlVG+7NzGT9lMXe/vpyUTs2Zefs3PWm4mInZGUf4pPl44D0gCZhoZisl3RyufxqYCYwA0oAsYGzh9pKmAMOAlpLSgXvM7FngAWCapBuATcDlsaqDc5XBok17uX3qYrbuy+Znw3tx87e6+QVwF1Myq/rN/ykpKZaamhrvMJwrV/kFxlMfpvHwv9dxQuO6PHZVfwZ28seaXPmRtNDMUoouj+U1DudcjGzdd5ifTFvCvPV7uLhvW35/6ck0ruvPZriK4YnDuUrmraVb+eUby8kvMP58eV++N6Ad3gGpq0ieOJyrJPZn53Lv9JW8vngL/To05dFR/ejUokG8w3LVkCcO5yqBeet3c+e0pWzLPMxt5/Tg1rO7+7CuLm48cTiXwI7k5fOXf61lwifr6dS8Pq/cfLpfAHdx54nDuQS1YksmP5m2hLU7DnL1kI78csRJNKjj/2Vd/PlfoXMJJje/gKc+/ILHZq+jeYPaPDd2EGf1KrZLNufiwhOHcwlkzfYD3PnKElZs2c/Ifm257zt9aFq/drzDcu4rPHE4lwDy8gv428freeTfa2lctxZPXTOAC05JjndYzhXLE4dzcbZq235+9uoylm/J5MJTk/ntd/rQoqF3ge4SlycO5+IkJ6+AJz9I48kP0mhavxZ/vWYAI/wsw1UCnjici4NFm/Zy92vLWLvjIJf0a8s9F/ehWQO/luEqB08czlWgQ0fy+PO/1jDp0w2c0Lguz45J4ZyT2sQ7LOfKxBOHcxVk9qod/Gb6SrZmHua6oZ342fATaejPZbhKyP9qnYuxHfuzue+tlcxcvp2ebRry6s2nMbBT83iH5dwx88ThXIzkFxgvzN3An/+1lpz8An56fi9+cEZXatf0PqZc5eaJw7kYWLp5H796cwXLt2RyRo+W3D/yZDq39J5sXdXgicO5crQvK4cH31vDlPmbaNmwDo9f1Z+LTk328TJcleKJw7lyUFBgvLJwM398dw2Zh3MZe3oXfnxuDxr5qHyuCvLE4dxxWrJ5H/dMX8HS9ExSOjXjtyNPpnfbxvEOy7mY8cTh3DHaeSCbP727hlcWptO6UR0eubIfI/u19WYpV+V54nCujI7k5fPcnA08PnsdOfkF3PStrtx6Tg9/JsNVG/6X7lyUzIz3Vm7nD/9czcbdWXz7pNb88sLedPG7pVw144nDuSgsT8/k/nc+Z/6Xe+jZpiHPf38w3+rZKt5hORcXMX0SSdJwSWskpUm6u5j1kvRYuH6ZpAGlbSvpXklbJC0JXyNiWQdXvW3ek8XtUxdz8RP/4YudB/n9pScz87YzPGm4ai1mZxySkoAngXOBdGCBpBlm9nlEsQuAHuFrCPAUMCSKbR82sz/HKnbn9mXl8NSHX/DcpxsQcMuwbtw8rBuN/fZa52LaVDUYSDOz9QCSpgIjgcjEMRJ43swMmCepqaRkoHMU2zpX7rJz85n06Qb++kEaB47kcWn/dtx1Xi/aNq0X79CcSxixTBztgM0R8+kEZxWllWkXxbbjJY0GUoE7zWxv0YNLGgeMA+jYseMxVsFVF7n5Bby6MJ1H/72O7fuzOfvE1vz0/F6clOzPYzhXVCwTR3E3s1uUZUra9ing/nD+fuAh4PtfK2w2AZgAkJKSUvS4zgHBE99vL9/Gw7PW8uWuQwzo2JRHRvVjaNcW8Q7NuYQVy8SRDnSImG8PbI2yTO2jbWtmOwoXSvo78Hb5heyqi8Jbax+etY41Ow5w4gmNeHZMCmef2Nof4HOuFLFMHAuAHpK6AFuAUcDVRcrMIGh2mkrQFJVpZtskZRxtW0nJZrYt3P5SYEUM6+CqGDPj36t28si/17Jy6366tmrA41f158JTkqlRwxOGc9GIWeIwszxJ44H3gCRgopmtlHRzuP5pYCYwAkgDsoCxJW0b7vpBSf0Imqo2ADfFqg6u6jAzZn2+g0dnr2Pl1v10alGfP1/el0v6taVmko+P4VxZKLihqWpLSUmx1NTUeIfh4qCgwPjniu08/v46Vm8/QKcW9bn17B6eMJyLgqSFZpZSdLk/Oe6qpNz8AqYv2crTH31B2s6DdG3VgIcu78tITxjOHTdPHK5KycrJY9qCzfz9ky/Zsu8wJ57QiMev6s+IU5JJ8msYzpULTxyuSthzKIfJn27g+bkb2JuVy8BOzbj/kj6c1cvvknKuvHnicJXa+oyDTJzzJa8uTCc7t4Bvn9SGm8/sSkrn5vEOzbkqyxOHq3TMjLlf7GbinA3MXr2DWkk1uLRfO37wrS50b90o3uE5V+V54nCVRnZuPtOXbOG5ORtYvf0AzRvU5taze3Dd0E60alQn3uE5V2144nAJb/OeLF6ct5GXUzezLyuXE09oxIOXncp3+ralbq2keIfnXLXjicMlpPwC48M1O3lx3kY+XJtBDYnz+7ThuqGdGdq1uV/wdi6OPHG4hLI9M5tpqZt5ecFmtuw7TKtGdRh/VneuHtKR5CbetblzicATh4u73PwCPli9k2mpm3l/9U4KDE7v1oJfjDiJ8/q0oZY/sOdcQvHE4eJm7Y4DvLYwndcWbWHXwSO0bFiHm87sxqhBHejUokG8w3POHYUnDlehdh88wltLt/Laoi0s35JJzRri7BNbc0VKB87s1crPLpyrBDxxuJjLyslj1uc7eHPxFj5et4v8AqN3cmN+fVFvRvZrS8uGfiutc5WJJw4XE9m5+Xy8NoMZS7cye9VODufmk9ykLj84oyuX9G/LiSf4kKzOVVaeOFy5yc7N56O1Gcxcvo3Zq3Zy8EgezerX4rsD2nFx37YM7tzcB0tyrgrwxOGOS+bhXD5cs5N3V2zno7UZZOXk07R+LS48JZkRpyZzercWft3CuSrGE4crs817spi9agezVu3gs/V7yCswWjWqw6X92zH85BMY2tWThXNVmScOV6ojefks3LCXD9dm8P7qnaTtPAhA99YNufGMrpzbuzX9OzTzZijnqglPHO5rzIwvMg4xJ20XH6/NYO763WTl5FMrSQzp0oKrBnfk7BNb06WlP2vhXHXkicMBQfPT3PW7mbd+N5+m7Wb7/mwAOrWoz/cGtOfMnq0Y2q0FDev4n4xz1Z1/C1RDhWcUCzbsYf6XwWvLvsMAtGhQm6FdW/DNHi35ZveWdGheP87ROucSjSeOamB/di7L0zNZsnkfCzfuZdGmvezLygWgZcPaDO7SnB+c0YXTurWkZ5uG3vOsc65EnjiqmAPZuazefoDl6Zks35LJsvR9rN91CLNgfbdWDTi/9wkM7NSMgZ2b0bVlA08Uzrky8cRRSeXlF7BpTxZrth9g9fYDrNl+gFXb97Nxd9Z/y7RpXIdT2jVhZL929OvQlL7tm9Kkfq04Ru2cqwo8cSQwM2PPoRw27sliw65DfLnrEOszDpG28yBf7jpETn4BABJ0al6fPm0bc/nA9vRu25iT2zahdeO6ca6Bc64qimnikDQceBRIAp4xsweKrFe4fgSQBVxvZotK2lZSc+BloDOwAbjCzPbGsh6xkpdfwK6DOWzLPMz2zGy2ZmazZe9h0vdmkb73MJv3ZHHgSN5/yyfVEO2b1aN7q4YMO7EV3Vs1pNcJjejRuhH1avsQqs65ihGzxCEpCXgSOBdIBxZImmFmn0cUuwDoEb6GAE8BQ0rZ9m5gtpk9IOnucP7nsapHacyMnPwCDufkk5WTz6EjeezPzuNAdi77s/PIzMphX1Yue7Ny2XPoCLsP5bDrYA4ZB7LZfSjnv9ceCtWvnUS7pvVo16wegzo3o2OLBnRqXp8urRrQoVl9atf0J7Kdc/EVyzOOwUCama0HkDQVGAlEJo6RwPNmZsA8SU0lJROcTRxt25HAsHD7ycCHxChxPDZ7HTOWbqXADDMoMCM3r4DcAiM3v4AjuQUcycunwErfV4PaSTRvWJsWDerQtkld+nVoQqtGdWndqA7JTeqS3KQeyU3q0rR+Lb9Y7ZxLaLFMHO2AzRHz6QRnFaWVaVfKtm3MbBuAmW2T1Lq4g0saB4wD6Nix4zFVoHWjOvRq0wgJJFFDUCupBrWSRK2kGtSpWYO6tZKoU7MG9WvXpEGdJOrXrkmjuoWvWjStX4sm9WpRp6Y3JTnnqoZYJo7ifjYX/W1+tDLRbFsiM5sATABISUkp07aFRg3uyKjBx5Z0nHOuqoplg3k60CFivj2wNcoyJW27I2zOInzfWY4xO+ecK0UsE8cCoIekLpJqA6OAGUXKzABGKzAUyAyboUradgYwJpweA0yPYR2cc84VEbOmKjPLkzQeeI/gltqJZrZS0s3h+qeBmQS34qYR3I47tqRtw10/AEyTdAOwCbg8VnVwzjn3dbKi94NWQSkpKZaamhrvMJxzrlKRtNDMUoou94cCnHPOlYknDuecc2XiicM551yZeOJwzjlXJtXi4rikDGDjMW7eEthVjuFUBl7n6sHrXD0cT507mVmrogurReI4HpJSi7uroCrzOlcPXufqIRZ19qYq55xzZeKJwznnXJl44ijdhHgHEAde5+rB61w9lHud/RqHc865MvEzDuecc2XiicM551yZeOIISRouaY2ktHAs86LrJemxcP0ySQPiEWd5iqLO14R1XSbpU0l94xFneSqtzhHlBknKl3RZRcZX3qKpr6RhkpZIWinpo4qOsbxF8XfdRNJbkpaGdR4bjzjLk6SJknZKWnGU9eX7/WVm1f5F0HX7F0BXoDawFOhdpMwI4J8EoxMOBT6Ld9wVUOfTgWbh9AXVoc4R5d4n6Pb/snjHHeN/46bA50DHcL51vOOugDr/AvhjON0K2APUjnfsx1nvbwEDgBVHWV+u319+xhEYDKSZ2XozywGmAiOLlBkJPG+BeUDTwpEIK6lS62xmn5rZ3nB2HsFIjJVZNP/OALcCr1H5R5eMpr5XA6+b2SYAM6sOdTagkSQBDQkSR17Fhlm+zOxjgnocTbl+f3niCLQDNkfMp4fLylqmMilrfW4g+MVSmZVaZ0ntgEuBpyswrliJ5t+4J9BM0oeSFkoaXWHRxUY0dX4COIlgOOrlwO1mVlAx4cVNuX5/xWwEwEpGxSwrep9yNGUqk6jrI+ksgsTxzZhGFHvR1PkR4Odmlh/8IK3UoqlvTWAgcA5QD5graZ6ZrY11cDESTZ3PB5YAZwPdgFmSPjGz/TGOLZ7K9fvLE0cgHegQMd+e4NdIWctUJlHVR9KpwDPABWa2u4Jii5Vo6pwCTA2TRktghKQ8M3uzQiIsX9H+Xe8ys0PAIUkfA32Bypo4oqnzWOABCxr/0yR9CZwIzK+YEOOiXL+/vKkqsADoIamLpNrAKGBGkTIzgNHh3QlDgUwz21bRgZajUussqSPwOnBdJf4FGqnUOptZFzPrbGadgVeBWypp0oDo/q6nA2dIqimpPjAEWFXBcZanaOq8ieAMC0ltgF7A+gqNsuKV6/eXn3EAZpYnaTzwHsFdGRPNbKWkm8P1TxPcYTMCSAOyCH61VFpR1vk3QAvgr+Ev8DyrxD2LRlnnKiOa+prZKknvAsuAAuAZMyv2ls7KIMp/4/uBSZKWEzTh/NzMKnVX65KmAMOAlpLSgXuAWhCb7y/vcsQ551yZeFOVc865MvHE4Zxzrkw8cTjnnCsTTxzOOefKxBOHc865MvHE4eIu7IV2ScSr83Hur5+kERHz3ympJ9zyIOk2Sask/SOGx5gpqWk4fTB873y0HlFjSdKk4noOlvSMpN4VHY+rWP4ch0sEh82sX3Erwo7oVMa+hPoRPAE+E8DMZvD1h8DK2y0ET9d/GasDmNmI0kvFl5ndGO8YXOz5GYdLOOGv6FWS/gosAjpIekpSajh+wn0RZQcpGCtkqaT5kpoAvwWuDM9erpR0vaQnwvKdJM0OxySYHT4dX/gL+rFwX+uL+zUdlvuJpBXh645w2dME3XjPkPTjIuU/k9QnYv5DSQMlDQ6PtTh87xWuv17S65LelbRO0oMR226Q1LKUz+0TSYvC1+lHKTc6rP9SSS+U8rkUu7zI/u4PP78aYf1SwuXnSZobxvKKpIbh8gckfR7u889Hq49LYPHuR95f/gLyCTqdWwK8AXQmeIp5aESZ5uF7EvAhcCrBeAvrgUHhusYEZ9HXA09EbPvfeeAtYEw4/X3gzXB6EvAKwY+p3gRdcxeNcyBBb6oNCLrjXgn0D9dtAFoWs82PgfvC6WRgbWSs4fS3gdciYl0PNAHqAhuBDkWPARwM3zsTjsEA1AfqhtM9gNRi4ukDrInYT/NSPpeSPq/LgAeBv/G/h4k/JDjbawl8DDQIl/+coCeC5uHxC8s3jfffn7/K/vKmKpcIvtJUFV7j2GjBuAGFrpA0jiAxJBN8uRuwzcwWAFjYu6lK7tX2NOC74fQLBF98hd60oEnscwV9GBX1TeANCzoERNLrwBnA4hKONw2YRdAFxBUEyQmCxDBZUo+wHrUitpltZpnhMT4HOvHVLrGPphbwhKR+BMm4ZzFlzgZetbCLDTMrHMPhaJ9LSZ/XrwkGBBpXzHGGEvwbzQn/PWoDc4H9QDbwjKR3gLejqJdLMJ44XKI6VDghqQtwF8GZxV5Jkwh+jYvj79o+cvsjEdPFZZ8y97NuZlsk7VbQy/CVwE3hqvuBD8zs0jBRfniUOPKJ/v/pj4EdBL3b1iD4gi4q2s/saGUily8ABkpqHpGAIo8zy8yu+loA0mCCTgZHAeMJkpmrRPwah6sMGhMkkszwTOCCcPlqoK2kQQCSGkmqCRwAGh1lX58SfGEBXAP8pwxxfAxcIqm+pAYEAz59EsV2U4GfAU3MbHm4rAmwJZy+vgwxlKQJwRlYAXAdQbNeUbMJzt5aAEhqHi4/2udS0uf1LvAA8I6kop/3POAbkrqHx6kvqWd4naOJmc0E7iC4kcFVMn7G4RKemS2VtJjgmsJ6YE64PEfSlcDjkuoBhwmuF3wA3C1pCfCHIru7DZgo6adABmXoJdTMFoVnO4XjNjxjZiU1UxV6FXiU4Cyj0IMETVU/IRjfvDz8FXhN0uUEn8GhogUs6Cn298BHkvIJmtmu5+ifS4mfl5m9EiaNGYq4BdrMMiRdD0yRVCdc/CuCpD5dUuEZ41duJnCVg/eO65xzrky8qco551yZeOJwzjlXJp44nHPOlYknDuecc2XiicM551yZeOJwzjlXJp44nHPOlcn/B0m7+ierT+ekAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior2.plot()\n", "\n", "plt.xlabel('Fraction of vanilla cookies')\n", "plt.ylabel('Probability')\n", "plt.title('Posterior, two vanilla');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 2\n", "\n", "Suppose we put the second cookie back, stir the bowl, draw from the same bowl again, and get a chocolate cookie.\n", "\n", "Now what are the posterior probabilities?" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "# Solution\n", "\n", "prior3 = posterior2\n", "unnorm3 = prior3 * likelihood_chocolate\n", "posterior3 = unnorm3 / unnorm3.sum()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "posterior3.plot()\n", "\n", "plt.xlabel('Fraction of vanilla cookies')\n", "plt.ylabel('Probability')\n", "plt.title('Posterior, two vanilla, one chocolate');" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.67" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "posterior3.idxmax()" ] } ], "metadata": { "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.5" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 02_euro.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bayesian Statistics Made Simple\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2020 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Euro problem\n", "\n", "Here's a problem from David MacKay's book, [*Information Theory, Inference, and Learning Algorithms*](http://www.inference.org.uk/mackay/itila/p0.html), which is the book where I first learned about Bayesian statistics. MacKay writes:\n", "\n", "> A statistical statement appeared in The Guardian on\n", "Friday January 4, 2002:\n", ">\n", "> >\"When spun on edge 250 times, a Belgian one-euro coin came\n", "up heads 140 times and tails 110. ‘It looks very suspicious\n", "to me’, said Barry Blight, a statistics lecturer at the London\n", "School of Economics. ‘If the coin were unbiased the chance of\n", "getting a result as extreme as that would be less than 7%’.\"\n", ">\n", "> But [asks MacKay] do these data give evidence that the coin is biased rather than fair?\n", "\n", "To answer this question, we have to make some modeling choices.\n", "\n", "First, let's assume that if you spin a coin on edge, there is some probability that it will land heads up. I'll call that probability $x$.\n", "\n", "Second, let's assume that $x$ varies from one coin to the next, depending on how the coin is balanced and maybe some other factors." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With these assumptions we can formulate MacKay's question as an inference problem: given the data --- 140 heads and 110 tails --- what do we think $x$ is for this coin?\n", "\n", "This formulation is similar to the 101 Bowls problem we saw in the previous notebook.\n", "\n", "But in the 101 Bowls problem, we are told that we choose a bowl at random, which implies that all bowls have the same prior probability.\n", "\n", "For the Euro problem, we have to think harder about the prior. What values of $x$ do you think are reasonable?\n", "\n", "It seems likely that many coins are \"fair\", meaning that the probability of heads is close to 50%. Do you think there are coins where $x$ is 75%? How about 90%?\n", "\n", "To be honest, I don't really know. To get started, I will assume that all values of $x$, from 0% to 100%, are equally likely. Then we'll come back and try another prior.\n", "\n", "Here's a uniform prior from 0 to 100." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "xs = np.linspace(0, 1, num=101)\n", "p = 1/101\n", "prior = pd.Series(p, index=xs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it looks like." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "prior.plot()\n", "\n", "plt.xlabel('Possible values of x')\n", "plt.ylabel('Probability')\n", "plt.title('Prior');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the likelihoods for heads and tails:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "likelihood_heads = xs\n", "likelihood_tails = 1 - xs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose we toss the coin twice and get one heads and one tails.\n", "\n", "We can compute the posterior probability for each value of $x$ like this:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "posterior = prior * likelihood_heads * likelihood_tails\n", "posterior /= posterior.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what the posterior distribution looks like." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "posterior.plot()\n", "\n", "plt.xlabel('Possible values of x')\n", "plt.ylabel('Probability')\n", "plt.title('Posterior')\n", "\n", "posterior.idxmax()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 1\n", "\n", "Go back and run the update again for the following outcomes:\n", "\n", "* Two heads, one tails.\n", "\n", "* 7 heads, 3 tails.\n", "\n", "* 70 heads, 30 tails.\n", "\n", "* 140 heads, 110 tails." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A better prior\n", "\n", "Remember that this result is based on a uniform prior, which assumes that any value of $x$ from 0 to 100 is equally likely.\n", "\n", "Given what we know about coins, that's probably not true. I can believe that if you spin a lop-sided coin on edge, it might be somewhat more likely to land on heads or tails. \n", "\n", "But unless the coin is heavily weighted on one side, I would be surprised if $x$ were greater than 60% or less than 40%.\n", "\n", "Of course, I could be wrong, but in general I would expect to find $x$ closer to 50%, and I would be surprised to find it near 0% or 100%.\n", "\n", "We can represent that prior belief with a triangle-shaped prior.\n", "Here's an array that ramps up from 0 to 49 and ramps down from 50 to 0." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "ramp_up = np.arange(50)\n", "ramp_down = np.arange(50, -1, -1)\n", "\n", "ps = np.append(ramp_up, ramp_down)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll put it in a `Series` and normalize it so it adds up to 1." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "triangle = pd.Series(ps, xs)\n", "triangle /= triangle.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the triangle prior looks like." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "triangle.plot(color='C1')\n", "\n", "plt.xlabel('Possible values of x')\n", "plt.ylabel('Probability')\n", "plt.title('Triangle prior');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's update it with the data." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "posterior1 = prior * likelihood_heads**140 * likelihood_tails**110\n", "posterior1 /= posterior1.sum()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "posterior2 = triangle * likelihood_heads**140 * likelihood_tails**110\n", "posterior2 /= posterior2.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And plot the results, along with the posterior based on a uniform prior." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "posterior1.plot(label='Uniform prior')\n", "posterior2.plot(label='Triangle prior')\n", "\n", "plt.xlabel('Possible values of x')\n", "plt.ylabel('Probability')\n", "plt.title('Posterior after 140 heads, 110 tails')\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior distributions are almost identical because, in this case, we have enough data to \"swamp the prior\"; that is, the posteriors depend strongly on the data and only weakly on the priors.\n", "\n", "This is good news, because it suggests that we can use data to resolve arguments. Suppose two people disagree about the correct prior. If neither can persuade the other, they might have to agree to disagree.\n", "\n", "But if they get new data, and each of them does a Bayesian update, they will usually find their beliefs converging.\n", "\n", "And with enough data, the remaining difference can be so small that it makes no difference in practice." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summarizing the posterior distribution\n", "\n", "The posterior distribution contains all of the information we have about the value of $x$. But sometimes we want to summarize this information.\n", "\n", "We have already seen one way to summarize a posterior distribution, the Maximum Aposteori Probability, or MAP:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "posterior1.idxmax()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`idxmax` returns the value of $x$ with the highest probability.\n", "\n", "In this example, we get the same MAP with the triangle prior:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "posterior2.idxmax()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another way to summarize the posterior distribution is the posterior mean.\n", "\n", "Given a set of values, $x_i$, and the corresponding probabilities, $p_i$, the mean of the distribution is:\n", "\n", "$\\sum_i x_i p_i$\n", "\n", "The following function takes a Pmf and computes its mean. Note that this function only works correctly if the Pmf is normalized." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "def pmf_mean(pmf):\n", " \"\"\"Compute the mean of a PMF.\n", " \n", " pmf: Series representing a PMF\n", " \n", " return: float\n", " \"\"\"\n", " return np.sum(pmf.index * pmf)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the posterior mean based on the uniform prior:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "pmf_mean(posterior1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's the posterior mean with the triangle prior:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "pmf_mean(posterior2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior means are not identical, but they are close enough that the difference probably doesn't matter.\n", "\n", "In this example, the posterior mean is very close to the MAP. That's true when the posterior distribution is symmetric, but it is not always true." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If someone asks what we think $x$ is, the MAP or the posterior mean might be a good answer." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Credible intervals\n", "\n", "Another way to summarize a posterior distribution is a credible interval, which is a range of quantities whose probabilities add up to a given total.\n", "\n", "The following function takes a `Series` as a parameter and a probability, `prob`, and return an interval that contains the given probability.\n", "\n", "If you are interested, it computes the cumulative distribution function (CDF) and then uses interpolation to estimate percentiles." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "from scipy.interpolate import interp1d\n", "\n", "def credible_interval(pmf, prob):\n", " \"\"\"Compute the mean of a PMF.\n", " \n", " pmf: Series representing a PMF\n", " prob: probability of the interval\n", " \n", " return: pair of float\n", " \"\"\"\n", " # make the CDF\n", " xs = pmf.index\n", " ys = pmf.cumsum()\n", " \n", " # compute the probabilities\n", " p = (1-prob)/2\n", " ps = [p, 1-p]\n", " \n", " # interpolate the inverse CDF\n", " options = dict(bounds_error=False,\n", " fill_value=(xs[0], xs[-1]), \n", " assume_sorted=True)\n", " interp = interp1d(ys, xs, **options)\n", " return interp(ps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the 90% credible interval for `posterior1`." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "credible_interval(posterior1, 0.9)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And for `posterior2`." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "credible_interval(posterior2, 0.9)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The credible interval for `posterior2` is slightly narrower." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.5" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 02_euro_soln.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bayesian Statistics Made Simple\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2020 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Euro problem\n", "\n", "Here's a problem from David MacKay's book, [*Information Theory, Inference, and Learning Algorithms*](http://www.inference.org.uk/mackay/itila/p0.html), which is the book where I first learned about Bayesian statistics. MacKay writes:\n", "\n", "> A statistical statement appeared in The Guardian on\n", "Friday January 4, 2002:\n", ">\n", "> >\"When spun on edge 250 times, a Belgian one-euro coin came\n", "up heads 140 times and tails 110. ‘It looks very suspicious\n", "to me’, said Barry Blight, a statistics lecturer at the London\n", "School of Economics. ‘If the coin were unbiased the chance of\n", "getting a result as extreme as that would be less than 7%’.\"\n", ">\n", "> But [asks MacKay] do these data give evidence that the coin is biased rather than fair?\n", "\n", "To answer this question, we have to make some modeling choices.\n", "\n", "First, let's assume that if you spin a coin on edge, there is some probability that it will land heads up. I'll call that probability $x$.\n", "\n", "Second, let's assume that $x$ varies from one coin to the next, depending on how the coin is balanced and maybe some other factors." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With these assumptions we can formulate MacKay's question as an inference problem: given the data --- 140 heads and 110 tails --- what do we think $x$ is for this coin?\n", "\n", "This formulation is similar to the 101 Bowls problem we saw in the previous notebook.\n", "\n", "But in the 101 Bowls problem, we are told that we choose a bowl at random, which implies that all bowls have the same prior probability.\n", "\n", "For the Euro problem, we have to think harder about the prior. What values of $x$ do you think are reasonable?\n", "\n", "It seems likely that many coins are \"fair\", meaning that the probability of heads is close to 50%. Do you think there are coins where $x$ is 75%? How about 90%?\n", "\n", "To be honest, I don't really know. To get started, I will assume that all values of $x$, from 0% to 100%, are equally likely. Then we'll come back and try another prior.\n", "\n", "Here's a uniform prior from 0 to 100." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "xs = np.linspace(0, 1, num=101)\n", "p = 1/101\n", "prior = pd.Series(p, index=xs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it looks like." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZUAAAEWCAYAAACufwpNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAbBklEQVR4nO3dfbRddX3n8fcHELGKBkxwKA8GakBjlZpekJmpFW2xBB+Co7akdqBoF2UE265Wx9ihVWo7g+20ViqFBQpCnYK09SEusQxFLZYS5QYxEBGJKUoKlVA7WB9p8Dt/7B28PZx770n4nXu9yfu11l1n7/17OL9fbtb53P1w9k5VIUlSC3vM9wAkSbsOQ0WS1IyhIklqxlCRJDVjqEiSmjFUJEnNGCrSD5gk30hy+HyPQ9oZhoo0B5LcleTbfWB8NcmlSZ4wrG5VPaGqNs/1GKUWDBVp7ry0qp4ArACOBs6eWphkr0fT+aNtL7VgqEhzrKr+EfgY8KNJKsmZSe4E7gTotz2tX35SksuTbE3y5SRnJ9mjL/vFJDckeUeSrwFvnacpSQ/zLxtpjiU5BDgR+ADwYuAk4LnAt4dU/xPgScDhwJOB/wvcC7ynL38ucCVwAPCYcY5bGkW895c0fknuAhYD24AHgI8CvwF8C/ipqvr4lLoFLAP+oS9/TlV9vi/7ZWB1VR2X5BeB36mqQ+dwKtKM3FOR5s5JVfU3UzckAbh7mvqLgb2BL0/Z9mXgoCnr07WV5oXnVKT5N93hgvuBfwOeOmXbocA/jtBWmheGivQDqqoeAq4Cfi/JvkmeCvw68L75HZk0PUNF+sH2euCbwGbg74A/By6Z1xFJM/BEvSSpGfdUJEnNGCqSpGYMFUlSM4aKJKmZ3frLj4sXL66lS5fO9zAkaUFZv379/VW1ZFjZbh0qS5cuZXJycr6HIUkLSpIvT1fm4S9JUjOGiiSpGUNFktSMoSJJamasoZLkhCR3JNmUZM2Q8iQ5ry/fkGTFlLJLktyX5LaBNvsnuTbJnf3rfgPlh/bPAX/D+GYmSRpmbKGSZE/gfGAlsBxYnWT5QLWVdA8jWgacDlwwpey9wAlDul4DXFdVy4Dr+vWp3kH3qFZJ0hwb557KMcCmqtpcVQ/SPfJ01UCdVcDl1VkHLEpyIEBVXQ98bUi/q4DL+uXL6B7FCkCSk+ju5rqx4TwkSSMaZ6gcxL9/Kt0W/v0T60atM+gpVXUvQP96AECSxwNvAs6ZqXGS05NMJpncunXrrJOQJI1unKGSIdsG77M/Sp1RnQO8o6q+MVOlqrqoqiaqamLJkqFfCJUk7aRxfqN+C3DIlPWDgXt2os6gryY5sKru7Q+V3ddvfy7wyiS/DywCvpfkO1X1rp2dgCRpx4xzT+UmYFmSw5LsDZwMrB2osxY4pb8K7Fjgge2HtmawFji1Xz4V+DBAVT2vqpZW1VLgj4H/aaBI0twaW6hU1TbgLOAa4HbgqqramOSMJGf01a6mO7G+CbgYeN329kmuAG4EjkyyJclr+6JzgeOT3Akc369Lkn4A7NaPE56YmChvKClJOybJ+qqaGFbmN+olSc0YKpKkZgwVSVIzhookqRlDRZLUjKEiSWrGUJEkNWOoSJKaMVQkSc0YKpKkZgwVSVIzhookqRlDRZLUjKEiSWrGUJEkNWOoSJKaMVQkSc0YKpKkZgwVSVIzhookqRlDRZLUjKEiSWrGUJEkNWOoSJKaMVQkSc0YKpKkZgwVSVIzhookqRlDRZLUjKEiSWrGUJEkNTPWUElyQpI7kmxKsmZIeZKc15dvSLJiStklSe5LcttAm/2TXJvkzv51v3778UnWJ7m1f33hOOcmSXqksYVKkj2B84GVwHJgdZLlA9VWAsv6n9OBC6aUvRc4YUjXa4DrqmoZcF2/DnA/8NKqehZwKvBnbWYiSRrVOPdUjgE2VdXmqnoQuBJYNVBnFXB5ddYBi5IcCFBV1wNfG9LvKuCyfvky4KS+/mer6p5++0ZgnySPbTkhSdLMxhkqBwF3T1nf0m/b0TqDnlJV9wL0rwcMqfMK4LNV9d3BgiSnJ5lMMrl169ZZ3kqStCPGGSoZsq12os6OvWnyTODtwC8PK6+qi6pqoqomlixZ8mjeSpI0YJyhsgU4ZMr6wcA9O1Fn0Fe3HyLrX+/bXpDkYOCDwClV9aWdHLckaSeNM1RuApYlOSzJ3sDJwNqBOmuBU/qrwI4FHth+aGsGa+lOxNO/fhggySLgo8Cbq+qGRnOQJO2AsYVKVW0DzgKuAW4HrqqqjUnOSHJGX+1qYDOwCbgYeN329kmuAG4EjkyyJclr+6JzgeOT3Akc36/Tv9fTgN9Kckv/M+x8iyRpTFL1qE5hLGgTExM1OTk538OQpAUlyfqqmhhW5jfqJUnNGCqSpGYMFUlSM4aKJKkZQ0WS1IyhIklqxlCRJDVjqEiSmjFUJEnNGCqSpGYMFUlSM4aKJKkZQ0WS1IyhIklqxlCRJDVjqEiSmjFUJEnNGCqSpGYMFUlSM4aKJKkZQ0WS1IyhIklqxlCRJDVjqEiSmjFUJEnNGCqSpGYMFUlSM4aKJKkZQ0WS1IyhIklqZqRQSfKSJAaQJGlGowbFycCdSX4/yTNG7TzJCUnuSLIpyZoh5UlyXl++IcmKKWWXJLkvyW0DbfZPcm2SO/vX/aaUvbnv644kPzPqOCVJbYwUKlX1C8BzgC8Blya5McnpSfadrk2SPYHzgZXAcmB1kuUD1VYCy/qf04ELppS9FzhhSNdrgOuqahlwXb9O3/fJwDP7dn/aj0GSNEdGPqRVVV8H/gq4EjgQeDlwc5LXT9PkGGBTVW2uqgf7dqsG6qwCLq/OOmBRkgP797se+NqQflcBl/XLlwEnTdl+ZVV9t6r+AdjUj0GSNEdGPafysiQfBD4OPAY4pqpWAkcBb5im2UHA3VPWt/TbdrTOoKdU1b0A/esBO9JXv4c1mWRy69ats7yVJGlH7DVivVcC7+j3Hh5WVd9K8ppp2mTIttqJOqMaqa+qugi4CGBiYmJn30uSNMSoh7/uHQyUJG8HqKrrpmmzBThkyvrBwD07UWfQV7cfIutf73sUfUmSGho1VI4fsm3lLG1uApYlOSzJ3nQn0dcO1FkLnNJfBXYs8MD2Q1szWAuc2i+fCnx4yvaTkzw2yWF0J/8/M0tfkqSGZjz8leS/Aa8DfiTJhilF+wI3zNS2qrYlOQu4BtgTuKSqNiY5oy+/ELgaOJHupPq3gNOmvPcVwHHA4iRbgLdU1XuAc4GrkrwW+Arwqr6/jUmuAj4PbAPOrKqHRvpXkCQ1karpTyskeRKwH/C/6C/d7f1rVQ27MmtBmZiYqMnJyfkehiQtKEnWV9XEsLLZTtRXVd2V5Mwhne6/KwSLJKmd2ULlz4GXAOvprqSaeoVVAYePaVySpAVoxlCpqpf0r4fNzXAkSQvZbCfqV8xUXlU3tx2OJGkhm+3w1x/OUFbACxuORZK0wM12+OsFczUQSdLCN9vhrxdW1ceT/Jdh5VX1gfEMS5K0EM12+Ov5dDeRfOmQsgIMFUnSw2Y7/PWW/vW0mepJkgSj3/r+yf0TGm9Osj7JO5M8edyDkyQtLKPeUPJKYCvwCrrb4G8F3j+uQUmSFqZRn6eyf1W9bcr67yY5aQzjkSQtYKPuqXwiyclJ9uh/fhb46DgHJklaeGa7pPhf+f49v34deF9ftAfwDeAtYx3dD7BzPrKRz9/z9fkehiTtlOU//ETe8tJnNu93tqu/9m3+jpKkXdao51RIsh/d0xT32b5t8BHDu5NxJLwkLXQjhUqSXwJ+le6577cAxwI34r2/JElTjHqi/leBo4Ev9/cDew7dZcWSJD1s1FD5TlV9ByDJY6vqC8CR4xuWJGkhGvWcypYki4APAdcm+RfgnnENSpK0MI0UKlX18n7xrUk+ATwJ+OuxjUqStCDtyNVfK4CfoPveyg1V9eDYRiVJWpBGvaHkbwOXAU8GFgOXJjl7nAOTJC08o+6prAaeM+Vk/bnAzcDvjmtgkqSFZ9Srv+5iypcegccCX2o+GknSgjbbvb/+hO4cyneBjUmu7dePB/5u/MOTJC0ksx3+muxf1wMfnLL9k2MZjSRpQZvthpKXbV9OsjdwRL96R1X92zgHJklaeEa999dxdFd/3UV3G/xDkpy6O99QUpL0SKNe/fWHwIuq6g6AJEcAVwA/Pq6BSZIWnlGv/nrM9kABqKovAo8Zz5AkSQvVqKGyPsl7khzX/1xMd/J+RklOSHJHkk1J1gwpT5Lz+vIN/bf2Z2yb5KgkNya5NclHkjyx3/6YJJf1229P8uYR5yZJamTUUDkD2Aj8Ct1t8D/fb5tWkj2B84GVwHJgdZLlA9VW0j34axlwOnDBCG3fDaypqmfRXZH2xn77q4DH9tt/HPjlJEtHnJ8kqYFZz6kk2QNYX1U/CvzRDvR9DLCpqjb3/VwJrKILpO1WAZdXVQHrkixKciCwdIa2RwLbLxC4FrgG+C267888PslewOOABwEfIi9Jc2jWPZWq+h7wuSSH7mDfBwF3T1nf0m8bpc5MbW8DXtYvvwo4pF/+S+CbwL3AV4D/XVVfGxxUktOTTCaZ3LrV54xJUkujHv46kO4b9dclWbv9Z5Y2GbKtRqwzU9vXAGcmWQ/sS7dHAt2e0UPADwOHAb+R5PBHdFJ1UVVNVNXEkiVLZpmCJGlHjHpJ8Tk70fcWvr8XAd3z7Qcf7DVdnb2na9s/dfJF8PClzS/u6/w88Nf9lzLvS3IDMAFs3omxS5J2wox7Kkn2SfJrdIeZnk73HJW/3f4zS983AcuSHNZ/G/9kYHDvZi1wSn8V2LHAA1V170xtkxzQv+4BnA1c2Pf1FeCFfV+PB44FvjDCv4EkqZHZDn9dRvfX/q10V2L94agdV9U24Cy6E+m3A1dV1cYkZyTZfuXY1XR7EpuAi4HXzdS2b7M6yRfpAuMe4NJ++/nAE+jOudwEXFpVG0YdryTp0Ut34dU0hcmt/SW69FdVfaaqVkzbYIGZmJioycnJ2StKkh6WZH1VTQwrm21P5eGbRvZ7D5IkTWu2E/VHJdn+XY8Aj+vXA1RVPXGso5MkLSiz3fp+z7kaiCRp4Rv1eyqSJM3KUJEkNWOoSJKaMVQkSc0YKpKkZgwVSVIzhookqRlDRZLUjKEiSWrGUJEkNWOoSJKaMVQkSc0YKpKkZgwVSVIzhookqRlDRZLUjKEiSWrGUJEkNWOoSJKaMVQkSc0YKpKkZgwVSVIzhookqRlDRZLUjKEiSWrGUJEkNWOoSJKaMVQkSc2MNVSSnJDkjiSbkqwZUp4k5/XlG5KsmK1tkqOS3Jjk1iQfSfLEKWXP7ss29uX7jHN+kqR/b2yhkmRP4HxgJbAcWJ1k+UC1lcCy/ud04IIR2r4bWFNVzwI+CLyxb7MX8D7gjKp6JnAc8G/jmp8k6ZHGuadyDLCpqjZX1YPAlcCqgTqrgMursw5YlOTAWdoeCVzfL18LvKJffhGwoao+B1BV/1xVD41rcpKkRxpnqBwE3D1lfUu/bZQ6M7W9DXhZv/wq4JB++QigklyT5OYk/33YoJKcnmQyyeTWrVt3cEqSpJmMM1QyZFuNWGemtq8BzkyyHtgXeLDfvhfwE8Cr+9eXJ/mpR3RSdVFVTVTVxJIlS2afhSRpZHuNse8tfH8vAuBg4J4R6+w9Xduq+gLdoS6SHAG8eEpff1tV9/dlVwMrgOsazEWSNIJx7qncBCxLcliSvYGTgbUDddYCp/RXgR0LPFBV987UNskB/esewNnAhX1f1wDPTvJD/Un75wOfH+P8JEkDxranUlXbkpxF92G/J3BJVW1MckZffiFwNXAisAn4FnDaTG37rlcnObNf/gBwad/mX5L8EV0gFXB1VX10XPOTJD1SqgZPc+w+JiYmanJycr6HIUkLSpL1VTUxrMxv1EuSmjFUJEnNGCqSpGYMFUlSM4aKJKkZQ0WS1IyhIklqxlCRJDVjqEiSmjFUJEnNGCqSpGYMFUlSM4aKJKkZQ0WS1IyhIklqxlCRJDVjqEiSmjFUJEnNGCqSpGYMFUlSM4aKJKkZQ0WS1IyhIklqxlCRJDVjqEiSmjFUJEnNGCqSpGYMFUlSM4aKJKkZQ0WS1IyhIklqZqyhkuSEJHck2ZRkzZDyJDmvL9+QZMVsbZMcleTGJLcm+UiSJw70eWiSbyR5wzjnJkl6pLGFSpI9gfOBlcByYHWS5QPVVgLL+p/TgQtGaPtuYE1VPQv4IPDGgT7fAXys+YQkSbMa557KMcCmqtpcVQ8CVwKrBuqsAi6vzjpgUZIDZ2l7JHB9v3wt8IrtnSU5CdgMbBzTnCRJMxhnqBwE3D1lfUu/bZQ6M7W9DXhZv/wq4BCAJI8H3gScM9OgkpyeZDLJ5NatW0eejCRpduMMlQzZViPWmanta4Azk6wH9gUe7LefA7yjqr4x06Cq6qKqmqiqiSVLlsxUVZK0g/YaY99b6PciegcD94xYZ+/p2lbVF4AXASQ5AnhxX+e5wCuT/D6wCPheku9U1btaTEaSNLtxhspNwLIkhwH/CJwM/PxAnbXAWUmupAuFB6rq3iRbp2ub5ICqui/JHsDZwIUAVfW87Z0meSvwDQNFkubW2EKlqrYlOQu4BtgTuKSqNiY5oy+/ELgaOBHYBHwLOG2mtn3Xq5Oc2S9/ALh0XHOQJO2YVA2e5th9TExM1OTk5HwPQ5IWlCTrq2piWJnfqJckNWOoSJKaMVQkSc3s1udU+qvMvvwoulgM3N9oOAvB7jZfcM67C+e8Y55aVUO/6Ldbh8qjlWRyupNVu6Ldbb7gnHcXzrkdD39JkpoxVCRJzRgqj85F8z2AOba7zRec8+7COTfiORVJUjPuqUiSmjFUJEnNGCqzSHJCkjuSbEqyZkh5kpzXl29IsmI+xtnSCHN+dT/XDUn+PslR8zHOlmab85R6Ryd5KMkr53J84zDKnJMcl+SWJBuT/O1cj7G1Ef5vPynJR5J8rp/zafMxzlaSXJLkviS3TVPe/vOrqvyZ5ofuDslfAg6ne8bL54DlA3VOBD5G92CxY4FPz/e452DO/wnYr19euTvMeUq9j9PdXfuV8z3uOfg9LwI+Dxzarx8w3+Oegzn/JvD2fnkJ8DVg7/ke+6OY808CK4Dbpilv/vnlnsrMjgE2VdXmqnoQuBJYNVBnFXB5ddYBi5IcONcDbWjWOVfV31fVv/Sr6+georaQjfJ7Bng98FfAfXM5uDEZZc4/D3ygqr4CUFULfd6jzLmAfZMEeAJdqGyb22G2U1XX081hOs0/vwyVmR0E3D1lfUu/bUfrLCQ7Op/X0v2ls5DNOuckBwEvp38o3C5glN/zEcB+ST6ZZH2SU+ZsdOMxypzfBTyD7kmztwK/WlXfm5vhzYvmn1/jfPLjriBDtg1egz1KnYVk5PkkeQFdqPzEWEc0fqPM+Y+BN1XVQ90fsQveKHPeC/hx4KeAxwE3JllXVV8c9+DGZJQ5/wxwC/BC4EeAa5N8qqq+PuaxzZfmn1+Gysy2AIdMWT+Y7i+YHa2zkIw0nyTPBt4NrKyqf56jsY3LKHOeAK7sA2UxcGKSbVX1oTkZYXuj/t++v6q+CXwzyfXAUcBCDZVR5nwacG51Jxw2JfkH4OnAZ+ZmiHOu+eeXh79mdhOwLMlhSfYGTgbWDtRZC5zSX0VxLPBAVd071wNtaNY5JzmU7lHO/3UB/9U61axzrqrDqmppVS0F/hJ43QIOFBjt//aHgecl2SvJDwHPBW6f43G2NMqcv0K3Z0aSpwBHApvndJRzq/nnl3sqM6iqbUnOAq6hu3LkkqramOSMvvxCuiuBTgQ2Ad+i+0tnwRpxzr8NPBn40/4v9221gO/wOuKcdymjzLmqbk/y18AG4HvAu6tq6KWpC8GIv+e3Ae9NcivdoaE3VdWCvSV+kiuA44DFSbYAbwEeA+P7/PI2LZKkZjz8JUlqxlCRJDVjqEiSmjFUJEnNGCqSpGYMFe2y+rsJ35LktiR/0X/XokW/VydZlGTpDHd//WSSsV1mneS983Gn5CSvSnJ7kk/M9XtrYTBUtCv7dlX9WFX9KPAgcEaLTqvqxKr6fy36WoBeS/fFzxfM90D0g8lQ0e7iU8DTkuyf5EP9syPW9bebIcnz+72aW5J8Nsm+SQ5Mcv2UvZ3n9XXvSrK473evJJf1/f3lsL2hJC9KcmOSm/s9picMlD8jyWemrC9NsqFf/u0kN/Xvf1GG3Hhs6niSTCT5ZL/8+HTP07ipn9Oqfvszk3ymn9eGJMuG9Lk6ya39+759+1jo7vN2YZI/GKj/8iR/038z+8AkX0zyH0b83WgXYqhol5dkL7rnvtwKnAN8tqqeTffsjMv7am8AzqyqHwOeB3yb7tbv1/TbjqK70eCgI4GL+v6+Drxu4L0XA2cDP11VK4BJ4Nen1qmq24G9kxzeb/o54Kp++V1VdXS/t/U44CU7MPX/AXy8qo4GXgD8QZLH0+2xvbOf1wTd/Z+mjvmHgbfT3VTxx4Cjk5xUVb/Tj//VVfXGgTl8EPgn4EzgYuAtVfVPOzBW7SIMFe3KHpfkFroPwq8A76H7S/vPAKrq48CTkzwJuAH4oyS/Aiyqqm1094o6LclbgWdV1b8OeY+7q+qGfvl9PPKOzccCy4Eb+rGcCjx1SD9XAT/bL/8c8P5++QVJPt3fNuSFwDNHnz4vAtb07/tJYB/gUOBG4DeTvAl4alV9e6Dd0cAnq2pr/+/wf+ge9jSb1wNvBr5bVVfswDi1C/HeX9qVfbv/a/xhww4fAVVV5yb5KN19kNYl+emquj7JTwIvBv4syR9U1eWDbWdZD3BtVa2eZazvB/4iyQf68dyZZB/gT4GJqrq7D7d9hrTdxvf/QJxaHuAVVXXHQP3bk3y6n9c1SX6pD9ip7XbGQXT3CHtKkj128eeQaBruqWh3cz3wauiev053a/evJ/mRqrq1qt5Ot2fz9CRPBe6rqovp9nKGPb/70CT/sV9eDfzdQPk64D8neVr/nj+U5IjBTqrqS8BDwG/x/b2U7QFxf38eZrqrve6ie+4JwCumbL8GeP32IE3ynP71cGBzVZ1Hd5faZw/092ng+UkWJ9mzn9eMz6fvDzFeSnfI8HYGDvFp92GoaHfzVmCiPxF+Lt3hKIBf609Kf47ufMrH6O7uekuSz9J9WL9zSH+3A6f2/e0PXDC1sKq2Ar8IXNHXWUf3fI5h3g/8Av35lP4Ks4vpzgV9iO5w3DDnAO9M8im6YNrubXR3pN3QX/r8tn77zwG39YfFns73zyttH/O9dIexPkH3HPebq+rD07z3dr8JfKqqPkUXKL+U5BmztNEuyLsUS5KacU9FktSMoSJJasZQkSQ1Y6hIkpoxVCRJzRgqkqRmDBVJUjP/H/qma1Z28egKAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "prior.plot()\n", "\n", "plt.xlabel('Possible values of x')\n", "plt.ylabel('Probability')\n", "plt.title('Prior');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the likelihoods for heads and tails:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "likelihood_heads = xs\n", "likelihood_tails = 1 - xs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose we toss the coin twice and get one heads and one tails.\n", "\n", "We can compute the posterior probability for each value of $x$ like this:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "posterior = prior * likelihood_heads * likelihood_tails\n", "posterior /= posterior.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what the posterior distribution looks like." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY4AAAEWCAYAAABxMXBSAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5VUlEQVR4nO3deXhU1fnA8e+bjRAIhJAAAQIJEDaRNSwiiLvghrsgCioWqVvVLmptbe3qWit14Qd1ww1Rq6JiERUElC0IhB1CCCQQSNgCJIRs7++PubRpDMkEMrkzyft5nnlm5t5z7rwnhHlz7j33HFFVjDHGGG8FuR2AMcaYwGKJwxhjTI1Y4jDGGFMjljiMMcbUiCUOY4wxNWKJwxhjTI1Y4jAmQIjIOBH50u04jBG7j8OYyolIBtAaKAXygTnAvap69BSO9Xugi6reXJsxGuMG63EYU7UrVLUp0B8YCPzGjSBEJOQ06oqI2P91U2vsl8kYL6jqLuALoJeIXCki60XkkIgsEJEeJ8qJyEMisktEjojIZhG5QERGAr8GbhSRoyKyxinbXEReEZFsp86fRCTY2XeriHwnIs+JyAHg9862xeU+a6iIrBCRPOd5aLl9C0TkzyLyHVAAdKqTH5RpECxxGOMFEYkHLgWOAO8C9wOxeE5ffSoiYSLSDbgHGKiqkcAlQIaq/hv4C/CeqjZV1T7OYd8ASoAuQD/gYuCOch87GEgHWgF/rhBPNPA5MAVoCfwN+FxEWpYrdgswCYgEdtTCj8EYwBKHMdX5WEQOAYuBb4ENwOeqOk9Vi4FngMbAUDzXQhoBPUUkVFUzVHVbZQcVkdbAKOB+Vc1X1RzgOWBMuWK7VfUfqlqiqscqHOIyYKuqvunsfxfYBFxRrszrqrre2V98mj8HY/7DEocxVbtKVaNUtaOq3gW0pdxf76paBmQC7VQ1DU9P5PdAjojMFJG2JzluRyAUyHZOeR0C/g9P7+KEzCri+p84HDuAdl7WN+aUWeIwpmZ24/nSBzwXnoF4YBeAqr6jqsOcMgo86RStOHwxEzgOxDiJKUpVm6nqGeXKVDXk8X/icHQ4EYcX9Y05ZZY4jKmZWcBlzkXvUODneBLA9yLSTUTOF5FGQCFwDM/pK4C9QMKJ0U2qmg18CTwrIs1EJEhEOovICC/jmAN0FZGbRCRERG4EegKf1VpLjTkJSxzG1ICqbgZuBv4B7MNzTeEKVS3Cc33jCWf7HjynnX7tVH3fed4vIj84r8cDYXiumxwEPgDivIxjP3A5nsS1H/gVcLmq7jud9hnjDbsB0BhjTI1Yj8MYY0yNWOIwxhhTI5Y4jDHG1IglDmOMMTVyyhOnBZKYmBhNSEhwOwxjjAkoK1eu3KeqsRW3N4jEkZCQQEpKitthGGNMQBGRSuc4s1NVxhhjasQShzHGmBqxxGGMMaZGLHEYY4ypEUscxhhjasQShzHGmBqxxGGMMaZGGsR9HMa4paxMyT16nN2HjnGwoIiD+cXkHSumqLSMopIySsqUsGAhLCSI8NBgoiLCaBERSssmjWjXojHNG4e63QRjfsQShzG1ZE9eIaszD7Fpz2E2Zh8mLecoWQePcbyk7JSP2bxxKB2iI+jaOpIecZH0jGtG7/gomjay/7rGPfbbZ8wp2nu4kG8357IkfT8rMg6QdfAYACKQ2LIJXVtHckGP1sS3aEzbqMa0bNqI6IgwmjUOoVFIMGEhQQQJlJQpRSVlHCsu5VBBMQcLisg9cpysgwVkHjhGxv58Fm7N5cMfsgAIEujZthnJHaMZnhTDWZ1bEhFm/5VN3bHfNmNqYMveI3yWms1XG/ayIfswADFNGzEosQW3n51Ivw5RdG/TjMZhwV4fMzRYCA0OokmjEGKaNjppuX1Hj7N+92FW7jhISsYB3luRyevfZxAWEsTgxGhG9mrDyDPa0LKKYxhTGxrECoDJyclqc1WZU7X3cCEfrMzik9W72LL3KEECyQnRnNetFed2i6V7m0hEpM7jOl5SyortB1mwOYdvNuWQvi+f4CBhaOeWXNO/HaN6xREe6n0CM6YiEVmpqsk/2m6Jw5gfKytT5m/O4Z1lO5m/OYcyhYEJLbiiT1tG9mpDq8hwt0P8H6rKpj1H+Cx1N5+uyWbngQIiw0O4qm87bjmrI11bR7odoglAljgscRgvFBSV8OHKLF79LoPt+/KJjWzE9QPac0NyPAkxTdwOzytlZcrS7fuZtSKTOev2UFRSxvCkGCYOS2RE11hXekcmMFnisMRhqnCksJgZS3bwz0XpHCwopk98FBOHJTKqVxtCgwP3dqeD+UW8s3wnb3yfQc6R4/SIa8Z953fhkjPaEBRkCcRUzRKHJQ5TiYKiEl77LoNpC9PJO1bMed1iufu8Lgzo2KJe/WVeVFLG7DW7eWl+Gun78unWOpIHLurKJWe0rlftNLXLEoclDlNOSWkZH6zM4m/ztpBz5DgXdG/FfRck0Sc+yu3QfKq0TPksdTdTvt7Kttx8BnRswa8v7c6AjtFuh2b8kCUOSxzGsWTbfn43ex1b9h6lf4cofn1pD5ITGtYXZ0lpGe+vzOI5J3FedmYcj17Wg7ZRjd0OzfiRkyUOn568FZGRIrJZRNJE5OFK9ouITHH2p4pI/3L7XhWRHBFZd5Jj/0JEVERifNkGU3/sySvk3ndXMXb6UgqKSnl5XH8+/OnQBpc0AEKCgxg7qAMLfnkuD1zYla827uWCZ7/lpQVpHC8pdTs84+d8ljhEJBh4ERgF9ATGikjPCsVGAUnOYxLwcrl9rwMjT3LseOAiYGftRm3qo7Iy5c2lO7jwb98yd/0efnZBEl89OIJRZ8Y1+PP7EWEh/OxCz89jeFIMT/17M5dNWczKHQfdDs34MV/2OAYBaaqarqpFwExgdIUyo4EZ6rEUiBKROABVXQgcOMmxnwN+BdT/82zmtGzfl8+Y6Uv57cfr6BsfxbwHzuGBi7rajXEVxEdHMG18Mq/dOpCC4yVcN/V7Hv90PQVFJW6HZvyQLxNHOyCz3PssZ1tNy/wPEbkS2KWqa6opN0lEUkQkJTc31/uoTb2gqsxYksGo5xeyMfswT13bmzcnDqJjy8C4F8Mt53VvxZcPjuCWIR157bsMLn1+ET/stN6H+V++TByVnQOo2EPwpsx/C4tEAI8Cj1X34ao6TVWTVTU5Nja2uuKmHsk5Ushtr6/gsU/WMzixJV89OIIbBsY3+NNS3mraKIQ/jO7FzElDKC5Vrp+6hOfmbaG49NRn+TX1iy8TRxYQX+59e2D3KZQprzOQCKwRkQyn/A8i0ua0ozX1wrdbchn590Us2bafP4w+g9dvG0jrZv41PUigGNKpJV/cP5zRfdry/NdbueH/lrDr0DG3wzJ+wJeJYwWQJCKJIhIGjAFmVygzGxjvjK4aAuSpavbJDqiqa1W1laomqGoCnsTTX1X3+KgNJkCUlJbx9NxNTHh1ObFNG/H5fcMYf1aC9TJOU7PwUP52Y1/+MbYfW/ce5bIpi/hm0163wzIu81niUNUS4B5gLrARmKWq60VksohMdorNAdKBNGA6cNeJ+iLyLrAE6CYiWSIy0VexmsC27+hxxv1zGS/O38aNyfF8fPfZdGllk/rVpiv6tOXTe4fRtnljbn89hSf/vYnSMhub0lDZDYAmoK3NymPSmykcLCjiz1edybUD2rsdUr1WWFzK459u4N3lOxnRNZYpY/rRPMKWt62vXLkB0Bhf+mhVFtdN/Z4gET6YPNSSRh0IDw3mr9ecyV+uPpPvt+1j9IuL2bL3iNthmTpmicMEnLIy5em5m3jgvTX06xDF7HvOple75m6H1aDcNLgDMycNIb+olGtf+p6FW2zIe0NiicMElMLiUu6buYoX529jzMB43pw42JZKdcmAjtHMvuds2kdHcNvrK3h72Q63QzJ1xBKHCRgH8ou4afpSPkvN5pFR3fnrNWcG9FoZ9UFc88a8P/kszkmK4dGP1vGXORsps4vm9Z79rzMBIetgAddN/Z51uw/z0rj+3Dmisw219RNNG4UwfXwytwzpyLSF6fz8/TV2s2A9F+J2AMZUZ8veI4x/ZTn5RSW8efsgBndq6XZIpoKQ4CD+MPoMWjdrxDNfbuFAfhEv39yfiDD7iqmPrMdh/NqqnQe5fuoSylSZdedZljT8mIhwz/lJ/PWaM1m0NZebpi8jr6DY7bCMD1jiMH5rWfp+bv7nMpo3DuXDnw6lR1wzt0MyXhg7qAMvjRvAht2HGTt9KfuPHnc7JFPLLHEYv7Roay4TXltOm+bhzLrzLOKjI9wOydTAyF5tmDZ+ANtyjzJm2lJyDhe6HZKpRZY4jN+ZvzmHia+nkNCyCe/deRZtmtskhYHo3G6teO22gew6dIwbpy1lryWPesMSh/ErC7fkcuebK0lq3ZSZk4YQY/doBLShnWN4c+Igcg4XMnb6UnKOWPKoDyxxGL+xeOs+fjIjhc6xTXlr4mCiIsLcDsnUggEdo3n99kHsySvkpunLyD1i1zwCnSUO4xeWpe/njhkrSIxpwtt3DKZFE0sa9cnAhGheu3Uguw4eY9w/l3Iwv8jtkMxpsMRhXJeadYiJb6TQLqoxb90xmGhLGvXS4E4teeXWZDL2FzDhteUcKbShuoHKEodx1da9R5jw6nKiIkJ5+w67plHfDe0cw8vj+rNh92HueCOFwuJSt0Myp8ASh3FN5oECxv1zGSHBQbw1cbCNnmogLujRmmdv6MPyjAPc9fYPNj1JALLEYVxxIL+I8a8up7C4lDcnDiIhponbIZk6NLpvO/44uhffbMrhkX+tpSEsKFef2EQyps4VFJVw++sr2H3oGG/dMZjubeyO8Ibo5iEdyTlynClfb6VNs3B+cUk3t0MyXvJpj0NERorIZhFJE5GHK9kvIjLF2Z8qIv3L7XtVRHJEZF2FOk+LyCan/EciEuXLNpjaVVJaxr3vrCI16xDPj+nHwIRot0MyLnrgwiTGDIznhflpvLnU1vMIFD5LHCISDLwIjAJ6AmNFpGeFYqOAJOcxCXi53L7XgZGVHHoe0EtVewNbgEdqN3LjK6rK72av5+tNOfxhdC9G9mrjdkjGZSLCn67qxYU9WvHYJ+v4asNet0MyXvBlj2MQkKaq6apaBMwERlcoMxqYoR5LgSgRiQNQ1YXAgYoHVdUvVbXEebsUsIWmA8Qri7fz9rKdTB7RmZuHdHQ7HOMnQoKDmDK2H73aNue+matYtyvP7ZBMNXyZONoBmeXeZznbalqmKrcDX1S2Q0QmiUiKiKTk5tp6yG6bu34Pf56zkUvPbMOv7Fy2qSAiLIRXJiQT1TiUiW+sYE+eTU3iz3yZOCpbnq3i0AlvylR+cJFHgRLg7cr2q+o0VU1W1eTY2FhvDml8ZN2uPO6fuZre7aP42w19CQqylfvMj7VqFs4rtw4k/3gpt7++goKikuorGVf4MnFkAfHl3rcHdp9CmR8RkQnA5cA4tXF8fi3nSCE/mZFCdJMw/jk+mfDQYLdDMn6sR1wz/nFTPzbtOczPZ62x9cv9lC8TxwogSUQSRSQMGAPMrlBmNjDeGV01BMhT1eyqDioiI4GHgCtVtcAXgZvacbyklMlvruRQQTHTxg8gNtLuCjfVO69bKx4Z1YMv1u3hH9+kuR2OqYTPEodzAfseYC6wEZilqutFZLKITHaKzQHSgTRgOnDXifoi8i6wBOgmIlkiMtHZ9QIQCcwTkdUiMtVXbTCnTlX5zUfr+GHnIZ65vg9ntG3udkgmgNwxPJFr+rfjua+28O91Vf4taVzg0xsAVXUOnuRQftvUcq8VuPskdceeZHuX2ozR+MYb32fw/sos7ju/C5f1jnM7HBNgRIS/XH0m6bn5PDhrDYkxTenWJtLtsIzDphwxtW5FxgH+9PlGLuzRmvsv7Op2OCZAhYcG83+3DKBJoxAmv7WSwzabrt+wxGFqVc7hQu56+wfioyP42419bASVOS2tm4Xz0rj+ZB4o4MH37GK5v7DEYWpNUUkZd739A0cLS5h68wCahYe6HZKpBwYmRPPoZT34auNeXlpgF8v9gSUOU2v++sVGUnYc5Knretv5aFOrbh2awOi+bXl23hYWbbUbet1micPUin+vy+a17zK4dWgCV/Rp63Y4pp4REf56zZkktWrK/TNXs/ew3VnuJksc5rTt2J/PL99PpU98FL++tIfb4Zh6KiIshJfG9aegqJR731lFiS0A5RpLHOa0FBaXcvc7PyACL4ztR1iI/UoZ3+nSKpK/XNOL5RkH+Nu8LW6H02DZ/3JzWv46ZyPrdh3m2Rv6Eh8d4XY4pgG4ul97xgyM56UF2/h2i13vcIMlDnPK5m3YyxtLdnD72Ylc1LO12+GYBuT3V55Bt9aR/HzWanKPHHc7nAbHEoc5JXvyCvnVB2s4o20zHhpl06SbuhUeGsyUsf04UljCz9+3+zvqmiUOU2OlZcoD763meEkZ/xjbj0YhNuOtqXvd2kTy28t7snBLLq8s3u52OA2KJQ5TY1O/3caS9P08fuUZdIpt6nY4pgEbN7gDl5zRmqfmbmJtlq0cWFcscZgaWZuVx3PztnB57ziuG2Cr9hp3iQhPXtublk0acf97qzhWVOp2SA2CJQ7jtWNFpdz/3ipimjbiz1ediYjNQ2XcFxURxjPX92Fbbj5PfLHR7XAaBEscxmtPfLGRbbn5PHtDH5pH2DxUxn8MS4rhtrMTeGPJDhZsznE7nHrPEofxyoLNOf8Zent2lxi3wzHmRx4a2Z2kVk355QepHMgvcjuces0Sh6lWXkExD32YStfWTfnVSBt6a/xTeGgwfx/Tl0MFRfz2k3Vuh1Ov+TRxiMhIEdksImki8nAl+0VEpjj7U0Wkf7l9r4pIjoisq1AnWkTmichW57mFL9tg4Pefrmff0SKevb4v4aE29Nb4rzPaNue+85P4PDWbz1J3ux1OveWzxCEiwcCLwCigJzBWRHpWKDYKSHIek4CXy+17HRhZyaEfBr5W1STga+e98ZG56/fw0apd3H1eF85sb+uGG//303M707t9c3778Tq7q9xHfNnjGASkqWq6qhYBM4HRFcqMBmaox1IgSkTiAFR1IXCgkuOOBt5wXr8BXOWL4A0cyC/i0Y/W0jOuGfecZ0u9m8AQEhzEs9f3Ib+olEc/Wouq3VVe23yZONoBmeXeZznbalqmotaqmg3gPLeqrJCITBKRFBFJyc21idBOxWOfrCPvWDHP3tDHZr01ASWpdSQ/v6grX27Yyyer7ZRVbfPlt0Flg/wrpn5vypwSVZ2mqsmqmhwbG1sbh2xQvly/h89Ss7n3/CR6xDVzOxxjauyO4Z3o1yGKxz9dz76jdsqqNvkycWQB8eXetwcqpn5vylS098TpLOfZBm3Xsrxjxfzm43X0iGvGT8/t7HY4xpyS4CDhqWt7k3+8lN/NXu92OPWKLxPHCiBJRBJFJAwYA8yuUGY2MN4ZXTUEyDtxGqoKs4EJzusJwCe1GbSBP3++gf35RTx9XW9Cg+0UlQlcSa0juff8Lnyems3c9XvcDqfe8Nm3gqqWAPcAc4GNwCxVXS8ik0VkslNsDpAOpAHTgbtO1BeRd4ElQDcRyRKRic6uJ4CLRGQrcJHz3tSSRVtzmZWSxaRzOtGrnY2iMoFv8rmd6RHXjN98vI68gmK3w6kXpCGMOEhOTtaUlBS3w/B7BUUlXPzcQsKCg5jzs+F2z4apN9btymP0i99x/YD2PHFtb7fDCRgislJVkytut/MQ5j+e/2orWQeP8ddrzrSkYeqVXu2aM3FYIjNXZLIsfb/b4QQ8SxwGgPW78/jn4u2MGRjP4E4t3Q7HmFp3/4VJtG/RmEc+WsvxEpt+/XRY4jCUlimP/GstLSLCeGRUD7fDMcYnIsJC+NNVvUjPzeflBdvcDiegeZU4RORyEbEkU0+98X0GqVl5PHZFT5su3dRr53ZrxZV92vLS/G2k5RxxO5yA5W0yGANsFZGnRMT+JK1H9uQV8uyXmxnRNZYrese5HY4xPvfby3vSOCyY33y8zqYjOUVeJQ5VvRnoB2wDXhORJc6UHpE+jc743B8/30BJmfLH0b1sRT/TIMRGNuJXI7uxNP0AH6/e5XY4Acnr00+qehj4EM9khXHA1cAPInKvj2IzPrZwSy6fp2Zz93ld6NAywu1wjKkzYwd2oE98FH/+fCN5x+zejpry9hrHlSLyEfANEAoMUtVRQB/gFz6Mz/hIYXEpj32yjsSYJtw5opPb4RhTp4KChD9f1YsD+UU8M3ez2+EEHG97HNcBz6lqb1V9WlVzAFS1ALjdZ9EZn/m/b9PJ2F/AH0afQaMQu2fDNDy92jVn/FkJvLVsB6lZh9wOJ6B4mziynfUx/kNEngRQ1a9rPSrjU5kHCnhpQRqX9Y5jeJLNHGwargcv7kpM00b89pP1lJXZhXJveZs4Lqpk26jaDMTUnT9+toEgEX5zmQ2QMw1bs/BQHhnVnTWZh/hgZZbb4QSMKhOHiPxURNYC3Z01wU88tgOpdROiqU3fbsnlyw17ufeCLsQ1b+x2OMa47up+7RjQsQVP/nuTXSj3UnU9jneAK/BMXX5FuccAZ4iuCSBFJWU8Pns9iTFNmDgs0e1wjPELIsLjV57BgYIinpu3xe1wAkJ1iUNVNQO4GzhS7oGIRPs2NFPbXv1uO+n78nnsip52QdyYcnq1a85Ngzrw5tIdbNpz2O1w/J43PQ6AlUCK87yy3HsTIHIOFzLl661c2KMV53WrdJl2Yxq0X1zcjcjwEB6fvcHuKK9GlYlDVS93nhNVtZPzfOJhg/8DyFNzN1NcWsZvLuvpdijG+KUWTcJ48KKuLEnfz9z1e90Ox6+FVLVTRPpXtV9Vf6jdcIwvpGZ5RozceU4nEmKauB2OMX7rpkEdeGvpDv4yZyPndY+1U7onUd2pqmereDxT3cFFZKSIbBaRNBF5uJL9IiJTnP2p5RPVyeqKSF8RWSoiq0UkRUQGedfUhklV+cOnG4hpGsY953dxOxxj/FpIcBC/vbwnOw8U8OriDLfD8VtV9jhU9bxTPbCIBAMv4rkHJAtYISKzVXVDuWKjgCTnMRh4GRhcTd2ngMdV9QsRudR5f+6pxlnffZqaTcqOgzxxzZlEhtuU6cZUZ3hSLBf2aMUL32zl2gHtaBUZ7nZIfqe6+zjOd56vqexRzbEHAWmqmq6qRXgmRxxdocxoYIZ6LAWiRCSumroKNHNeNwd2e9nWBqewuJQnv9hEz7hmXJ8c73Y4xgSMRy/rSVFpGc/OteG5lamyxwGMwDOx4RWV7FPgX1XUbQdklnufhadXUV2ZdtXUvR+YKyLP4El8Q6tsQQP2yuLt7Dp0jGeu70NwkE2Zboy3EmOaMP6sBF79bju3np1Aj7hm1VdqQKo7VfU75/m2Uzh2Zd9UFce4naxMVXV/Cjygqh+KyA3AK8CFP/pwkUnAJIAOHTp4G3O9se/ocV5esI0Le7TmrM62hrgxNXXv+V34YGUWf5mzkRm3D7L1asrxdlr1ls5F7B9EZKWIPC8i1X0bZQHlz4+058enlU5Wpqq6E/hvT+d9PKe1fkRVp6lqsqomx8Y2vIn8npu3hcLiUh65tLvboRgTkKIiwrjvgiQWbd3Hgi25bofjV7yd5HAmkAtci2eK9VzgvWrqrACSRCRRRMLwLD87u0KZ2cB4Z3TVECBPVbOrqbsbzyk0gPOBrV62ocHYuvcIM1dkMm5wBzrHNnU7HGMC1i1DOtKxZQR/+XwjJaVlbofjN7xNHNGq+kdV3e48/gREVVVBVUuAe4C5wEZglqquF5HJIjLZKTYHSAfSgOnAXVXVder8BHhWRNYAf8E5HWX+669fbCIiNJj7LkhyOxRjAlpYSBAPj+zO1pyjzEqx2XNPqO7i+AnzRWQMMMt5fx3weXWVVHUOnuRQftvUcq8VzzxYXtV1ti8GBngZd4OzZNt+vtmUw0Mju9OyaSO3wzEm4I3s1Ybkji147qstXNWvLRFh3n5t1l/VDcc9IiKHgTvxzFtV5DxmAg/4PjxTE6rKE19sJK55OLedneB2OMbUCyLCI5d2J/fIcf65aLvb4fiF6uaqilTVZs5zkKqGOI8gVbXxaX7m87XZrMnK48GLuhIealMlGFNbBnSM5pIzWvN/325j39HjbofjOm+vcSAiLURkkIicc+Lhy8BMzRSXlvH03M10ax3JNf3bux2OMfXOLy/pTmFJGS98k+Z2KK7zdjjuHcBCPBerH3eef++7sExNvbt8Jzv2F/DQqG52s58xPtClVVNuSI7n7WU72LE/3+1wXOVtj+NnwEBghzN/VT88Q3KNH8g/XsKUr7cyODHa1towxoceuDCJkKAgnvmyYU9F4m3iKFTVQgARaaSqm4BuvgvL1MSri7ez72gRD43qbne3GuNDrZqFc/uwBD5ds5v1u/PcDsc13iaOLBGJAj4G5onIJ9jkgn7hYH4R0xamc1HP1vTv0MLtcIyp9yad05nmjUN5Zu5mt0NxjVeJQ1WvVtVDqvp74Ld45oe6yodxGS9N/XYbR4tK+MXF1gE0pi40bxzK5BGdmb85lxUZB9wOxxU1GVXVX0TuA3oDWc5058ZFe/IKef37DK7u245ubSLdDseYBuPWoQm0imzEU//e1CDXJ/d2VNVjwBtASyAGeE1EfuPLwEz1pnyzlTJVHrioq9uhGNOgNA7zTOmzIuMgCzY3vHFC3vY4xgIDVfV3zlTrQ4BxvgvLVGfH/nxmrchkzMAOxEdHuB2OMQ3OjQPj6dgygqfnbqasrGH1OrxNHBlA+fUTGwHbaj0a47Xnv95KcJBwr60jbowrQoOD+NkFSWzIPszc9XvcDqdOVTdX1T9EZApwHFgvIq+LyGvAOuBoXQRofiwt5ygfr9rF+LM60qqZrYdsjFtG921H59gmPPfVFkobUK+jumkeU5znlcBH5bYv8Ek0xit//2oL4aHBTB7R2e1QjGnQgoOEBy7qyj3vrOKz1N2M7tvO7ZDqRHVLx75x4rWzoNKJq7CbVbXYl4GZym3ac5jPUrO5+7zONm26MX7g0l5xdG+Txt+/2splZ8YREuz1YNWA5e2oqnPxrLT3IvASsMUmOXTHc/O2EBkewqTh1tswxh8EBQkPXtSV7fvy+WjVLrfDqRPepsZngYtVdYSqngNcAjznu7BMZdbtymPu+r3cMawTzSNC3Q7HGOO4qGdrerdvzpRvtlLcAJaY9TZxhKrqf+6vV9UtgH1z1bHnv95Ks/AQbhuW4HYoxphyRIT7L0wi88AxPvqh/vc6vE0cK0XkFRE513lMx3PBvEoiMlJENotImog8XMl+EZEpzv5UEenvTV0RudfZt15EnvKyDQFt3a485m3Yyx3DO9Es3HK2Mf7mvG6t6N2+Of+YX/97Hd4mjsnAeuA+PFOsb3C2nZSIBOO5JjIK6AmMFZGeFYqNApKcxyTg5erqish5wGigt6qeATzjZRsC2onexq22JKwxfqkh9TqqXXVdRIKAlaraC/hbDY49CEhT1XTnODPxfOFvKFdmNDBDPZO9LBWRKBGJAxKqqPtT4AlVPQ6gqjk1iCkgnehtPHhRV+ttGOPHyvc6ru7fjtB6OsKq2lapahmwRkQ61PDY7YDMcu+znG3elKmqbldguIgsE5FvRWRgZR8uIpNEJEVEUnJzA3suGettGBMYGkqvw9t0GIfnzvGvRWT2iUc1dSpbUajirZUnK1NV3RCgBZ75sn4JzJJKVi9S1WmqmqyqybGxsdWE6r/W7/b0NiYOs2sbxgSC8r2Oknp6raPaU1WOx0/h2FlAfLn37fnx4k8nKxNWRd0s4F/O6a3lIlKGZ8bewO5WnMQL36QR2ch6G8YEChHh3vOT+MmMFD5ZvZtrB7R3O6RaV91cVeEicj9wPdAd+E5Vvz3xqObYK4AkEUl07jofA1TspcwGxjujq4YAeaqaXU3dj4Hznfi64kky+7xrbmDZsvcIX6zbw61nJ9C8sfU2jAkUF/ZoRY+4Zrw4P61ezmFV3amqN4BkYC2eEU7PentgVS0B7gHmAhuBWaq6XkQmi8iJEVlzgHQgDZgO3FVVXafOq0AnEVkHzAQmaD1dSeXF+Wk0CQvm9rMT3Q7FGFMDnl5HF9L35TNnbbbb4dQ6qeo7V0TWquqZzusQYLmq9j9pBT+VnJysKSkp1Rf0I9v35XPBswv4yTmdeGRUD7fDMcbUUFmZcvHfFxIswhc/G05QUGWXbv2biKxU1eSK26vrcfxnIkOnF2DqyIvz0wgLCeKOYZ3cDsUYcwqCgoR7zuvC5r1H+HLDXrfDqVXVJY4+InLYeRwBep94LSKH6yLAhijzQAEfrdrF2EEdiI20GXCNCVSX944joWUEL8zfWq/WJq8ycahqsKo2cx6RqhpS7nWzugqyoZm2MJ0ggUnnWG/DmEAWEhzEXed2Yd2uwyzcWn/G8NTP2xoDWM6RQt5LyeTa/u2Ja97Y7XCMMafpqn7tiGsezovz09wOpdZY4vAzry7OoKS0jDttdT9j6oWwkCB+MrwTy7cfICXjgNvh1ApLHH4kr6CYt5bu4LLebUmMaeJ2OMaYWjJmUDzRTcJ4acE2t0OpFZY4/MiMJRkcPV7CXedab8OY+iQiLITbz07gm005bNgd+OOKLHH4iYKiEl77PoPzu3vuODXG1C+3nJVA00YhvLQg8K91WOLwE7NWZHIgv8h6G8bUU80bh3LzkI7MWZvNjv35bodzWixx+IHi0jKmL9rOwIQWJCdEux2OMcZHbj87gZCgIKYvSnc7lNNiicMPfJ6aza5Dx7jzHOttGFOftWoWzjX92/F+Shb7jh53O5xTZonDZarK1G+3kdSqKed3b+V2OMYYH/vJOZ0oKi3jje8z3A7llFnicNm3W3LZtOcIk87pFJCToBljaqZzbFMu7tmaGUt2kH88MKcAtMThsqnfbiOueTij+1ZcVdcYU19NHtGZvGPFvLt8p9uhnBJLHC5ak3mIpekHmDgskbAQ+6cwpqHo16EFgxOjeWXxdooDcHlZ+7Zy0bRF6USGh3DjwPjqCxtj6pU7R3QiO6+Qz1MDb6EnSxwuyTxQwBdrs7lpcAciw21ZWGMamnO7tqJLq6ZMW5gecFOu+zRxiMhIEdksImki8nAl+0VEpjj7U0Wkfw3q/kJEVERifNkGX3ll8XaCRLhtqC0La0xDFBQk/GR4IhuyD/P9tv1uh1MjPkscIhIMvIhnrfKewFgR6Vmh2CggyXlMAl72pq6IxAMXAQF5ZelQQRGzUjK5sm9b2jQPdzscY4xLRvdtR0zTRkxbGFg3BPqyxzEISFPVdFUtAmYCoyuUGQ3MUI+lQJSIxHlR9zngV0Bg9e8cby/bSUFRKT8Zbgs1GdOQhYcGc+vQjny7JZfNe464HY7XfJk42gGZ5d5nOdu8KXPSuiJyJbBLVddU9eEiMklEUkQkJTc399Ra4APHS0p5/fsMhifF2GSGxhjGDe5I49DggJqGxJeJo7K72Sr2EE5WptLtIhIBPAo8Vt2Hq+o0VU1W1eTY2Nhqg60rs1fvJvfIcVsW1hgDQIsmYdyQ3J5PVu8i53Ch2+F4xZeJIwsoP860PbDbyzIn294ZSATWiEiGs/0HEWlTq5H7iKryyuLtdG8TybAuAXlN3xjjA7cPS6SkTHlz6Q63Q/GKLxPHCiBJRBJFJAwYA8yuUGY2MN4ZXTUEyFPV7JPVVdW1qtpKVRNUNQFPgumvqnt82I5a8/22/Wzac4Tbz05ExKYXMcZ4dGzZhAt7tOatpTsoLC51O5xq+SxxqGoJcA8wF9gIzFLV9SIyWUQmO8XmAOlAGjAduKuqur6Kta68sng7MU3DuLJvW7dDMcb4mYnDEjlYUMy/ftjldijVCvHlwVV1Dp7kUH7b1HKvFbjb27qVlEk4/Sjrxrbco3yzKYf7L0wiPDTY7XCMMX5mcGI0vdo149XvtjNmYLxfT3pqd47XkVcXbycsJIibh3R0OxRjjB8SESYOSyQt5yjfbvWfkaCVscRRBw7mF/HhD1lc1bctMU0buR2OMcZPXXZmW1pFNuLVxdvdDqVKljjqwLsrdlJYXMbtw2x6EWPMyYWFBDFhaAKLtu5jy17/vSHQEoePFZeW8eaSHQzt3JLubeyGP2NM1cYO6kCjkCBe+y7D7VBOyhKHj81dv4fsvEJuO9t6G8aY6kU3CeOqvu34aFUWhwqK3A6nUpY4fOz17zLoEB1h64kbY7x227AECovLmLkis/rCLrDE4UNrs/JI2XGQCUMTCPbjoXXGGP/SvU0zzurUkhnfZ1DihysEWuLwode+206TsGCuT27vdijGmABz29kJ7M4r5MsNe90O5UcscfhIzpFCPk3dzXUD2tPMVvgzxtTQBT1aEx/dmNe+87+huZY4fOTdZZkUlyoThia4HYoxJgAFBwkTzkpgRcZB1u3Kczuc/2GJwweKS8t4e9kORnSNpVNsU7fDMcYEqOsHxNM4NJg3l/jXrLmWOHxg7vo95Bw5zoShNr2IMebUNY8I5ap+7fh49S4O5vvP0FxLHD4w4/sddIiOYERXG4JrjDk9E4Z25HhJGbNS/GdoriWOWrZh92GWZxxg/FkdbQiuMea0dW/TjMGJ0by5dAelZRUXUXWHJY5aNmNJBuGhQVw/IL76wsYY44UJQxPIOniM+Zty3A4FsMRRqw4VFPHx6l1c3a8dzSNsCK4xpnZc1LM1bZqF88aSDLdDASxx1KoPVmZRWFzGLUMS3A7FGFOPhAYHMW5wBxZt3ce23KNuh+PbxCEiI0Vks4ikicjDlewXEZni7E8Vkf7V1RWRp0Vkk1P+IxGJ8mUbvFVWpry1dAcDE1rQs63NgmuMqV03DoonNFh4e+lOt0PxXeIQkWDgRWAU0BMYKyI9KxQbBSQ5j0nAy17UnQf0UtXewBbgEV+1oSYWp+0jY3+BrfBnjPGJVpHhjOwVx/srMykoKnE1Fl/2OAYBaaqarqpFwExgdIUyo4EZ6rEUiBKRuKrqquqXqnrip7YU8IuJoGYs2UFM0zBG9mrjdijGmHrqliEdOVJYwqdrdrsahy8TRzug/MDjLGebN2W8qQtwO/DFaUd6mrIOFvDNpr3cODCeRiHBbodjjKmnBia0oFvrSGYs2YGqe0NzfZk4KruJoWJLT1am2roi8ihQArxd6YeLTBKRFBFJyc317cLv7y73nHMcO6iDTz/HGNOwiQg3n9WR9bsPszrzkGtx+DJxZAHlb2ZoD1TsX52sTJV1RWQCcDkwTk+SdlV1mqomq2pybGzsKTeiOsdLSnlvRSbnd29N+xYRPvscY4wBuLpfO5qEBfPmUvfmr/Jl4lgBJIlIooiEAWOA2RXKzAbGO6OrhgB5qppdVV0RGQk8BFypqgU+jN8r/163h31Hi7jlLLsobozxvaaNQrimf3s+S83mgEvzV/kscTgXsO8B5gIbgVmqul5EJovIZKfYHCAdSAOmA3dVVdep8wIQCcwTkdUiMtVXbfDG28t20iE6guFdYtwMwxjTgNw8pCNFJWV8uDLLlc8P8eXBVXUOnuRQftvUcq8VuNvbus72LrUc5inbuvcIy7cf4OFR3QmyeamMMXWkW5tIkju24J3lO7ljeCIidfv9Y3eOn4Z3lu8kNFi4foBfjAg2xjQg44Z0YPu+fJZs21/nn22J4xQdKyrlw5VZjOwVR8umjdwOxxjTwIzqFUdURChvL6v7O8ktcZyiz1J3c7iwhHGDbQiuMabuhYcGc13/9s7CcYV1+tmWOE7RO8t30jm2CYMTo90OxRjTQI0d3IGSMuX9lLq9SG6J4xSs353Hqp2HuGlwxzq/KGWMMSd0jm3K0M4teXf5zjpd5MkSxyl4d/lOwkKCuLZ/ZbOgGGNM3blpcAeyDh5j4VbfzpBRniWOGiooKuHjVbu5/Mw4oiLC3A7HGNPAXdyzDS2bhDFzed1dJLfEUUOfpWZz9HgJY2xeKmOMHwgLCeK6Ae35amMOOYfr5iK5JY4aete5KD4woYXboRhjDAA3DoyntEx5v47uJLfEUQOb9hxm1c5DjB3UwS6KG2P8RqfYpgzpFM3MFTspq4OL5JY4amDm8kzCgoO4pr/dKW6M8S9jB3Ug88Axvtu2z+efZYnDS4XFpfzrhyxG9mpDdBO7KG6M8S+XnNGGqIhQZi7PrL7wabLE4aU5a7M5XFhiizUZY/xSeGgw1zp3kuceOe7Tz7LE4aWZKzJJaBnBkE52p7gxxj+NHRRPSZny0SrfXiS3xOGF9NyjLN9+gBsH2kVxY4z/6tIqkgEdWzBzRaZP1yS3xOGFWSlZBAcJ1w6wO8WNMf7txuR40nPzWbnjoM8+wxJHNYpLy/hgZRbnd29Fq8hwt8MxxpgqXdY7jiZhwcxc4buL5JY4qjF/Uw77jh7nxuR4t0MxxphqNWkUwhV92vJ5ajZHCot98hk+TRwiMlJENotImog8XMl+EZEpzv5UEelfXV0RiRaReSKy1Xn26S3c763IpFVkI87tFuvLjzHGmFpz48B4jhWX8umabJ8c32eJQ0SCgReBUUBPYKyI9KxQbBSQ5DwmAS97Ufdh4GtVTQK+dt77xJ68QuZvzuH65PaEBFvnzBgTGPrGR9GtdSTvpfjmdJUvvw0HAWmqmq6qRcBMYHSFMqOBGeqxFIgSkbhq6o4G3nBevwFc5asGfPhDFmUKN9hpKmNMABERbhgYz5rMQ2zac7jWj+/LxNEOKJ/uspxt3pSpqm5rVc0GcJ5bVfbhIjJJRFJEJCU399TmqY+NbMSNyfF0bNnklOobY4xbru7XjnO6xlJcUvvDckNq/Yj/VdkNDxVbcLIy3tStkqpOA6YBJCcnn9JP7obkeOttGGMCUnSTMGbcPsgnx/ZljyMLKP+t2x7Y7WWZqurudU5n4Tzn1GLMxhhjquHLxLECSBKRRBEJA8YAsyuUmQ2Md0ZXDQHynNNPVdWdDUxwXk8APvFhG4wxxlTgs1NVqloiIvcAc4Fg4FVVXS8ik539U4E5wKVAGlAA3FZVXefQTwCzRGQisBO43ldtMMYY82Piy/lM/EVycrKmpKS4HYYxxgQUEVmpqskVt9vNCcYYY2rEEocxxpgascRhjDGmRixxGGOMqZEGcXFcRHKBHadYPQbw/erv/sXa3DBYmxuG02lzR1X90QyvDSJxnA4RSalsVEF9Zm1uGKzNDYMv2mynqowxxtSIJQ5jjDE1YomjetPcDsAF1uaGwdrcMNR6m+0ahzHGmBqxHocxxpgascRhjDGmRixxOERkpIhsFpE0EfnROubO1O9TnP2pItLfjThrkxdtHue0NVVEvheRPm7EWZuqa3O5cgNFpFRErqvL+GqbN+0VkXNFZLWIrBeRb+s6xtrmxe91cxH5VETWOG2+zY04a5OIvCoiOSKy7iT7a/f7S1Ub/APP1O3bgE5AGLAG6FmhzKXAF3hWJxwCLHM77jpo81CghfN6VENoc7ly3+CZ9v86t+P28b9xFLAB6OC8b+V23HXQ5l8DTzqvY4EDQJjbsZ9mu88B+gPrTrK/Vr+/rMfhMQhIU9V0VS0CZgKjK5QZDcxQj6VA1ImVCANUtW1W1e9V9aDzdimelRgDmTf/zgD3Ah8S+KtLetPem4B/qepOAFVtCG1WIFJEBGiKJ3GU1G2YtUtVF+Jpx8nU6veXJQ6PdkBmufdZzraalgkkNW3PRDx/sQSyatssIu2Aq4GpdRiXr3jzb9wVaCEiC0RkpYiMr7PofMObNr8A9MCzHPVa4GeqWlY34bmmVr+/fLYCYICRSrZVHKfsTZlA4nV7ROQ8PIljmE8j8j1v2vx34CFVLfX8QRrQvGlvCDAAuABoDCwRkaWqusXXwfmIN22+BFgNnA90BuaJyCJVPezj2NxUq99fljg8soD4cu/b4/lrpKZlAolX7RGR3sA/gVGqur+OYvMVb9qcDMx0kkYMcKmIlKjqx3USYe3y9vd6n6rmA/kishDoAwRq4vCmzbcBT6jn5H+aiGwHugPL6yZEV9Tq95edqvJYASSJSKKIhAFjgNkVyswGxjujE4YAeaqaXdeB1qJq2ywiHYB/AbcE8F+g5VXbZlVNVNUEVU0APgDuCtCkAd79Xn8CDBeREBGJAAYDG+s4ztrkTZt34ulhISKtgW5Aep1GWfdq9fvLehyAqpaIyD3AXDyjMl5V1fUiMtnZPxXPCJtLgTSgAM9fLQHLyzY/BrQEXnL+Ai/RAJ5Z1Ms21xvetFdVN4rIv4FUoAz4p6pWOqQzEHj5b/xH4HURWYvnFM5DqhrQU62LyLvAuUCMiGQBvwNCwTffXzbliDHGmBqxU1XGGGNqxBKHMcaYGrHEYYwxpkYscRhjjKkRSxzGGGNqxBKHCWjODLarRWSdiLzv3ItQG8edIyJRIpJQxYyjC0TEZ8OTReR1N2bnFZHrRWSjiMyv6882gcEShwl0x1S1r6r2AoqAybVxUFW9VFUP1caxAtBEPDc+nud2IMY/WeIw9ckioIuIRIvIx866A0udaVMQkRFO72S1iKwSkUgRiRORheV6LcOdshkiEuMcN0RE3nCO90FlvRoRuVhElojID07Pp2mF/T1EZHm59wkikuq8fkxEVjifP00qmSSrfDwikiwiC5zXTcSzFsMKp02jne1niMhyp12pIpJUyTHHisha53OfPBELnjnJporI0xXKXy0iXzl3H8eJyBYRaePlv42pRyxxmHpBRELwrBmyFngcWKWqvfGsvTDDKfYL4G5V7QsMB47hmVZ8rrOtD57J7yrqBkxzjncYuKvCZ8cAvwEuVNX+QArwYPkyqroRCBORTs6mG4FZzusXVHWg02tqDFxeg6Y/CnyjqgOB84CnRaQJnp7X8067kvHMVVQ+5rbAk3gm+usLDBSRq1T1D07841T1lxXa8BGwB7gbmA78TlX31CBWU09Y4jCBrrGIrMbzZbcTeAXPX8xvAqjqN0BLEWkOfAf8TUTuA6JUtQTP3Ea3icjvgTNV9Ugln5Gpqt85r9/ix7MEDwF6At85sUwAOlZynFnADc7rG4H3nNfnicgyZwqM84EzvG8+FwMPO5+7AAgHOgBLgF+LyENAR1U9VqHeQGCBquY6P4e38SwGVJ17gUeA46r6bg3iNPWIzVVlAt0x56/q/6jsVA+gqvqEiHyOZ86epSJyoaouFJFzgMuAN0XkaVWdUbFuNe8FmKeqY6uJ9T3gfRH5lxPPVhEJB14CklU100lg4ZXULeG/f+iV3y/Ataq6uUL5jSKyzGnXXBG5w0mi5eudinZ45rRqLSJBDWAdC1MJ63GY+mghMA4862njmTb8sIh0VtW1qvoknh5KdxHpCOSo6nQ8vZXK1mLuICJnOa/HAosr7F8KnC0iXZzPjBCRrhUPoqrbgFLgt/y3t3EiCexzroucbBRVBp51MwCuLbd9LnDviWQpIv2c505AuqpOwTMzau8Kx1sGjBCRGBEJdtpV5XrjzunA1/Cc3ttIhdNxpuGwxGHqo98Dyc7F5yfwnDoCuN+5ELwGz/WNL/DMKLpaRFbh+UJ+vpLjbQQmOMeLBl4uv1NVc4FbgXedMkvxrO9QmfeAm3Gubzgjt6bjuTbzMZ5TZ5V5HHheRBbhST4n/BHPLKipzrDhPzrbbwTWOaewuvPf6zwnYs7Gc8ppPp51uX9Q1U9O8tkn/BpYpKqL8CSNO0SkRzV1TD1ks+MaY4ypEetxGGOMqRFLHMYYY2rEEocxxpgascRhjDGmRixxGGOMqRFLHMYYY2rEEocxxpga+X8ELT8jjAc6ogAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior.plot()\n", "\n", "plt.xlabel('Possible values of x')\n", "plt.ylabel('Probability')\n", "plt.title('Posterior')\n", "\n", "posterior.idxmax()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 1\n", "\n", "Go back and run the update again for the following outcomes:\n", "\n", "* Two heads, one tails.\n", "\n", "* 7 heads, 3 tails.\n", "\n", "* 70 heads, 30 tails.\n", "\n", "* 140 heads, 110 tails." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A better prior\n", "\n", "Remember that this result is based on a uniform prior, which assumes that any value of $x$ from 0 to 100 is equally likely.\n", "\n", "Given what we know about coins, that's probably not true. I can believe that if you spin a lop-sided coin on edge, it might be somewhat more likely to land on heads or tails. \n", "\n", "But unless the coin is heavily weighted on one side, I would be surprised if $x$ were greater than 60% or less than 40%.\n", "\n", "Of course, I could be wrong, but in general I would expect to find $x$ closer to 50%, and I would be surprised to find it near 0% or 100%.\n", "\n", "We can represent that prior belief with a triangle-shaped prior.\n", "Here's an array that ramps up from 0 to 49 and ramps down from 50 to 0." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "ramp_up = np.arange(50)\n", "ramp_down = np.arange(50, -1, -1)\n", "\n", "ps = np.append(ramp_up, ramp_down)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll put it in a `Series` and normalize it so it adds up to 1." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "triangle = pd.Series(ps, xs)\n", "triangle /= triangle.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the triangle prior looks like." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "triangle.plot(color='C1')\n", "\n", "plt.xlabel('Possible values of x')\n", "plt.ylabel('Probability')\n", "plt.title('Triangle prior');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's update it with the data." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "posterior1 = prior * likelihood_heads**140 * likelihood_tails**110\n", "posterior1 /= posterior1.sum()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "posterior2 = triangle * likelihood_heads**140 * likelihood_tails**110\n", "posterior2 /= posterior2.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And plot the results, along with the posterior based on a uniform prior." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior1.plot(label='Uniform prior')\n", "posterior2.plot(label='Triangle prior')\n", "\n", "plt.xlabel('Possible values of x')\n", "plt.ylabel('Probability')\n", "plt.title('Posterior after 140 heads, 110 tails')\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior distributions are almost identical because, in this case, we have enough data to \"swamp the prior\"; that is, the posteriors depend strongly on the data and only weakly on the priors.\n", "\n", "This is good news, because it suggests that we can use data to resolve arguments. Suppose two people disagree about the correct prior. If neither can persuade the other, they might have to agree to disagree.\n", "\n", "But if they get new data, and each of them does a Bayesian update, they will usually find their beliefs converging.\n", "\n", "And with enough data, the remaining difference can be so small that it makes no difference in practice." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summarizing the posterior distribution\n", "\n", "The posterior distribution contains all of the information we have about the value of $x$. But sometimes we want to summarize this information.\n", "\n", "We have already seen one way to summarize a posterior distribution, the Maximum Aposteori Probability, or MAP:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.56" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior1.idxmax()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`idxmax` returns the value of $x$ with the highest probability.\n", "\n", "In this example, we get the same MAP with the triangle prior:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.56" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior2.idxmax()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another way to summarize the posterior distribution is the posterior mean.\n", "\n", "Given a set of values, $x_i$, and the corresponding probabilities, $p_i$, the mean of the distribution is:\n", "\n", "$\\sum_i x_i p_i$\n", "\n", "The following function takes a Pmf and computes its mean. Note that this function only works correctly if the Pmf is normalized." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "def pmf_mean(pmf):\n", " \"\"\"Compute the mean of a PMF.\n", " \n", " pmf: Series representing a PMF\n", " \n", " return: float\n", " \"\"\"\n", " return np.sum(pmf.index * pmf)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the posterior mean based on the uniform prior:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5595238095238096" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pmf_mean(posterior1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's the posterior mean with the triangle prior:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5574349943859507" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pmf_mean(posterior2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior means are not identical, but they are close enough that the difference probably doesn't matter.\n", "\n", "In this example, the posterior mean is very close to the MAP. That's true when the posterior distribution is symmetric, but it is not always true." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If someone asks what we think $x$ is, the MAP or the posterior mean might be a good answer." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Credible intervals\n", "\n", "Another way to summarize a posterior distribution is a credible interval, which is a range of quantities whose probabilities add up to a given total.\n", "\n", "The following function takes a `Series` as a parameter and a probability, `prob`, and return an interval that contains the given probability.\n", "\n", "If you are interested, it computes the cumulative distribution function (CDF) and then uses interpolation to estimate percentiles." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "from scipy.interpolate import interp1d\n", "\n", "def credible_interval(pmf, prob):\n", " \"\"\"Compute the mean of a PMF.\n", " \n", " pmf: Series representing a PMF\n", " prob: probability of the interval\n", " \n", " return: pair of float\n", " \"\"\"\n", " # make the CDF\n", " xs = pmf.index\n", " ys = pmf.cumsum()\n", " \n", " # compute the probabilities\n", " p = (1-prob)/2\n", " ps = [p, 1-p]\n", " \n", " # interpolate the inverse CDF\n", " options = dict(bounds_error=False,\n", " fill_value=(xs[0], xs[-1]), \n", " assume_sorted=True)\n", " interp = interp1d(ys, xs, **options)\n", " return interp(ps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the 90% credible interval for `posterior1`." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.50259405, 0.60603433])" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "credible_interval(posterior1, 0.9)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And for `posterior2`." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.50114608, 0.60373672])" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "credible_interval(posterior2, 0.9)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The credible interval for `posterior2` is slightly narrower." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.5" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: 03_bandit.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bayesian Statistics Made Simple\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2020 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Bayesian bandit problem\n", "\n", "Suppose you have several \"one-armed bandit\" slot machines, and there's reason to think that they have different probabilities of paying off.\n", "\n", "Each time you play a machine, you either win or lose, and you can use the outcome to update your belief about the probability of winning.\n", "\n", "Then, to decide which machine to play next, you can use the \"Bayesian bandit\" strategy, explained below.\n", "\n", "First, let's see how to do the update." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The prior\n", "\n", "If we know nothing about the probability of wining, we can start with a uniform prior." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "xs = np.linspace(0, 1, 101)\n", "prior = pd.Series(1/101, index=xs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def decorate_bandit(title):\n", " \"\"\"Labels the axes.\n", " \n", " title: string\n", " \"\"\"\n", " plt.xlabel('Probability of winning')\n", " plt.ylabel('PMF')\n", " plt.title(title)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "prior.plot()\n", "decorate_bandit('Prior distribution')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The update\n", "\n", "The following function takes a prior distribution and an outcome, either `'W'` or `'L'`.\n", "\n", "It does a Bayesian update in place; that is, it modifies the distribution based on the outcome." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def update(pmf, data):\n", " \"\"\"Likelihood function for Bayesian bandit\n", " \n", " pmf: Series that maps hypotheses to probabilities\n", " data: string, either 'W' or 'L'\n", " \"\"\"\n", " xs = pmf.index\n", " if data == 'W':\n", " pmf *= xs\n", " else:\n", " pmf *= 1-xs\n", " \n", " pmf /= pmf.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's an example that starts with a uniform prior and updates with one win and one loss." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "bandit = prior.copy()\n", "update(bandit, 'W')\n", "update(bandit, 'L')\n", "bandit.plot()\n", "decorate_bandit('Posterior distribution, 1 loss, 1 win')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 1\n", "\n", "Suppose you play a machine 10 times and win once. What is the posterior distribution of $x$?" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multiple bandits" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now suppose we have several bandits and we want to decide which one to play.\n", "\n", "For this example, we have 4 machines with these probabilities:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "actual_probs = [0.10, 0.20, 0.30, 0.40]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function `play` simulates playing one machine once and returns `W` or `L`." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "from collections import Counter\n", "\n", "# count how many times we've played each machine\n", "counter = Counter()\n", "\n", "def flip(p):\n", " \"\"\"Return True with probability p.\"\"\"\n", " return np.random.random() < p\n", "\n", "def play(i):\n", " \"\"\"Play machine i.\n", " \n", " returns: string 'W' or 'L'\n", " \"\"\"\n", " counter[i] += 1\n", " p = actual_probs[i]\n", " if flip(p):\n", " return 'W'\n", " else:\n", " return 'L'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a test, playing machine 3 twenty times:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "for i in range(20):\n", " result = play(3)\n", " print(result, end=' ')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`counter` keeps track of how many times each machine has been played." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "counter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now I'll make four copies of the prior to represent our beliefs about the four machines." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "machines = [prior.copy() for i in range(4)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function displays four distributions in a grid." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "options = dict(xticklabels='invisible', yticklabels='invisible')\n", "\n", "def plot(machines, **options):\n", " for i, m in enumerate(machines):\n", " plt.subplot(2, 2, i+1)\n", " m.plot(label='Machine %s' % i)\n", " plt.gca().set_yticklabels([])\n", " plt.legend()\n", " \n", " plt.tight_layout()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": true }, "outputs": [], "source": [ "plot(machines)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 2\n", "\n", "Write a nested loop that plays each machine 10 times and updates them based on the results; then plot the posterior distributions. \n", "\n", "Hint: call `play` and then `update`." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After playing each machine 10 times, we can summarize `machines` by printing the posterior mean and credible interval:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def pmf_mean(pmf):\n", " \"\"\"Compute the mean of a PMF.\n", " \n", " pmf: Series representing a PMF\n", " \n", " return: float\n", " \"\"\"\n", " return np.sum(pmf.index * pmf)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "from scipy.interpolate import interp1d\n", "\n", "def credible_interval(pmf, prob):\n", " \"\"\"Compute the mean of a PMF.\n", " \n", " pmf: Series representing a PMF\n", " prob: probability of the interval\n", " \n", " return: pair of float\n", " \"\"\"\n", " # make the CDF\n", " xs = pmf.index\n", " ys = pmf.cumsum()\n", " \n", " # compute the probabilities\n", " p = (1-prob)/2\n", " ps = [p, 1-p]\n", " \n", " # interpolate the inverse CDF\n", " options = dict(bounds_error=False,\n", " fill_value=(xs[0], xs[-1]), \n", " assume_sorted=True)\n", " interp = interp1d(ys, xs, **options)\n", " return interp(ps)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "for i, m in enumerate(machines):\n", " print(pmf_mean(m), credible_interval(m, 0.9))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bayesian Bandits\n", "\n", "To get more information, we could play each machine 100 times, but while we are gathering data, we are not making good use of it. The kernel of the Bayesian Bandits algorithm is that it collects and uses data at the same time. In other words, it balances exploration and exploitation.\n", "\n", "The following function chooses among the machines so that the probability of choosing each machine is proportional to its \"probability of superiority\"." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "def pmf_choice(pmf):\n", " \"\"\"Draw a random sample from a PMF.\n", " \n", " pmf: Series representing a PMF\n", " \n", " returns: quantity from PMF\n", " \"\"\"\n", " return np.random.choice(pmf.index, p=pmf)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "def choose(machines):\n", " \"\"\"Use the Bayesian bandit strategy to choose a machine.\n", " \n", " Draws a sample from each distributions.\n", " \n", " returns: index of the machine that yielded the highest value\n", " \"\"\"\n", " ps = [pmf_choice(m) for m in machines]\n", " return np.argmax(ps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function chooses one value from the posterior distribution of each machine and then uses `argmax` to find the index of the machine that chose the highest value.\n", "\n", "Here's an example." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "choose(machines)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The strategy\n", "\n", "Putting it all together, the following function chooses a machine, plays once, and updates `machines`:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "def choose_play_update(machines, verbose=False):\n", " \"\"\"Chose a machine, play it, and update machines.\n", " \n", " machines: list of Pmf objects\n", " verbose: Boolean, whether to print results\n", " \"\"\"\n", " # choose a machine\n", " i = choose(machines)\n", " \n", " # play it\n", " outcome = play(i)\n", " \n", " # update beliefs\n", " update(machines[i], outcome)\n", " \n", " if verbose:\n", " print(i, outcome, pmf_mean(machines[i]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's an example" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "choose_play_update(machines, verbose=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Trying it out" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start again with a fresh set of machines and an empty `Counter`." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "machines = [prior.copy() for i in range(4)]\n", "counter = Counter()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we run the bandit algorithm 100 times, we can see how `machines` gets updated:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "num_plays = 100\n", "\n", "for _ in range(num_plays):\n", " choose_play_update(machines)\n", " \n", "plot(machines)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can summarize `machines` by printing the posterior mean and credible interval:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "for i, m in enumerate(machines):\n", " print(pmf_mean(m), credible_interval(m, 0.9))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The credible intervals usually contain the true values (0.1, 0.2, 0.3, and 0.4).\n", "\n", "The estimates are still rough, especially for the lower-probability machines. But that's a feature, not a bug: the goal is to play the high-probability machines most often. Making the estimates more precise is a means to that end, but not an end itself.\n", "\n", "Let's see how many times each machine got played. If things go according to plan, the machines with higher probabilities should get played more often." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "for i, count in sorted(counter.items()):\n", " print(i, count)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### Exercise 3\n", "\n", "Go back and run this section again with a different value of `num_play` and see how it does." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The algorithm I presented in this notebook is called [Thompson sampling](https://en.wikipedia.org/wiki/Thompson_sampling). It is an example of a general strategy called [Bayesian decision theory](https://wiki.lesswrong.com/wiki/Bayesian_decision_theory), which is the idea of using a posterior distribution as part of a decision-making process, usually by choosing an action that minimizes the costs we expect on average (or maximizes the benefits).\n", "\n", "In my opinion, strategies like this are the biggest advantage of Bayesian methods over classical statistics. When we represent knowledge in the form of probability distributions, Bayes's theorem tells us how to change our beliefs as we get more data, and Bayesian decision theory tells us how to use those beliefs to make better decisions." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.5" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 03_bandit_soln.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bayesian Statistics Made Simple\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2020 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Bayesian bandit problem\n", "\n", "Suppose you have several \"one-armed bandit\" slot machines, and there's reason to think that they have different probabilities of paying off.\n", "\n", "Each time you play a machine, you either win or lose, and you can use the outcome to update your belief about the probability of winning.\n", "\n", "Then, to decide which machine to play next, you can use the \"Bayesian bandit\" strategy, explained below.\n", "\n", "First, let's see how to do the update." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The prior\n", "\n", "If we know nothing about the probability of wining, we can start with a uniform prior." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "xs = np.linspace(0, 1, 101)\n", "prior = pd.Series(1/101, index=xs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def decorate_bandit(title):\n", " \"\"\"Labels the axes.\n", " \n", " title: string\n", " \"\"\"\n", " plt.xlabel('Probability of winning')\n", " plt.ylabel('PMF')\n", " plt.title(title)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "prior.plot()\n", "decorate_bandit('Prior distribution')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The update\n", "\n", "The following function takes a prior distribution and an outcome, either `'W'` or `'L'`.\n", "\n", "It does a Bayesian update in place; that is, it modifies the distribution based on the outcome." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def update(pmf, data):\n", " \"\"\"Likelihood function for Bayesian bandit\n", " \n", " pmf: Series that maps hypotheses to probabilities\n", " data: string, either 'W' or 'L'\n", " \"\"\"\n", " xs = pmf.index\n", " if data == 'W':\n", " pmf *= xs\n", " else:\n", " pmf *= 1-xs\n", " \n", " pmf /= pmf.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's an example that starts with a uniform prior and updates with one win and one loss." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "bandit = prior.copy()\n", "update(bandit, 'W')\n", "update(bandit, 'L')\n", "bandit.plot()\n", "decorate_bandit('Posterior distribution, 1 loss, 1 win')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 1\n", "\n", "Suppose you play a machine 10 times and win once. What is the posterior distribution of $x$?" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "bandit = prior.copy()\n", "\n", "for outcome in 'WLLLLLLLLL':\n", " update(bandit, outcome)\n", " \n", "bandit.plot()\n", "decorate_bandit('Posterior distribution, 9 loss, one win')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multiple bandits" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now suppose we have several bandits and we want to decide which one to play.\n", "\n", "For this example, we have 4 machines with these probabilities:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "actual_probs = [0.10, 0.20, 0.30, 0.40]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function `play` simulates playing one machine once and returns `W` or `L`." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "from collections import Counter\n", "\n", "# count how many times we've played each machine\n", "counter = Counter()\n", "\n", "def flip(p):\n", " \"\"\"Return True with probability p.\"\"\"\n", " return np.random.random() < p\n", "\n", "def play(i):\n", " \"\"\"Play machine i.\n", " \n", " returns: string 'W' or 'L'\n", " \"\"\"\n", " counter[i] += 1\n", " p = actual_probs[i]\n", " if flip(p):\n", " return 'W'\n", " else:\n", " return 'L'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a test, playing machine 3 twenty times:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "L W W W L L L W L W W W L L L W W W W W " ] } ], "source": [ "for i in range(20):\n", " result = play(3)\n", " print(result, end=' ')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`counter` keeps track of how many times each machine has been played." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Counter({3: 20})" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "counter" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now I'll make four copies of the prior to represent our beliefs about the four machines." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "machines = [prior.copy() for i in range(4)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function displays four distributions in a grid." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "options = dict(xticklabels='invisible', yticklabels='invisible')\n", "\n", "def plot(machines, **options):\n", " for i, m in enumerate(machines):\n", " plt.subplot(2, 2, i+1)\n", " m.plot(label='Machine %s' % i)\n", " plt.gca().set_yticklabels([])\n", " plt.legend()\n", " \n", " plt.tight_layout()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot(machines)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Exercise 2\n", "\n", "Write a nested loop that plays each machine 10 times and updates them based on the results; then plot the posterior distributions. \n", "\n", "Hint: call `play` and then `update`." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# Solution\n", "\n", "for i in range(4):\n", " for _ in range(10):\n", " outcome = play(i)\n", " update(machines[i], outcome)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "plot(machines)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After playing each machine 10 times, we can summarize `machines` by printing the posterior mean and credible interval:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def pmf_mean(pmf):\n", " \"\"\"Compute the mean of a PMF.\n", " \n", " pmf: Series representing a PMF\n", " \n", " return: float\n", " \"\"\"\n", " return np.sum(pmf.index * pmf)" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "from scipy.interpolate import interp1d\n", "\n", "def credible_interval(pmf, prob):\n", " \"\"\"Compute the mean of a PMF.\n", " \n", " pmf: Series representing a PMF\n", " prob: probability of the interval\n", " \n", " return: pair of float\n", " \"\"\"\n", " # make the CDF\n", " xs = pmf.index\n", " ys = pmf.cumsum()\n", " \n", " # compute the probabilities\n", " p = (1-prob)/2\n", " ps = [p, 1-p]\n", " \n", " # interpolate the inverse CDF\n", " options = dict(bounds_error=False,\n", " fill_value=(xs[0], xs[-1]), \n", " assume_sorted=True)\n", " interp = interp1d(ys, xs, **options)\n", " return interp(ps)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.1668194469884906 [0.02859509 0.35941186]\n", "0.07883360420960964 [0. 0.2295994]\n", "0.07883360420960964 [0. 0.2295994]\n", "0.2500001236675582 [0.07369568 0.46517711]\n" ] } ], "source": [ "for i, m in enumerate(machines):\n", " print(pmf_mean(m), credible_interval(m, 0.9))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bayesian Bandits\n", "\n", "To get more information, we could play each machine 100 times, but while we are gathering data, we are not making good use of it. The kernel of the Bayesian Bandits algorithm is that it collects and uses data at the same time. In other words, it balances exploration and exploitation.\n", "\n", "The following function chooses among the machines so that the probability of choosing each machine is proportional to its \"probability of superiority\"." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "def pmf_choice(pmf):\n", " \"\"\"Draw a random sample from a PMF.\n", " \n", " pmf: Series representing a PMF\n", " \n", " returns: quantity from PMF\n", " \"\"\"\n", " return np.random.choice(pmf.index, p=pmf)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "def choose(machines):\n", " \"\"\"Use the Bayesian bandit strategy to choose a machine.\n", " \n", " Draws a sample from each distributions.\n", " \n", " returns: index of the machine that yielded the highest value\n", " \"\"\"\n", " ps = [pmf_choice(m) for m in machines]\n", " return np.argmax(ps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function chooses one value from the posterior distribution of each machine and then uses `argmax` to find the index of the machine that chose the highest value.\n", "\n", "Here's an example." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "choose(machines)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The strategy\n", "\n", "Putting it all together, the following function chooses a machine, plays once, and updates `machines`:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "def choose_play_update(machines, verbose=False):\n", " \"\"\"Chose a machine, play it, and update machines.\n", " \n", " machines: list of Pmf objects\n", " verbose: Boolean, whether to print results\n", " \"\"\"\n", " # choose a machine\n", " i = choose(machines)\n", " \n", " # play it\n", " outcome = play(i)\n", " \n", " # update beliefs\n", " update(machines[i], outcome)\n", " \n", " if verbose:\n", " print(i, outcome, pmf_mean(machines[i]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's an example" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3 L 0.23076939985507136\n" ] } ], "source": [ "choose_play_update(machines, verbose=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Trying it out" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start again with a fresh set of machines and an empty `Counter`." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "machines = [prior.copy() for i in range(4)]\n", "counter = Counter()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we run the bandit algorithm 100 times, we can see how `machines` gets updated:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_plays = 100\n", "\n", "for _ in range(num_plays):\n", " choose_play_update(machines)\n", " \n", "plot(machines)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can summarize `machines` by printing the posterior mean and credible interval:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.12521873467491973 [0.01974788 0.27462064]\n", "0.07239953242078516 [0. 0.2121182]\n", "0.26530612244897933 [0.16305684 0.36842118]\n", "0.23333333336076842 [0.11396953 0.36311353]\n" ] } ], "source": [ "for i, m in enumerate(machines):\n", " print(pmf_mean(m), credible_interval(m, 0.9))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The credible intervals usually contain the true values (0.1, 0.2, 0.3, and 0.4).\n", "\n", "The estimates are still rough, especially for the lower-probability machines. But that's a feature, not a bug: the goal is to play the high-probability machines most often. Making the estimates more precise is a means to that end, but not an end itself.\n", "\n", "Let's see how many times each machine got played. If things go according to plan, the machines with higher probabilities should get played more often." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 14\n", "1 11\n", "2 47\n", "3 28\n" ] } ], "source": [ "for i, count in sorted(counter.items()):\n", " print(i, count)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### Exercise 3\n", "\n", "Go back and run this section again with a different value of `num_play` and see how it does." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The algorithm I presented in this notebook is called [Thompson sampling](https://en.wikipedia.org/wiki/Thompson_sampling). It is an example of a general strategy called [Bayesian decision theory](https://wiki.lesswrong.com/wiki/Bayesian_decision_theory), which is the idea of using a posterior distribution as part of a decision-making process, usually by choosing an action that minimizes the costs we expect on average (or maximizes the benefits).\n", "\n", "In my opinion, strategies like this are the biggest advantage of Bayesian methods over classical statistics. When we represent knowledge in the form of probability distributions, Bayes's theorem tells us how to change our beliefs as we get more data, and Bayesian decision theory tells us how to use those beliefs to make better decisions." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.5" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 03_euro.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Bayesian Statistics Made Simple\n", "===\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2016 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "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": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "import seaborn as sns\n", "sns.set_style('white')\n", "sns.set_context('talk')\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "from empiricaldist import Pmf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Euro problem\n", "\n", "*\"When spun on edge 250 times, a Belgian one-euro coin came up heads 140 times and tails 110. 'It looks very suspicious to me,' said Barry Blight, a statistics lecturer at the London School of Economics. 'If the coin were unbiased, the chance of getting a result as extreme as that would be less than 7%.' \"*\n", "\n", "From “The Guardian” quoted by MacKay, *Information Theory, Inference, and Learning Algorithms*.\n", "\n", "\n", "**Exercise 1:** Write a function called `likelihood_euro` that defines the likelihood function for the Euro problem. Note that `hypo` is in the range 0 to 100.\n", "\n", "Here's an outline to get you started." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def likelihood_euro(data, hypo):\n", " \"\"\" Likelihood function for the Euro problem.\n", " \n", " data: string, either 'H' or 'T'\n", " hypo: prob of heads (0-100)\n", " \n", " returns: float probability\n", " \"\"\"\n", " # TODO: fill this in!\n", " return 1" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the prior, we'll start with a uniform distribution from 0 to 100." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def decorate_euro(title):\n", " \"\"\"Labels the axes.\n", " \n", " title: string\n", " \"\"\"\n", " plt.xlabel('Probability of heads')\n", " plt.ylabel('PMF')\n", " plt.title(title)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "euro = Pmf.from_seq(range(101))\n", "euro.plot()\n", "decorate_euro('Prior distribution')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can update with a single heads:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "euro.update(likelihood_euro, 'H')\n", "euro.plot()\n", "decorate_euro('Posterior distribution, one heads')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another heads:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "euro.update(likelihood_euro, 'H')\n", "euro.plot()\n", "decorate_euro('Posterior distribution, two heads')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And a tails:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "euro.update(likelihood_euro, 'T')\n", "euro.plot()\n", "decorate_euro('Posterior distribution, HHT')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Starting over, here's what it looks like after 7 heads and 3 tails." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "euro = Pmf.from_seq(range(101))\n", "\n", "for outcome in 'HHHHHHHTTT':\n", " euro.update(likelihood_euro, outcome)\n", "\n", "euro.plot()\n", "decorate_euro('Posterior distribution, 7 heads, 3 tails')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The maximum apostiori probability (MAP) is 70%, which is the observed proportion." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "euro.max_prob()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the posterior probabilities after 140 heads and 110 tails." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "euro = Pmf.from_seq(range(101))\n", "\n", "evidence = 'H' * 140 + 'T' * 110\n", "for outcome in evidence:\n", " euro.update(likelihood_euro, outcome)\n", " \n", "euro.plot()\n", "\n", "decorate_euro('Posterior distribution, 140 heads, 110 tails')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior mean is about 56%" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "euro.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So is the MAP." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "euro.max_prob()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the median (50th percentile)." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "euro.quantile(0.5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior credible interval has a 90% chance of containing the true value (provided that the prior distribution truly represents our background knowledge)." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "euro.credible_interval(0.9)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Swamping the prior\n", "\n", "The following function makes a Euro object with a triangle prior." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "def TrianglePrior():\n", " \"\"\"Makes a Suite with a triangular prior.\n", " \"\"\"\n", " suite = Pmf(name='triangle')\n", " for x in range(0, 51):\n", " suite[x] = x\n", " for x in range(51, 101):\n", " suite[x] = 100-x \n", " suite.normalize()\n", " return suite" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it looks like:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "euro1 = Pmf.from_seq(range(101), name='uniform')\n", "euro1.plot()\n", "\n", "euro2 = TrianglePrior()\n", "euro2.plot()\n", "\n", "plt.legend()\n", "decorate_euro('Prior distributions')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 9:** Update `euro1` and `euro2` with the same data we used before (140 heads and 110 tails) and plot the posteriors. How big is the difference in the means?" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior distributions are not identical, but with this data, they converge to the point where there is no practical difference, for most purposes." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.7.3" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: 04_bandit.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Bayesian Statistics Made Simple\n", "===\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2018 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "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": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "import seaborn as sns\n", "sns.set_style('white')\n", "sns.set_context('talk')\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "from empiricaldist import Pmf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Bayesian bandit problem\n", "\n", "Suppose you have several \"one-armed bandit\" slot machines, and reason to think that they have different probabilities of paying off.\n", "\n", "Each time you play a machine, you either win or lose, and you can use the outcome to update your belief about the probability of winning.\n", "\n", "Then, to decide which machine to play next, you can use the \"Bayesian bandit\" strategy, explained below.\n", "\n", "First, let's see how to do the update." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The prior\n", "\n", "If we know nothing about the probability of wining, we can start with a uniform prior." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def decorate_bandit(title):\n", " \"\"\"Labels the axes.\n", " \n", " title: string\n", " \"\"\"\n", " plt.xlabel('Probability of winning')\n", " plt.ylabel('PMF')\n", " plt.title(title)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "bandit = Pmf.from_seq(range(101))\n", "bandit.plot()\n", "decorate_bandit('Prior distribution')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The likelihood function\n", "\n", "The likelihood function that computes the probability of an outcome (W or L) for a hypothetical value of x, the probability of winning (from 0 to 1)." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def likelihood_bandit(data, hypo):\n", " \"\"\"Likelihood function for Bayesian bandit\n", " \n", " data: string, either 'W' or 'L'\n", " hypo: probability of winning (0-100)\n", " \n", " returns: float probability\n", " \"\"\"\n", " x = hypo / 100\n", " if data == 'W':\n", " return x\n", " else:\n", " return 1-x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 1:** Suppose you play a machine 10 times and win once. What is the posterior distribution of $x$?" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multiple bandits" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now suppose we have several bandits and we want to decide which one to play.\n", "\n", "For this example, we have 4 machines with these probabilities:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "actual_probs = [0.10, 0.20, 0.30, 0.40]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function `play` simulates playing one machine once and returns `W` or `L`." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from random import random\n", "from collections import Counter\n", "\n", "# count how many times we've played each machine\n", "counter = Counter()\n", "\n", "def flip(p):\n", " \"\"\"Return True with probability p.\"\"\"\n", " return random() < p\n", "\n", "def play(i):\n", " \"\"\"Play machine i.\n", " \n", " returns: string 'W' or 'L'\n", " \"\"\"\n", " counter[i] += 1\n", " p = actual_probs[i]\n", " if flip(p):\n", " return 'W'\n", " else:\n", " return 'L'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a test, playing machine 3 twenty times:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "for i in range(20):\n", " result = play(3)\n", " print(result, end=' ')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now I'll make 4 `Pmf` objects to represent our beliefs about the 4 machines." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "prior = range(101)\n", "beliefs = [Pmf.from_seq(prior) for i in range(4)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function displays the four posterior distributions" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "options = dict(xticklabels='invisible', yticklabels='invisible')\n", "\n", "def plot(beliefs, **options):\n", " sns.set_context('paper')\n", " for i, b in enumerate(beliefs):\n", " plt.subplot(2, 2, i+1)\n", " b.plot(label='Machine %s' % i)\n", " plt.gca().set_yticklabels([])\n", " plt.legend()\n", " \n", " plt.tight_layout()\n", " sns.set_context('talk')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "scrolled": true }, "outputs": [], "source": [ "plot(beliefs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following function updates our beliefs about one of the machines based on one outcome." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def update(beliefs, i, outcome):\n", " \"\"\"Update beliefs about machine i, given outcome.\n", " \n", " beliefs: list of Pmf\n", " i: index into beliefs\n", " outcome: string 'W' or 'L'\n", " \"\"\"\n", " beliefs[i].update(likelihood_bandit, outcome)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 2:** Write a nested loop that plays each machine 10 times; then plot the posterior distributions. \n", "\n", "Hint: call `play` and then `update`." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After playing each machine 10 times, we can summarize `beliefs` by printing the posterior mean and credible interval:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "for i, b in enumerate(beliefs):\n", " print(b.mean(), b.credible_interval(0.9))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bayesian Bandits\n", "\n", "To get more information, we could play each machine 100 times, but while we are gathering data, we are not making good use of it. The kernel of the Bayesian Bandits algorithm is that it collects and uses data at the same time. In other words, it balances exploration and exploitation.\n", "\n", "The following function chooses among the machines so that the probability of choosing each machine is proportional to its \"probability of superiority\".\n", "\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def choose(beliefs):\n", " \"\"\"Use the Bayesian bandit strategy to choose a machine.\n", " \n", " Draws a sample from each distributions.\n", " \n", " returns: index of the machine that yielded the highest value\n", " \"\"\"\n", " ps = [b.choice() for b in beliefs]\n", " return np.argmax(ps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function chooses one value from the posterior distribution of each machine and then uses `argmax` to find the index of the machine that chose the highest value.\n", "\n", "Here's an example." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "choose(beliefs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 3:** Putting it all together, fill in the following function to choose a machine, play once, and update `beliefs`:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "def choose_play_update(beliefs, verbose=False):\n", " \"\"\"Chose a machine, play it, and update beliefs.\n", " \n", " beliefs: list of Pmf objects\n", " verbose: Boolean, whether to print results\n", " \"\"\"\n", " # choose a machine\n", " machine = ____\n", " \n", " # play it\n", " outcome = ____\n", " \n", " # update beliefs\n", " update(____)\n", " \n", " if verbose:\n", " print(i, outcome, beliefs[machine].mean())" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's an example" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "choose_play_update(beliefs, verbose=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Trying it out" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start again with a fresh set of machines and an empty `Counter`." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "beliefs = [Pmf.from_seq(prior) for i in range(4)]\n", "counter = Counter()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we run the bandit algorithm 100 times, we can see how `beliefs` gets updated:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "num_plays = 100\n", "\n", "for i in range(num_plays):\n", " choose_play_update(beliefs)\n", " \n", "plot(beliefs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can summarize `beliefs` by printing the posterior mean and credible interval:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "for i, b in enumerate(beliefs):\n", " print(b.mean(), b.credible_interval(0.9))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The credible intervals usually contain the true values (10, 20, 30, and 40).\n", "\n", "The estimates are still rough, especially for the lower-probability machines. But that's a feature, not a bug: the goal is to play the high-probability machines most often. Making the estimates more precise is a means to that end, but not an end itself.\n", "\n", "Let's see how many times each machine got played. If things go according to plan, the machines with higher probabilities should get played more often." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "for machine, count in sorted(counter.items()):\n", " print(machine, count)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "**Exercise 4:** Go back and run this section again with a different value of `num_play` and see how it does." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.7.3" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: README.md ================================================ ## Bayesian Statistics Made Simple [Allen Downey](https:allendowney.com) Bayesian statistical methods are becoming more common, but there are not many resources to help beginners get started. People who know Python can use their programming skills to get a head start. In this tutorial, I introduce Bayesian methods using grid algorithms, which help develop understanding and prepare for MCMC, which is a powerful algorithm for real-world problems. It is based on my book, [*Think Bayes*](http://greenteapress.com/wp/think-bayes/), a [class I teach at Olin College](https://sites.google.com/site/compbayes18/), and my blog, [“Probably Overthinking It.”](http://allendowney.com/blog) [Slides for this tutorial are here](https://docs.google.com/presentation/d/e/2PACX-1vTUIf7LJJpUd4NzInBGRyHnHqoZ4E736sqd6Iwq_ne3_aDXdJlNgO8O57_USzQzFfDx0gA44fniKe5R/pub). ### Installation instructions Note: Please try to install everything you need for this tutorial before you leave home! To prepare for this tutorial, you have two options: 1. Install Jupyter on your laptop and download my code from GitHub. 2. Run the Jupyter notebooks on a virtual machine on Binder. I'll provide instructions for both, but here's the catch: if everyone chooses Option 2, the wireless network might not be able to handle the load. So, I strongly encourage you to try Option 1 and only resort to Option 2 if you can't get Option 1 working. #### Option 1A: If you already have Jupyter installed. Code for this workshop is in a Git repository on Github. You can download it in [this zip file](https://github.com/AllenDowney/BayesMadeSimple/archive/master.zip). When you unzip it, you should get a directory named `BayesMadeSimple`. Or, if you have a Git client installed, you can clone the repo by running: ``` git clone https://github.com/AllenDowney/BayesMadeSimple ``` It should create a directory named `BayesMadeSimple`. To run the notebooks, you need Python 3 with Jupyter, NumPy, SciPy, matplotlib and Seaborn. If you are not sure whether you have those modules already, the easiest way to check is to run my code and see if it works. You will also need a small library I wrote, called `empyrical-dist`. You can [see it on PyPI](https://pypi.org/project/empyrical-dist/) and you can install it using pip: ``` pip install empyrical-dist ``` To start Jupyter, run: ``` cd BayesMadeSimple jupyter notebook ``` Jupyter should launch your default browser or open a tab in an existing browser window. If not, the Jupyter server should print a URL you can use. For example, when I launch Jupyter, I get ``` ~/BayesMadeSimple$ jupyter notebook [I 10:03:20.115 NotebookApp] Serving notebooks from local directory: /home/downey/BayesMadeSimple [I 10:03:20.115 NotebookApp] 0 active kernels [I 10:03:20.115 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/ [I 10:03:20.115 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). ``` In this case, the URL is [http://localhost:8888](http://localhost:8888). When you start your server, you might get a different URL. Whatever it is, if you paste it into a browser, you should should see a home page with a list of the notebooks in the repository. Click on `01_cookie.ipynb`. It should open the first notebook for the tutorial. Select the cell with the import statements and press "Shift-Enter" to run the code in the cell. If it works and you get no error messages, **you are all set**. If you get error messages about missing packages, you can install the packages you need using your package manager, or try Option 1B and install Anaconda. #### Option 1B: If you don't already have Jupyter. I highly recommend installing Anaconda, which is a Python distribution that contains everything you need for this tutorial. It is easy to install on Windows, Mac, and Linux, and because it does a user-level install, it will not interfere with other Python installations. [Information about installing Anaconda is here](https://www.anaconda.com/distribution/#download-section). Choose the Python 3.7 distribution. After you install Anaconda, you can install the packages you need like this: ``` conda install jupyter numpy scipy matplotlib seaborn pip install empyrical-dist ``` Or you can create a Conda environment just for the workshop, like this: ``` cd BayesMadeSimple conda env create -f environment.yml conda activate BayesMadeSimple ``` Then go to Option 1A to make sure you can run my code. #### Option 2: if Option 1 failed. You can run my notebook in a virtual machine on Binder. To launch the VM, press this button: [![Binder](http://mybinder.org/badge.svg)](https://mybinder.org/v2/gh/AllenDowney/BayesMadeSimple/master) You should see a home page with a list of the files in the repository. If you want to try the exercises, open `01_cookie.ipynb`. You should be able to run the notebooks in your browser and try out the examples. However, be aware that the virtual machine you are running is temporary. If you leave it idle for more than an hour or so, it will disappear along with any work you have done. Special thanks to the people who run Binder, which makes it easy to share and reproduce computation. ================================================ FILE: _config.yml ================================================ theme: jekyll-theme-minimal ================================================ FILE: bandit_soln.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Bayesian Statistics Made Simple\n", "===\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2018 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "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": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "import seaborn as sns\n", "sns.set_style('white')\n", "sns.set_context('talk')\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "from empiricaldist import Pmf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Bayesian bandit problem\n", "\n", "Suppose you have several \"one-armed bandit\" slot machines, and reason to think that they have different probabilities of paying off.\n", "\n", "Each time you play a machine, you either win or lose, and you can use the outcome to update your belief about the probability of winning.\n", "\n", "Then, to decide which machine to play next, you can use the \"Bayesian bandit\" strategy, explained below.\n", "\n", "First, let's see how to do the update." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The prior\n", "\n", "If we know nothing about the probability of wining, we can start with a uniform prior." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def decorate_bandit(title):\n", " \"\"\"Labels the axes.\n", " \n", " title: string\n", " \"\"\"\n", " plt.xlabel('Probability of winning')\n", " plt.ylabel('PMF')\n", " plt.title(title)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "bandit = Pmf.from_seq(range(101))\n", "bandit.plot()\n", "decorate_bandit('Prior distribution')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The likelihood function\n", "\n", "The likelihood function that computes the probability of an outcome (W or L) for a hypothetical value of x, the probability of winning (from 0 to 1)." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def likelihood_bandit(data, hypo):\n", " \"\"\"Likelihood function for Bayesian bandit\n", " \n", " data: string, either 'W' or 'L'\n", " hypo: probability of winning (0-100)\n", " \n", " returns: float probability\n", " \"\"\"\n", " x = hypo / 100\n", " if data == 'W':\n", " return x\n", " else:\n", " return 1-x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 1:** Suppose you play a machine 10 times and win once. What is the posterior distribution of $x$?" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "for outcome in 'WLLLLLLLLL':\n", " bandit.update(likelihood_bandit, outcome)\n", " \n", "bandit.plot()\n", "decorate_bandit('Posterior distribution, 9 loss, one win')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Multiple bandits" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now suppose we have several bandits and we want to decide which one to play.\n", "\n", "For this example, we have 4 machines with these probabilities:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "actual_probs = [0.10, 0.20, 0.30, 0.40]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The function `play` simulates playing one machine once and returns `W` or `L`." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "from random import random\n", "from collections import Counter\n", "\n", "# count how many times we've played each machine\n", "counter = Counter()\n", "\n", "def flip(p):\n", " \"\"\"Return True with probability p.\"\"\"\n", " return random() < p\n", "\n", "def play(i):\n", " \"\"\"Play machine i.\n", " \n", " returns: string 'W' or 'L'\n", " \"\"\"\n", " counter[i] += 1\n", " p = actual_probs[i]\n", " if flip(p):\n", " return 'W'\n", " else:\n", " return 'L'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a test, playing machine 3 twenty times:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "L W L L L L L L W W W W L L L L W L L W " ] } ], "source": [ "for i in range(20):\n", " result = play(3)\n", " print(result, end=' ')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now I'll make 4 `Pmf` objects to represent our beliefs about the 4 machines." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "prior = range(101)\n", "beliefs = [Pmf.from_seq(prior) for i in range(4)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function displays the four posterior distributions" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "options = dict(xticklabels='invisible', yticklabels='invisible')\n", "\n", "def plot(beliefs, **options):\n", " sns.set_context('paper')\n", " for i, b in enumerate(beliefs):\n", " plt.subplot(2, 2, i+1)\n", " b.plot(label='Machine %s' % i)\n", " plt.gca().set_yticklabels([])\n", " plt.legend()\n", " \n", " plt.tight_layout()\n", " sns.set_context('talk')" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot(beliefs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following function updates our beliefs about one of the machines based on one outcome." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def update(beliefs, i, outcome):\n", " \"\"\"Update beliefs about machine i, given outcome.\n", " \n", " beliefs: list of Pmf\n", " i: index into beliefs\n", " outcome: string 'W' or 'L'\n", " \"\"\"\n", " beliefs[i].update(likelihood_bandit, outcome)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 2:** Write a nested loop that plays each machine 10 times; then plot the posterior distributions. \n", "\n", "Hint: call `play` and then `update`." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "# Solution\n", "\n", "for i in range(4):\n", " for _ in range(10):\n", " outcome = play(i)\n", " update(beliefs, i, outcome)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "plot(beliefs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "After playing each machine 10 times, we can summarize `beliefs` by printing the posterior mean and credible interval:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "25.00001236675582 [ 8. 47.]\n", "16.68194469884906 [ 3. 36.]\n", "41.666666663460255 [20. 65.]\n", "16.68194469884906 [ 3. 36.]\n" ] } ], "source": [ "for i, b in enumerate(beliefs):\n", " print(b.mean(), b.credible_interval(0.9))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bayesian Bandits\n", "\n", "To get more information, we could play each machine 100 times, but while we are gathering data, we are not making good use of it. The kernel of the Bayesian Bandits algorithm is that it collects and uses data at the same time. In other words, it balances exploration and exploitation.\n", "\n", "The following function chooses among the machines so that the probability of choosing each machine is proportional to its \"probability of superiority\".\n", "\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def choose(beliefs):\n", " \"\"\"Use the Bayesian bandit strategy to choose a machine.\n", " \n", " Draws a sample from each distributions.\n", " \n", " returns: index of the machine that yielded the highest value\n", " \"\"\"\n", " ps = [b.choice() for b in beliefs]\n", " return np.argmax(ps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function chooses one value from the posterior distribution of each machine and then uses `argmax` to find the index of the machine that chose the highest value.\n", "\n", "Here's an example." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "choose(beliefs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 3:** Putting it all together, fill in the following function to choose a machine, play once, and update `beliefs`:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "def choose_play_update(beliefs, verbose=False):\n", " \"\"\"Chose a machine, play it, and update beliefs.\n", " \n", " beliefs: list of Pmf objects\n", " verbose: Boolean, whether to print results\n", " \"\"\"\n", " # choose a machine\n", " machine = ____\n", " \n", " # play it\n", " outcome = ____\n", " \n", " # update beliefs\n", " update(____)\n", " \n", " if verbose:\n", " print(i, outcome, beliefs[machine].mean())" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "# Solution\n", "\n", "def choose_play_update(beliefs, verbose=False):\n", " \"\"\"Chose a machine, play it, and update beliefs.\n", " \n", " beliefs: list of Pmf objects\n", " verbose: Boolean, whether to print results\n", " \"\"\"\n", " # choose a machine\n", " machine = choose(beliefs)\n", " \n", " # play it\n", " outcome = play(machine)\n", " \n", " # update beliefs\n", " update(beliefs, machine, outcome)\n", " \n", " if verbose:\n", " print(i, outcome, beliefs[machine].mean())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's an example" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "3 W 23.076939985507135\n" ] } ], "source": [ "choose_play_update(beliefs, verbose=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Trying it out" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's start again with a fresh set of machines and an empty `Counter`." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "beliefs = [Pmf.from_seq(prior) for i in range(4)]\n", "counter = Counter()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we run the bandit algorithm 100 times, we can see how `beliefs` gets updated:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "num_plays = 100\n", "\n", "for i in range(num_plays):\n", " choose_play_update(beliefs)\n", " \n", "plot(beliefs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can summarize `beliefs` by printing the posterior mean and credible interval:" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "12.067578772793167 [ 0. 34.]\n", "12.067578772793167 [ 0. 34.]\n", "35.29411764705883 [25. 47.]\n", "41.46341463414634 [29. 54.]\n" ] } ], "source": [ "for i, b in enumerate(beliefs):\n", " print(b.mean(), b.credible_interval(0.9))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The credible intervals usually contain the true values (10, 20, 30, and 40).\n", "\n", "The estimates are still rough, especially for the lower-probability machines. But that's a feature, not a bug: the goal is to play the high-probability machines most often. Making the estimates more precise is a means to that end, but not an end itself.\n", "\n", "Let's see how many times each machine got played. If things go according to plan, the machines with higher probabilities should get played more often." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 6\n", "1 6\n", "2 49\n", "3 39\n" ] } ], "source": [ "for machine, count in sorted(counter.items()):\n", " print(machine, count)" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "**Exercise 4:** Go back and run this section again with a different value of `num_play` and see how it does." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.7.3" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: billiards.py ================================================ """This file contains code used in "Think Stats", by Allen B. Downey, available from greenteapress.com Copyright 2015 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division import numpy import thinkbayes import thinkplot """ This problem presents a solution to the "Bayesian Billiards Problem", presented in this video: https://www.youtube.com/watch?v=KhAUfqhLakw Based on the formulation in this paper: http://www.nature.com/nbt/journal/v22/n9/full/nbt0904-1177.html Of a problem originally posed by Bayes himself. """ class Billiards(thinkbayes.Suite): def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. data: tuple (#wins, #losses) hypo: float probability of win """ p = hypo win, lose = data like = p**win * (1-p)**lose return like def ProbWinMatch(pmf): total = 0 for p, prob in pmf.Items(): total += prob * (1-p)**3 return total def main(): ps = numpy.linspace(0, 1, 101) bill = Billiards(ps) bill.Update((5, 3)) thinkplot.Pdf(bill) thinkplot.Save(root='billiards1', xlabel='probability of win', ylabel='PDF', formats=['png']) bayes_result = ProbWinMatch(bill) print(thinkbayes.Odds(1-bayes_result)) mle = 5 / 8 freq_result = (1-mle)**3 print(thinkbayes.Odds(1-freq_result)) if __name__ == '__main__': main() ================================================ FILE: cookie_soln.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Bayesian Statistics Made Simple\n", "===\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2016 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "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": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "import seaborn as sns\n", "sns.set_style('white')\n", "sns.set_context('talk')\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "from empiricaldist import Pmf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Working with Pmfs\n", "\n", "Create a Pmf object to represent a six-sided die." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "d6 = Pmf()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A Pmf is a map from possible outcomes to their probabilities." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "for x in [1,2,3,4,5,6]:\n", " d6[x] = 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Initially the probabilities don't add up to 1." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "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", "
probs
11
21
31
41
51
61
\n", "
" ], "text/plain": [ "1 1\n", "2 1\n", "3 1\n", "4 1\n", "5 1\n", "6 1\n", "dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`normalize` adds up the probabilities and divides through. The return value is the total probability before normalizing." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d6.normalize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now the Pmf is normalized." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "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", "
probs
10.166667
20.166667
30.166667
40.166667
50.166667
60.166667
\n", "
" ], "text/plain": [ "1 0.166667\n", "2 0.166667\n", "3 0.166667\n", "4 0.166667\n", "5 0.166667\n", "6 0.166667\n", "dtype: float64" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can compute its mean (which only works if it's normalized)." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.5" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d6.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`choice` chooses a random values from the Pmf." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([5, 1, 3, 1, 4, 5, 1, 5, 4, 3])" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d6.choice(size=10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`bar` plots the Pmf as a bar chart" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def decorate_dice(title):\n", " \"\"\"Labels the axes.\n", " \n", " title: string\n", " \"\"\"\n", " plt.xlabel('Outcome')\n", " plt.ylabel('PMF')\n", " plt.title(title)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "d6.bar()\n", "decorate_dice('One die')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`d6.add_dist(d6)` creates a new `Pmf` that represents the sum of two six-sided dice." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "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", "
probs
20.027778
30.055556
40.083333
50.111111
60.138889
70.166667
80.138889
90.111111
100.083333
110.055556
120.027778
\n", "
" ], "text/plain": [ "2 0.027778\n", "3 0.055556\n", "4 0.083333\n", "5 0.111111\n", "6 0.138889\n", "7 0.166667\n", "8 0.138889\n", "9 0.111111\n", "10 0.083333\n", "11 0.055556\n", "12 0.027778\n", "dtype: float64" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "twice = d6.add_dist(d6)\n", "twice" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 1:** Plot `twice` and compute its mean." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6.999999999999998" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZ8AAAEtCAYAAADX4G3qAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAfZklEQVR4nO3de5xdVX338U8gqLEkKDelPF5Ior88KIIIL6IiDRalCkUQEKyW4lML3ipPUMRaWhSkyEVbEC+ArcFCDRQ1KiqXyNU2SAF5LI38BCUiGiAomlG5BJLnj7UOHA9nJmdmzuyTST7v12teO7P22muvA8l8Z+299tpT1qxZgyRJTdpo0B2QJG14DB9JUuMMH0lS4wwfSVLjDB9JUuMMH0lS46YOugPSZBMRC4C/6KHqeZl5+MT2pncRcTdwW2buVb//DvDszJw92J5pQ2T4SKN3NrC47ftXAUcA5wDXtZX/qMlOjcEJwLRBd0IbJsNHGqXMXAIsaX0fEVMp4bMkM88fWMdGKTMvH3QftOHyno8kqXGOfKQJFBG3Ag9l5i5tZfOBTwBHZeaZHXV/nJn71e//CPh7YDdgDfBd4MOZ+Z0ezvtnwLHAC4E7gPd0qfOkez4RsT3lctw8YBPgZuC4zPyPtjovBj5a6zyl1vlIZl6x9v8iUuHIR5pY3wReGhHPaCubV7evahVExLbAi4Bv1O/fCFwJbEsJg5OAmcBVEbHPSCeMiLcDFwBDwAeAa2o/tlzLcXOA64E/Aj4JfAjYClgcETvXOjtRLjlG7dPfAk8DLo2Ig0ZqX2rnyEeaWN8CjqEEzqKI2AjYA/gZbeED7F2334yITYCzgLuAXTLzNwARcQ7wP8CnI2JWZj7aebJ6/+lkSojsmZmravktwLlr6etJlF9Id8vMH9fjLqJMnHg/8Ge1Xz8HXpaZv6t1zgKuBs6MiK+2zimNxJGPNLG+QxmBvLp+/1LgGcA/Ac+KiBfW8j8Bvp+ZPwV2BbYBPtkKHoDM/CXwKeC5tZ1udqWMcP6lIwQWACuH62REbFz7cEkreOo5VwCvAOZHxLOAV1JGZ0+PiC0jYktgM+Artc87j/hfQ6oMH2kC1QD4Nk+Ez56UkcMX6vd71NHQXtRLbsB2rcO7NPmDun3eMKd8ft3+3jTvOkq6Y4Subg08Hbi9y2e4NTPvBWbVovnAio6v0+q+545wDulxXnaTJt63gP3ryGFP4JrMvC8illIuvd0KPJNyXwZgyghttX5hfGSY/a0XdD1thGO72bhuV/dQ50zg68PUuXWE46XHGT7SxGuFyl6Uy1bH1u+vAV4H/Bh4gCeeHVpWt3N4YjTUEnX702HO1bpk9sK281JHV88DfjHMcfcBDwNPWu0gIo4FtqBMQgBYlZmLO+q8iDLq+t0w7Uu/x8tu0gTLzLspI4KjKPdHrqm7rqH8wD4MuDQzH6vlNwD3Au+JiE1b7UTEZsA7gbuBW4Y53Y2UYHpXRLSvXvAWyuhquD4+Qlm1Yd868651zs0pkw22q/ejbgH+T0Q8u63OUyj3lP6dJ0ZH0ogc+UjNaM16uy8zb6tlV9ftTMrzPEAJgog4Cvg34MaI+GfKL4p/Rbk388bMbF1e+z2ZuToi3gt8CfjPug7dc4B3UUZXI/kgZfR1Q0R8CvgNZeWGaW39+2tKSN0UEZ8BfkkJtl2AYzJzbeeQAEc+UlO+VbfXtgrqTfyk3Ge5tL1yZl5ImX12H/Bh4G8oEwbmZeZw91taxy4C9gVWAR8D9gMOB364luNupcxsu5lyafAjlFHWKzPzB7XOd4Ddge9RRkSnAk8F/jwzTx+pfandlDVruv4CJUnShHHkI0lqnOEjSWqc4SNJapzhI0lqnFOtexARj1KCeti1sSRJv2cGsDozu+aM4dObjYAp06dP32zQHZGkyWBoaAhGuLpm+PRm5fTp0ze78cYbB90PSZoUdtllF4aGhoa9WuQ9H0lS4wwfSVLjDB9JUuMMH0lS4wwfSVLjDB9JUuMMH0lS4wwfSVLjfMhUWgetfHAVS5f3dzWn7beZwYxpm/S1TWmsDB9pHbR0+UoOPef6vra58Ii5zJ25RV/blMbKy26SpMYZPpKkxhk+kqTGGT6SpMYZPpKkxhk+kqTGGT6SpMYZPpKkxhk+kqTGGT6SpMYZPpKkxhk+kqTGGT6SpMYNfFXriHgzcBwwE1gGnJyZX+jx2NOBnTJzr47y3YHruhzyjczcd3w9liSN10DDJyIOBi4AzgAuBfYHzouI32XmxWs59j3A+4Bvd9m9I/BbYK+O8gfG3WlJ0rgNeuRzMnBRZs6v318WEZsDJwJdwycitgVOBQ4Ffj1MuzsCt2Zmf1+IIknqi4Hd84mImcAs4Esduy4G5kTEdsMcehKwM2VUc8swdXYCvt+PfkqS+m+QI585dZsd5XfUbQB3djnuVOC2zFwdEcd37oyIjYAXA/dHxM31z/dQLu19IjPX9KPzkqSxG2T4bFa3nS+qH6rbGd0Oysyla2n3hcA0Snh9CFgBvAE4rbb5pMCSJDVrkOEzpW47RyKt8tVjbPdnwOuAWzLznlp2ZUQ8HTg2Ik7PzKHhD5ckTbRBhk9rskDnCGd6x/5RqcFyaZdd3wDeThkR3TiWtiVJ/THI8Gnd65kN/Hdb+eyO/aMSETsAuwOfy8xVbbum1e39Y2lXktQ/A5vtlpl3UCYUHNSx60Dg9sy8a4xNvwD4NOXSW7tD6vl+MsZ2JUl9MujnfE4APh8RDwCXAPsBb6I8w0NEbEWZjr00MzsnJgznEspltXMjYmvgp8BbatsHOttNkgZvoGu7ZeYC4B3A3sAiYB5wWGZeWKvsAyyhPNfTa5uPUEY9iygz274KbA8ckJlf6VffJUljN+iRD5l5NnD2MPsWAAtGOHbeMOX3A0eOv3eSpIngqtaSpMYZPpKkxhk+kqTGGT6SpMYZPpKkxhk+kqTGGT6SpMYN/DkfaTJY+eAqli7vdZGN3my/zQxmTNukr22O1fr++bTuMXykHixdvpJDz+nvW9kXHjGXuTO36GubY7W+fz6te7zsJklqnOEjSWqc4SNJapzhI0lqnOEjSWqc4SNJapzhI0lqnOEjSWqc4SNJapzhI0lqnOEjSWqc4SNJapzhI0lqnOEjSWqc4SNJapzhI0lqnOEjSWqc4SNJapzhI0lqnOEjSWqc4SNJapzhI0lqnOEjSWqc4SNJapzhI0lqnOEjSWqc4SNJapzhI0lqnOEjSWqc4SNJapzhI0lqnOEjSWrc1EF3QBqtlQ+uYunylX1vd/ttZjBj2iZ9b1dP5v9DGT6adJYuX8mh51zf93YXHjGXuTO36Hu7ejL/H8rLbpKkxhk+kqTGGT6SpMYZPpKkxhk+kqTGGT6SpMYNfKp1RLwZOA6YCSwDTs7ML/R47OnATpm5V0f5VOB44HBgC+Am4H2ZeUP/ei5JGquBjnwi4mDgAuByYH/gauC8iDioh2PfA7xvmN1nAEcDpwCHAI8CiyNiZh+6LUkap0GPfE4GLsrM+fX7yyJic+BE4OJuB0TEtsCpwKHAr7vsfz5wJPCezPxsLbsc+CFwDPDOPn8GSdIoDWzkU0chs4Avdey6GJgTEdsNc+hJwM7AXsAtXfa/Gti4vd3MfBi4BHj9OLstSeqDQV52m1O32VF+R93GMMedCrwoM68aod0HMnNFl3afGxHTRt1TSVJfDfKy22Z127m64FDdzuh2UGYu7aHdbisWttqdDjzYSwclSRNjrSOfiHhJRGy2tnpjMKVu1wxTvnoc7Xa22Y92JUl90stlt+8B+7QXRMTUiNhjnKHUmizQOcKZ3rF/LO12GzW12u3/Ou6SpFHpJXymdCnbDLgKeNk4zt261zO7o3x2x/6xtLt5RDyzS7t3ZuYjY2xXktQn45lw0C2UepaZdwB3Ap3P9BwI3J6Zd42x6Svq9vF2I+KplNHb4jG2KUnqo0E/53MC8PmIeIAyFXo/4E2UZ3iIiK0o07GXZmZPl8sy8ycRcR5wZkRsCtxOeeD0mZSZcpKkARvoCgeZuQB4B7A3sAiYBxyWmRfWKvsASyjP9YzGkcBngQ8CF1JC9jV1tCVJGrBBj3zIzLOBs4fZtwBYMMKx84YpfxiYX78kSeuYXsNnTkTs0fZ9a5bbSyLi0W4HZOa14+qZJGm91Wv4/G396vTxEY7ZePTdkSRtCHoJn49MeC8kSRuUtYZPZho+kqS+8k2mkqTGrXXkExH/MoZ212TmX47hOEnSBqCXez6H88RCnb2uarAGMHwkSV31Ej7/DewArAC+CnwZ+HZmrprIjkmS1l9rveeTmTsCM4GPUV7UdgmwIiLOj4gDfTmbJGm0enrOJzOXAf8I/GNdb23/+nUB8FhEXAF8BfhaZj4wQX2VJK0nRj3bLTNXZOa5mbkPsBXl3s5DwJnAvRGxOCLe2ed+SpLWI+Na2y0zh4CFwMKIeBFwOmWR0D2Bz4y/e5Kk9dG4wici5lJeg/AGyv2g1cA1lBWqJUnqalThU1/KthclbP4U2Bp4kPICt1OBr2fmL/vdSUnS+qWXh0y3APalBM5rgD8A7qfMelsEXJ6ZD01kJ7VuW/ngKpYu7+ldf6Oy/TYzmDFtk763qw2Pf0fXPb2MfO6lPFx6J3AOJXC+k5lrRjxKG4yly1dy6DnX973dhUfMZe7MLfrerjY8/h1d9/QSPq0ZcTOB/1u/iIiRjlmTmQN/UZ0kad3US0CcN+G9kCRtUHp5pcLbACJiE+BF9Zilmfm7Ce6bJGk91dNDphExH7gPuAn4LnB/RJwWEV5akySNWi+z3Q6jvC57GfAFyrM8ewJH1+PnT2D/JEnroV5GPu8Crge2z8yjMnM+8FLgYuDIiHjKRHZQkrT+6SV8/jdwfvuzPHWa9T8CT637JUnqWS/h8wfAr7uU30l5/ucZfe2RJGm910v4bMQTbzJt92jdbty/7kiSNgSjfqWCJEnj1etU6S0i4rkdZZvX7dZd9pGZd42rZ5Kk9Vav4fNP9aubC7qUrRlF25KkDYzL60iSGtfz8jqSJPWLEw4kSY0zfCRJjTN8JEmNM3wkSY0zfCRJjTN8JEmNM3wkSY0zfCRJjTN8JEmNM3wkSY0zfCRJjTN8JEmNM3wkSY0zfCRJjTN8JEmNM3wkSY0zfCRJjTN8JEmNW+trtDX5rHxwFUuXr+x7u9tvM4MZ0zbpe7vS+sZ/g2tn+KyHli5fyaHnXN/3dhceMZe5M7foe7vS+sZ/g2s38PCJiDcDxwEzgWXAyZn5hRHqbwqcAhwIbApcCxyVmbe31dkduK7L4d/IzH3713tJ0lgM9J5PRBwMXABcDuwPXA2cFxEHjXDYhcDBwLHAYcC2wFURsVlbnR2B3wIv7/h6X58/giRpDAY98jkZuCgz59fvL4uIzYETgYs7K9cRzeuB12XmpbXsOuBO4B2UERGU8Lk1M/s/7pUkjdvARj4RMROYBXypY9fFwJyI2K7LYa8FhoArWgWZuQK4hhJKLTsB3+9rhyVJfTPIkc+cus2O8jvqNigjms5j7sjMx7occwhARGwEvBi4PyJurn++BzgD+ERmrulP9yVJYzXI8Gndo+mcjzhUtzOGOabb/MWhtvovBKZRwutDwArgDcBptc7xY++yJKkfBhk+U+q2cyTSKl89zDHdRi5T2ur/DHgdcEtm3lPLroyIpwPHRsTpmTnUpQ1JUkMGGT6/rtvOEc70jv2dx8zsUj69Vb8Gy6Vd6nwDeDtlRHTjaDsrSeqfQU61bt3rmd1RPrtjf+cxMyNiSkf57Fb9iNghIt4ZEZ2PAU+r2/vH2F9JUp8MLHwy8w7KhILOZ3oOBG7PzLu6HHY58Axgr1ZBRGwF7AEsrkUvAD5NufTW7pB6vp+Mu/OSpHEZ9HM+JwCfj4gHgEuA/YA3AYfC48EyC1iamSsz89qIuBpYGBEfAH4JfBj4FfCZ2uYllMtq50bE1sBPgbfUtg90tpskDd5AVzjIzAWUh0P3BhYB84DDMvPCWmUfYAmwc9thbwS+BpwOLADuBv44Mx+obT5CGfUsosxs+yqwPXBAZn5lQj+QJKkngx75kJlnA2cPs28BJWDayx4A3la/hmvzfuDIvnVSktRXvs9HktQ4w0eS1DjDR5LUOMNHktQ4w0eS1DjDR5LUOMNHktQ4w0eS1DjDR5LUOMNHktQ4w0eS1DjDR5LUOMNHktQ4w0eS1DjDR5LUOMNHktQ4w0eS1DjDR5LUOMNHktQ4w0eS1Lipg+7AhmDlg6tYunxlX9vcfpsZzJi2SV/blDR5TbafM4ZPA5YuX8mh51zf1zYXHjGXuTO36GubkiavyfZzxstukqTGGT6SpMYZPpKkxhk+kqTGGT6SpMYZPpKkxhk+kqTGGT6SpMYZPpKkxhk+kqTGGT6SpMYZPpKkxhk+kqTGGT6SpMYZPpKkxhk+kqTGGT6SpMYZPpKkxhk+kqTGGT6SpMYZPpKkxhk+kqTGGT6SpMYZPpKkxhk+kqTGGT6SpMYZPpKkxk0ddAci4s3AccBMYBlwcmZ+YYT6mwKnAAcCmwLXAkdl5u1tdaYCxwOHA1sANwHvy8wbJuZTSJJGY6Ajn4g4GLgAuBzYH7gaOC8iDhrhsAuBg4FjgcOAbYGrImKztjpnAEdTQuoQ4FFgcUTM7PdnkCSN3qBHPicDF2Xm/Pr9ZRGxOXAicHFn5YjYHXg98LrMvLSWXQfcCbwDOCUing8cCbwnMz9b61wO/BA4BnjnhH4iSdJaDWzkU0chs4Avdey6GJgTEdt1Oey1wBBwRasgM1cA11BCCeDVwMbt7Wbmw8AlbXUkSQM0Zc2aNQM5cUS8HvgGsGNmfr+t/KXAzbSNbtr2XQTMzsydO8rPAA7JzGdHxKnA2zNz844684FPAE/PzAdH2dfVwJTp06eP5rDHrVkDq/v833mjKVOYMqW58410zvX9fBN1Ts+3/v6d2RD+jq7N0NAQwJrM7DrIGeRlt9Y9mpUd5UN1O2OYYzrrt46Z0UMdgOnAqMIHWA1sNDQ01K1dSdKTzaD87OxqkOHTytPOqG6Vd+v0lC71W+Wre6gzXLsjysxB3xuTpPXKIGe7/bpuO0c40zv2dx7TbUQ0va3+SHWg+6hIktSgQYZP1u3sjvLZHfs7j5kZEZ1XIWe31U9g84h4Zpc6d2bmI2PsrySpTwYWPpl5B2WKdOczPQcCt2fmXV0Ouxx4BrBXqyAitgL2ABbXotZMuIPa6jwV2KetjiRpgAY22w0gIg4HPg98ijIVej/KcziHZuaFNVhmAUszc2U95irgJcAHgF8CH6asYrBDZj5Q6yygPFz6IeB2ygOnuwA719CTJA3QQFc4yMwFlIdD9wYWAfOAwzLzwlplH2AJ0D61+o3A14DTgQXA3cAft4KnOhL4LPBByooIU4HXGDyStG4Y6MhHkrRhclVrSVLjDB9JUuMMH0lS4wwfSVLjDB9JUuNcs2wdEBEbAUcA76K80fVe4KvA8Zk5NNKxk1FEfBl4SWZ2rm4xqUXEHsA/UB4N+BXltR5/k5m/GWjH+iQi3gEcBTwX+BFwSmZeMNhejV9E7AT8F7BdZt7dVv5a4CTgRZR/k2dl5scH08uxG+HzHUx5XnIO5e/rYuDYzLyviX458lk3fAA4i/KKif2BjwN/Afz7IDs1ESLircABg+5Hv0XEXMrqGvdQHpY+AXgr8LlB9qtfIuII4DOUv6NvoPygOr/+AJu0IiIoD7hP7Sh/RS2/jfJs4QXAaRHx/sY7OQ4jfL5DgIuAmyiryhxHeRfa4roizITzOZ8Bq+vU/QL4Yma+u638EGAh8NLMvGVQ/euniPhD4Fbgt8DD69PIJyKuqX+cl5lratm7Katr7JCZvxtY5/ogIv4TeCgzX91Wdi3wWGbuObiejU1ETKVcbfgYsArYHHhOa2QQEYuBTTNzbtsxp9Rjnl1fULnO6uHz3QL8LDP3aTtmN+B64IDMXDTRfXTkM3jTgfOBf+sov61uZzXbnQn1Ocr6fN8edEf6KSK2BF4FfKYVPACZ+anMnDXZg6d6Gk+8E6vlF5SlrSaj3YFTKVcZjm3fERFPo6wX2e0ty88AXtFEB8dppM83hTJyPafjmEZ/5njPZ8DqmnXv7bJr/7r9nwa7M2Ei4u3AyyjXz08fcHf6bQfK+6J+GREXAvsCj1J+oTh6tG/OXUedAZxbL7NdRnml/b6U9RMnox8AMzPzvrrGZLuZwCY8eWX91vJcAVw1sd0bt2E/X/0Fqdvlw0Z/5hg+66A6/P0gsCgzb1tb/XVdRDyP8grzt2Xm/eUy9Hplq7pdAHwF+FNgR+CjwDTg8IH0qr++SLkncFFb2XmZedqA+jMumXnvCLvH8pbldcpaPt+TRMQsyi+FN1OuTkw4w2cdExGvpNwgvBN4+4C7M251iP8vwDczs/MyxvriKXX7n2337a6sn/30iDghM388oL71y9col5uOpvyA2g34+4hYmZndRu6T2XBvWW4Z9duQ12URMYcSOI8Cb8rMRj6f4bMOqZMMFgA/BP4kM38x2B71xbspr8DYod4EhfqPu37/WPt9kkmq9RvxNzvKL6Ncc98BmLThU2d+7U0ZuS6oxddExK+AsyPi3Mz874F1sP+Ge8vyjI79k15EzAO+DPwG2DMzf9TUuZ1wsI6IiKMplzaWAHtk5vIBd6lfDgK2BJZTZt2sAg6j3NRcRZlSPtndXredU1RbI6LJHq7Pq9v/6Ci/tm63b7AvTfgR8Bije8vypFN/2b2M8lqalzd9id/wWQdExF9SfkO+iDLiWW9+s6K8W2nXjq9LKH/hdwW+Priu9c0PgJ8Ah3aUtyYeLGm8R/3V+mG7R0f5y+t2WXNdmXiZ+RAlWN9YL522HEgZ9dw4kI71UUTsTZlluwTYPTN/1nQfvOw2YBGxNXAm5YfXWcDOHTfk78jM+wfRt37IzCf9lhgRv6A85zPp/xFDmT0UEccCX4yI8ymXTl9GeXDvzMxcMcj+jVdm3hwRi4B/iogZwPcobwb+e+BbmfndgXZwYnyUMh15YX0z8iuAY4APTvap8/Uh0n+mXGo7Cdi+42fOT5sII8Nn8P4EeDrl0sZ1Xfb/OeU3FK3D6mvfH6b8QL4EuI+yysHJA+1Y/xwKHA/MB7amjHZOB04ZYJ8mTGZeGREHAh+hvGX5Z8Axk3F5nS52A7atf+42s+3vKOE7oVzhQJLUOO/5SJIaZ/hIkhpn+EiSGmf4SJIaZ/hIkhpn+EiSGudzPtI41Af23k15DmYOZSmdH1GWSjpnrKtV1IePf5uZv+1XX6V1iSMfaYwiYlvKUiunU5YL+hvgbykv5foH4KYYw/sjIuJ1lCVttlpbXWmycuQjjUFEPAX4KvB8YK/MvLJt91kRcQZlletvRcSLR7kky26UN2ZK6y1HPtLY/AVl/bb3dwQPAHW9s6OA7Shrgklq4/I60hhExHXATsBWdRXkbnWmAD8HhjLzhRGxDFiWmfM66j1eXhexbH/NxDWt+vWlXydQ3ii6CWWBz7/LzOva2toBOBGYR3nFw/8DPpaZi9rqXE1ZVPLc2l5Q7lO9H/gO5TLiwZQVub8MzG9/FXhEvLweN7cWLQGOy8wbRvhPJv0eRz7SKEXExpTXQXxvuOCBsto1cBXwgoh4do/Nn015FTeURTxPqud8AfBdSvCcBXwI2By4IiJ2rXV2Ba6nXLb7eK3zFOArEfFuft/OwOcp4XIs5Z1L/065VPj8euxiyisxPtD22V8DXEN51XRrAcrnAtdGxKt6/IyS93ykMdicMqro5YV/P6/bP+yl4cxcEhHfBw4AFmXmsrrro5TRzssy8w6AiFhIGbEcA7wJ+CTlFc+7Zubdtc5nKC+BOy0iLmx7Pcc2wJ9m5iW13irgU8DUzNy7lp0NvAp4LfCRiNgI+CxwA/BHmflYrXcWcAvl1SAv7eVzSo58pNFrvWDs0R7qruo4ZtTqD/3XA99sBQ9Afc367sB7I+JZlBHPv7aCp9Z5CDgNmAa8pq3Zh4BL277/Yd0+fnmujtyWUYIKSrDMrHWeGRFbRsSWte2vAztFxP8a6+fUhsWRjzR6Kyih8qwe6rZGPD8fsdbItgA25YnXdT8uM28FiIjdWkVdjv9B3T6vrewXmdkenq0/39dx7GM88UvqrLo9rX518xzKtHNpRI58pFGqI4L/AHaNiKcNV69OONgd+HFmjnSJbuO1nLK1f/UIdUYaWbX+nT/SVjbcqG2kGUitfvwdZRTV7eu2EY6XHufIRxqbf6XMKDuCcq+jmzdQLlOdWL9/jHKv6HERMZVys/9HI5zrfuBBYHbnjoh4P/Bsygw1KKssPKla3f50hHP0Ylnd/iYzF3f0Y1fKvbAHOw+SunHkI43NAsoU449FxGs7d0bETsA5wJ3AqbX4nrIrprVV3Q/oHD09VrcbAdTLY5cDr4+I57Sd45mUyQazMvMeymoLb22/71Ifhj0aeBi4Ykyf9Ak3UiZZvDciNm07xwzgIsrsuV7ug0mOfKSxyMzVEXEA8DXg0oj4MnAlJTjmAm8B7gLekJm/qYd9kTIj7dKIOJ8ykjkC+ElH8yvq9piI+FZmfo2ydM93gRvq7LKVwF9R7gUdV+u/t/bhvyLi08AQ8FbKw7DvzcxfjfMzr4qIv6YEzc0R8TnKxIW/otxPekvHfSRpWI58pDHKzHuBPSjPwvwh5fLaqcCOlEB4WWb+T9shnwaOp6x68EnKZbsDgFs7ml5IecbmbcAp9Vw/AF5Omeb8AcpDnsuB3VvnyMwlwCuBmygPjH6UEg77Z+Yn+/SZv0SZen035d7PiZQg3C8zv9iPc2jD4AoHkqTGOfKRJDXO8JEkNc7wkSQ1zvCRJDXO8JEkNc7wkSQ1zvCRJDXO8JEkNc7wkSQ1zvCRJDXu/wNyleI0S5J80QAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "twice.bar()\n", "decorate_dice('Two dice')\n", "twice.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 2:** Suppose I roll two dice and tell you the result is greater than 3.\n", "\n", "Plot the `Pmf` of the remaining possible outcomes and compute its mean." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "7.393939393939394" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "twice_gt3 = d6.add_dist(d6)\n", "twice_gt3[2] = 0\n", "twice_gt3[3] = 0\n", "twice_gt3.normalize()\n", "\n", "twice_gt3.bar()\n", "decorate_dice('Two dice, greater than 3')\n", "twice_gt3.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Bonus exercise:** In Dungeons and Dragons, the amount of damage a [goblin](https://www.dndbeyond.com/monsters/goblin) can withstand is the sum of two six-sided dice. The amount of damage you inflict with a [short sword](https://www.dndbeyond.com/equipment/shortsword) is determined by rolling one six-sided die.\n", "\n", "Suppose you are fighting a goblin and you have already inflicted 3 points of damage. What is your probability of defeating the goblin with your next successful attack?\n", "\n", "Hint: `Pmf` provides comparator functions like `gt_dist` and `le_dist`, which compare two distributions and return a probability." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "damage = d6.add_dist(3)\n", "damage.bar()\n", "decorate_dice('Total Damage')" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "hit_points = d6.add_dist(d6)\n", "damage.ge_dist(hit_points)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The cookie problem\n", "\n", "`Pmf.from_seq` makes a `Pmf` object from a sequence of values.\n", "\n", "Here's how we can use it to create a `Pmf` with two equally likely hypotheses." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
probs
Bowl 10.5
Bowl 20.5
\n", "
" ], "text/plain": [ "Bowl 1 0.5\n", "Bowl 2 0.5\n", "dtype: float64" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cookie = Pmf.from_seq(['Bowl 1', 'Bowl 2'])\n", "cookie" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can update each hypothesis with the likelihood of the data (a vanilla cookie)." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.625" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cookie['Bowl 1'] *= 0.75\n", "cookie['Bowl 2'] *= 0.5\n", "cookie.normalize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And display the posterior probabilities." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
probs
Bowl 10.6
Bowl 20.4
\n", "
" ], "text/plain": [ "Bowl 1 0.6\n", "Bowl 2 0.4\n", "dtype: float64" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cookie" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 3:** Suppose we put the first cookie back, stir, choose again from the same bowl, and get a chocolate cookie. \n", "\n", "What are the posterior probabilities after the second cookie?\n", "\n", "Hint: The posterior (after the first cookie) becomes the prior (before the second cookie)." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
probs
Bowl 10.428571
Bowl 20.571429
\n", "
" ], "text/plain": [ "Bowl 1 0.428571\n", "Bowl 2 0.571429\n", "dtype: float64" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "cookie['Bowl 1'] *= 0.25\n", "cookie['Bowl 2'] *= 0.5\n", "cookie.normalize()\n", "cookie" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 4:** Instead of doing two updates, what if we collapse the two pieces of data into one update?\n", "\n", "Re-initialize `Pmf` with two equally likely hypotheses and perform one update based on two pieces of data, a vanilla cookie and a chocolate cookie.\n", "\n", "The result should be the same regardless of how many updates you do (or the order of updates)." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
probs
Bowl 10.428571
Bowl 20.571429
\n", "
" ], "text/plain": [ "Bowl 1 0.428571\n", "Bowl 2 0.571429\n", "dtype: float64" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "cookie = Pmf.from_seq(['Bowl 1', 'Bowl 2'])\n", "cookie['Bowl 1'] *= 0.75 * 0.25\n", "cookie['Bowl 2'] *= 0.5 * 0.5\n", "cookie.normalize()\n", "cookie" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.7.3" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: debug.ipynb ================================================ { "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/downey/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n", " from ._conv import register_converters as _register_converters\n" ] } ], "source": [ "from __future__ import print_function, division\n", "\n", "%matplotlib inline\n", "\n", "import numpy as np\n", "import pymc3 as pm\n", "import scipy\n", "import seaborn as sns\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "import thinkbayes2\n", "import thinkplot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I want to predict the number of goals scored in the next game, where\n", "\n", "`goals ~ Poisson(mu)`\n", "\n", "`mu ~ Gamma(alpha, beta)`\n", "\n", "Suppose my posterior distribution for `mu` has `alpha=10`, `beta=5`." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "alpha = 10\n", "beta = 5" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I can draw a sample from the posterior, and it has the mean I expect, `alpha/beta`" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.0014370180768606" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "iters = 100000\n", "sample_mu = np.random.gamma(shape=alpha, scale=1/beta, size=iters)\n", "np.mean(sample_mu)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.0" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mu = alpha / beta\n", "mu" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I can sample from the predictive distribution by drawing one Poisson sample for each sampled value of `mu`, and it has the mean I expect." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.00996" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_pred = np.random.poisson(sample_mu)\n", "np.mean(sample_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now I'll try to do the same thing with pymc3.\n", "\n", "Pretending that `mu` is a known constant, I can sample from `Poisson(mu)` and I get the mean I expect." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.00449" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " goals = pm.Poisson('goals', mu)\n", " sample_pred_wrong_pm = goals.random(size=iters)\n", "\n", "np.mean(sample_pred_wrong_pm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And sampling from the posterior disrtribution of `mu`, I get the mean I expect." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.9981993583520818" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " mu = pm.Gamma('mu', alpha, beta)\n", " sample_post_pm = mu.random(size=iters)\n", "\n", "np.mean(sample_post_pm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But if I try to sample from the posterior predictive distribution (at least in the way I expected it to work), I don't get the mean I expect." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.37646" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " mu = pm.Gamma('mu', alpha, beta)\n", " goals = pm.Poisson('goals', mu)\n", " sample_pred_pm = goals.random(size=iters)\n", "\n", "np.mean(sample_pred_pm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks like it might be taking one sample from the Gamma distribution and using it to generate the entire sample of goals.\n", "\n", "I suspect something is wrong with my mental model of how to specify the model in pymc3." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.6.4" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: dice.py ================================================ """This file contains code for use with "Think Bayes", by Allen B. Downey, available from greenteapress.com Copyright 2012 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division from thinkbayes import Suite class Dice(Suite): """Represents hypotheses about which die was rolled.""" def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. hypo: integer number of sides on the die data: integer die roll """ # write this method return 1 def main(): suite = Dice([4, 6, 8, 12, 20]) suite.Update(6) print('After one 6') suite.Print() for roll in [8, 7, 7, 5, 4]: suite.Update(roll) print('After more rolls') suite.Print() if __name__ == '__main__': main() ================================================ FILE: dice_soln.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Bayesian Statistics Made Simple\n", "===\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2016 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "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": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "import seaborn as sns\n", "sns.set_style('white')\n", "sns.set_context('talk')\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "from empiricaldist import Pmf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The dice problem\n", "\n", "Create a suite of hypotheses that represents dice with different numbers of sides." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "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", "
probs
40.25
60.25
80.25
120.25
\n", "
" ], "text/plain": [ "4 0.25\n", "6 0.25\n", "8 0.25\n", "12 0.25\n", "dtype: float64" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dice = Pmf.from_seq([4, 6, 8, 12])\n", "dice" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 1:** We'll solve this problem two ways. First we'll do it \"by hand\", as we did with the cookie problem; that is, we'll multiply each hypothesis by the likelihood of the data, and then renormalize.\n", "\n", "In the space below, update `dice` based on the likelihood of the data (rolling a 6), then normalize and display the results." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "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", "
probs
40.000000
60.444444
80.333333
120.222222
\n", "
" ], "text/plain": [ "4 0.000000\n", "6 0.444444\n", "8 0.333333\n", "12 0.222222\n", "dtype: float64" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "dice[4] *= 0\n", "dice[6] *= 1/6\n", "dice[8] *= 1/8\n", "dice[12] *= 1/12\n", "\n", "dice.normalize()\n", "dice" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 2:** Now let's do the same calculation using `Pmf.update`, which encodes the structure of a Bayesian update.\n", "\n", "Define a function called `likelihood_dice` that takes `data` and `hypo` and returns the probability of the data (the outcome of rolling the die) for a given hypothesis (number of sides on the die).\n", "\n", "Hint: What should you do if the outcome exceeds the hypothetical number of sides on the die?\n", "\n", "Here's an outline to get you started." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def likelihood_dice(data, hypo):\n", " \"\"\"Likelihood function for the dice problem.\n", " \n", " data: outcome of the die roll\n", " hypo: number of sides\n", " \n", " returns: float probability\n", " \"\"\"\n", " # TODO: fill this in!\n", " return 1" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# Solution\n", " \n", "def likelihood_dice(data, hypo):\n", " \"\"\"Likelihood function for the dice problem.\n", " \n", " data: outcome of the die roll\n", " hypo: number of sides\n", " \n", " returns: float probability\n", " \"\"\"\n", " if data > hypo:\n", " return 0\n", " else:\n", " return 1 / hypo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can create a `Pmf` object and update it." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "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", "
probs
40.000000
60.444444
80.333333
120.222222
\n", "
" ], "text/plain": [ "4 0.000000\n", "6 0.444444\n", "8 0.333333\n", "12 0.222222\n", "dtype: float64" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dice = Pmf.from_seq([4, 6, 8, 12])\n", "dice.update(likelihood_dice, 6)\n", "dice" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we get more data, we can perform more updates." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "for roll in [8, 7, 7, 5, 4]:\n", " dice.update(likelihood_dice, roll)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the results." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "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", "
probs
40.000000
60.000000
80.919294
120.080706
\n", "
" ], "text/plain": [ "4 0.000000\n", "6 0.000000\n", "8 0.919294\n", "12 0.080706\n", "dtype: float64" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dice" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The German tank problem\n", "\n", "The German tank problem is actually identical to the dice problem." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "def likelihood_tank(data, hypo):\n", " \"\"\"Likelihood function for the tank problem.\n", " \n", " data: observed serial number\n", " hypo: number of tanks\n", " \n", " returns: float probability\n", " \"\"\"\n", " if data > hypo:\n", " return 0\n", " else:\n", " return 1 / hypo" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is the update after seeing Tank #42." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "66.32784309363326" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tank = Pmf.from_seq(range(100))\n", "tank.update(likelihood_tank, 42)\n", "tank.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what the posterior distribution looks like." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "def decorate_tank(title):\n", " \"\"\"Labels the axes.\n", " \n", " title: string\n", " \"\"\"\n", " plt.xlabel('Number of tanks')\n", " plt.ylabel('PMF')\n", " plt.title(title)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "tank.plot()\n", "decorate_tank('Distribution after one tank')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 3:** Suppose we see another tank with serial number 17. What effect does this have on the posterior probabilities?\n", "\n", "Update the `Pmf` with the new data and plot the results." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "62.25994473449364" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "tank.plot(color='0.7', label='prior')\n", "tank.update(likelihood_tank, 17)\n", "tank.plot(label='posterior')\n", "\n", "plt.legend()\n", "decorate_tank('Distribution after two tanks')\n", "\n", "tank.mean()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.7.3" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: dice_soln.py ================================================ """This file contains code for use with "Think Bayes", by Allen B. Downey, available from greenteapress.com Copyright 2012 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division from thinkbayes import Suite class Dice(Suite): """Represents hypotheses about which die was rolled.""" def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. hypo: integer number of sides on the die data: integer die roll """ if hypo < data: return 0 else: return 1.0/hypo def main(): suite = Dice([4, 6, 8, 12, 20]) suite.Update(6) print('After one 6') suite.Print() for roll in [8, 7, 7, 5, 4]: suite.Update(roll) print('After more rolls') suite.Print() if __name__ == '__main__': main() ================================================ FILE: distribution.py ================================================ """ Pmf: Represents a Probability Mass Function (PMF). Cdf: Represents a Cumulative Distribution Function (CDF). Copyright 2019 Allen B. Downey MIT License: https://opensource.org/licenses/MIT """ import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from scipy.interpolate import interp1d def underride(d, **options): """Add key-value pairs to d only if key is not in d. d: dictionary options: keyword args to add to d returns: modified d """ for key, val in options.items(): d.setdefault(key, val) return d class Pmf(pd.Series): """Represents a probability Mass Function (PMF).""" def __init__(self, *args, **kwargs): """Initialize a Pmf. Note: this cleans up a weird Series behavior, which is that Series() and Series([]) yield different results. See: https://github.com/pandas-dev/pandas/issues/16737 """ if args: super().__init__(*args, **kwargs) else: underride(kwargs, dtype=np.float64) super().__init__([], **kwargs) def copy(self, **kwargs): """Make a copy. returns: new Pmf """ return Pmf(self, **kwargs) def __getitem__(self, qs): """Look up qs and return ps.""" try: return super().__getitem__(qs) except (KeyError, ValueError, IndexError): return 0 @property def qs(self): """Get the quantities. returns: NumPy array """ return self.index.values @property def ps(self): """Get the probabilities. returns: NumPy array """ return self.values def _repr_html_(self): """Returns an HTML representation of the series. Mostly used for Jupyter notebooks. """ df = pd.DataFrame(dict(probs=self)) return df._repr_html_() def normalize(self): """Make the probabilities add up to 1 (modifies self). returns: normalizing constant """ total = self.sum() self /= total return total def mean(self): """Computes expected value. returns: float """ #TODO: error if not normalized return np.sum(self.ps * self.qs) def median(self): """Median (50th percentile). returns: float """ return self.quantile(0.5) def quantile(self, ps): """Quantiles. Computes the inverse CDF of ps, that is, the values that correspond to the given probabilities. returns: float """ return self.make_cdf().quantile(ps) def var(self): """Variance of a PMF. returns: float """ m = self.mean() d = self.qs - m return np.sum(d**2 * self.ps) def std(self): """Standard deviation of a PMF. returns: float """ return np.sqrt(self.var()) def sample(self, *args, **kwargs): """Makes a random sample. args: same as ps.Series.sample options: same as ps.Series.sample returns: Series """ # TODO: finish this underride(kwargs, weights=self.ps) return self.index.sample(*args, **kwargs) def choice(self, *args, **kwargs): """Makes a random sample. Uses the probabilities as weights unless `p` is provided. args: same as np.random.choice options: same as np.random.choice returns: NumPy array """ underride(kwargs, p=self.ps) return np.random.choice(self.qs, *args, **kwargs) def bar(self, **options): """Makes a bar plot. options: same as plt.bar """ underride(options, label=self.name) plt.bar(self.qs, self.ps, **options) def __add__(self, x): """Computes the Pmf of the sum of values drawn from self and x. x: another Pmf or a scalar returns: new Pmf """ if isinstance(x, Pmf): return pmf_add(self, x) else: return Pmf(self.ps, index=self.qs + x) __radd__ = __add__ def __sub__(self, x): """Computes the Pmf of the diff of values drawn from self and other. x: another Pmf returns: new Pmf """ if isinstance(x, Pmf): return pmf_sub(self, x) else: return Pmf(self.ps, index=self.qs - x) # TODO: implement rsub # __rsub__ = __sub__ # TODO: mul, div, truediv, divmod? def make_joint(self, other, **options): """Make joint distribution :param self: :param other: :param options: passed to Pmf constructor :return: new Pmf """ qs = pd.MultiIndex.from_product([self.qs, other.qs]) ps = np.multiply.outer(self.ps, other.ps).flatten() return Pmf(ps, index=qs, **options) def marginal(self, i, name=None): """Gets the marginal distribution of the indicated variable. i: index of the variable we want name: string Returns: Pmf """ # TODO: rewrite this using multiindex operations pmf = Pmf(name=name) for vs, p in self.items(): pmf[vs[i]] += p return pmf def conditional(self, i, j, val, name=None): """Gets the conditional distribution of the indicated variable. Distribution of vs[i], conditioned on vs[j] = val. i: index of the variable we want j: which variable is conditioned on val: the value the jth variable has to have name: string Returns: Pmf """ # TODO: rewrite this using multiindex operations pmf = Pmf(name=name) for vs, p in self.items(): if vs[j] == val: pmf[vs[i]] += p pmf.normalize() return pmf def update(self, likelihood, data): """Bayesian update. likelihood: function that takes (data, hypo) and returns likelihood of data under hypo data: whatever format like_func understands returns: normalizing constant """ for hypo in self.qs: self[hypo] *= likelihood(data, hypo) return self.normalize() def max_prob(self): """Value with the highest probability. returns: the value with the highest probability """ return self.idxmax() def make_cdf(self, normalize=True): """Make a Cdf from the Pmf. It can be good to normalize the cdf even if the Pmf was normalized, to guarantee that the last element of `ps` is 1. returns: Cdf """ cdf = Cdf(self.cumsum()) if normalize: cdf.normalize() return cdf def quantile(self, ps): """Quantities corresponding to given probabilities. ps: sequence of probabilities return: sequence of quantities """ cdf = self.sort_index().cumsum() interp = interp1d(cdf.values, cdf.index, kind='next', copy=False, assume_sorted=True, bounds_error=False, fill_value=(self.qs[0], np.nan)) return interp(ps) def credible_interval(self, p): """Credible interval containing the given probability. p: float 0-1 returns: array of two quantities """ tail = (1-p) / 2 ps = [tail, 1-tail] return self.quantile(ps) @staticmethod def from_seq(seq, normalize=True, sort=True, **options): """Make a PMF from a sequence of values. seq: any kind of sequence normalize: whether to normalize the Pmf, default True sort: whether to sort the Pmf by values, default True options: passed to the pd.Series constructor returns: Pmf object """ series = pd.Series(seq).value_counts(sort=False) options['copy'] = False pmf = Pmf(series, **options) if sort: pmf.sort_index(inplace=True) if normalize: pmf.normalize() return pmf # Comparison operators def gt(self, x): """Probability that a sample from this Pmf > x. x: number returns: float probability """ if isinstance(x, Pmf): return pmf_gt(self, x) else: return self[self.qs > x].sum() __gt__ = gt def lt(self, x): """Probability that a sample from this Pmf < x. x: number returns: float probability """ if isinstance(x, Pmf): return pmf_lt(self, x) else: return self[self.qs < x].sum() __lt__ = lt def ge(self, x): """Probability that a sample from this Pmf >= x. x: number returns: float probability """ if isinstance(x, Pmf): return pmf_ge(self, x) else: return self[self.qs >= x].sum() __ge__ = ge def le(self, x): """Probability that a sample from this Pmf <= x. x: number returns: float probability """ if isinstance(x, Pmf): return pmf_le(self, x) else: return self[self.qs <= x].sum() __le__ = le def eq(self, x): """Probability that a sample from this Pmf == x. x: number returns: float probability """ if isinstance(x, Pmf): return pmf_eq(self, x) else: return self[self.qs == x].sum() __eq__ = eq def ne(self, x): """Probability that a sample from this Pmf != x. x: number returns: float probability """ if isinstance(x, Pmf): return pmf_ne(self, x) else: return self[self.qs != x].sum() __ne__ = ne def pmf_conv(pmf1, pmf2, ufunc): """Convolve two PMFs. pmf1: pmf2: ufunc: elementwise function for arrays returns: new Pmf """ qs = ufunc(pmf1.qs, pmf2.qs).flatten() ps = np.multiply.outer(pmf1.ps, pmf2.ps).flatten() series = pd.Series(ps).groupby(qs).sum() return Pmf(series) def pmf_add(pmf1, pmf2): """Distribution of the sum. pmf1: pmf2: returns: new Pmf """ return pmf_conv(pmf1, pmf2, np.add.outer) def pmf_sub(pmf1, pmf2): """Distribution of the difference. pmf1: pmf2: returns: new Pmf """ return pmf_conv(pmf1, pmf2, np.subtract.outer) def pmf_outer(pmf1, pmf2, ufunc): """Computes the outer product of two PMFs. pmf1: pmf2: ufunc: function to apply to the qs returns: NumPy array """ qs = ufunc.outer(pmf1.qs, pmf2.qs) ps = np.multiply.outer(pmf1.ps, pmf2.ps) return qs * ps def pmf_gt(pmf1, pmf2): """Probability that a value from pmf1 is greater than a value from pmf2. pmf1: Pmf object pmf2: Pmf object returns: float probability """ outer = pmf_outer(pmf1, pmf2, np.greater) return outer.sum() def pmf_lt(pmf1, pmf2): """Probability that a value from pmf1 is less than a value from pmf2. pmf1: Pmf object pmf2: Pmf object returns: float probability """ outer = pmf_outer(pmf1, pmf2, np.less) return outer.sum() def pmf_ge(pmf1, pmf2): """Probability that a value from pmf1 is >= than a value from pmf2. pmf1: Pmf object pmf2: Pmf object returns: float probability """ outer = pmf_outer(pmf1, pmf2, np.greater_equal) return outer.sum() def pmf_le(pmf1, pmf2): """Probability that a value from pmf1 is <= than a value from pmf2. pmf1: Pmf object pmf2: Pmf object returns: float probability """ outer = pmf_outer(pmf1, pmf2, np.less_equal) return outer.sum() def pmf_eq(pmf1, pmf2): """Probability that a value from pmf1 equals a value from pmf2. pmf1: Pmf object pmf2: Pmf object returns: float probability """ outer = pmf_outer(pmf1, pmf2, np.equal) return outer.sum() def pmf_ne(pmf1, pmf2): """Probability that a value from pmf1 is <= than a value from pmf2. pmf1: Pmf object pmf2: Pmf object returns: float probability """ outer = pmf_outer(pmf1, pmf2, np.not_equal) return outer.sum() class Cdf(pd.Series): """Represents a Cumulative Distribution Function (CDF).""" def __init__(self, *args, **kwargs): """Initialize a Cdf. Note: this cleans up a weird Series behavior, which is that Series() and Series([]) yield different results. See: https://github.com/pandas-dev/pandas/issues/16737 """ if args: super().__init__(*args, **kwargs) else: underride(kwargs, dtype=np.float64) super().__init__([], **kwargs) def copy(self, **kwargs): """Make a copy. returns: new Cdf """ return Cdf(self, **kwargs) @property def forward(self): interp = interp1d(self.qs, self.ps, kind='previous', copy=False, assume_sorted=True, bounds_error=False, fill_value=(0,1)) return interp @property def inverse(self): interp = interp1d(self.ps, self.qs, kind='next', copy=False, assume_sorted=True, bounds_error=False, fill_value=(self.qs[0], np.nan)) return interp # calling a Cdf like a function does forward lookup __call__ = forward # quantile is the same as an inverse lookup quantile = inverse @staticmethod def from_seq(seq, normalize=True, sort=True, **options): """Make a CDF from a sequence of values. seq: any kind of sequence normalize: whether to normalize the Cdf, default True sort: whether to sort the Cdf by values, default True options: passed to the pd.Series constructor returns: CDF object """ pmf = Pmf.from_seq(seq, normalize=False, sort=sort, **options) return pmf.make_cdf(normalize=normalize) @property def qs(self): """Get the quantities. returns: NumPy array """ return self.index.values @property def ps(self): """Get the probabilities. returns: NumPy array """ return self.values def _repr_html_(self): """Returns an HTML representation of the series. Mostly used for Jupyter notebooks. """ df = pd.DataFrame(dict(probs=self)) return df._repr_html_() def normalize(self): """Make the probabilities add up to 1 (modifies self). returns: normalizing constant """ total = self.ps[-1] self /= total return total def make_pmf(self, normalize=False): """Make a Pmf from the Cdf. returns: Cdf """ ps = self.ps diff = np.ediff1d(ps, to_begin=ps[0]) pmf = Pmf(pd.Series(diff, index=self.index.copy())) if normalize: pmf.normalize() return pmf def choice(self, *args, **kwargs): """Makes a random sample. Uses the probabilities as weights unless `p` is provided. args: same as np.random.choice options: same as np.random.choice returns: NumPy array """ # TODO: Make this more efficient by implementing the inverse CDF method. pmf = self.make_pmf() return pmf.choice(*args, *kwargs) def mean(self): """Expected value. returns: float """ return self.make_pmf().mean() def var(self): """Variance. returns: float """ return self.make_pmf().var() def std(self): """Standard deviation. returns: float """ return self.make_pmf().std() def median(self): """Median (50th percentile). returns: float """ return self.quantile(0.5) ================================================ FILE: empyrical_dist.py ================================================ """ Pmf: Represents a Probability Mass Function (PMF). Cdf: Represents a Cumulative Distribution Function (CDF). Copyright 2019 Allen B. Downey MIT License: https://opensource.org/licenses/MIT """ import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns from scipy.interpolate import interp1d def underride(d, **options): """Add key-value pairs to d only if key is not in d. d: dictionary options: keyword args to add to d :return: modified d """ for key, val in options.items(): d.setdefault(key, val) return d class Pmf(pd.Series): """Represents a probability Mass Function (PMF).""" def __init__(self, *args, **kwargs): """Initialize a Pmf. Note: this cleans up a weird Series behavior, which is that Series() and Series([]) yield different results. See: https://github.com/pandas-dev/pandas/issues/16737 """ if args: super().__init__(*args, **kwargs) else: underride(kwargs, dtype=np.float64) super().__init__([], **kwargs) def copy(self, deep=True): """Make a copy. :return: new Pmf """ return Pmf(self, copy=deep) def __getitem__(self, qs): """Look up qs and return ps.""" try: return super().__getitem__(qs) except (KeyError, ValueError, IndexError): return 0 @property def qs(self): """Get the quantities. :return: NumPy array """ return self.index.values @property def ps(self): """Get the probabilities. :return: NumPy array """ return self.values def _repr_html_(self): """Returns an HTML representation of the series. Mostly used for Jupyter notebooks. """ df = pd.DataFrame(dict(probs=self)) return df._repr_html_() def normalize(self): """Make the probabilities add up to 1 (modifies self). :return: normalizing constant """ total = self.sum() self /= total return total def mean(self): """Computes expected value. :return: float """ #TODO: error if not normalized #TODO: error if the quantities are not numeric return np.sum(self.ps * self.qs) def median(self): """Median (50th percentile). :return: float """ return self.quantile(0.5) def quantile(self, ps, **kwargs): """Quantiles. Computes the inverse CDF of ps, that is, the values that correspond to the given probabilities. :return: float """ return self.make_cdf().quantile(ps, **kwargs) def var(self): """Variance of a PMF. :return: float """ m = self.mean() d = self.qs - m return np.sum(d**2 * self.ps) def std(self): """Standard deviation of a PMF. :return: float """ return np.sqrt(self.var()) def choice(self, *args, **kwargs): """Makes a random sample. Uses the probabilities as weights unless `p` is provided. args: same as np.random.choice kwargs: same as np.random.choice :return: NumPy array """ underride(kwargs, p=self.ps) return np.random.choice(self.qs, *args, **kwargs) def sample(self, *args, **kwargs): """Makes a random sample. Uses the probabilities as weights unless `weights` is provided. This function returns an array containing a sample of the quantities in this Pmf, which is different from Series.sample, which returns a Series with a sample of the rows in the original Series. args: same as Series.sample options: same as Series.sample :return: NumPy array """ series = pd.Series(self.qs) underride(kwargs, weights=self.ps) sample = series.sample(*args, **kwargs) return sample.values def plot(self, **options): """Plot the Pmf as a line. :param options: passed to plt.plot :return: """ underride(options, label=self.name) plt.plot(self.qs, self.ps, **options) def bar(self, **options): """Makes a bar plot. options: passed to plt.bar """ underride(options, label=self.name) plt.bar(self.qs, self.ps, **options) def add(self, x): """Computes the Pmf of the sum of values drawn from self and x. x: another Pmf or a scalar or a sequence :return: new Pmf """ if isinstance(x, Pmf): return pmf_conv(self, x, np.add.outer) else: return Pmf(self.ps, index=self.qs + x) __add__ = add __radd__ = add def sub(self, x): """Computes the Pmf of the diff of values drawn from self and other. x: another Pmf or a scalar or a sequence :return: new Pmf """ if isinstance(x, Pmf): return pmf_conv(self, x, np.subtract.outer) else: return Pmf(self.ps, index=self.qs - x) subtract = sub __sub__ = sub def rsub(self, x): """Computes the Pmf of the diff of values drawn from self and other. x: another Pmf or a scalar or a sequence :return: new Pmf """ if isinstance(x, Pmf): return pmf_conv(x, self, np.subtract.outer) else: return Pmf(self.ps, index=x - self.qs) __rsub__ = rsub def mul(self, x): """Computes the Pmf of the product of values drawn from self and x. x: another Pmf or a scalar or a sequence :return: new Pmf """ if isinstance(x, Pmf): return pmf_conv(self, x, np.multiply.outer) else: return Pmf(self.ps, index=self.qs * x) multiply = mul __mul__ = mul __rmul__ = mul def div(self, x): """Computes the Pmf of the ratio of values drawn from self and x. x: another Pmf or a scalar or a sequence :return: new Pmf """ if isinstance(x, Pmf): return pmf_conv(self, x, np.divide.outer) else: return Pmf(self.ps, index=self.qs / x) divide = div __div = div __truediv__ = div def rdiv(self, x): """Computes the Pmf of the ratio of values drawn from self and x. x: another Pmf or a scalar or a sequence :return: new Pmf """ if isinstance(x, Pmf): return pmf_conv(x, self, np.divide.outer) else: return Pmf(self.ps, index=x / self.qs) __rdiv__ = rdiv __rtruediv__ = rdiv def make_joint(self, other, **options): """Make joint distribution (assuming independence). :param self: :param other: :param options: passed to Pmf constructor :return: new Pmf """ qs = pd.MultiIndex.from_product([self.qs, other.qs]) ps = np.multiply.outer(self.ps, other.ps).flatten() return Pmf(ps, index=qs, **options) def marginal(self, i, name=None): """Gets the marginal distribution of the indicated variable. i: index of the variable we want name: string :return: Pmf """ # TODO: rewrite this using MultiIndex operations pmf = Pmf(name=name) for vs, p in self.items(): pmf[vs[i]] += p return pmf def conditional(self, i, j, val, name=None): """Gets the conditional distribution of the indicated variable. Distribution of vs[i], conditioned on vs[j] = val. i: index of the variable we want j: which variable is conditioned on val: the value the jth variable has to have name: string :return: Pmf """ # TODO: rewrite this using MultiIndex operations pmf = Pmf(name=name) for vs, p in self.items(): if vs[j] == val: pmf[vs[i]] += p pmf.normalize() return pmf def update(self, likelihood, data): """Bayesian update. likelihood: function that takes (data, hypo) and returns likelihood of data under hypo data: whatever format like_func understands :return: normalizing constant """ for hypo in self.qs: self[hypo] *= likelihood(data, hypo) return self.normalize() def max_prob(self): """Value with the highest probability. :return: the value with the highest probability """ return self.idxmax() def make_cdf(self, normalize=True): """Make a Cdf from the Pmf. It can be good to normalize the cdf even if the Pmf was normalized, to guarantee that the last element of `ps` is 1. :return: Cdf """ cdf = Cdf(self.cumsum()) if normalize: cdf.normalize() return cdf def quantile(self, ps): """Quantities corresponding to given probabilities. ps: sequence of probabilities return: sequence of quantities """ cdf = self.make_cdf() return cdf.quantile(ps) def credible_interval(self, p): """Credible interval containing the given probability. p: float 0-1 :return: array of two quantities """ tail = (1-p) / 2 ps = [tail, 1-tail] return self.quantile(ps) @staticmethod def from_seq(seq, normalize=True, sort=True, **options): """Make a PMF from a sequence of values. seq: any kind of sequence normalize: whether to normalize the Pmf, default True sort: whether to sort the Pmf by values, default True options: passed to the pd.Series constructor :return: Pmf object """ series = pd.Series(seq).value_counts(sort=False) options['copy'] = False pmf = Pmf(series, **options) if sort: pmf.sort_index(inplace=True) if normalize: pmf.normalize() return pmf # Comparison operators def gt(self, x): """Probability that a sample from this Pmf > x. x: number :return: float probability """ if isinstance(x, Pmf): return pmf_gt(self, x) else: return self[self.qs > x].sum() __gt__ = gt def lt(self, x): """Probability that a sample from this Pmf < x. x: number :return: float probability """ if isinstance(x, Pmf): return pmf_lt(self, x) else: return self[self.qs < x].sum() __lt__ = lt def ge(self, x): """Probability that a sample from this Pmf >= x. x: number :return: float probability """ if isinstance(x, Pmf): return pmf_ge(self, x) else: return self[self.qs >= x].sum() __ge__ = ge def le(self, x): """Probability that a sample from this Pmf <= x. x: number :return: float probability """ if isinstance(x, Pmf): return pmf_le(self, x) else: return self[self.qs <= x].sum() __le__ = le def eq(self, x): """Probability that a sample from this Pmf == x. x: number :return: float probability """ if isinstance(x, Pmf): return pmf_eq(self, x) else: return self[self.qs == x].sum() __eq__ = eq def ne(self, x): """Probability that a sample from this Pmf != x. x: number :return: float probability """ if isinstance(x, Pmf): return pmf_ne(self, x) else: return self[self.qs != x].sum() __ne__ = ne def pmf_conv(pmf1, pmf2, ufunc): """Convolve two PMFs. pmf1: pmf2: ufunc: elementwise function for arrays :return: new Pmf """ qs = ufunc(pmf1.qs, pmf2.qs).flatten() ps = np.multiply.outer(pmf1.ps, pmf2.ps).flatten() series = pd.Series(ps).groupby(qs).sum() return Pmf(series) def pmf_add(pmf1, pmf2): """Distribution of the sum. pmf1: pmf2: :return: new Pmf """ return pmf_conv(pmf1, pmf2, np.add.outer) def pmf_sub(pmf1, pmf2): """Distribution of the difference. pmf1: pmf2: :return: new Pmf """ return pmf_conv(pmf1, pmf2, np.subtract.outer) def pmf_mul(pmf1, pmf2): """Distribution of the product. pmf1: pmf2: :return: new Pmf """ return pmf_conv(pmf1, pmf2, np.multiply.outer) def pmf_div(pmf1, pmf2): """Distribution of the ratio. pmf1: pmf2: :return: new Pmf """ return pmf_conv(pmf1, pmf2, np.divide.outer) def pmf_outer(pmf1, pmf2, ufunc): """Computes the outer product of two PMFs. pmf1: pmf2: ufunc: function to apply to the qs :return: NumPy array """ qs = ufunc.outer(pmf1.qs, pmf2.qs) ps = np.multiply.outer(pmf1.ps, pmf2.ps) return qs * ps def pmf_gt(pmf1, pmf2): """Probability that a value from pmf1 is greater than a value from pmf2. pmf1: Pmf object pmf2: Pmf object :return: float probability """ outer = pmf_outer(pmf1, pmf2, np.greater) return outer.sum() def pmf_lt(pmf1, pmf2): """Probability that a value from pmf1 is less than a value from pmf2. pmf1: Pmf object pmf2: Pmf object :return: float probability """ outer = pmf_outer(pmf1, pmf2, np.less) return outer.sum() def pmf_ge(pmf1, pmf2): """Probability that a value from pmf1 is >= than a value from pmf2. pmf1: Pmf object pmf2: Pmf object :return: float probability """ outer = pmf_outer(pmf1, pmf2, np.greater_equal) return outer.sum() def pmf_le(pmf1, pmf2): """Probability that a value from pmf1 is <= than a value from pmf2. pmf1: Pmf object pmf2: Pmf object :return: float probability """ outer = pmf_outer(pmf1, pmf2, np.less_equal) return outer.sum() def pmf_eq(pmf1, pmf2): """Probability that a value from pmf1 equals a value from pmf2. pmf1: Pmf object pmf2: Pmf object :return: float probability """ outer = pmf_outer(pmf1, pmf2, np.equal) return outer.sum() def pmf_ne(pmf1, pmf2): """Probability that a value from pmf1 is <= than a value from pmf2. pmf1: Pmf object pmf2: Pmf object :return: float probability """ outer = pmf_outer(pmf1, pmf2, np.not_equal) return outer.sum() class Cdf(pd.Series): """Represents a Cumulative Distribution Function (CDF).""" def __init__(self, *args, **kwargs): """Initialize a Cdf. Note: this cleans up a weird Series behavior, which is that Series() and Series([]) yield different results. See: https://github.com/pandas-dev/pandas/issues/16737 """ if args: super().__init__(*args, **kwargs) else: underride(kwargs, dtype=np.float64) super().__init__([], **kwargs) def copy(self, deep=True): """Make a copy. :return: new Pmf """ return Cdf(self, copy=deep) @staticmethod def from_seq(seq, normalize=True, sort=True, **options): """Make a CDF from a sequence of values. seq: any kind of sequence normalize: whether to normalize the Cdf, default True sort: whether to sort the Cdf by values, default True options: passed to the pd.Series constructor :return: CDF object """ pmf = Pmf.from_seq(seq, normalize=False, sort=sort, **options) return pmf.make_cdf(normalize=normalize) @property def qs(self): """Get the quantities. :return: NumPy array """ return self.index.values @property def ps(self): """Get the probabilities. :return: NumPy array """ return self.values def _repr_html_(self): """Returns an HTML representation of the series. Mostly used for Jupyter notebooks. """ df = pd.DataFrame(dict(probs=self)) return df._repr_html_() def plot(self, **options): """Plot the Cdf as a line. :param options: passed to plt.plot :return: """ underride(options, label=self.name) plt.plot(self.qs, self.ps, **options) def step(self, **options): """Plot the Cdf as a step function. :param options: passed to plt.step :return: """ underride(options, label=self.name, where='post') plt.step(self.qs, self.ps, **options) def normalize(self): """Make the probabilities add up to 1 (modifies self). :return: normalizing constant """ total = self.ps[-1] self /= total return total @property def forward(self, **kwargs): """Compute the forward Cdf :param kwargs: keyword arguments passed to interp1d :return array of probabilities """ underride(kwargs, kind='previous', copy=False, assume_sorted=True, bounds_error=False, fill_value=(0, 1)) interp = interp1d(self.qs, self.ps, **kwargs) return interp @property def inverse(self, **kwargs): """Compute the inverse Cdf :param kwargs: keyword arguments passed to interp1d :return array of quantities """ underride(kwargs, kind='next', copy=False, assume_sorted=True, bounds_error=False, fill_value=(self.qs[0], np.nan)) interp = interp1d(self.ps, self.qs, **kwargs) return interp # calling a Cdf like a function does forward lookup __call__ = forward # quantile is the same as an inverse lookup quantile = inverse def make_pmf(self, normalize=False): """Make a Pmf from the Cdf. :return: Cdf """ ps = self.ps diff = np.ediff1d(ps, to_begin=ps[0]) pmf = Pmf(pd.Series(diff, index=self.index.copy())) if normalize: pmf.normalize() return pmf def choice(self, *args, **kwargs): """Makes a random sample. Uses the probabilities as weights unless `p` is provided. args: same as np.random.choice options: same as np.random.choice :return: NumPy array """ # TODO: Make this more efficient by implementing the inverse CDF method. pmf = self.make_pmf() return pmf.choice(*args, **kwargs) def sample(self, *args, **kwargs): """Makes a random sample. Uses the probabilities as weights unless `weights` is provided. This function returns an array containing a sample of the quantities in this Pmf, which is different from Series.sample, which returns a Series with a sample of the rows in the original Series. args: same as Series.sample options: same as Series.sample :return: NumPy array """ # TODO: Make this more efficient by implementing the inverse CDF method. pmf = self.make_pmf() return pmf.sample(*args, **kwargs) def mean(self): """Expected value. :return: float """ return self.make_pmf().mean() def var(self): """Variance. :return: float """ return self.make_pmf().var() def std(self): """Standard deviation. :return: float """ return self.make_pmf().std() def median(self): """Median (50th percentile). :return: float """ return self.quantile(0.5) ================================================ FILE: environment.yml ================================================ name: BayesMadeSimple dependencies: - python=3.7 - jupyter - numpy - matplotlib - seaborn - pandas - scipy - pip - pip: - empiricaldist ================================================ FILE: euro.py ================================================ """This file contains code used in "Think Stats", by Allen B. Downey, available from greenteapress.com Copyright 2013 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division import thinkbayes import thinkplot """This file contains a partial solution to a problem from MacKay, "Information Theory, Inference, and Learning Algorithms." Exercise 3.15 (page 50): A statistical statement appeared in "The Guardian" on Friday January 4, 2002: When spun on edge 250 times, a Belgian one-euro coin came up heads 140 times and tails 110. 'It looks very suspicious to me,' said Barry Blight, a statistics lecturer at the London School of Economics. 'If the coin weere unbiased, the chance of getting a result as extreme as that would be less than 7%.' MacKay asks, "But do these data give evidence that the coin is biased rather than fair?" """ class Euro(thinkbayes.Suite): def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. hypo: integer value of x, the probability of heads (0-100) data: string 'H' or 'T' """ # fill this in! return 1 def main(): suite = Euro(range(0, 101)) suite.Update('H') thinkplot.Pdf(suite) thinkplot.Show(xlabel='x', ylabel='Probability', legend=False) if __name__ == '__main__': main() ================================================ FILE: euro2.py ================================================ """This file contains code used in "Think Stats", by Allen B. Downey, available from greenteapress.com Copyright 2013 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division import thinkbayes """This file contains a partial solution to a problem from MacKay, "Information Theory, Inference, and Learning Algorithms." Exercise 3.15 (page 50): A statistical statement appeared in "The Guardian" on Friday January 4, 2002: When spun on edge 250 times, a Belgian one-euro coin came up heads 140 times and tails 110. 'It looks very suspicious to me,' said Barry Blight, a statistics lecturer at the London School of Economics. 'If the coin weere unbiased, the chance of getting a result as extreme as that would be less than 7%.' MacKay asks, "But do these data give evidence that the coin is biased rather than fair?" """ class Euro(thinkbayes.Suite): def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. data: tuple (#heads, #tails) hypo: integer value of x, the probability of heads (0-100) """ x = hypo / 100.0 heads, tails = data like = x**heads * (1-x)**tails return like def AverageLikelihood(suite, data): """Computes the average likelihood over all hypothesis in suite. Args: suite: Suite of hypotheses data: some representation of the observed data Returns: float """ total = 0 for hypo, prob in suite.Items(): like = suite.Likelihood(data, hypo) total += prob * like return total def main(): fair = Euro() fair.Set(50, 1) bias = Euro() for x in range(0, 101): if x != 50: bias.Set(x, 1) bias.Normalize() # notice that we've changed the representation of the data data = 140, 110 like_bias = AverageLikelihood(bias, data) print('like_bias', like_bias) like_fair = AverageLikelihood(fair, data) print('like_fair', like_fair) ratio = like_bias / like_fair print('Bayes factor', ratio) if __name__ == '__main__': main() ================================================ FILE: euro2_soln.py ================================================ """This file contains code used in "Think Stats", by Allen B. Downey, available from greenteapress.com Copyright 2013 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division import thinkbayes import thinkplot """This file contains a partial solution to a problem from MacKay, "Information Theory, Inference, and Learning Algorithms." Exercise 3.15 (page 50): A statistical statement appeared in "The Guardian" on Friday January 4, 2002: When spun on edge 250 times, a Belgian one-euro coin came up heads 140 times and tails 110. 'It looks very suspicious to me,' said Barry Blight, a statistics lecturer at the London School of Economics. 'If the coin weere unbiased, the chance of getting a result as extreme as that would be less than 7%.' MacKay asks, "But do these data give evidence that the coin is biased rather than fair?" """ class Euro(thinkbayes.Suite): def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. data: tuple (#heads, #tails) hypo: integer value of x, the probability of heads (0-100) """ x = hypo / 100.0 heads, tails = data like = x**heads * (1-x)**tails return like def AverageLikelihood(suite, data): """Computes the average likelihood over all hypothesis in suite. Args: suite: Suite of hypotheses data: some representation of the observed data Returns: float """ total = 0 for hypo, prob in suite.Items(): like = suite.Likelihood(data, hypo) total += prob * like return total def main(): fair = Euro() fair.Set(50, 1) bias = Euro() for x in range(0, 51): bias.Set(x, x) for x in range(51, 101): bias.Set(x, 100-x) bias.Normalize() thinkplot.Pdf(bias) thinkplot.Show() # notice that we've changed the representation of the data data = 140, 110 like_bias = AverageLikelihood(bias, data) print('like_bias', like_bias) like_fair = AverageLikelihood(fair, data) print('like_fair', like_fair) ratio = like_bias / like_fair print('Bayes factor', ratio) if __name__ == '__main__': main() ================================================ FILE: euro_soln.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Bayesian Statistics Made Simple\n", "===\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2016 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "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": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "import seaborn as sns\n", "sns.set_style('white')\n", "sns.set_context('talk')\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "from empiricaldist import Pmf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Euro problem\n", "\n", "*\"When spun on edge 250 times, a Belgian one-euro coin came up heads 140 times and tails 110. 'It looks very suspicious to me,' said Barry Blight, a statistics lecturer at the London School of Economics. 'If the coin were unbiased, the chance of getting a result as extreme as that would be less than 7%.' \"*\n", "\n", "From “The Guardian” quoted by MacKay, *Information Theory, Inference, and Learning Algorithms*.\n", "\n", "\n", "**Exercise 1:** Write a function called `likelihood_euro` that defines the likelihood function for the Euro problem. Note that `hypo` is in the range 0 to 100.\n", "\n", "Here's an outline to get you started." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "def likelihood_euro(data, hypo):\n", " \"\"\" Likelihood function for the Euro problem.\n", " \n", " data: string, either 'H' or 'T'\n", " hypo: prob of heads (0-100)\n", " \n", " returns: float probability\n", " \"\"\"\n", " # TODO: fill this in!\n", " return 1" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# Solution\n", "\n", "def likelihood_euro(data, hypo):\n", " \"\"\" Likelihood function for the Euro problem.\n", " \n", " data: string, either 'H' or 'T'\n", " hypo: prob of heads (0-100)\n", " \n", " returns: float probability\n", " \"\"\"\n", " x = hypo / 100\n", " if data == 'H':\n", " return x\n", " else:\n", " return 1-x" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the prior, we'll start with a uniform distribution from 0 to 100." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def decorate_euro(title):\n", " \"\"\"Labels the axes.\n", " \n", " title: string\n", " \"\"\"\n", " plt.xlabel('Probability of heads')\n", " plt.ylabel('PMF')\n", " plt.title(title)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "euro = Pmf.from_seq(range(101))\n", "euro.plot()\n", "decorate_euro('Prior distribution')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can update with a single heads:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEtCAYAAABdz/SrAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjAsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+17YcXAAAgAElEQVR4nOzdd3hUVfrA8W8ghBo6iIKUEHlDi67i2hFZLBQRCLa17q4/e1lcKSoKCkqx97KuYttVlyaiIqBSbKuoa0J7IVRB6SWhps3vj3MHZ4dJSGCSO0nez/PkmeTcc+85N1PeOfee+964QCCAMcYYE2uq+N0BY4wxJhILUMYYY2KSBShjjDExyQKUMcaYmGQByhhjTEyyAGWMMSYmWYAyxhgTkyxAVRIiMkFEAmE/+SKSJSL/EZFrSrn9RBFpEsXtjfT2oXW0tnm4bYvItd7f3Q5jW0nFrBcQkQmF/R0N4X0RkTkisjqabZR3sfY/ibX+RFu83x0wZW4QsMX7PQ6oB1wJTBCRxqr6WLQbFJGTgGnAFcCcKG12MpAJbI7S9o7EPOAqYElJVhKRl4B2wDnFqH4VsKLkXSt2X/4EPA/UDCl+CKhdWm0acygWoCqfqaq6OrRARP4BLAbuF5FnVXV/lNvsDBwTzQ2qajqQHs1tHi5VXQmsPIxVzwdWF7ONtw5j+yVxNlAjrM1ZpdymMUWyQ3wGVd0LfADUBTr63B1jjAFsBGV+U+A9HnhNiMhZwAjgVK/oW2Ckqs4LqdMAeALoDhwFrAPeAx5Q1X0iMtLbBsDnIrJGVVt767YAHgZ6Aom4Q2SPqurbIduf4LX/NO6QE8DlXtkIoE1wRCgijYBRwEVAY9zo5DXgEVXN9+qMBIZ523gBdwjrr6r6j0j/FBFpC4z39i8feAnIC6tzrdfOOao6xytL89pJ8f63wf/dl97yYBLMVt7vf8Id/lyFOww7EDgZmK+qPbw6r6vqtWFt3wPcAjQAvgGGqup3IcsLW+9AuYjMwY2gIpW3Dj5f3vLO3v+4G1Ad+AkYq6pTQ+rMAfYBTwKjgU7AJuBV4EFVDb7Wii3a7YpIB9zr6RwgAfjRq/NJMftzHu61G2zjZeDhw2lDRAYCtwEn4A6xrgf+DdwXejRDRHoADwLHAxuAeyL0qzowDugLNPf6Ng0Yrqrbi7NvscRGUAYRqYJ74+/HHepDRPriPjBb4j4YRnm/f+otC3oP6AP8HfdBOQf3wfy0t3wy7s0L7g39V2/7xwD/AXp4de/CnRt7S0QGh3WxJS4YjfS29Z8I+9AA+Ar4CzAR9yG/BBgD/DOsejXgFVxgfRT4opD/y1HeNrt7dccBfwTuiFQ/ZL2zgXeBX739egBoC8wOmYhwlbe/S73f54VsYjTuQ+qvwNsUbiDwN+BF3AdXe2COiJR0FPwQMD+kXy8Vsl8n44LgKcBjuA/IBGCKiNwSVr0z7rUxB7gddwh0BHBjCfsW9Xa9YPc10AH3mrwX95r4SEQuLUaXmgGTgM9wz9Ea3Pvj9pK2ISLX4YLRDmAo7vWyBhiMex8F6/UAPsadMx6Oe339AzgxrG/PAv8HvAPcjHsvXO/VL3dsBFX5NBCRXd7v8UBr3If58cATqrpLROKB53Afkl1UNQsOnNRfCDwvIh/jvrX3AAar6qPeNl8RkTggCdy5IhH5GvcmmRUcYeDetDWATqr6q1f2rIi8DYwSkddVdZNXXhO4WVUnBHdCRML3ayhuwkH/kG/Vz4vIc8DNIjJBVT/2yqsAz6jquEP8rwYDTbz/wQ9eu697/4OiXArsAS5S1YC33izch8WJwEpVfUtERgMbg+eXQmYk/gpcqaq5h2inBnCaqmZ460/EfcF4EEg7xLoHqOosEbkCOOsQ57qewY0GT1bVdV6bLwBfAo+IyLuqGpyAcwzQV1U/8Oq9AfyCmyjzfHH7VkrtPoObXHOiqu726j2DCzhPicgUVc0poj/VgctVdYq37tu4IwcDcKO3krTxN1wg6xfyWnkeN5JOw325ARiLe12cFvJ+nOVtb1tI364AXlXVA6Mr7/1+gYjUUdVdlCM2gqp8fsC9cTbjXvBf4w6JPcNv39hOBFoAzwbfDACqugP3Da050AXYCezCBYA0Eant1fuzqvYorAPeiK0fbtSQKyKNgz+4EVd14Nyw1Q516KUvsCT0kI9nlPfYr4TbA3fo8btgcALwgua/DrHeOtwhy6dFpL23XoaqiqpOLEa7nxUjOAHMCAYnr41M3Lfs80WkajHWLzZvNHkK8GYwSHht7gMewX2JCH3O9gAfhtVT3OjDt3a9w8BnAx8BNUNed/WBKbjD1Ccfolt7cIfNgm1k40bCh9NGKtArGJw8TYHtQB1ve02Bk4B/hb0fP+fgiULrgEu9Sx/qe/XuU9WTy1twAhtBVUZXAhu93/NxhxaWeG/koDbeo0ZYPziVupWqfi0iN+AO700E9ovIXNzhjzfCthmqMe5QRT8ODhxBLcP+3hSx1v/2eUZ4oapuEJEdQKsSbg/c6PL9COVLD7Hes7gZercCt4rIKmA68A9V/akY7Ranb4X1YwUuWDfBnaeIltbeY5GviZCyrRHONe0HSho4o91uW+/xNu8nkpa40VlhtgbPaYbYiws8JWpDVXNFpIuIXI47X5mMC1DgDvXBb/sX6TKDpbgAHnQT7hDna8DfvaMXU3Cjqp1F7FNMsgBV+XwZPs08grgilgVH3TkAqvpPEZmBCzS9cYf8zsONqk4pZMp68MNiIoWc7yBs2naED4SS9jn8kM2htgcQIGzqdcj2CuV9yz1bRE7F/V964j6obhGRq1Q1/JxYuOL0Ldi/wvpW6DYOc3RV7NeEp8QTIcqo3eC+PweEj7aDFh1iG1FrQ0TG4I5c/Ig7mvEm7rzns/z2JS34PB/ytaiqn4pIS+BC3Lnh84DHgUEicpKqxsJ1g8VmAcpEstp7TOHgEUTw5M/PIlIHN/Nokaq+CrwqIgm4WW934N4cH0TY/mbcYZJqqjr7fzbu3lwnArsPo88p4YUi0gw3ff7nEm4PXJBsF6G8yOwPItIOqKeq3+BO7g/zZnTNw51zOFSAKq7WEcqOwx16DZ6TKcAdMg1VosNsntXe40H/Y0JeE4ex3bJuN7i9vAivvQ64kfieEmzvsNsQkVa44PSmql4dVi/0OVqNC1JFvha9GXwnAOtU9R3gHe9w+p24w6GX4Q7llxt2DspE8j3u/NTNIlI3WOj9frO37HvcFNv5uJlzAHgnfn/0/swPe6zi1cnDHZ/vLSLHh7X9OO6QROMS9vkDIEVEwg8ZBs+rTS/h9sCdD+soIhcEC0SkHm6mW1GeBqZ5ATxoKe5waujIJp8jew/2FJHmIX3rhDu0OC3knMYG4Hhv4kpQpJlqwWn4EfujqhuABcCV4i4PCLaZgPsA3A9E/cLeaLfrTchZAFzrzSQNbq8abjr6RI7wi3sJ2mjoLVocur6I9MJ90Yj3trcF9+XmSu+cXLDeafzvLL6GuFHY3SF9KQCClx0Ud2QeM2wEZQ7iHRe/DXcse4GIvOItug43S2qgqhaIyH9wAeohb+STDhyLO5y1FAh+ewweVrhJRJp5h7iG4aZvz/Nm2q3BHZLoA7ykqoc6zBJuDG7W07veDK9lwB9wM6smh8zgK4nHcOfsJovIk7hzQzdQ9GEncEH2Y2C+N+tvH+5QX1t+m5UF7v9yvIjcBMyl5N/c93ltPI27nmsQ7uT68JA6/8KN2iaLyIe4D7RLODhFVPDvB0Tkc1X9LEJ7t+NmjX3nzTTLxv1/TgJu9ybRFJv3YXsukK4uM0hhotpuyPa+97a3FXdd3CnA3aq6tYTbO6w2vNl1a4F7RKQGboLD74Frcc9tYsj2/oZ7r33jvV+Cz3dwpIyq/urNKLzZm7D0FdAIdy50I+79XK7YCMpEpKqTcIfofsFdR3IPburrOcGZct639H6463D64I6bX4+bJHFOyFTdT3Fvjt64qeQ1VHUF7s36Ie66jSdxhyvuxF1PVdL+bgNOA97AHcp4HHdd0GDcB3KJebOzzsR9470Bdx3WPNw07qLWm4mbqLAbuN/rS0Pc1OQ3Q6qOwAWUJ4H+h9HFl3EB6F7ct+avgNNVdW1InfuAp4DTcSO7FFzgDp+I8QLum/YQ7yfSfn0NnIEbPd+Fu15rH26K9OEcOmqPO+cyoKhK0W43ZHsLcB/8j+A+8K9V1bEl3d7htuGdn+2FG/Xcgbsm7yTv96FAXXF5LFHV73EzA1fiXofXeY/hs1Gvx81cDT7fd+EmfJwZMhW/3IgLBCKdZzXGmNInIn8FaqrqGL/7YmKPjaCMMb4QkUTchaUHZQYxBixAGWP8Uxt4uZDzXcbYIT5jjDGxyWbxRYmI5OFGpFmHqmuMMeaAukCBqh4UjyxARU8VIC4xMbGe3x0xxpjyIjs7Gwo53WQBKnqyEhMT6y1YsMDvfhhjTLnRpUsXsrOzIx558j1AeUkSh+OugVkNjFHVN4qoXwd3X540XLbfecAdqro8pE5d3PUn/XFpXVbiUu2/GJo1uKRtG2OMKTu+zuITkYtxN2Sbibvgcw7wurg7TBbmXeBi3IVsV+Nu/fC5l4Im6B3c1diP4y6YnI67iDT0BmCH07Yxxpgy4vcIagzwnqoO8v7+REQa4q6EPui+OSJyJu7K656qOsMrm4/LcHAjME5ETsBlj75EVf/trfqpd2+UoV6bJW7bGGNM2fJtBCXu1tdtcWlxQk3EJf1sc/BanIfLw3UgOaSXPn4uLnCBy5P2Mi69TqilQD0RaXSYbRtjjClDfo6ggunzw29Eluk9Cm5kFL5OZoR7A2XiZWhW1R9xedPC9cNldt7Gbzf4KknbxhhjypCf56CC54zCZ29ke491OVi9CPWD60SqD4CI3AF0A8Z6kyQOp21jjDFlyM8AFbxlQXgqi2B5pLtWxkWoHyyPeJdLEbkVeAKXTfvpI2jbGGNMmG27c5i7bDP5BdHPSuTnIb6d3mP4aCUxbHn4OpHuZpoYXt+78dp4fruD6TUhU8wPp21jjDGeQCDAlB/X8+D0xezYk8uofp246tRWUW3DzxFU8PxPclh5ctjy8HWSwu4OGlznQH3vzpXv4oLTY8CV3l1cj6RtY4wxwPode/nThO+4872f2LEnl7o14jm5dYOot+NbgFLVTNxEhPDrjtKA5WE3XQuaCdQHegQLRKQJ0JXf7t4K7rbKacAgVb0r9OLcI2jbGGMqtYKCAG9+vZrzHp/LHHU3Ye7ZqRmz/3Y2Kc2if+re7+ugHgReE5HtuItp++LufnoZHAg+bYHFqpqlqvNEZA7wjogMwc3IGwnswN0RFBHpjbsd9DTc7ZFPDWvzB+9Or0W2bYwx5jcrN+9i2KQMvl29DYDGdaoz6qKO9Ox8dKm16WuAUtUJIlIdd1vi63Apia5W1Xe9Kr2B14BzcJkewN0e+nHc7ZGrAF/gLsrd7i1P8x77ej/hjgXWFaNtY4yp9PLyC3h5/kqenL2cnDw3f2zgSS0Y3rs99WsllGrbdj+oKBGRHZYs1hhTkSz6ZSdDJ6WzcL27Iqd5/ZqMGdCZru2aRK0NL1nsTlWtH77M70N8xhhjYsy+3Hye+Ww5L85dSX5BgLg4uOa01gw+X6hdvezChgUoY4wxByxYvY2hk9JZsXk3AElNajM+LZUurRuWeV8sQBljjGH3/jwe+UR5/evVBAJQtUocN53dllu7J1OjWlVf+mQByhhjKrl5yzZz9+QM1u/YC0DHY+oyfmAqHY/x9wbhFqCMMaaS2rEnh9EfLmHi9+sASIivwqAe7fi/s9oQX9XX2wUCFqCMMaZSmrHwV4ZPXcSWXfsBOLl1A8ampdK2SR2fe/YbC1DGGFOJbMrex4j3F/Hxwg0A1E6oyrCeKVxxSiuqVAnPIucvC1DGGFMJBAIBJn6/jtEfLmHn3lwAzm7XhIcHdKZ5/Zo+9y4yC1DGGFPB/bxtD/dMyWD+8i0A1K9VjREXdqDfCc2Ji4utUVMoC1DGGFNBFRQEePObNYybsZQ9Oe5G5L1Tj2bkhR1pkljd594dmgUoY4ypgDI37WLYpHQWrHFpSpskVmfURZ24oFMzn3tWfBagjDGmAsnNL+DleSt5avZycvJdctdLurTg3l4dqFerms+9KxkLUMYYU0EsXL+TIRPTWfyrS+56bMOajOmfypnHNfa5Z4fHApQxxpRz+3LzeerT5bw877fkrn86vQ13nd+OWgnl92O+/PbcGGMM367axrBJ6azc4pK7Hte0DuMGpnJiy+jfgr2sWYAyxphyaNf+PMZ9vJQ3v1kDQHyVOG7q5pK7Vo/3J7lrtFmAMsaYcuZz3cS9kzP4Zec+ADo3r8f4gam0P7quzz2LLgtQxhhTTmzfncOoDxcz+Yf1AFSPr8Kd57bjL2fGRnLXaLMAZYwxMS4QCPBRxgZGTFvIll05AJzSpiHj0lJp3bi2z70rPRagjDEmhm3K2sfwqQuZuXgjAHWqxzOsZwp//H3LmEvuGm0WoIwxJgYFAgH+vWAdoz5cTPa+PAC6pzTlof6dOLpebCZ3jTYLUMYYE2PWbt3D3VPS+TJzKwANalVjxIUdueiEY2I6uWu0WYAyxpgYkV8QYMJXq3n0E2Vvrkvu2vf4YxhxYQca1Yn95K7RZgHKGGNiwPKN2QyZlM6Pa3cAcFTd6ozu15lzOxzlc8/8YwHKGGN8lJNXwItzV/DsZ5kHkrte/vuW3N0rhbo1yldy12izAGWMMT5JX7eDIRPTWbohG4CWDWsxdkBnTk8un8ldo80ClDHGlLF9ufk8MWsZf5+/koIAVImDv5zZhjvPFWomVIw0RdFgAcoYY8rQNyu3MmxSOqu37gFAjkpk3MBUTji2vs89iz0WoIwxpgxk78tl7MdLefs/awGoVjWOm7slc8s5ySTEV7w0RdFgAcoYY0rZZ0s3cu+UhfzqJXc9/tj6jE9LRZol+tyz2GYByhhjSsm23Tk8+MEipv73FwBqVKvCXecJfzqjDVUreJqiaLAAZYwxURYIBPgg/VdGTlvEtt0uuevpbRsxdkAqLRvV8rl35YcFKGOMiaINO11y19lLXHLXxOrx3Nu7PZeefGylSlMUDRagjDEmCgKBAO989zMPf7iE7P0uuWuP9kcxul8nmtWr4XPvyicLUMYYc4TWbN3NsEkZfL3SJXdtVDuBkX070if1aBs1HQELUMYYc5jyCwK89uUqHp2p7Mt1aYr6nXAM91/YkYa1E3zuXflnAcoYYw6DbnDJXX/62SV3PbpeDR7q34nuKZU3uWu0+R6gRORyYDiQBKwGxqjqG0XUrwOMA9KAOsA84A5VXV5I/VuBv6pqclh5C+DnCKssUtVOh7ErxphKICevgOfnZPLc55nk5gcA+OMpLbm7ZwqJlTy5a7T5GqBE5GLgbeApYAbQD3hdRPao6sRCVnsXOBkYDGQDI4DPRaSjqu4M235/4HFgbYTtHO89ng9khZTvOczdMcZUcP/9eQdDJ6ajG11y1zaNazNmQGdOTWrkc88qJr9HUGOA91R1kPf3JyLSEBgFHBSgRORMoBfQU1VneGXzgVXAjbiRFSLSABe4bgd2FNL28cBGVZ0Zvd0xxlREe3LyeHzmMl79ctWB5K7/1zWJQT3aUaOaJXctLb4lgBKRJKAtMCls0UQgRUTaRFjtPNyoaVawQFU3A3NxgSvoDtwhwEuBaYV04QQg/bA6b4ypNL7K3MIFT87nlS9ccEpplsjUW87g7p7tLTiVMj9HUCneo4aVZ3qPghsZha+Tqar5Eda5NOTvf+LOZe0Xkd6FtH88sElEvgC6ADuBV4H7VTW3+LthjKmIdu7NZcxHS3jnO3eqOqFqFW7rnswNZ7e15K5lxM8AVc97zAorz/Ye6xayTnj94DoH6qvqsqIaFpFaQDLQEBgC3At0B4YBxwDXHKLvxpgKbNbijQyfmsHGrP0A/K6lS+563FGW3LUs+RmgglevBQopLyhknfD6wfJI9QuThztcuFpVV3hlc0UkBxgtIqMLmxVojKm4tuzaz8hpi5ie/isANatVZfD5wjWnt7bkrj7wM0AFZ9yFj5QSw5aHr5MUoTyxkPoRqWoO8GmERR8Co3GH/yxAGVNJBAIB3v/vLzzwwSK273FH+M9MbsyYAZ05tqEld/WLnwEqeO4pGcgIKU8OWx6+Tg8RiVPVQNg6kepH5E3AOBeYrKpbQhbV9B63HLyWMaYi+mXHXoZPXchnSzcBULdGPMP7dODik1pYmiKf+XamT1UzcZMgBoYtSgOWq2qka5dmAvWBHsECEWkCdAVml6D5BsBLwB/Dyi/FneP6sQTbMsaUQwUFAd76Zg3nPTHvQHA6v+NRzL7zbC7pYpnHY4Hf10E9CLwmItuB6UBf4BLgMjgQfNoCi1U1S1Xnicgc4B0RGQJsA0birnV6obiNquoPIjINeFhEqgILcdPUbwfuDL/g1xhTsazaspuhk9L5dtU2ABrXSeCBvp3o1bmZBaYY4muAUtUJIlIduAu4DlgJXK2q73pVegOvAecAc7yyAbjsEI/iRoBfAJeo6vYSNv9H4D7gNtzMvRXA9ar6ymHvkDEmpuXlF/CPL1bx+Kxl7M9z86oGnNic+3p3oIEld405cYFApElxpqREZEdiYmK9BQsW+N0VY0wEi3/JYuikdDLWuwMkzevX5KH+negmTX3uWeXWpUsXsrOzd6pq/fBlfh/iM8aYUrU/L59nP8vkhTkryCtwX8ivPq0VQy5IoU51+wiMZfbsGGMqrO/XbGfopHQyN+0CIKlxbcampfL7Ng197pkpDgtQxpgKZ09OHo98okz4ajWBAFStEsf1XZO44w/HWf68csQClDGmQvli+RaGTU5n3fa9AHQ4ui7jB6bSqXm9Q6xpYo0FKGNMhbBzTy4PfbSY9xasAyAhvgp3/OE4ru+aRLWqlty1PLIAZYwp9z5ZtIHhUxeyOdsldz2pVQPGpaWS3LSOzz0zR8IClDGm3Nqc7ZK7fpjhkrvWSqjK0AtSuOrUVlSx5K7lngUoY0y5EwgEmPzDeh6cvpide11y167tmvBw/060aGDJXSsKC1DGmHJl/Y693DM5g7nLNgNQr2Y17uvTgbQTm1uaogrGApQxplwoKAjw1n/WMO7jpezOcTfV7tW5GSP7dqRpYg2fe2dKgwUoY0zMW7l5F8MmZfDt6mBy1+qMuqgjPTsf7XPPTGmyAGWMiVl5+QW8PH8lT85eTo6X3HXgSS24r3cH6tWq5nPvTGmzAGWMiUmLftnJ0EnpLFyfBbjkrmMGdKZruyY+98yUFQtQxpiYsi83n2c+W86Lc1eSXxAgLg6uOa01g88Xalty10rFnm1jTMxYsHobQyals3LzbgDaNqnNuLRUurS25K6VkQUoY4zvdu/PY/yMpbzxzRoCAYivEscNZydxW3dL7lqZWYAyxvhq3rLN3D05g/U7XHLXTs3rMi4tlY7HWHLXys4ClDHGFzv25DD6wyVM/N4ld60eX4VB57bjujPbEG/JXQ0WoIwxPvg441fue38RW3a55K6/b92QsWmdSWpiyV3NbyxAGWPKzKasfdz//iJmLNoAQO2EqgzrmcIVp1hyV3MwC1DGmFIXCASY+P06Rk1fTNa+PAC6SRMe6t+Z5vVr+tw7E6ssQBljStXP2/Zwz5QM5i/fAkD9WtW4v08H+v/OkruaolmAMsaUioKCAG98vZrxnyh7vOSuvVOP5oG+HWlcp7q/nTPlggUoY0zUZW7KZuikDL5fsx2AponVGdWvE+d3bOZzz0x5YgHKGBM1ufkFvDxvJU/NXk5OvkvuemmXY7mnd3vq1bTkrqZkLEAZY6Ji4fqdDJ6YzpJfXXLXYxvWZOyAVM5Ibuxzz0x5ZQHKGHNE9uXm8+Ts5fx9/m/JXf98Rhv+dl47aiXYR4w5fPbqMcYctm9XbWPYpHRWbnHJXY9rWodxA1M5sWUDn3tmKoJDBigRSQXWqOrOMuiPMaYcyN6Xy/gZypvfrAFcctebu7Xllu7JVI+35K4mOoozgvoRuAr4Z7BAROKB04GfLHAZU7l8rpu4d3IGv+zcB0Bqi3qMS0ul/dF1fe6ZqWiKE6AiXUlXD/gcOBf4LKo9MsbEpO27cxg1fTGTf1wPuOSufzuvHX8+w5K7mtJxJOeg7BJwYyqBQCDAhxm/MuL9RWzdnQPAKW0aMi4tldaNa/vcO1OR2SQJY0yhNmbt476pC5m5eCMAdarHc3evFC4/uaUldzWlzgKUMeYggUCA9xb8zOgPl5DtJXftntKUh/p34uh6ltzVlA0LUMaY/7F26x7unpLOl5lbAWhYO4ERF3ag7/HHWHJXU6aKG6BSRKRryN/BezGnikhepBVUdd4R9cwYU6byCwJM+Go1j36i7M11yV37Hn8MIy7sQCNL7mp8UNwAda/3E+6xItaxiyGMKSeWb8xmyKR0fly7A4BmdWswul8nenQ4yueemcqsOAHqgdLsgIhcDgwHkoDVwBhVfaOI+nWAcUAaUAeYB9yhqssLqX8r8FdVTY6w7A7gNqA5sAS4V1U/PqIdMqYcyckr4MW5K3jms+Xk5gcAuPz3Lbm7Vwp1a1hyV+OvQwYoVS21ACUiFwNvA08BM4B+wOsiskdVJxay2rvAycBgIBsYAXwuIh3DLxoWkf7A48DaCG0PBsYAI4Hvgb8A00Skq6p+HYXdMyampa/bwZCJ6SzdkA1Aq0a1GDOgM6e3teSuJjb4PUliDPCeqg7y/v5ERBoCo4CDApSInAn0Anqq6gyvbD6wCrgRN7JCRBrgAtftwI4I26mNO2T5qKqO9spmAF8B9wM9o7iPxsSUvTn5PDl7GX+fv5KCAFSJg+vOSmJQj3bUTLAj8yZ2FCcX36uHsd2Aqv7lENtNAtoCd4ctmghcIiJtVHVV2LLzcKOmWcECVd0sInNxgWucV3wH7hDgpUBv4Myw7ZyCm+gxKWQ7ARGZDDwsIgmqmnPo3TSmfPlm5VaGTUpn9dY9AMhRiYwbmMoJx9b3uWfGHKw4I6hrgYD3e3HnmAZwh8yKkuI9alh5pvcouJFR+DqZqpofYZ1LQ/7+J+5c1n4R6V3CtuNx58OWFt19Y8qPrH25jP14KbWB5gEAACAASURBVP/8jzvaXa1qHLeecxw3dWtLQrylKTKxqTgBKgPoDGwG3gcmA5+qau4Rth2cqp4VVp7tPUbKPFkvQv3gOgfqq+qyYradHVZeVNvGlEufLd3IPZMXsiHLJXc9/tj6jE9LRZol+twzY4pWnEkSx4tIa6C/9zMd2CUi04EpwEequvcw2g6OxgKFlBcUsk54/WB5pPpFtV3Ydgpr25hyZeuu/Tw4fTHv//cXAGpUq8Jd5wl/OqMNVS1NkSkHijVJQlVXA08AT4hIE9xsu364GXj5IjILF6ymqer2YrYdnHEXPlpJDFsevk5ShPLEQuoX1XYcbpp66CiqqLaNKRcCgQDTfvqFBz5YzDYvuevpbRsxdkAqLRvV8rl3xhRfiQ8+q+pmVf27qvYGmuDONe0DngY2ishsEbmpOJvyHsOvT0oOWx6+TpKIhH/9Sy6k/uG0vR9YU4JtGRMzft25l+teX8Ad7/yXbbtzSKwez9gBnXn7ulMsOJly54jOjqpqtqq+o6qX4W5g+CnQHXi2GOtm4iZBDAxblAYsV9WDrl0CZgL1gR7BAm9E1xWYXYKufwXsDm3bC3oDgHk2g8+UNwUFAf75n7Wc9/g8Pl26CYAe7Y9i1p1nc9nvW1oOPVMuHdF1UCJyKtAXuAg3M64AmAtMLeYmHgReE5HtuHNbfYFLgMu87TfBTUVfrKpZqjpPROYA74jIEGAb7kLbHcALxe23qu4RkUeB+7xcgt8AfwZOAroVdzvGxILVW3YzbHI636zcBkCj2gmM7NuRPqlHW2Ay5VqJApSIVMeNXi4CLgSaAntx1yWNBz5Q1W3F3Z6qTvC2eRdwHbASuFpV3/Wq9AZeA84B5nhlA3DZIR7FjQC/AC4pwbmvoAeAPOB6YAiwGOirql+WcDvG+CK/IMCrX6zisVnKvlw3r6f/75pzX58ONKyd4HPvjDlycYFApMlsvxGRRkAfXFA6F6gNbMGNeKYCM1V1Xyn3M+aJyI7ExMR6CxYs8LsrphJYuiGLoRPT+Wmdm89zdL0aPNy/M+ekNPW5Z8aUTJcuXcjOzt6pqgddLV6cEdRG3Iy3VcDLuKD0haoWHdmMMVG3Py+f5z9fwfNzMg8kd73ilJYM65lCoiV3NRVMcQJUcCJFEvBX7wcRKWqdgKr6nefPmArlx7XbGTopnWUbdwHQpnFtxg7ozClJjXzumTGlozhB5PVS74UxplB7cvJ4bOYyXv1yFQEvuev/nZXEoHPbUaOaJXc1FVdxMkn8CUBEqgEdvXUWq+qeUu6bMZXeV5lbGDY5g7Xb3NstpVki4wemktrCkruaiq9Yh+FEZBDuNhTBrA/7ReQ54G5VjXjLd2PM4du5N5cxHy3hne9+BiChahVu657Mjd3aUq2qJXc1lUNxbrdxNe7W7quBN3DXOp0D3OmtP6jQlY0xJTZr8UaGT81gY9Z+AE5sWZ/xA1NJbmrJXU3lUpwR1M24C1m7B6eTe1kX3gFuEJGhlnnBmCO3Zdd+Rk5bxPT0XwGoWa0qg88Xrjm9tSV3NZVScY4VtAfeCr3WyZti/gRQ3VtujDlMgUCAqT+u59zH5x4ITmcmN2bmoK78+UzLPG4qr+KMoGoTObv3Ktz1UXa21pjD9MuOvdw7JYPPdTMAdWvEM7xPBy4+qYWlKTKVXnGvg4p0UW5wcoTNczWmhAoKArz97VrGfrSE3TnuBtHndzyKURd1omndGj73zpjYYBfTGlPGVm7exbDJGXy7yqWtbFwngQcv6kSvzkf73DNjYktxA1QjEWkZVtbQe2waYRmF3C7DmEorL7+AV75YxROzlrE/zyV3TTuxBff1aU/9Wpbc1ZhwxQ1QT3o/kbwdoSxQgm0bU+Et/iWLoZPSyVjvTuc2r1+Th/p3optYcldjCmOpjowpRfvz8nn2s0xemLOCvIIAcXFw9amtGHxBCnWq23c4Y4pS7FRHxpiS+X6NS+6auckld01qUptxaamc3LrhIdY0xoAdhjMm6nbvz+PRmcqEr1YTCEDVKnHc0DWJ2/9wnCV3NaYELEAZE0Xzl2/m7skZrNu+F4AOR9dl/MBUOjWv53PPjCl/LEAZEwU79+Ty0EeLeW/BOgAS4qtwxx+O4/quSZbc1ZjDZAHKmCM0Y+EG7nt/IZuzXXLXLq0aMDYtleSmdXzumTHlmwUoYw7T5myX3PXDDJc/r1ZCVYZekMJVp7aiiuXPM+aIWYAypoQCgQBTflzPg9MXs2NPLgBd2zXh4f6daNGgls+9M6bisABlTAms276He6csZO4yl9y1Xs1q3NenA2knNrfkrsZEmQUoY4qhoCDAW/9Zw7iPlx5I7tqrczNG9u1I00RL7mpMabAAZcwhrNi8i2GT0vlu9XYAmiRWZ9RFHbmgkyV3NaY0WYAyphC5+QX8ff5Knpy9nBwvuevFJ7VgeO8O1KtVzefeGVPxWYAyJoKF63cydFI6i37JAqBFg5qMGdCZs45r4nPPjKk8LEAZE2Jfbj7PfLacF+euJN9L7nrNaa0ZfL5Q25K7GlOm7B1njGfB6m0MmZTOys27AWjbpDbjB6ZyUitL7mqMHyxAmUpv9/48HvlEef1rl9w1vkocN57dllu7J1tyV2N8ZAHKVGpzl23mnskZrN/hkrt2al6XcWmpdDzGkrsa4zcLUKZS2rEnh1HTlzDpB5fctXp8FQad247rzmxDvCV3NSYmWIAylc5HGb9y//sL2bIrB4Dft27I2LTOJDWx5K7GxBILUKbS2JS1j/vfX8SMRRsAqJ1QlWG92nPF71tacldjYpAFKFPhBQIB/v39OkZPX0zWvjwAukkTHurfmeb1a/rcO2NMYSxAmQrt5217uGdKBvOXbwGgfq1q3N+nA/1/Z8ldjYl1FqBMhZRfEOCNr1fzyCfKHi+5a5/UoxnZtyON61T3t3PGmGKxAGUqnMxN2QydlMH3a1xy16aJ1RndrxPndWzmc8+MMSXhe4ASkcuB4UASsBoYo6pvFFG/DjAOSAPqAPOAO1R1eUideGAEcC3QCPge+JuqfhtSpwXwc4QmFqlqpyPbK+OH3PwCXpq7gqc/zSQn3yV3vezkY7m7V3vq1bTkrsaUN74GKBG5GHgbeAqYAfQDXheRPao6sZDV3gVOBgYD2bhA9LmIdFTVnV6dp3DBaSiwBrgTmC0iJ6jqSq/O8d7j+UBWyPb3RGPfTNnKWLeTwRN/YumGbABaNqzFmAGdOSO5sc89M8YcLr9HUGOA91R1kPf3JyLSEBgFHBSgRORMoBfQU1VneGXzgVXAjcA4EWkN3ADcqqovenVmAstwQe0mb3PHAxtVdWYp7ZspA/ty83ly9nL+Pt8ld60SB38+ow13nteOWgl+v7yNMUfCt0vmRSQJaAtMCls0EUgRkTYRVjsPN2qaFSxQ1c3AXFzgAugOVA3drqruB6aH1AE4AUg/sr0wfvp21TZ6PTWfF+euIL8gwHFN6zDpptMZ3qeDBSdjKgA/38Up3qOGlWd6j4IbGYWvk6mq+RHWuTSkznYvcIXXaSkiNVV1L24EtUlEvgC6ADuBV4H7VTX3cHbIlI3sfbmMn6G8+c0awCV3veWcZG4+py3V4y25qzEVhZ8BKpiNMyusPNt7rFvIOuH1g+vULUYdgEQRiQOSgYbAEOBe3MhrGHAMcE0x+m988Llu4t7JGfyycx8AqS3qMX5gKinNIr1cjDHlmZ8BKniVZKCQ8oJC1gmvHywvKEad4HbzcIcLV6vqCq98rojkAKNFZHTorEDjv227cxg1fTFTflwPuOSufzuvHX8+w5K7GlNR+RmggjPuwr/6JoYtD18nKUJ5Ykj9nRG2GbrdLFXNAT6NUOdDYDTu8J8FqBgQCAT4MONXRry/iK27XXLXU5MaMnZAKq0b1/a5d8aY0uRngAqee0oGMkLKk8OWh6/TQ0TiVDUQto6G1GkoIg1UdXtYnVWqmuNNwDgXmKyqW0LqBBOzhZYZn2zM2sfwqQuZtXgjAInV47m7V3suO/lYS+5qTCXg27ERVc3ETYIYGLYoDViuqmsjrDYTqA/0CBaISBOgKzDbKwrO8BsYUqc60DukTgPgJeCPYdu/FHf+6scS7o6JokAgwLvfraXH43MPBKfuKU2ZeWdX/niKZR43prLwey7ug8BrIrIdNw28L3AJcBkcCD5tgcWqmqWq80RkDvCOiAwBtgEjgR3ACwCqukZEXgee9rJOLMddqNsAGO/V+UFEpgEPi0hVYCFuCvrtwJ0hF/yaMrZ26x7unpLOl5lbAWhYO4ERF3ag7/HHWHJXYyoZXwOUqk7wRjd3AdcBK4GrVfVdr0pv4DXgHGCOVzYAeBx4FDcC/AK4JOxw3g3AdtysvDq4VEfneqO2oD8C9wG34WburQCuV9VXorybphjyCwK89uUqHp2p7Mt1810uOuEY7u/TgUaW3NWYSikuEIg04c2UlIjsSExMrLdgwQK/u1LuLNuYzZCJ6fz35x0ANKtbg9H9OtGjw1E+98wYU9q6dOlCdnb2TlWtH77M70N8phLLySvghTkrePbz5eTmuy9KfzylJcN6plC3hiV3NaayswBlfPHTzzsYOin9QHLXVo1cctfT21pyV2OMYwHKlKm9Ofk8MXsZr8xfSUEAqsTBdWclMahHO2omWJoiY8xvLECZMvP1iq0Mm5zOmq3ujiYpzRIZl5bK8ccedOjZGGMsQJnSl7UvlzEfLeVf37pL26pVjeO27sdx49ltSYi3NEXGmMgsQJlS9emSjdw7ZSEbslxy1xOOrc/4gam0OyrxEGsaYyo7C1CmVGzdtZ8HPljMtJ9+AaBmtarcdb5w7emtqWqZIIwxxWABykRVIBBg2k+/MHLaIrbvcbfVOr1tI8YOSKVlo1o+984YU55YgDJR8+vOvQyfspBPl24CILFGPMN7t+eSLsdamiJjTIlZgDJHrKAgwL++W8uYj5aya38eAOd2OIrR/TpxVN0aPvfOGFNeWYAyR2T1lt0Mm5zONyu3AdCodgIPXNSR3p2PtlGTMeaIWIAyhyUvv4BXv1zFYzOXsT/PJXft/7vm3N+nAw1qJ/jcO2NMRWABypTY0g1ZDJ2Yzk/r3F1JjqlXg4cGdOYcaepzz4wxFYkFKFNs+/Pyee7zFTz/eSZ5BS6565WntmToBSkkWnJXY0yUWYAyxfLj2u0MnZTOso27AGjTuDZjB3TmlKRGPvfMGFNRWYAyRdqTk8djM5fx6perCASgapU4/u+sJP7a4zhqVLPkrsaY0mMByhTqq8wtDJucwdptLrlr+6PrMj4tlc4t6vncM2NMZWAByhxk595cxny0hHe++xmAhKpVuK17Mjd2a0u1qpbc1RhTNixAmf8xa/FGhk/NYGPWfgBObOmSuyY3teSuxpiyZQHKALBl135GTlvE9PRfAaiVUJUh5wtXnWbJXY0x/rAAVckFAgGm/nc9D3ywmB1ectczkxszZkBnjm1oyV2NMf6xAFWJ/bJjL/dOyeBz3QxA3RrxDO/dgYu7tLA0RcYY31mAqoQKCgK8/e1axn38W3LX8zsexaiLOtHUkrsaY2KEBahKZtWW3QydlM63q1xy18Z1Enigbyd6dW5moyZjTEyxAFVJ5OUX8MoXq3hi1m/JXdNObMF9fdpTv5YldzXGxB4LUJXA4l+yGDopnYz1Lrlr8/o1eah/J7pZcldjTAyzAFWB7c/L59nPMnlhzgryCgLExcHVp7Zi8AUp1KluT70xJrbZp1QF9f0al9w1c5NL7prUpDbj0lI5uXVDn3tmjDHFYwGqgtm9P49HPlFe/3r1geSuN3RN4vY/WHJXY0z5YgGqApm/fDN3T85g3fa9AHQ4ui7jB6bSqbkldzXGlD8WoCqAnXtyGf3hYv79/ToAEuKrcMcfjuP6rkmW3NUYU25ZgCrnZizcwH3vL2Rztkvu2qVVA8ampZLctI7PPTPGmCNjAaqc2pS9j5HTFvFRxgYAaidUZWjPFK48pRVVLLmrMaYCsABVzgQCASb/sJ4Hpy9m516X3LVruyY83L8TLRpYcldjTMVhAaocWbd9D/dMWci8ZS65a72a1bi/TwcGnNjc0hQZYyocC1DlQEFBgDe/WcO4GUvZk5MPQK/OzXigbyeaJFb3uXfGGFM6LEDFuBWbdzF0YjoL1mwHoElidUZd1IkLOjXzuWfGGFO6fA9QInI5MBxIAlYDY1T1jSLq1wHGAWlAHWAecIeqLg+pEw+MAK4FGgHfA39T1W/DtnUHcBvQHFgC3KuqH0dr345Ebn4BL89byVOfLifHS+568UktGN67A/VqVfO5d8YYU/p8vUhGRC4G3gZmAv2AOcDrIjKwiNXeBS4GhgJX44LL5yISejXqU8CduEB2KZAHzBaRpJC2BwOPAROAAcBKYJqInBaNfTsSC9fv5KJnv+SRT5ScvAJaNKjJW385hUcuPt6CkzGm0vB7BDUGeE9VB3l/fyIiDYFRwMTwyiJyJtAL6KmqM7yy+cAq4EZgnIi0Bm4AblXVF706M4FlwGDgJhGpDdwLPKqqo706M4CvgPuBnqWzu0Xbl5vP058u56V5K8n3krtee3pr7jpPqG3JXY0xlYxvIyhvNNMWmBS2aCKQIiJtIqx2HpANzAoWqOpmYC4ucAF0B6qGbldV9wPTQ+qcAtQLqxMAJgM9RKTMb5D03ept9HpqPs/PWUF+QYDkpnWYeOPpjLiwowUnY0yl5OcnX4r3qGHlmd6j4EZG4etkqmp+hHUuDamz3Qtc4XVaikjNQ7QdjzsftrQ4OxENj89axjOfLScQgPgqcdzUrS23dk+merwldzXGVF5+BqjgOaOssPJs77FuIeuE1w+uU7cYdQASQ9rOLqROpLZLRV5+AS/MySQQgM7N6zEuLZUOx5RZ88YYE7P8DFDBK0sDhZQXFLJOeP1geUEx6gS3W5w6ZSK+ahVevqoLO/bmcGHqMcRbcldjjAH8DVA7vcfw4UJi2PLwdZIilCeG1N8ZYZuh283y6sThpqlnR6gTqe1Sc06K3XrdGGPC+fl1PXj+JzmsPDlsefg6SSISntcnOaS+Ag1FpEGEOqtUNecQbe8H1hy6+8YYY0qTbwFKVTNxkyDCr3lKA5ar6toIq80E6gM9ggUi0gToCsz2ioIz/AaG1KkO9A6p8xWwO6xOHO56qHleEDPGGOMjv+cvPwi8JiLbcdPA+wKXAJfBgeDTFlisqlmqOk9E5gDviMgQYBswEtgBvACgqmtE5HXgaS/rxHLcRbsNgPFenT0i8ihwn4jkAd8AfwZOArqVwX4bY4w5BF8DlKpO8EY3dwHX4bI5XK2q73pVegOvAefgskyAG+U8DjyKGwF+AVyiqttDNn0DsB0YhjvP9D1wrjdqC3oAl2HiemAIsBjoq6pfRnk3jTHGHIa4QCDSZDZTUiKyIzExsd6CBQv87ooxxpQbXbp0ITs7e6eq1g9fZnOajTHGxCS/z0FVJHWzs7Pp0qWL3/0wxphyIzs7GwpJjmABKnoKgCrZ2dmRslgYY4yJrC6FJEewc1DGGGNikp2DMsYYE5MsQBljjIlJFqCMMcbEJAtQxhhjYpIFKGOMMTHJApQxxpiYZAHKGGNMTLIAZYwxJiZZgDLGGBOTLEAZY4yJSRagjDHGxCRLFuszEbkcGA4kAauBMar6hq+dihIRqYK7IeTNuP3bCLwPjFDVbK9OF9zNJ7sAWcAEb3muH32ONhGZDKSqanJI2XnAQ0BH3P/kWVV9zKcuRoWIdAUeBk7E3eF6EnC3qu7yllfEfb4RuANoCawAxqnq2yHLK8Q+i8gJwHdAG1VdF1J+yP070ve3jaB8JCIXA28DM4F+uLsGvy4iA/3sVxQNAZ4FPsTt32PANcC/AUQkGfgU2Atc4i2/E3jCj85Gm4hcCfQPKzsdmA4sxd0d+m3gERG5q+x7GB0iciowC9gA9AUeBK4EXvGWV8R9vh54AffavgiYDbzlvacrzD6LiOD2Iz6s/JD7F433t2Uz95GIZAILVPWykLJ3cd+42/vXsyMnInHAVuBfqnpLSPmlwDvA74BbgfOAZFXN8ZbfBDwDtFLV9WXe8SgRkWOAhcBuYH9wBCUis4E6qnpqSN1xuJFmM1Xd70d/j4SIzPV+7aaqAa/sFtyHUWdgGhVvn78C9qlq95CyeUC+qp5T3p9nEYnH9XUskAs0BI4NjqCKs38i8gpH+P62EZRPRCQJaIs7FBJqIpAiIm3KvldRlQi8BfwzrHyp99gW9+L9IPji9UwEqnrLyrNXcCPjT4MFIlID6Erk57w+cHqZ9S5KRKQxcBbwQjA4Aajqc6raFnefnwq1z54aQHZY2VagUQV5ns8ExuNGPUNDF5Rg/474/W3noPyT4j1qWHmm9yjAqrLrTnSpahZwe4RF/bzHJcCxhO2/qm4WkSzc/pdLInIdcBLu2PyjIYuSgGoU/Zx/XuodjK7OQBywzRv99wHycF9M7gTaUPH2GeAp4O/eIb1PcB+4fYB7qBjP8xIgSVU3ici1YcsOuX8i8h+i8P62EZR/6nmP4XfgDX4ri3gL5PJMRE4BhgFTge1ecaQ7EGdTTvdfRFoBjwM3q+qWsMUV8Tlv4j1OALYAFwIjgatx52gq4j4D/Mv7eQ/YiTuv+raqPkIF2GdV3aiqmwpZXJz9K6xOsF6x/gc2gvJPnPcYfhIwWB7xFsjllYicgTupugq4DqjuLYp0EjSOcrj/3nm3V4GPVDX88AcU/pwHlbt9BhK8x69CzjV+5v0vHgVe9soq0j6DO692Om6U+ANwCnC/Nzp4x6tT0fY5qDiv46LqFPv9bQHKPzu9x/BvEolhy8s9b2LEBGAZcIGqbhWROt7iSN+k6lA+9/8WIBXo7J1kBu+N6v1d2HMe/Ls87nPwW/NHYeWf4M5fnOz9XWH22ZvBdj7wJ1Wd4BXPFZEdwEvAP7yyCrPPYYrzOs4qpA6U4P1th/j8Ezw2mxxWnhy2vFwTkTtxh0K+Brqq6q8A3vUx6wnbfxFpintRl8f9Hwg0Bn7FzXzKxR3qauv9fhaQT8V6zpd7j9XDyoMjq1VUvH1u5T1+GVY+z3s8gYq3z6FWcIj9i9b72wKUT1Q1E/fmDb/mKQ1Yrqpry75X0SUif8F9i34PN3IK/9Y0E7hQRBJCytJwL/45ZdLJ6LoBN2II/ZkOrPN+/zfuQ2yAdwgsKA33jXJBmfY2OpYAa4DLwsqDkyW+puLtc/DDtWtY+Wne41Iq3j4foKr7KN7+HfH7266D8pE3O+Y14DncB1lf4CbgMlV918euHTHvm9IqYDPuos28sCqZuNHGj7hvok8C7XDZCF5V1ZvLrrelR0QmAGeGXAfVHXdR579xhz1PB+4FhqnqeJ+6eUS8Q7j/ws3cm4CbwfggLrPA3yroPk8BegD3417DXbzfv1DVXhVpn0M+p0Kvgzrk/olICkf4/rYRlI+849c34o5nTwW6AVeX9+DkuQCohTscMh/3TTr05wJVXYqbnlsHd33EnbgZcHf40eGyoKqf4b5Ftsc951cAg8vbh1Yo7/U6AOiA+6J1Cy5ADfaWV7h9xo0YnwEGATNwE38excscUkH3+YDi7F803t82gjLGGBOTbARljDEmJlmAMsYYE5MsQBljjIlJFqCMMcbEJAtQxhhjYpIFKGOMMTHJcvGZcsW78PWasOIC3I0BlwDPq+rrUWxvNbBaVbuV5fZEZA7QWlVbF/L3BOAaVY0LWScBaFKWN3oUkR6464GSgG9V9awIdUYCI3C3DF9dVn0rTKz1xxTOApQprwbhbu8ALiFrPVzGigki0lhVH/OtZ9HxEFC7iOUv4a7kBw7c5mMmMAZ3ZX+pE5EquOwR+bjnY11ZtGsqDwtQpryaGv7tV0T+ASzG3fbg2Vi/rXZRVHXWIZYHM3IEtcGlkilLzXD3g3pcVZ8v47ZNJWDnoEyFoap7gQ9w2ZI7+tydyiCYBDT81ufGRIWNoExFE7wRWjwcOOczC/dl7ArcYcHfebeePgt3LuJUb51vgZGqOo8wXmb2e4FjgJ+A+1X1k5Dlcbhs5n/G5SerBqzGJdkcr6qBEm5vDiHnnCL0ZwLeOaiQZJ4Ar4nIa0AKLqv2I6o6JGzdccBfgWaqup0IRKQRMAq4CJfUN7gvj6hqfsh5HIARIjICOEdV50TanidZRJ4BzgFycDf9u1NVt4W02wCXx2+A1+5K4EXg6dD/oYiciPv/nQk0xN2heTYwJJjQ1KvXFhgPdMcdinyJgxMXIyI3Ajfjbg+xF5ete7iqLipif0wpsxGUqTC8cyLdgP24Q31Bl+Pu0XMH8HcvOPXFpfxvifsgHuX9/qm3LFQX3ESAd4F7gPrAh94EgaBRuFucL8YlxbwH2AeMxd0TqqTbK4l5uCzR4O5ge5WqKu5OrxdHqH8JMKOI4NQA+Ar4Cy7J5yDcBJQxuHNOAJO9coApwFVenaK8jxtt3Ykb6V6DuwNxsN3a3r5cBbyOC6ILcZmwnw2p1xn4AhdMxuCS036MS+D6Zki9o7z96A48AYwD/khYslIRuQL33P3oLXsMOAOYIyL1ML6xEZQprxqIyC7v93igNe4D83jgCe+GaUE1gUtUdQUcuLvtc7gbqnVR1Syv/CXcB+LzIvKxquZ669cGeqvqR169Cbgb9Y0DThKRasBtwDuqem2wURF5BdiEy/ocOrOwyO2V9B+hqitFZBYu2H2tqm95i94GHhOR36vqt15bp3n/q2FFbHIo7nxWf1Wd6pU9LyLPATeLyARV/di7vfkTQHpIm0V5RVWDweFlETkW6CUi1b3zhYO9druoaoZX7wUReRi4W0ReVtWfcCOdAG7Eti1kewnAZSLS0CsfjDtH1kVVf/D2/3XccxzqCmCRqh6YHSoi/wUeATpx8I0JTRmxEZQpr37A3WtqM+4Otl/jDkc9w8EfvpnB4OQ5EWiBu19R8NbUqOoO3Df15rhRTtCig6Pr7wAABPFJREFUYDDx6m0D3gJOFJFmXiA7Crg+rN3GuFtf1wkrL3J7xdj34noHd8jzkpCyy4BduBFMYfoCS0KCU9Ao77HfYfbnX2F/f4c7FNrI+zsNFzx+FZHGwR/c7RzA3QQRXIBqHXZosC5uxAq//b97At8FgxOAqm6K0I91QIqIjBCR1l69j1S1o6pacPKRjaBMeXUlsNH7PR/YgftQ3Reh7qawv9t4j5FuOx08TNWK/2/v7EKsqqI4/pN5qIcswgfpIZ0KWUGUREEPEVGCZUJCGAblWxLZx0MflNDHpA8FkUUPlTCCfUKNDpTSFGQhVgQ19FS4imwkGYxQhKjAsOnhv6/3zJk7c2fGsbnN/H8wHOacfdbZd1+4a6+9/uvspkruQIt2DYfXDRxBOZXVEbEGCGAZcH5pU58ITsbeaZOZwxGxD+3a/EhZAr0deD8z/5zg1ovQHkd1e0ci4jjNLc+nSv17+KscG2KLS1C0+9s49y8p/RiJiEURsQm4oty3FJUbQHO8u9GyYp36+G9Gu+H2AD0R8T3Kj/XWJjbmP8YOyvxf+WIKRZYna/8vaNlKNH7cTlTOtdo0rdHuZBFIvIVyXZ+jvMc2lE/5tMW9E9qboG/T4W2gNyKuQT/+FzA2gqjTbnxOTHB9Iv5pc70Ljd8z41wfBoiI1cjxDKPxHUDbjN8EbKq0HwHObmFn1IQhMw9HxHIk3liDNtt8HHgoIlZm5r42/TZnCDsoMx8ZKsdLGTvDjnL8pXKuu4WNZeV4ELgOOactmfnUKUPKdS0qbaq0szeT7EL5tlvRDsdHUUHvRAyhsRlFWX48l9FjM5MMAQsz85PqySLaWIHydKBl3B9RbumPSrs7a/YO0ro27OKa/csBMnMvsLecuxb4DHgQsIOaJZyDMvORQZS32lhyF8CpPMbGcm2w0v6qiLiy0m4xWmLcn5lHaeZQqspBgA3IKdQngu3sTYdG5FWPDo4DHwK3lL+dFfHHeOxGOZl6rqmR29szzT624wNgeYmQqjwB9CHBAmi8D9Wc04VImg7N8e4HLouImyvtzkMqwSp9wJsR0VU59y2KFGc6ojVTwBGUmXdk5t8R8QDwHvBNUdsB3I3qktZmZnU56hjwcURsRTU096HkfkNm/SUSQ7wYEUtQPuwGYB1K3C+sdaGdvenQyNvcVZYcX8/MRr3PO+hHGOQ02/EsEiy8GxGvAj+gCOY2oD8zB06jn5N5bn9EvAZ8h+qc1qNlvMZzB4B1pc3XKCLaQPPVUI3xfgE5/v6IeAnlwO5h7BLm80AvKjHoK9fXo+VBvyFjFnEEZeYlmbkLWInyGE8jifbPSLpcV699hN6Ndz9Ssh0Crs/MwWLrVxSd/AQ8iWqSliLF3CtoFr94svam+XkOoKWvq1HdUFXIsAc50MPA/knYOoZEA2+Uz7AVFR8/ymhF4IxSee4OJOZ4GRVRb2H0pOFeYDtN1eba0tcV5fqNxd7vyMHtRI6pB+UFN9eeux3VZJ2DvrvnkIBjVZvCY3OGWTAy0ipfa4yZK0TEWUjxuC0zH5vt/hgzWRxBGTP3uQO97X3HLPfDmCnhHJQxc5SIeBi9smcVsDsz272KyJiOwhGUMXOXLlQb9BWTE0cY01E4B2WMMaYjcQRljDGmI7GDMsYY05HYQRljjOlI7KCMMcZ0JHZQxhhjOhI7KGOMMR3Jv7mO/g8iM9vtAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "euro.update(likelihood_euro, 'H')\n", "euro.plot()\n", "decorate_euro('Posterior distribution, one heads')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another heads:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "euro.update(likelihood_euro, 'H')\n", "euro.plot()\n", "decorate_euro('Posterior distribution, two heads')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And a tails:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "euro.update(likelihood_euro, 'T')\n", "euro.plot()\n", "decorate_euro('Posterior distribution, HHT')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Starting over, here's what it looks like after 7 heads and 3 tails." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "euro = Pmf.from_seq(range(101))\n", "\n", "for outcome in 'HHHHHHHTTT':\n", " euro.update(likelihood_euro, outcome)\n", "\n", "euro.plot()\n", "decorate_euro('Posterior distribution, 7 heads, 3 tails')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The maximum apostiori probability (MAP) is 70%, which is the observed proportion." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "70" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "euro.max_prob()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the posterior probabilities after 140 heads and 110 tails." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "euro = Pmf.from_seq(range(101))\n", "\n", "evidence = 'H' * 140 + 'T' * 110\n", "for outcome in evidence:\n", " euro.update(likelihood_euro, outcome)\n", " \n", "euro.plot()\n", "\n", "decorate_euro('Posterior distribution, 140 heads, 110 tails')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior mean is about 56%" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "55.95238095238095" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "euro.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So is the MAP." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "56" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "euro.max_prob()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the median (50th percentile)." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(56.)" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "euro.quantile(0.5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior credible interval has a 90% chance of containing the true value (provided that the prior distribution truly represents our background knowledge)." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([51., 61.])" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "euro.credible_interval(0.9)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Swamping the prior\n", "\n", "The following function makes a Euro object with a triangle prior." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "def TrianglePrior():\n", " \"\"\"Makes a Suite with a triangular prior.\n", " \"\"\"\n", " suite = Pmf(name='triangle')\n", " for x in range(0, 51):\n", " suite[x] = x\n", " for x in range(51, 101):\n", " suite[x] = 100-x \n", " suite.normalize()\n", " return suite" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it looks like:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "euro1 = Pmf.from_seq(range(101), name='uniform')\n", "euro1.plot()\n", "\n", "euro2 = TrianglePrior()\n", "euro2.plot()\n", "\n", "plt.legend()\n", "decorate_euro('Prior distributions')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 9:** Update `euro1` and `euro2` with the same data we used before (140 heads and 110 tails) and plot the posteriors. How big is the difference in the means?" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(55.95238095238095, 55.74349943859505)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "evidence = 'H' * 140 + 'T' * 110\n", "for outcome in evidence:\n", " euro1.update(likelihood_euro, outcome)\n", " euro2.update(likelihood_euro, outcome)\n", "\n", "euro1.plot()\n", "euro2.plot()\n", "\n", "decorate_euro('Posterior distributions')\n", "plt.legend()\n", "\n", "euro1.mean(), euro2.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior distributions are not identical, but with this data, they converge to the point where there is no practical difference, for most purposes." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.7.3" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: euro_soln.py ================================================ """This file contains code used in "Think Stats", by Allen B. Downey, available from greenteapress.com Copyright 2013 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division import thinkbayes import thinkplot """This file contains a partial solution to a problem from MacKay, "Information Theory, Inference, and Learning Algorithms." Exercise 3.15 (page 50): A statistical statement appeared in "The Guardian" on Friday January 4, 2002: When spun on edge 250 times, a Belgian one-euro coin came up heads 140 times and tails 110. 'It looks very suspicious to me,' said Barry Blight, a statistics lecturer at the London School of Economics. 'If the coin weere unbiased, the chance of getting a result as extreme as that would be less than 7%.' MacKay asks, "But do these data give evidence that the coin is biased rather than fair?" """ class Euro(thinkbayes.Suite): def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. hypo: integer value of x, the probability of heads (0-100) data: string 'H' or 'T' """ x = hypo / 100.0 if data == 'H': return x else: return 1-x def main(): suite = Euro(range(0, 101)) suite.Update('H') thinkplot.Pdf(suite) thinkplot.Show(xlabel='x', ylabel='Probability', legend=False) if __name__ == '__main__': main() ================================================ FILE: flip.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Bayesian Statistics Made Simple\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2019 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import numpy as np\n", "import pandas as pd\n", "\n", "import seaborn as sns\n", "sns.set_style('white')\n", "sns.set_context('talk')\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "from distribution import Pmf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose you have two urns full of marbles:\n", "\n", "* Urn 1 has 20 blue and 10 red marbles\n", "\n", "* Urn 2 has 10 blue and 20 red marbles.\n", "\n", "You choose an urn at random and draw two marbles. They are both blue. What is the probability that you chose Urn 1?" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
probs
Urn 10.8
Urn 20.2
\n", "
" ], "text/plain": [ "Urn 1 0.8\n", "Urn 2 0.2\n", "dtype: float64" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pmf = Pmf.from_seq(['Urn 1', 'Urn 2'])\n", "pmf['Urn 1'] *= (2/3)**2\n", "pmf['Urn 2'] *= (1/3)**2\n", "pmf.normalize()\n", "pmf" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
probs
Urn 10.808511
Urn 20.191489
\n", "
" ], "text/plain": [ "Urn 1 0.808511\n", "Urn 2 0.191489\n", "dtype: float64" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pmf = Pmf.from_seq(['Urn 1', 'Urn 2'])\n", "pmf['Urn 1'] *= 20/30 * 19/29\n", "pmf['Urn 2'] *= 10/30 * 9/29\n", "pmf.normalize()\n", "pmf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose I have a box of dice with one each of 4-sided, 6-sided, 8-sided, 10-sided, 12-sided, and 20-sided dice.\n", "\n", "I choose a die at random, roll it, and get a 9. What is the probability that I chose the 12-sided die?" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "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", "
probs
100.428571
120.357143
200.214286
\n", "
" ], "text/plain": [ "10 0.428571\n", "12 0.357143\n", "20 0.214286\n", "dtype: float64" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dice = Pmf.from_seq([10,12,20])\n", "dice[10] /= 10\n", "dice[12] /= 12\n", "dice[20] /= 20\n", "dice.normalize()\n", "dice" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Write a few lines of code that use the Pmf class to compute the answer to the following question.\n", "\n", "Suppose I roll two six-sided dice and tell you (honestly) that the sum is not 7.\n", "\n", "What is the probability that the sum is 2 or 12?" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "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", "
probs
20.033333
30.066667
40.100000
50.133333
60.166667
70.000000
80.166667
90.133333
100.100000
110.066667
120.033333
\n", "
" ], "text/plain": [ "2 0.033333\n", "3 0.066667\n", "4 0.100000\n", "5 0.133333\n", "6 0.166667\n", "7 0.000000\n", "8 0.166667\n", "9 0.133333\n", "10 0.100000\n", "11 0.066667\n", "12 0.033333\n", "dtype: float64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "d6 = Pmf.from_seq([1,2,3,4,5,6])\n", "twice = d6 + d6\n", "twice[7] = 0\n", "twice.normalize()\n", "twice" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.06666666666666667" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "twice[2] + twice[12]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose I flip the same coin twice and tell you only whether the outcomes are the same or different.\n", "\n", "Write a likelihood function that takes data and hypo and returns the probability of the data under the hypothesis, where:\n", "\n", "1. data is a string, either 'S' for the same outcome or 'D' for different, and\n", "\n", "2. hypo is the hypothetical probability of heads, from 0-1" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def likelihood_flip(data, hypo):\n", " \"\"\" Likelihood function for the Euro problem.\n", " \n", " data: string, either 'S' or 'D'\n", " hypo: prob of heads (0-1)\n", " \n", " returns: float probability\n", " \"\"\"\n", " x = hypo\n", " if data == 'S':\n", " return x*x + (1-x)*(1-x)\n", " else:\n", " return 2 * x * (1-x)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def decorate_flip(title):\n", " \"\"\"Labels the axes.\n", " \n", " title: string\n", " \"\"\"\n", " plt.xlabel('Probability of heads')\n", " plt.ylabel('PMF')\n", " plt.title(title)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "same = Pmf.from_seq(np.linspace(0, 1))\n", "same.update(likelihood_flip, 'S')\n", "same.plot()\n", "decorate_flip('Same outcome')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "diff = Pmf.from_seq(np.linspace(0, 1))\n", "diff.update(likelihood_flip, 'D')\n", "diff.plot()\n", "decorate_flip('Different outcome')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose you have a fixed but unknown probability, `p`, of answering a question on this quiz correctly.\n", "\n", "Out of six questions, the number you get correct, `k`, is well modeled by the binomial distribution with parameters `n` and `p`, where `n` is the number of questions.\n", "\n", "Write a likelihood function that takes `data` and `hypo` and returns the probability of the data under the hypothesis, where:\n", "\n", "1. `data` is a list of two values, `k` and `n`\n", "\n", "2. `hypo` is your probability of getting a question right, `p`, from 0-1" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import binom\n", "\n", "def likelihood_quiz(data, hypo):\n", " \"\"\" Likelihood function for the Euro problem.\n", " \n", " data: k, n\n", " hypo: p\n", " \n", " returns: float probability\n", " \"\"\"\n", " k, n = data\n", " p = hypo\n", " \n", " return binom.pmf(k, n, p)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "def decorate_quiz(title):\n", " \"\"\"Labels the axes.\n", " \n", " title: string\n", " \"\"\"\n", " plt.xlabel('Probability of correct')\n", " plt.ylabel('PMF')\n", " plt.title(title)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "quiz = Pmf.from_seq(np.linspace(0, 1))\n", "quiz.update(likelihood_quiz, (7, 9))\n", "quiz.plot()\n", "decorate_quiz('7 out of 9')" ] } ], "metadata": { "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.7.3" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: install_test.py ================================================ """This file contains code used in "Think Stats", by Allen B. Downey, available from greenteapress.com Copyright 2013 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division import math import numpy from matplotlib import pyplot import thinkplot import thinkbayes2 def RenderPdf(mu, sigma, n=101): """Makes xs and ys for a normal PDF with (mu, sigma). n: number of places to evaluate the PDF """ xs = numpy.linspace(mu-4*sigma, mu+4*sigma, n) ys = [thinkbayes2.EvalNormalPdf(x, mu, sigma) for x in xs] return xs, ys def main(): xs, ys = RenderPdf(100, 15) n = 34 pyplot.fill_between(xs[-n:], ys[-n:], y2=0.0001, color='blue', alpha=0.2) s = 'Congratulations!\nIf you got this far,\nyou must be here.' d = dict(shrink=0.05) pyplot.annotate(s, [127, 0.002], xytext=[80, 0.005], arrowprops=d) thinkplot.Plot(xs, ys) thinkplot.Show(title='Distribution of IQ', xlabel='IQ', ylabel='PDF', legend=False) if __name__ == "__main__": main() ================================================ FILE: lincoln.py ================================================ """This file contains code used in "Think Stats", by Allen B. Downey, available from greenteapress.com Copyright 2014 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division import thinkbayes import thinkplot import numpy """ Bayesian solution to the Lincoln index, described in a blog article at Probably Overthinking It. Last year my occasional correspondent John D. Cook wrote an excellent blog post about the Lincoln index, which is a way to estimate the number of errors in a document (or program) by comparing results from two independent testers. Here's his presentation of the problem: "Suppose you have a tester who finds 20 bugs in your program. You want to estimate how many bugs are really in the program. You know there are at least 20 bugs, and if you have supreme confidence in your tester, you may suppose there are around 20 bugs. But maybe your tester isn't very good. Maybe there are hundreds of bugs. How can you have any idea how many bugs there are? There's no way to know with one tester. But if you have two testers, you can get a good idea, even if you don't know how skilled the testers are." Then he presents the Lincoln index, an estimator "described by Frederick Charles Lincoln in 1930," where Wikpedia's use of "described" is a hint that the index is another example of Stigler's law of eponymy. "Suppose two testers independently search for bugs. Let k1 be the number of errors the first tester finds and k2 the number of errors the second tester finds. Let c be the number of errors both testers find. The Lincoln Index estimates the total number of errors as k1 k2 / c [I changed his notation to be consistent with mine]." So if the first tester finds 20 bugs, the second finds 15, and they find 3 in common, we estimate that there are about 100 bugs. Of course, whenever I see something like this, the idea that pops into my head is that there must be a (better) Bayesian solution! And there is. """ def choose(n, k, d={}): """The binomial coefficient "n choose k". Args: n: number of trials k: number of successes d: map from (n,k) tuples to cached results Returns: int """ if k == 0: return 1 if n == 0: return 0 try: return d[n, k] except KeyError: res = choose(n-1, k) + choose(n-1, k-1) d[n, k] = res return res def binom(k, n, p): """Computes the rest of the binomial PMF. k: number of hits n: number of attempts p: probability of a hit """ return p**k * (1-p)**(n-k) class Lincoln(thinkbayes.Suite, thinkbayes.Joint): """Represents hypotheses about the number of errors.""" def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. hypo: n, p1, p2 data: k1, k2, c """ n, p1, p2 = hypo k1, k2, c = data part1 = choose(n, k1) * binom(k1, n, p1) part2 = choose(k1, c) * choose(n-k1, k2-c) * binom(k2, n, p2) return part1 * part2 def main(): data = 20, 15, 3 probs = numpy.linspace(0, 1, 101) hypos = [] for n in range(32, 350): for p1 in probs: for p2 in probs: hypos.append((n, p1, p2)) suite = Lincoln(hypos) suite.Update(data) n_marginal = suite.Marginal(0) thinkplot.Pmf(n_marginal, label='n') thinkplot.Save(root='lincoln1', xlabel='number of bugs', ylabel='PMF', formats=['pdf', 'png']) print(n_marginal.Mean()) print(n_marginal.MaximumLikelihood()) if __name__ == '__main__': main() ================================================ FILE: sat.py ================================================ """This file contains code used in "Think Bayes", by Allen B. Downey, available from greenteapress.com Copyright 2012 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division import csv import thinkbayes import thinkplot def ReadScale(filename='sat_scale.csv', col=2): """Reads a CSV file of SAT scales (maps from raw score to standard score). Args: filename: string filename col: which column to start with (0=Reading, 2=Math, 4=Writing) Returns: thinkbayes.Interpolator object """ def ParseRange(s): t = [int(x) for x in s.split('-')] return 1.0 * sum(t) / len(t) fp = open(filename) reader = csv.reader(fp) raws = [] scores = [] for t in reader: try: raw = int(t[col]) raws.append(raw) score = ParseRange(t[col+1]) scores.append(score) except: pass raws.sort() scores.sort() return thinkbayes.Interpolator(raws, scores) def ReadRanks(filename='sat_ranks.csv'): """Reads a CSV file of SAT scores. Args: filename: string filename Returns: list of (score, freq) pairs """ fp = open(filename) reader = csv.reader(fp) res = [] for t in reader: try: score = int(t[0]) freq = int(t[1]) res.append((score, freq)) except ValueError: pass return res def DivideValues(pmf, denom): """Divides the values in a Pmf by denom. Returns a new Pmf. """ new = thinkbayes.Pmf() denom = float(denom) for val, prob in pmf.Items(): x = val / denom new.Set(x, prob) return new class Exam(object): """Encapsulates information about an exam. Contains the distribution of scaled scores and an Interpolator that maps between scaled and raw scores. """ def __init__(self): self.scale = ReadScale() scores = ReadRanks() score_pmf = thinkbayes.MakePmfFromDict(dict(scores)) self.raw = self.ReverseScale(score_pmf) self.max_score = max(self.raw.Values()) self.prior = DivideValues(self.raw, denom=self.max_score) def Lookup(self, raw): """Looks up a raw score and returns a scaled score.""" return self.scale.Lookup(raw) def Reverse(self, score): """Looks up a scaled score and returns a raw score. Since we ignore the penalty, negative scores round up to zero. """ raw = self.scale.Reverse(score) return raw if raw > 0 else 0 def ReverseScale(self, pmf): """Applies the reverse scale to the values of a PMF. Args: pmf: Pmf object scale: Interpolator object Returns: new Pmf """ new = thinkbayes.Pmf() for val, prob in pmf.Items(): raw = self.Reverse(val) new.Incr(raw, prob) return new class Sat(thinkbayes.Suite): """Represents the distribution of efficacy for a test-taker.""" def __init__(self, exam): thinkbayes.Suite.__init__(self) self.exam = exam # start with the prior distribution for x, prob in exam.prior.Items(): self.Set(x, prob) def Likelihood(self, data, hypo): """Computes the likelihood of a test score, given x.""" x = hypo score = data raw = self.exam.Reverse(score) yes, no = raw, self.exam.max_score - raw like = x**yes * (1-x)**no return like def PmfProbGreater(pmf1, pmf2): """Probability that a value from pmf1 is less than a value from pmf2. Args: pmf1: Pmf object pmf2: Pmf object Returns: float probability """ total = 0.0 for x1, p1 in pmf1.Items(): for x2, p2 in pmf2.Items(): # Fill this in! pass return total def main(): exam = Exam() alice = Sat(exam) alice.label = 'alice' alice.Update(780) bob = Sat(exam) bob.label = 'bob' bob.Update(760) print('Prob Alice is "smarter":', PmfProbGreater(alice, bob)) print('Prob Bob is "smarter":', PmfProbGreater(bob, alice)) thinkplot.PrePlot(2) thinkplot.Pdfs([alice, bob]) thinkplot.Show(xlabel='x', ylabel='Probability', loc='upper left', xlim=[0.7, 1.02]) if __name__ == '__main__': main() ================================================ FILE: sat_ranks.csv ================================================ "http://professionals.collegeboard.com/profdownload/sat-mathematics-percentile-ranks-2010.pdf",,,,,, ,"Total",,"Male",,"Female", "Score","Number","Percentile","Number","Percentile","Number","Percentile" 800,11959,99,8072,99,3887,"99+" 790,3588,99,2327,99,1261,99 780,3770,99,2377,98,1393,99 770,9663,98,6340,97,3323,99 760,7016,98,4413,97,2603,98 750,10313,97,6721,96,3592,98 740,7542,97,4612,95,2930,98 730,9721,96,6004,94,3717,97 720,7674,95,4664,94,3010,97 710,15694,94,9508,92,6186,96 700,17394,93,10568,91,6826,95 690,21305,92,12858,89,8447,94 680,22953,90,13552,87,9401,93 670,24377,89,14205,85,10172,92 660,27356,87,15564,83,11792,91 650,26303,85,14685,81,11618,89 640,26844,84,14906,79,11938,88 630,28425,82,15675,77,12750,86 620,31515,80,17018,74,14497,84 610,44082,77,23042,71,21040,82 600,33358,75,17325,69,16033,80 590,38788,72,20170,66,18618,78 580,40879,70,20699,63,20180,75 570,51731,66,25790,60,25941,72 560,38232,64,18782,57,19450,70 550,38473,61,18659,54,19814,67 540,54552,58,26165,51,28387,64 530,55065,54,25373,47,29692,60 520,43599,51,20022,44,23577,57 510,45452,48,20673,42,24779,54 500,61084,45,26823,38,34261,50 490,57090,41,25113,34,31977,46 480,40871,38,17594,32,23277,44 470,47521,35,20181,29,27340,40 460,58137,31,23544,26,34593,36 450,50172,28,20777,23,29395,33 440,39180,26,15576,21,23604,30 430,46320,23,18412,18,27908,26 420,47752,20,18154,16,29598,23 410,41915,17,16052,14,25863,20 400,30052,15,11210,12,18842,17 390,32466,13,12140,10,20326,15 380,27135,11,9984,9,17151,13 370,25852,9,9484,8,16368,11 360,23847,8,8809,6,15038,9 350,20800,6,7755,5,13045,7 340,17639,5,6554,4,11085,6 330,14623,4,5371,4,9252,5 320,11400,4,4295,3,7105,4 310,11776,3,4411,2,7365,3 300,8430,2,3300,2,5130,3 290,7358,2,2898,2,4460,2 280,7358,1,2872,1,4486,2 270,3194,1,1301,1,1893,1 260,3495,1,1375,1,2120,1 250,2163,1,821,1,1342,1 240,3278,1,1303,1,1975,1 230,1454,1,555,"1-",899,1 220,2519,"1-",991,"1-",1528,"1-" 210,1221,"1-",501,"1-",720,"1-" 200,4265,"–",1868,"–",2397,"–" ,1547990,,720793,,827197, ,,,65606,,38728, ,,,0.0910191969,,0.0468183516, ================================================ FILE: sat_scale.csv ================================================ "http://professionals.collegeboard.com/profdownload/sat-raw-score-to-scaled-score-ranges-2010.pdf",,,,, "Raw score","Critical Reading","Raw score","Mathematics","Raw score","Writing Skills" 67,800,,,, 65,"790-800",,,, 60,"710-730",,,, 55,"660-670",54,800,, 50,"620-630",50,"710-730",49,800 45,"580-590",45,"650-670",45,"690-730" 40,"550-560",40,"610-630",40,"620-660" 35,"520-530",35,"570-580",35,"570-660" 30,"490-510",30,"530-540",30,"520-550" 25,"460-480",25,"490-500",25,"480-510" 20,"420-450",20,"450-460",20,"440-460" 15,"390-420",15,"410-420",15,"400-420" 10,"350-380",10,"360-380",10,"350-370" 5,"300-330",5,"300-330",5,"300-330" 0,"220-270",0,"220-260",0,"210-260" -5,200,-5,200,-5,200 ================================================ FILE: sat_soln.py ================================================ """This file contains code used in "Think Bayes", by Allen B. Downey, available from greenteapress.com Copyright 2012 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division import csv import thinkbayes import thinkplot def ReadScale(filename='sat_scale.csv', col=2): """Reads a CSV file of SAT scales (maps from raw score to standard score). Args: filename: string filename col: which column to start with (0=Reading, 2=Math, 4=Writing) Returns: thinkbayes.Interpolator object """ def ParseRange(s): t = [int(x) for x in s.split('-')] return 1.0 * sum(t) / len(t) fp = open(filename) reader = csv.reader(fp) raws = [] scores = [] for t in reader: try: raw = int(t[col]) raws.append(raw) score = ParseRange(t[col+1]) scores.append(score) except: pass raws.sort() scores.sort() return thinkbayes.Interpolator(raws, scores) def ReadRanks(filename='sat_ranks.csv'): """Reads a CSV file of SAT scores. Args: filename: string filename Returns: list of (score, freq) pairs """ fp = open(filename) reader = csv.reader(fp) res = [] for t in reader: try: score = int(t[0]) freq = int(t[1]) res.append((score, freq)) except ValueError: pass return res def DivideValues(pmf, denom): """Divides the values in a Pmf by denom. Returns a new Pmf. """ new = thinkbayes.Pmf() denom = float(denom) for val, prob in pmf.Items(): x = val / denom new.Set(x, prob) return new class Exam(object): """Encapsulates information about an exam. Contains the distribution of scaled scores and an Interpolator that maps between scaled and raw scores. """ def __init__(self): self.scale = ReadScale() scores = ReadRanks() score_pmf = thinkbayes.MakePmfFromDict(dict(scores)) self.raw = self.ReverseScale(score_pmf) self.max_score = max(self.raw.Values()) self.prior = DivideValues(self.raw, denom=self.max_score) def Lookup(self, raw): """Looks up a raw score and returns a scaled score.""" return self.scale.Lookup(raw) def Reverse(self, score): """Looks up a scaled score and returns a raw score. Since we ignore the penalty, negative scores round up to zero. """ raw = self.scale.Reverse(score) return raw if raw > 0 else 0 def ReverseScale(self, pmf): """Applies the reverse scale to the values of a PMF. Args: pmf: Pmf object scale: Interpolator object Returns: new Pmf """ new = thinkbayes.Pmf() for val, prob in pmf.Items(): raw = self.Reverse(val) new.Incr(raw, prob) return new class Sat(thinkbayes.Suite): """Represents the distribution of efficacy for a test-taker.""" def __init__(self, exam): thinkbayes.Suite.__init__(self) self.exam = exam # start with the prior distribution for x, prob in exam.prior.Items(): self.Set(x, prob) def Likelihood(self, data, hypo): """Computes the likelihood of a test score, given x.""" x = hypo score = data raw = self.exam.Reverse(score) yes, no = raw, self.exam.max_score - raw like = x**yes * (1-x)**no return like def PmfProbGreater(pmf1, pmf2): """Probability that a value from pmf1 is less than a value from pmf2. Args: pmf1: Pmf object pmf2: Pmf object Returns: float probability """ total = 0.0 for x1, p1 in pmf1.Items(): for x2, p2 in pmf2.Items(): if x1 > x2: total += p1 * p2 return total def main(): exam = Exam() alice = Sat(exam) alice.label = 'alice' alice.Update(780) bob = Sat(exam) bob.label = 'bob' bob.Update(760) print('Prob Alice is "smarter":', PmfProbGreater(alice, bob)) print('Prob Bob is "smarter":', PmfProbGreater(bob, alice)) thinkplot.PrePlot(2) thinkplot.Pdfs([alice, bob]) thinkplot.Show(xlabel='x', ylabel='Probability', loc='upper left', xlim=[0.7, 1.02]) if __name__ == '__main__': main() ================================================ FILE: thinkbayes.py ================================================ """This file contains code for use with "Think Stats" and "Think Bayes", both by Allen B. Downey, available from greenteapress.com Copyright 2014 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division """This file contains class definitions for: Hist: represents a histogram (map from values to integer frequencies). Pmf: represents a probability mass function (map from values to probs). _DictWrapper: private parent class for Hist and Pmf. Cdf: represents a discrete cumulative distribution function Pdf: represents a continuous probability density function """ import bisect import copy import logging import math import random import re from collections import Counter from operator import itemgetter import thinkplot import numpy as np import pandas import scipy from scipy import stats from scipy import special from scipy import ndimage from io import open ROOT2 = math.sqrt(2) def RandomSeed(x): """Initialize the random and np.random generators. x: int seed """ random.seed(x) np.random.seed(x) def Odds(p): """Computes odds for a given probability. Example: p=0.75 means 75 for and 25 against, or 3:1 odds in favor. Note: when p=1, the formula for odds divides by zero, which is normally undefined. But I think it is reasonable to define Odds(1) to be infinity, so that's what this function does. p: float 0-1 Returns: float odds """ if p == 1: return float('inf') return p / (1 - p) def Probability(o): """Computes the probability corresponding to given odds. Example: o=2 means 2:1 odds in favor, or 2/3 probability o: float odds, strictly positive Returns: float probability """ return o / (o + 1) def Probability2(yes, no): """Computes the probability corresponding to given odds. Example: yes=2, no=1 means 2:1 odds in favor, or 2/3 probability. yes, no: int or float odds in favor """ return yes / (yes + no) class Interpolator(object): """Represents a mapping between sorted sequences; performs linear interp. Attributes: xs: sorted list ys: sorted list """ def __init__(self, xs, ys): self.xs = xs self.ys = ys def Lookup(self, x): """Looks up x and returns the corresponding value of y.""" return self._Bisect(x, self.xs, self.ys) def Reverse(self, y): """Looks up y and returns the corresponding value of x.""" return self._Bisect(y, self.ys, self.xs) def _Bisect(self, x, xs, ys): """Helper function.""" if x <= xs[0]: return ys[0] if x >= xs[-1]: return ys[-1] i = bisect.bisect(xs, x) frac = 1.0 * (x - xs[i - 1]) / (xs[i] - xs[i - 1]) y = ys[i - 1] + frac * 1.0 * (ys[i] - ys[i - 1]) return y class _DictWrapper(object): """An object that contains a dictionary.""" def __init__(self, obj=None, label=None): """Initializes the distribution. obj: Hist, Pmf, Cdf, Pdf, dict, pandas Series, list of pairs label: string label """ self.label = label if label is not None else '_nolegend_' self.d = {} # flag whether the distribution is under a log transform self.log = False if obj is None: return if isinstance(obj, (_DictWrapper, Cdf, Pdf)): self.label = label if label is not None else obj.label if isinstance(obj, dict): self.d.update(obj.items()) elif isinstance(obj, (_DictWrapper, Cdf, Pdf)): self.d.update(obj.Items()) elif isinstance(obj, pandas.Series): self.d.update(obj.value_counts().iteritems()) else: # finally, treat it like a list self.d.update(Counter(obj)) if len(self) > 0 and isinstance(self, Pmf): self.Normalize() def __hash__(self): return id(self) def __str__(self): cls = self.__class__.__name__ return '%s(%s)' % (cls, str(self.d)) __repr__ = __str__ def __eq__(self, other): return self.d == other.d def __len__(self): return len(self.d) def __iter__(self): return iter(self.d) def iterkeys(self): """Returns an iterator over keys.""" return iter(self.d) def __contains__(self, value): return value in self.d def __getitem__(self, value): return self.d.get(value, 0) def __setitem__(self, value, prob): self.d[value] = prob def __delitem__(self, value): del self.d[value] def Copy(self, label=None): """Returns a copy. Make a shallow copy of d. If you want a deep copy of d, use copy.deepcopy on the whole object. label: string label for the new Hist returns: new _DictWrapper with the same type """ new = copy.copy(self) new.d = copy.copy(self.d) new.label = label if label is not None else self.label return new def Scale(self, factor): """Multiplies the values by a factor. factor: what to multiply by Returns: new object """ new = self.Copy() new.d.clear() for val, prob in self.Items(): new.Set(val * factor, prob) return new def Log(self, m=None): """Log transforms the probabilities. Removes values with probability 0. Normalizes so that the largest logprob is 0. """ if self.log: raise ValueError("Pmf/Hist already under a log transform") self.log = True if m is None: m = self.MaxLike() for x, p in self.d.items(): if p: self.Set(x, math.log(p / m)) else: self.Remove(x) def Exp(self, m=None): """Exponentiates the probabilities. m: how much to shift the ps before exponentiating If m is None, normalizes so that the largest prob is 1. """ if not self.log: raise ValueError("Pmf/Hist not under a log transform") self.log = False if m is None: m = self.MaxLike() for x, p in self.d.items(): self.Set(x, math.exp(p - m)) def GetDict(self): """Gets the dictionary.""" return self.d def SetDict(self, d): """Sets the dictionary.""" self.d = d def Values(self): """Gets an unsorted sequence of values. Note: one source of confusion is that the keys of this dictionary are the values of the Hist/Pmf, and the values of the dictionary are frequencies/probabilities. """ return self.d.keys() def Items(self): """Gets an unsorted sequence of (value, freq/prob) pairs.""" return self.d.items() def Render(self, **options): """Generates a sequence of points suitable for plotting. Note: options are ignored Returns: tuple of (sorted value sequence, freq/prob sequence) """ if min(self.d.keys()) is np.nan: logging.warning('Hist: contains NaN, may not render correctly.') return zip(*sorted(self.Items())) def MakeCdf(self, label=None): """Makes a Cdf.""" label = label if label is not None else self.label return Cdf(self, label=label) def Print(self): """Prints the values and freqs/probs in ascending order.""" for val, prob in sorted(self.d.items()): print(val, prob) def Set(self, x, y=0): """Sets the freq/prob associated with the value x. Args: x: number value y: number freq or prob """ self.d[x] = y def Incr(self, x, term=1): """Increments the freq/prob associated with the value x. Args: x: number value term: how much to increment by """ self.d[x] = self.d.get(x, 0) + term def Mult(self, x, factor): """Scales the freq/prob associated with the value x. Args: x: number value factor: how much to multiply by """ self.d[x] = self.d.get(x, 0) * factor def Remove(self, x): """Removes a value. Throws an exception if the value is not there. Args: x: value to remove """ del self.d[x] def Total(self): """Returns the total of the frequencies/probabilities in the map.""" total = sum(self.d.values()) return total def MaxLike(self): """Returns the largest frequency/probability in the map.""" return max(self.d.values()) def Largest(self, n=10): """Returns the largest n values, with frequency/probability. n: number of items to return """ return sorted(self.d.items(), reverse=True)[:n] def Smallest(self, n=10): """Returns the smallest n values, with frequency/probability. n: number of items to return """ return sorted(self.d.items(), reverse=False)[:n] class Hist(_DictWrapper): """Represents a histogram, which is a map from values to frequencies. Values can be any hashable type; frequencies are integer counters. """ def Freq(self, x): """Gets the frequency associated with the value x. Args: x: number value Returns: int frequency """ return self.d.get(x, 0) def Freqs(self, xs): """Gets frequencies for a sequence of values.""" return [self.Freq(x) for x in xs] def IsSubset(self, other): """Checks whether the values in this histogram are a subset of the values in the given histogram.""" for val, freq in self.Items(): if freq > other.Freq(val): return False return True def Subtract(self, other): """Subtracts the values in the given histogram from this histogram.""" for val, freq in other.Items(): self.Incr(val, -freq) class Pmf(_DictWrapper): """Represents a probability mass function. Values can be any hashable type; probabilities are floating-point. Pmfs are not necessarily normalized. """ def Prob(self, x, default=0): """Gets the probability associated with the value x. Args: x: number value default: value to return if the key is not there Returns: float probability """ return self.d.get(x, default) def Probs(self, xs): """Gets probabilities for a sequence of values.""" return [self.Prob(x) for x in xs] def Percentile(self, percentage): """Computes a percentile of a given Pmf. Note: this is not super efficient. If you are planning to compute more than a few percentiles, compute the Cdf. percentage: float 0-100 returns: value from the Pmf """ p = percentage / 100.0 total = 0 for val, prob in sorted(self.Items()): total += prob if total >= p: return val def ProbGreater(self, x): """Probability that a sample from this Pmf exceeds x. x: number returns: float probability """ if isinstance(x, _DictWrapper): return PmfProbGreater(self, x) else: t = [prob for (val, prob) in self.d.items() if val > x] return sum(t) def ProbLess(self, x): """Probability that a sample from this Pmf is less than x. x: number returns: float probability """ if isinstance(x, _DictWrapper): return PmfProbLess(self, x) else: t = [prob for (val, prob) in self.d.items() if val < x] return sum(t) def __lt__(self, obj): """Less than. obj: number or _DictWrapper returns: float probability """ return self.ProbLess(obj) def __gt__(self, obj): """Greater than. obj: number or _DictWrapper returns: float probability """ return self.ProbGreater(obj) def __ge__(self, obj): """Greater than or equal. obj: number or _DictWrapper returns: float probability """ return 1 - (self < obj) def __le__(self, obj): """Less than or equal. obj: number or _DictWrapper returns: float probability """ return 1 - (self > obj) def Normalize(self, fraction=1.0): """Normalizes this PMF so the sum of all probs is fraction. Args: fraction: what the total should be after normalization Returns: the total probability before normalizing """ if self.log: raise ValueError("Normalize: Pmf is under a log transform") total = self.Total() if total == 0.0: raise ValueError('Normalize: total probability is zero.') #logging.warning('Normalize: total probability is zero.') #return total factor = fraction / total for x in self.d: self.d[x] *= factor return total def Random(self): """Chooses a random element from this PMF. Note: this is not very efficient. If you plan to call this more than a few times, consider converting to a CDF. Returns: float value from the Pmf """ target = random.random() total = 0.0 for x, p in self.d.items(): total += p if total >= target: return x # we shouldn't get here raise ValueError('Random: Pmf might not be normalized.') def Mean(self): """Computes the mean of a PMF. Returns: float mean """ mean = 0.0 for x, p in self.d.items(): mean += p * x return mean def Var(self, mu=None): """Computes the variance of a PMF. mu: the point around which the variance is computed; if omitted, computes the mean returns: float variance """ if mu is None: mu = self.Mean() var = 0.0 for x, p in self.d.items(): var += p * (x - mu) ** 2 return var def Std(self, mu=None): """Computes the standard deviation of a PMF. mu: the point around which the variance is computed; if omitted, computes the mean returns: float standard deviation """ var = self.Var(mu) return math.sqrt(var) def MaximumLikelihood(self): """Returns the value with the highest probability. Returns: float probability """ _, val = max((prob, val) for val, prob in self.Items()) return val def CredibleInterval(self, percentage=90): """Computes the central credible interval. If percentage=90, computes the 90% CI. Args: percentage: float between 0 and 100 Returns: sequence of two floats, low and high """ cdf = self.MakeCdf() return cdf.CredibleInterval(percentage) def __add__(self, other): """Computes the Pmf of the sum of values drawn from self and other. other: another Pmf or a scalar returns: new Pmf """ try: return self.AddPmf(other) except AttributeError: return self.AddConstant(other) def AddPmf(self, other): """Computes the Pmf of the sum of values drawn from self and other. other: another Pmf returns: new Pmf """ pmf = Pmf() for v1, p1 in self.Items(): for v2, p2 in other.Items(): pmf.Incr(v1 + v2, p1 * p2) return pmf def AddConstant(self, other): """Computes the Pmf of the sum a constant and values from self. other: a number returns: new Pmf """ pmf = Pmf() for v1, p1 in self.Items(): pmf.Set(v1 + other, p1) return pmf def __sub__(self, other): """Computes the Pmf of the diff of values drawn from self and other. other: another Pmf returns: new Pmf """ try: return self.SubPmf(other) except AttributeError: return self.AddConstant(-other) def SubPmf(self, other): """Computes the Pmf of the diff of values drawn from self and other. other: another Pmf returns: new Pmf """ pmf = Pmf() for v1, p1 in self.Items(): for v2, p2 in other.Items(): pmf.Incr(v1 - v2, p1 * p2) return pmf def __mul__(self, other): """Computes the Pmf of the product of values drawn from self and other. other: another Pmf returns: new Pmf """ try: return self.MulPmf(other) except AttributeError: return self.MulConstant(other) def MulPmf(self, other): """Computes the Pmf of the diff of values drawn from self and other. other: another Pmf returns: new Pmf """ pmf = Pmf() for v1, p1 in self.Items(): for v2, p2 in other.Items(): pmf.Incr(v1 * v2, p1 * p2) return pmf def MulConstant(self, other): """Computes the Pmf of the product of a constant and values from self. other: a number returns: new Pmf """ pmf = Pmf() for v1, p1 in self.Items(): pmf.Set(v1 * other, p1) return pmf def __div__(self, other): """Computes the Pmf of the ratio of values drawn from self and other. other: another Pmf returns: new Pmf """ try: return self.DivPmf(other) except AttributeError: return self.MulConstant(1/other) __truediv__ = __div__ def DivPmf(self, other): """Computes the Pmf of the ratio of values drawn from self and other. other: another Pmf returns: new Pmf """ pmf = Pmf() for v1, p1 in self.Items(): for v2, p2 in other.Items(): pmf.Incr(v1 / v2, p1 * p2) return pmf def Max(self, k): """Computes the CDF of the maximum of k selections from this dist. k: int returns: new Cdf """ cdf = self.MakeCdf() return cdf.Max(k) class Joint(Pmf): """Represents a joint distribution. The values are sequences (usually tuples) """ def Marginal(self, i, label=None): """Gets the marginal distribution of the indicated variable. i: index of the variable we want Returns: Pmf """ pmf = Pmf(label=label) for vs, prob in self.Items(): pmf.Incr(vs[i], prob) return pmf def Conditional(self, i, j, val, label=None): """Gets the conditional distribution of the indicated variable. Distribution of vs[i], conditioned on vs[j] = val. i: index of the variable we want j: which variable is conditioned on val: the value the jth variable has to have Returns: Pmf """ pmf = Pmf(label=label) for vs, prob in self.Items(): if vs[j] != val: continue pmf.Incr(vs[i], prob) pmf.Normalize() return pmf def MaxLikeInterval(self, percentage=90): """Returns the maximum-likelihood credible interval. If percentage=90, computes a 90% CI containing the values with the highest likelihoods. percentage: float between 0 and 100 Returns: list of values from the suite """ interval = [] total = 0 t = [(prob, val) for val, prob in self.Items()] t.sort(reverse=True) for prob, val in t: interval.append(val) total += prob if total >= percentage / 100.0: break return interval def MakeJoint(pmf1, pmf2): """Joint distribution of values from pmf1 and pmf2. Assumes that the PMFs represent independent random variables. Args: pmf1: Pmf object pmf2: Pmf object Returns: Joint pmf of value pairs """ joint = Joint() for v1, p1 in pmf1.Items(): for v2, p2 in pmf2.Items(): joint.Set((v1, v2), p1 * p2) return joint def MakeHistFromList(t, label=None): """Makes a histogram from an unsorted sequence of values. Args: t: sequence of numbers label: string label for this histogram Returns: Hist object """ return Hist(t, label=label) def MakeHistFromDict(d, label=None): """Makes a histogram from a map from values to frequencies. Args: d: dictionary that maps values to frequencies label: string label for this histogram Returns: Hist object """ return Hist(d, label) def MakePmfFromList(t, label=None): """Makes a PMF from an unsorted sequence of values. Args: t: sequence of numbers label: string label for this PMF Returns: Pmf object """ return Pmf(t, label=label) def MakePmfFromDict(d, label=None): """Makes a PMF from a map from values to probabilities. Args: d: dictionary that maps values to probabilities label: string label for this PMF Returns: Pmf object """ return Pmf(d, label=label) def MakePmfFromItems(t, label=None): """Makes a PMF from a sequence of value-probability pairs Args: t: sequence of value-probability pairs label: string label for this PMF Returns: Pmf object """ return Pmf(dict(t), label=label) def MakePmfFromHist(hist, label=None): """Makes a normalized PMF from a Hist object. Args: hist: Hist object label: string label Returns: Pmf object """ if label is None: label = hist.label return Pmf(hist, label=label) def MakeMixture(metapmf, label='mix'): """Make a mixture distribution. Args: metapmf: Pmf that maps from Pmfs to probs. label: string label for the new Pmf. Returns: Pmf object. """ mix = Pmf(label=label) for pmf, p1 in metapmf.Items(): for x, p2 in pmf.Items(): mix.Incr(x, p1 * p2) return mix def MakeUniformPmf(low, high, n): """Make a uniform Pmf. low: lowest value (inclusive) high: highest value (inclusize) n: number of values """ pmf = Pmf() for x in np.linspace(low, high, n): pmf.Set(x, 1) pmf.Normalize() return pmf class Cdf(object): """Represents a cumulative distribution function. Attributes: xs: sequence of values ps: sequence of probabilities label: string used as a graph label. """ def __init__(self, obj=None, ps=None, label=None): """Initializes. If ps is provided, obj must be the corresponding list of values. obj: Hist, Pmf, Cdf, Pdf, dict, pandas Series, list of pairs ps: list of cumulative probabilities label: string label """ self.label = label if label is not None else '_nolegend_' if isinstance(obj, (_DictWrapper, Cdf, Pdf)): if not label: self.label = label if label is not None else obj.label if obj is None: # caller does not provide obj, make an empty Cdf self.xs = np.asarray([]) self.ps = np.asarray([]) if ps is not None: logging.warning("Cdf: can't pass ps without also passing xs.") return else: # if the caller provides xs and ps, just store them if ps is not None: if isinstance(ps, str): logging.warning("Cdf: ps can't be a string") self.xs = np.asarray(obj) self.ps = np.asarray(ps) return # caller has provided just obj, not ps if isinstance(obj, Cdf): self.xs = copy.copy(obj.xs) self.ps = copy.copy(obj.ps) return if isinstance(obj, _DictWrapper): dw = obj else: dw = Hist(obj) if len(dw) == 0: self.xs = np.asarray([]) self.ps = np.asarray([]) return xs, freqs = zip(*sorted(dw.Items())) self.xs = np.asarray(xs) self.ps = np.cumsum(freqs, dtype=np.float) self.ps /= self.ps[-1] def __str__(self): return 'Cdf(%s, %s)' % (str(self.xs), str(self.ps)) __repr__ = __str__ def __len__(self): return len(self.xs) def __getitem__(self, x): return self.Prob(x) def __setitem__(self): raise UnimplementedMethodException() def __delitem__(self): raise UnimplementedMethodException() def __eq__(self, other): return np.all(self.xs == other.xs) and np.all(self.ps == other.ps) def Copy(self, label=None): """Returns a copy of this Cdf. label: string label for the new Cdf """ if label is None: label = self.label return Cdf(list(self.xs), list(self.ps), label=label) def MakePmf(self, label=None): """Makes a Pmf.""" if label is None: label = self.label return Pmf(self, label=label) def Values(self): """Returns a sorted list of values. """ return self.xs def Items(self): """Returns a sorted sequence of (value, probability) pairs. Note: in Python3, returns an iterator. """ a = self.ps b = np.roll(a, 1) b[0] = 0 return zip(self.xs, a-b) def Shift(self, term): """Adds a term to the xs. term: how much to add """ new = self.Copy() # don't use +=, or else an int array + float yields int array new.xs = new.xs + term return new def Scale(self, factor): """Multiplies the xs by a factor. factor: what to multiply by """ new = self.Copy() # don't use *=, or else an int array * float yields int array new.xs = new.xs * factor return new def Prob(self, x): """Returns CDF(x), the probability that corresponds to value x. Args: x: number Returns: float probability """ if x < self.xs[0]: return 0.0 index = bisect.bisect(self.xs, x) p = self.ps[index-1] return p def Probs(self, xs): """Gets probabilities for a sequence of values. xs: any sequence that can be converted to NumPy array returns: NumPy array of cumulative probabilities """ xs = np.asarray(xs) index = np.searchsorted(self.xs, xs, side='right') ps = self.ps[index-1] ps[xs < self.xs[0]] = 0.0 return ps ProbArray = Probs def Value(self, p): """Returns InverseCDF(p), the value that corresponds to probability p. Args: p: number in the range [0, 1] Returns: number value """ if p < 0 or p > 1: raise ValueError('Probability p must be in range [0, 1]') index = bisect.bisect_left(self.ps, p) return self.xs[index] def ValueArray(self, ps): """Returns InverseCDF(p), the value that corresponds to probability p. Args: ps: NumPy array of numbers in the range [0, 1] Returns: NumPy array of values """ ps = np.asarray(ps) if np.any(ps < 0) or np.any(ps > 1): raise ValueError('Probability p must be in range [0, 1]') index = np.searchsorted(self.ps, ps, side='left') return self.xs[index] def Percentile(self, p): """Returns the value that corresponds to percentile p. Args: p: number in the range [0, 100] Returns: number value """ return self.Value(p / 100.0) def PercentileRank(self, x): """Returns the percentile rank of the value x. x: potential value in the CDF returns: percentile rank in the range 0 to 100 """ return self.Prob(x) * 100.0 def Random(self): """Chooses a random value from this distribution.""" return self.Value(random.random()) def Sample(self, n): """Generates a random sample from this distribution. n: int length of the sample returns: NumPy array """ ps = np.random.random(n) return self.ValueArray(ps) def Mean(self): """Computes the mean of a CDF. Returns: float mean """ old_p = 0 total = 0.0 for x, new_p in zip(self.xs, self.ps): p = new_p - old_p total += p * x old_p = new_p return total def CredibleInterval(self, percentage=90): """Computes the central credible interval. If percentage=90, computes the 90% CI. Args: percentage: float between 0 and 100 Returns: sequence of two floats, low and high """ prob = (1 - percentage / 100.0) / 2 interval = self.Value(prob), self.Value(1 - prob) return interval ConfidenceInterval = CredibleInterval def _Round(self, multiplier=1000.0): """ An entry is added to the cdf only if the percentile differs from the previous value in a significant digit, where the number of significant digits is determined by multiplier. The default is 1000, which keeps log10(1000) = 3 significant digits. """ # TODO(write this method) raise UnimplementedMethodException() def Render(self, **options): """Generates a sequence of points suitable for plotting. An empirical CDF is a step function; linear interpolation can be misleading. Note: options are ignored Returns: tuple of (xs, ps) """ def interleave(a, b): c = np.empty(a.shape[0] + b.shape[0]) c[::2] = a c[1::2] = b return c a = np.array(self.xs) xs = interleave(a, a) shift_ps = np.roll(self.ps, 1) shift_ps[0] = 0 ps = interleave(shift_ps, self.ps) return xs, ps def Max(self, k): """Computes the CDF of the maximum of k selections from this dist. k: int returns: new Cdf """ cdf = self.Copy() cdf.ps **= k return cdf def MakeCdfFromItems(items, label=None): """Makes a cdf from an unsorted sequence of (value, frequency) pairs. Args: items: unsorted sequence of (value, frequency) pairs label: string label for this CDF Returns: cdf: list of (value, fraction) pairs """ return Cdf(dict(items), label=label) def MakeCdfFromDict(d, label=None): """Makes a CDF from a dictionary that maps values to frequencies. Args: d: dictionary that maps values to frequencies. label: string label for the data. Returns: Cdf object """ return Cdf(d, label=label) def MakeCdfFromList(seq, label=None): """Creates a CDF from an unsorted sequence. Args: seq: unsorted sequence of sortable values label: string label for the cdf Returns: Cdf object """ return Cdf(seq, label=label) def MakeCdfFromHist(hist, label=None): """Makes a CDF from a Hist object. Args: hist: Pmf.Hist object label: string label for the data. Returns: Cdf object """ if label is None: label = hist.label return Cdf(hist, label=label) def MakeCdfFromPmf(pmf, label=None): """Makes a CDF from a Pmf object. Args: pmf: Pmf.Pmf object label: string label for the data. Returns: Cdf object """ if label is None: label = pmf.label return Cdf(pmf, label=label) class UnimplementedMethodException(Exception): """Exception if someone calls a method that should be overridden.""" class Suite(Pmf): """Represents a suite of hypotheses and their probabilities.""" def Update(self, data): """Updates each hypothesis based on the data. data: any representation of the data returns: the normalizing constant """ for hypo in self.Values(): like = self.Likelihood(data, hypo) self.Mult(hypo, like) return self.Normalize() def LogUpdate(self, data): """Updates a suite of hypotheses based on new data. Modifies the suite directly; if you want to keep the original, make a copy. Note: unlike Update, LogUpdate does not normalize. Args: data: any representation of the data """ for hypo in self.Values(): like = self.LogLikelihood(data, hypo) self.Incr(hypo, like) def UpdateSet(self, dataset): """Updates each hypothesis based on the dataset. This is more efficient than calling Update repeatedly because it waits until the end to Normalize. Modifies the suite directly; if you want to keep the original, make a copy. dataset: a sequence of data returns: the normalizing constant """ for data in dataset: for hypo in self.Values(): like = self.Likelihood(data, hypo) self.Mult(hypo, like) return self.Normalize() def LogUpdateSet(self, dataset): """Updates each hypothesis based on the dataset. Modifies the suite directly; if you want to keep the original, make a copy. dataset: a sequence of data returns: None """ for data in dataset: self.LogUpdate(data) def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. hypo: some representation of the hypothesis data: some representation of the data """ raise UnimplementedMethodException() def LogLikelihood(self, data, hypo): """Computes the log likelihood of the data under the hypothesis. hypo: some representation of the hypothesis data: some representation of the data """ raise UnimplementedMethodException() def Print(self): """Prints the hypotheses and their probabilities.""" for hypo, prob in sorted(self.Items()): print(hypo, prob) def MakeOdds(self): """Transforms from probabilities to odds. Values with prob=0 are removed. """ for hypo, prob in self.Items(): if prob: self.Set(hypo, Odds(prob)) else: self.Remove(hypo) def MakeProbs(self): """Transforms from odds to probabilities.""" for hypo, odds in self.Items(): self.Set(hypo, Probability(odds)) def MakeSuiteFromList(t, label=None): """Makes a suite from an unsorted sequence of values. Args: t: sequence of numbers label: string label for this suite Returns: Suite object """ hist = MakeHistFromList(t, label=label) d = hist.GetDict() return MakeSuiteFromDict(d) def MakeSuiteFromHist(hist, label=None): """Makes a normalized suite from a Hist object. Args: hist: Hist object label: string label Returns: Suite object """ if label is None: label = hist.label # make a copy of the dictionary d = dict(hist.GetDict()) return MakeSuiteFromDict(d, label) def MakeSuiteFromDict(d, label=None): """Makes a suite from a map from values to probabilities. Args: d: dictionary that maps values to probabilities label: string label for this suite Returns: Suite object """ suite = Suite(label=label) suite.SetDict(d) suite.Normalize() return suite class Pdf(object): """Represents a probability density function (PDF).""" def Density(self, x): """Evaluates this Pdf at x. Returns: float or NumPy array of probability density """ raise UnimplementedMethodException() def GetLinspace(self): """Get a linspace for plotting. Not all subclasses of Pdf implement this. Returns: numpy array """ raise UnimplementedMethodException() def MakePmf(self, **options): """Makes a discrete version of this Pdf. options can include label: string low: low end of range high: high end of range n: number of places to evaluate Returns: new Pmf """ label = options.pop('label', '') xs, ds = self.Render(**options) return Pmf(dict(zip(xs, ds)), label=label) def Render(self, **options): """Generates a sequence of points suitable for plotting. If options includes low and high, it must also include n; in that case the density is evaluated an n locations between low and high, including both. If options includes xs, the density is evaluate at those location. Otherwise, self.GetLinspace is invoked to provide the locations. Returns: tuple of (xs, densities) """ low, high = options.pop('low', None), options.pop('high', None) if low is not None and high is not None: n = options.pop('n', 101) xs = np.linspace(low, high, n) else: xs = options.pop('xs', None) if xs is None: xs = self.GetLinspace() ds = self.Density(xs) return xs, ds def Items(self): """Generates a sequence of (value, probability) pairs. """ return zip(*self.Render()) class NormalPdf(Pdf): """Represents the PDF of a Normal distribution.""" def __init__(self, mu=0, sigma=1, label=None): """Constructs a Normal Pdf with given mu and sigma. mu: mean sigma: standard deviation label: string """ self.mu = mu self.sigma = sigma self.label = label if label is not None else '_nolegend_' def __str__(self): return 'NormalPdf(%f, %f)' % (self.mu, self.sigma) def GetLinspace(self): """Get a linspace for plotting. Returns: numpy array """ low, high = self.mu-3*self.sigma, self.mu+3*self.sigma return np.linspace(low, high, 101) def Density(self, xs): """Evaluates this Pdf at xs. xs: scalar or sequence of floats returns: float or NumPy array of probability density """ return stats.norm.pdf(xs, self.mu, self.sigma) class ExponentialPdf(Pdf): """Represents the PDF of an exponential distribution.""" def __init__(self, lam=1, label=None): """Constructs an exponential Pdf with given parameter. lam: rate parameter label: string """ self.lam = lam self.label = label if label is not None else '_nolegend_' def __str__(self): return 'ExponentialPdf(%f)' % (self.lam) def GetLinspace(self): """Get a linspace for plotting. Returns: numpy array """ low, high = 0, 5.0/self.lam return np.linspace(low, high, 101) def Density(self, xs): """Evaluates this Pdf at xs. xs: scalar or sequence of floats returns: float or NumPy array of probability density """ return stats.expon.pdf(xs, scale=1.0/self.lam) class EstimatedPdf(Pdf): """Represents a PDF estimated by KDE.""" def __init__(self, sample, label=None): """Estimates the density function based on a sample. sample: sequence of data label: string """ self.label = label if label is not None else '_nolegend_' self.kde = stats.gaussian_kde(sample) low = min(sample) high = max(sample) self.linspace = np.linspace(low, high, 101) def __str__(self): return 'EstimatedPdf(label=%s)' % str(self.label) def GetLinspace(self): """Get a linspace for plotting. Returns: numpy array """ return self.linspace def Density(self, xs): """Evaluates this Pdf at xs. returns: float or NumPy array of probability density """ return self.kde.evaluate(xs) def CredibleInterval(pmf, percentage=90): """Computes a credible interval for a given distribution. If percentage=90, computes the 90% CI. Args: pmf: Pmf object representing a posterior distribution percentage: float between 0 and 100 Returns: sequence of two floats, low and high """ cdf = pmf.MakeCdf() prob = (1 - percentage / 100.0) / 2 interval = cdf.Value(prob), cdf.Value(1 - prob) return interval def PmfProbLess(pmf1, pmf2): """Probability that a value from pmf1 is less than a value from pmf2. Args: pmf1: Pmf object pmf2: Pmf object Returns: float probability """ total = 0.0 for v1, p1 in pmf1.Items(): for v2, p2 in pmf2.Items(): if v1 < v2: total += p1 * p2 return total def PmfProbGreater(pmf1, pmf2): """Probability that a value from pmf1 is less than a value from pmf2. Args: pmf1: Pmf object pmf2: Pmf object Returns: float probability """ total = 0.0 for v1, p1 in pmf1.Items(): for v2, p2 in pmf2.Items(): if v1 > v2: total += p1 * p2 return total def PmfProbEqual(pmf1, pmf2): """Probability that a value from pmf1 equals a value from pmf2. Args: pmf1: Pmf object pmf2: Pmf object Returns: float probability """ total = 0.0 for v1, p1 in pmf1.Items(): for v2, p2 in pmf2.Items(): if v1 == v2: total += p1 * p2 return total def RandomSum(dists): """Chooses a random value from each dist and returns the sum. dists: sequence of Pmf or Cdf objects returns: numerical sum """ total = sum(dist.Random() for dist in dists) return total def SampleSum(dists, n): """Draws a sample of sums from a list of distributions. dists: sequence of Pmf or Cdf objects n: sample size returns: new Pmf of sums """ pmf = Pmf(RandomSum(dists) for i in range(n)) return pmf def EvalNormalPdf(x, mu, sigma): """Computes the unnormalized PDF of the normal distribution. x: value mu: mean sigma: standard deviation returns: float probability density """ return stats.norm.pdf(x, mu, sigma) def MakeNormalPmf(mu, sigma, num_sigmas, n=201): """Makes a PMF discrete approx to a Normal distribution. mu: float mean sigma: float standard deviation num_sigmas: how many sigmas to extend in each direction n: number of values in the Pmf returns: normalized Pmf """ pmf = Pmf() low = mu - num_sigmas * sigma high = mu + num_sigmas * sigma for x in np.linspace(low, high, n): p = EvalNormalPdf(x, mu, sigma) pmf.Set(x, p) pmf.Normalize() return pmf def EvalBinomialPmf(k, n, p): """Evaluates the binomial PMF. Returns the probabily of k successes in n trials with probability p. """ return stats.binom.pmf(k, n, p) def EvalHypergeomPmf(k, N, K, n): """Evaluates the hypergeometric PMF. Returns the probabily of k successes in n trials from a population N with K successes in it. """ return stats.hypergeom.pmf(k, N, K, n) def EvalPoissonPmf(k, lam): """Computes the Poisson PMF. k: number of events lam: parameter lambda in events per unit time returns: float probability """ # don't use the scipy function (yet). for lam=0 it returns NaN; # should be 0.0 # return stats.poisson.pmf(k, lam) return lam ** k * math.exp(-lam) / special.gamma(k+1) def MakePoissonPmf(lam, high, step=1): """Makes a PMF discrete approx to a Poisson distribution. lam: parameter lambda in events per unit time high: upper bound of the Pmf returns: normalized Pmf """ pmf = Pmf() for k in range(0, high + 1, step): p = EvalPoissonPmf(k, lam) pmf.Set(k, p) pmf.Normalize() return pmf def EvalExponentialPdf(x, lam): """Computes the exponential PDF. x: value lam: parameter lambda in events per unit time returns: float probability density """ return lam * math.exp(-lam * x) def EvalExponentialCdf(x, lam): """Evaluates CDF of the exponential distribution with parameter lam.""" return 1 - math.exp(-lam * x) def MakeExponentialPmf(lam, high, n=200): """Makes a PMF discrete approx to an exponential distribution. lam: parameter lambda in events per unit time high: upper bound n: number of values in the Pmf returns: normalized Pmf """ pmf = Pmf() for x in np.linspace(0, high, n): p = EvalExponentialPdf(x, lam) pmf.Set(x, p) pmf.Normalize() return pmf def StandardNormalCdf(x): """Evaluates the CDF of the standard Normal distribution. See http://en.wikipedia.org/wiki/Normal_distribution #Cumulative_distribution_function Args: x: float Returns: float """ return (math.erf(x / ROOT2) + 1) / 2 def EvalNormalCdf(x, mu=0, sigma=1): """Evaluates the CDF of the normal distribution. Args: x: float mu: mean parameter sigma: standard deviation parameter Returns: float """ return stats.norm.cdf(x, loc=mu, scale=sigma) def EvalNormalCdfInverse(p, mu=0, sigma=1): """Evaluates the inverse CDF of the normal distribution. See http://en.wikipedia.org/wiki/Normal_distribution#Quantile_function Args: p: float mu: mean parameter sigma: standard deviation parameter Returns: float """ return stats.norm.ppf(p, loc=mu, scale=sigma) def EvalLognormalCdf(x, mu=0, sigma=1): """Evaluates the CDF of the lognormal distribution. x: float or sequence mu: mean parameter sigma: standard deviation parameter Returns: float or sequence """ return stats.lognorm.cdf(x, loc=mu, scale=sigma) def RenderExpoCdf(lam, low, high, n=101): """Generates sequences of xs and ps for an exponential CDF. lam: parameter low: float high: float n: number of points to render returns: numpy arrays (xs, ps) """ xs = np.linspace(low, high, n) ps = 1 - np.exp(-lam * xs) #ps = stats.expon.cdf(xs, scale=1.0/lam) return xs, ps def RenderNormalCdf(mu, sigma, low, high, n=101): """Generates sequences of xs and ps for a Normal CDF. mu: parameter sigma: parameter low: float high: float n: number of points to render returns: numpy arrays (xs, ps) """ xs = np.linspace(low, high, n) ps = stats.norm.cdf(xs, mu, sigma) return xs, ps def RenderParetoCdf(xmin, alpha, low, high, n=50): """Generates sequences of xs and ps for a Pareto CDF. xmin: parameter alpha: parameter low: float high: float n: number of points to render returns: numpy arrays (xs, ps) """ if low < xmin: low = xmin xs = np.linspace(low, high, n) ps = 1 - (xs / xmin) ** -alpha #ps = stats.pareto.cdf(xs, scale=xmin, b=alpha) return xs, ps class Beta(object): """Represents a Beta distribution. See http://en.wikipedia.org/wiki/Beta_distribution """ def __init__(self, alpha=1, beta=1, label=None): """Initializes a Beta distribution.""" self.alpha = alpha self.beta = beta self.label = label if label is not None else '_nolegend_' def Update(self, data): """Updates a Beta distribution. data: pair of int (heads, tails) """ heads, tails = data self.alpha += heads self.beta += tails def Mean(self): """Computes the mean of this distribution.""" return self.alpha / (self.alpha + self.beta) def Random(self): """Generates a random variate from this distribution.""" return random.betavariate(self.alpha, self.beta) def Sample(self, n): """Generates a random sample from this distribution. n: int sample size """ size = n, return np.random.beta(self.alpha, self.beta, size) def EvalPdf(self, x): """Evaluates the PDF at x.""" return x ** (self.alpha - 1) * (1 - x) ** (self.beta - 1) def MakePmf(self, steps=101, label=None): """Returns a Pmf of this distribution. Note: Normally, we just evaluate the PDF at a sequence of points and treat the probability density as a probability mass. But if alpha or beta is less than one, we have to be more careful because the PDF goes to infinity at x=0 and x=1. In that case we evaluate the CDF and compute differences. """ if self.alpha < 1 or self.beta < 1: cdf = self.MakeCdf() pmf = cdf.MakePmf() return pmf xs = [i / (steps - 1.0) for i in range(steps)] probs = [self.EvalPdf(x) for x in xs] pmf = Pmf(dict(zip(xs, probs)), label=label) return pmf def MakeCdf(self, steps=101): """Returns the CDF of this distribution.""" xs = [i / (steps - 1.0) for i in range(steps)] ps = [special.betainc(self.alpha, self.beta, x) for x in xs] cdf = Cdf(xs, ps) return cdf class Dirichlet(object): """Represents a Dirichlet distribution. See http://en.wikipedia.org/wiki/Dirichlet_distribution """ def __init__(self, n, conc=1, label=None): """Initializes a Dirichlet distribution. n: number of dimensions conc: concentration parameter (smaller yields more concentration) label: string label """ if n < 2: raise ValueError('A Dirichlet distribution with ' 'n<2 makes no sense') self.n = n self.params = np.ones(n, dtype=np.float) * conc self.label = label if label is not None else '_nolegend_' def Update(self, data): """Updates a Dirichlet distribution. data: sequence of observations, in order corresponding to params """ m = len(data) self.params[:m] += data def Random(self): """Generates a random variate from this distribution. Returns: normalized vector of fractions """ p = np.random.gamma(self.params) return p / p.sum() def Likelihood(self, data): """Computes the likelihood of the data. Selects a random vector of probabilities from this distribution. Returns: float probability """ m = len(data) if self.n < m: return 0 x = data p = self.Random() q = p[:m] ** x return q.prod() def LogLikelihood(self, data): """Computes the log likelihood of the data. Selects a random vector of probabilities from this distribution. Returns: float log probability """ m = len(data) if self.n < m: return float('-inf') x = self.Random() y = np.log(x[:m]) * data return y.sum() def MarginalBeta(self, i): """Computes the marginal distribution of the ith element. See http://en.wikipedia.org/wiki/Dirichlet_distribution #Marginal_distributions i: int Returns: Beta object """ alpha0 = self.params.sum() alpha = self.params[i] return Beta(alpha, alpha0 - alpha) def PredictivePmf(self, xs, label=None): """Makes a predictive distribution. xs: values to go into the Pmf Returns: Pmf that maps from x to the mean prevalence of x """ alpha0 = self.params.sum() ps = self.params / alpha0 return Pmf(zip(xs, ps), label=label) def BinomialCoef(n, k): """Compute the binomial coefficient "n choose k". n: number of trials k: number of successes Returns: float """ return scipy.misc.comb(n, k) def LogBinomialCoef(n, k): """Computes the log of the binomial coefficient. http://math.stackexchange.com/questions/64716/ approximating-the-logarithm-of-the-binomial-coefficient n: number of trials k: number of successes Returns: float """ return n * math.log(n) - k * math.log(k) - (n - k) * math.log(n - k) def NormalProbability(ys, jitter=0.0): """Generates data for a normal probability plot. ys: sequence of values jitter: float magnitude of jitter added to the ys returns: numpy arrays xs, ys """ n = len(ys) xs = np.random.normal(0, 1, n) xs.sort() if jitter: ys = Jitter(ys, jitter) else: ys = np.array(ys) ys.sort() return xs, ys def Jitter(values, jitter=0.5): """Jitters the values by adding a uniform variate in (-jitter, jitter). values: sequence jitter: scalar magnitude of jitter returns: new numpy array """ n = len(values) return np.random.uniform(-jitter, +jitter, n) + values def NormalProbabilityPlot(sample, fit_color='0.8', **options): """Makes a normal probability plot with a fitted line. sample: sequence of numbers fit_color: color string for the fitted line options: passed along to Plot """ xs, ys = NormalProbability(sample) mean, var = MeanVar(sample) std = math.sqrt(var) fit = FitLine(xs, mean, std) thinkplot.Plot(*fit, color=fit_color, label='model') xs, ys = NormalProbability(sample) thinkplot.Plot(xs, ys, **options) def Mean(xs): """Computes mean. xs: sequence of values returns: float mean """ return np.mean(xs) def Var(xs, mu=None, ddof=0): """Computes variance. xs: sequence of values mu: option known mean ddof: delta degrees of freedom returns: float """ xs = np.asarray(xs) if mu is None: mu = xs.mean() ds = xs - mu return np.dot(ds, ds) / (len(xs) - ddof) def Std(xs, mu=None, ddof=0): """Computes standard deviation. xs: sequence of values mu: option known mean ddof: delta degrees of freedom returns: float """ var = Var(xs, mu, ddof) return math.sqrt(var) def MeanVar(xs, ddof=0): """Computes mean and variance. Based on http://stackoverflow.com/questions/19391149/ numpy-mean-and-variance-from-single-function xs: sequence of values ddof: delta degrees of freedom returns: pair of float, mean and var """ xs = np.asarray(xs) mean = xs.mean() s2 = Var(xs, mean, ddof) return mean, s2 def Trim(t, p=0.01): """Trims the largest and smallest elements of t. Args: t: sequence of numbers p: fraction of values to trim off each end Returns: sequence of values """ n = int(p * len(t)) t = sorted(t)[n:-n] return t def TrimmedMean(t, p=0.01): """Computes the trimmed mean of a sequence of numbers. Args: t: sequence of numbers p: fraction of values to trim off each end Returns: float """ t = Trim(t, p) return Mean(t) def TrimmedMeanVar(t, p=0.01): """Computes the trimmed mean and variance of a sequence of numbers. Side effect: sorts the list. Args: t: sequence of numbers p: fraction of values to trim off each end Returns: float """ t = Trim(t, p) mu, var = MeanVar(t) return mu, var def CohenEffectSize(group1, group2): """Compute Cohen's d. group1: Series or NumPy array group2: Series or NumPy array returns: float """ diff = group1.mean() - group2.mean() n1, n2 = len(group1), len(group2) var1 = group1.var() var2 = group2.var() pooled_var = (n1 * var1 + n2 * var2) / (n1 + n2) d = diff / math.sqrt(pooled_var) return d def Cov(xs, ys, meanx=None, meany=None): """Computes Cov(X, Y). Args: xs: sequence of values ys: sequence of values meanx: optional float mean of xs meany: optional float mean of ys Returns: Cov(X, Y) """ xs = np.asarray(xs) ys = np.asarray(ys) if meanx is None: meanx = np.mean(xs) if meany is None: meany = np.mean(ys) cov = np.dot(xs-meanx, ys-meany) / len(xs) return cov def Corr(xs, ys): """Computes Corr(X, Y). Args: xs: sequence of values ys: sequence of values Returns: Corr(X, Y) """ xs = np.asarray(xs) ys = np.asarray(ys) meanx, varx = MeanVar(xs) meany, vary = MeanVar(ys) corr = Cov(xs, ys, meanx, meany) / math.sqrt(varx * vary) return corr def SerialCorr(series, lag=1): """Computes the serial correlation of a series. series: Series lag: integer number of intervals to shift returns: float correlation """ xs = series[lag:] ys = series.shift(lag)[lag:] corr = Corr(xs, ys) return corr def SpearmanCorr(xs, ys): """Computes Spearman's rank correlation. Args: xs: sequence of values ys: sequence of values Returns: float Spearman's correlation """ xranks = pandas.Series(xs).rank() yranks = pandas.Series(ys).rank() return Corr(xranks, yranks) def MapToRanks(t): """Returns a list of ranks corresponding to the elements in t. Args: t: sequence of numbers Returns: list of integer ranks, starting at 1 """ # pair up each value with its index pairs = enumerate(t) # sort by value sorted_pairs = sorted(pairs, key=itemgetter(1)) # pair up each pair with its rank ranked = enumerate(sorted_pairs) # sort by index resorted = sorted(ranked, key=lambda trip: trip[1][0]) # extract the ranks ranks = [trip[0]+1 for trip in resorted] return ranks def LeastSquares(xs, ys): """Computes a linear least squares fit for ys as a function of xs. Args: xs: sequence of values ys: sequence of values Returns: tuple of (intercept, slope) """ meanx, varx = MeanVar(xs) meany = Mean(ys) slope = Cov(xs, ys, meanx, meany) / varx inter = meany - slope * meanx return inter, slope def FitLine(xs, inter, slope): """Fits a line to the given data. xs: sequence of x returns: tuple of numpy arrays (sorted xs, fit ys) """ fit_xs = np.sort(xs) fit_ys = inter + slope * fit_xs return fit_xs, fit_ys def Residuals(xs, ys, inter, slope): """Computes residuals for a linear fit with parameters inter and slope. Args: xs: independent variable ys: dependent variable inter: float intercept slope: float slope Returns: list of residuals """ xs = np.asarray(xs) ys = np.asarray(ys) res = ys - (inter + slope * xs) return res def CoefDetermination(ys, res): """Computes the coefficient of determination (R^2) for given residuals. Args: ys: dependent variable res: residuals Returns: float coefficient of determination """ return 1 - Var(res) / Var(ys) def CorrelatedGenerator(rho): """Generates standard normal variates with serial correlation. rho: target coefficient of correlation Returns: iterable """ x = random.gauss(0, 1) yield x sigma = math.sqrt(1 - rho**2) while True: x = random.gauss(x * rho, sigma) yield x def CorrelatedNormalGenerator(mu, sigma, rho): """Generates normal variates with serial correlation. mu: mean of variate sigma: standard deviation of variate rho: target coefficient of correlation Returns: iterable """ for x in CorrelatedGenerator(rho): yield x * sigma + mu def RawMoment(xs, k): """Computes the kth raw moment of xs. """ return sum(x**k for x in xs) / len(xs) def CentralMoment(xs, k): """Computes the kth central moment of xs. """ mean = RawMoment(xs, 1) return sum((x - mean)**k for x in xs) / len(xs) def StandardizedMoment(xs, k): """Computes the kth standardized moment of xs. """ var = CentralMoment(xs, 2) std = math.sqrt(var) return CentralMoment(xs, k) / std**k def Skewness(xs): """Computes skewness. """ return StandardizedMoment(xs, 3) def Median(xs): """Computes the median (50th percentile) of a sequence. xs: sequence or anything else that can initialize a Cdf returns: float """ cdf = Cdf(xs) return cdf.Value(0.5) def IQR(xs): """Computes the interquartile of a sequence. xs: sequence or anything else that can initialize a Cdf returns: pair of floats """ cdf = Cdf(xs) return cdf.Value(0.25), cdf.Value(0.75) def PearsonMedianSkewness(xs): """Computes the Pearson median skewness. """ median = Median(xs) mean = RawMoment(xs, 1) var = CentralMoment(xs, 2) std = math.sqrt(var) gp = 3 * (mean - median) / std return gp class FixedWidthVariables(object): """Represents a set of variables in a fixed width file.""" def __init__(self, variables, index_base=0): """Initializes. variables: DataFrame index_base: are the indices 0 or 1 based? Attributes: colspecs: list of (start, end) index tuples names: list of string variable names """ self.variables = variables # note: by default, subtract 1 from colspecs self.colspecs = variables[['start', 'end']] - index_base # convert colspecs to a list of pair of int self.colspecs = self.colspecs.astype(np.int).values.tolist() self.names = variables['name'] def ReadFixedWidth(self, filename, **options): """Reads a fixed width ASCII file. filename: string filename returns: DataFrame """ df = pandas.read_fwf(filename, colspecs=self.colspecs, names=self.names, **options) return df def ReadStataDct(dct_file, **options): """Reads a Stata dictionary file. dct_file: string filename options: dict of options passed to open() returns: FixedWidthVariables object """ type_map = dict(byte=int, int=int, long=int, float=float, double=float) var_info = [] for line in open(dct_file, **options): match = re.search( r'_column\(([^)]*)\)', line) if match: start = int(match.group(1)) t = line.split() vtype, name, fstring = t[1:4] name = name.lower() if vtype.startswith('str'): vtype = str else: vtype = type_map[vtype] long_desc = ' '.join(t[4:]).strip('"') var_info.append((start, vtype, name, fstring, long_desc)) columns = ['start', 'type', 'name', 'fstring', 'desc'] variables = pandas.DataFrame(var_info, columns=columns) # fill in the end column by shifting the start column variables['end'] = variables.start.shift(-1) variables.loc[len(variables)-1, 'end'] = 0 dct = FixedWidthVariables(variables, index_base=1) return dct def Resample(xs, n=None): """Draw a sample from xs with the same length as xs. xs: sequence n: sample size (default: len(xs)) returns: NumPy array """ if n is None: n = len(xs) return np.random.choice(xs, n, replace=True) def SampleRows(df, nrows, replace=False): """Choose a sample of rows from a DataFrame. df: DataFrame nrows: number of rows replace: whether to sample with replacement returns: DataDf """ indices = np.random.choice(df.index, nrows, replace=replace) sample = df.loc[indices] return sample def ResampleRows(df): """Resamples rows from a DataFrame. df: DataFrame returns: DataFrame """ return SampleRows(df, len(df), replace=True) def ResampleRowsWeighted(df, column='finalwgt'): """Resamples a DataFrame using probabilities proportional to given column. df: DataFrame column: string column name to use as weights returns: DataFrame """ weights = df[column] cdf = Cdf(dict(weights)) indices = cdf.Sample(len(weights)) sample = df.loc[indices] return sample def PercentileRow(array, p): """Selects the row from a sorted array that maps to percentile p. p: float 0--100 returns: NumPy array (one row) """ rows, cols = array.shape index = int(rows * p / 100) return array[index,] def PercentileRows(ys_seq, percents): """Given a collection of lines, selects percentiles along vertical axis. For example, if ys_seq contains simulation results like ys as a function of time, and percents contains (5, 95), the result would be a 90% CI for each vertical slice of the simulation results. ys_seq: sequence of lines (y values) percents: list of percentiles (0-100) to select returns: list of NumPy arrays, one for each percentile """ nrows = len(ys_seq) ncols = len(ys_seq[0]) array = np.zeros((nrows, ncols)) for i, ys in enumerate(ys_seq): array[i,] = ys array = np.sort(array, axis=0) rows = [PercentileRow(array, p) for p in percents] return rows def Smooth(xs, sigma=2, **options): """Smooths a NumPy array with a Gaussian filter. xs: sequence sigma: standard deviation of the filter """ return ndimage.filters.gaussian_filter1d(xs, sigma, **options) class HypothesisTest(object): """Represents a hypothesis test.""" def __init__(self, data): """Initializes. data: data in whatever form is relevant """ self.data = data self.MakeModel() self.actual = self.TestStatistic(data) self.test_stats = None self.test_cdf = None def PValue(self, iters=1000): """Computes the distribution of the test statistic and p-value. iters: number of iterations returns: float p-value """ self.test_stats = [self.TestStatistic(self.RunModel()) for _ in range(iters)] self.test_cdf = Cdf(self.test_stats) count = sum(1 for x in self.test_stats if x >= self.actual) return count / iters def MaxTestStat(self): """Returns the largest test statistic seen during simulations. """ return max(self.test_stats) def PlotCdf(self, label=None): """Draws a Cdf with vertical lines at the observed test stat. """ def VertLine(x): """Draws a vertical line at x.""" thinkplot.Plot([x, x], [0, 1], color='0.8') VertLine(self.actual) thinkplot.Cdf(self.test_cdf, label=label) def TestStatistic(self, data): """Computes the test statistic. data: data in whatever form is relevant """ raise UnimplementedMethodException() def MakeModel(self): """Build a model of the null hypothesis. """ pass def RunModel(self): """Run the model of the null hypothesis. returns: simulated data """ raise UnimplementedMethodException() def main(): pass if __name__ == '__main__': main() ================================================ FILE: thinkbayes2.py ================================================ """This file contains code for use with "Think Stats" and "Think Bayes", both by Allen B. Downey, available from greenteapress.com Copyright 2014 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division """This file contains class definitions for: Hist: represents a histogram (map from values to integer frequencies). Pmf: represents a probability mass function (map from values to probs). _DictWrapper: private parent class for Hist and Pmf. Cdf: represents a discrete cumulative distribution function Pdf: represents a continuous probability density function """ import bisect import copy import logging import math import random import re from collections import Counter from operator import itemgetter import thinkplot import numpy as np import pandas import scipy from scipy import stats from scipy import special from scipy import ndimage from scipy.special import gamma from io import open ROOT2 = math.sqrt(2) def RandomSeed(x): """Initialize the random and np.random generators. x: int seed """ random.seed(x) np.random.seed(x) def Odds(p): """Computes odds for a given probability. Example: p=0.75 means 75 for and 25 against, or 3:1 odds in favor. Note: when p=1, the formula for odds divides by zero, which is normally undefined. But I think it is reasonable to define Odds(1) to be infinity, so that's what this function does. p: float 0-1 Returns: float odds """ if p == 1: return float('inf') return p / (1 - p) def Probability(o): """Computes the probability corresponding to given odds. Example: o=2 means 2:1 odds in favor, or 2/3 probability o: float odds, strictly positive Returns: float probability """ return o / (o + 1) def Probability2(yes, no): """Computes the probability corresponding to given odds. Example: yes=2, no=1 means 2:1 odds in favor, or 2/3 probability. yes, no: int or float odds in favor """ return yes / (yes + no) class Interpolator(object): """Represents a mapping between sorted sequences; performs linear interp. Attributes: xs: sorted list ys: sorted list """ def __init__(self, xs, ys): self.xs = xs self.ys = ys def Lookup(self, x): """Looks up x and returns the corresponding value of y.""" return self._Bisect(x, self.xs, self.ys) def Reverse(self, y): """Looks up y and returns the corresponding value of x.""" return self._Bisect(y, self.ys, self.xs) def _Bisect(self, x, xs, ys): """Helper function.""" if x <= xs[0]: return ys[0] if x >= xs[-1]: return ys[-1] i = bisect.bisect(xs, x) frac = 1.0 * (x - xs[i - 1]) / (xs[i] - xs[i - 1]) y = ys[i - 1] + frac * 1.0 * (ys[i] - ys[i - 1]) return y # When we plot Hist, Pmf and Cdf objects, they don't appear in # the legend unless we override the default label. DEFAULT_LABEL = '_nolegend_' class _DictWrapper(object): """An object that contains a dictionary.""" def __init__(self, obj=None, label=None): """Initializes the distribution. obj: Hist, Pmf, Cdf, Pdf, dict, pandas Series, list of pairs label: string label """ self.label = label if label is not None else DEFAULT_LABEL self.d = {} # flag whether the distribution is under a log transform self.log = False if obj is None: return if isinstance(obj, (_DictWrapper, Cdf, Pdf)): self.label = label if label is not None else obj.label if isinstance(obj, dict): self.d.update(obj.items()) elif isinstance(obj, (_DictWrapper, Cdf, Pdf)): self.d.update(obj.Items()) elif isinstance(obj, pandas.Series): self.d.update(obj.value_counts().iteritems()) else: # finally, treat it like a list self.d.update(Counter(obj)) if len(self) > 0 and isinstance(self, Pmf): self.Normalize() def __hash__(self): return id(self) def __str__(self): cls = self.__class__.__name__ if self.label == DEFAULT_LABEL: return '%s(%s)' % (cls, str(self.d)) else: return self.label def __repr__(self): cls = self.__class__.__name__ if self.label == DEFAULT_LABEL: return '%s(%s)' % (cls, repr(self.d)) else: return '%s(%s, %s)' % (cls, repr(self.d), repr(self.label)) def __eq__(self, other): try: return self.d == other.d except AttributeError: return False def __len__(self): return len(self.d) def __iter__(self): return iter(self.d) def iterkeys(self): """Returns an iterator over keys.""" return iter(self.d) def __contains__(self, value): return value in self.d def __getitem__(self, value): return self.d.get(value, 0) def __setitem__(self, value, prob): self.d[value] = prob def __delitem__(self, value): del self.d[value] def Copy(self, label=None): """Returns a copy. Make a shallow copy of d. If you want a deep copy of d, use copy.deepcopy on the whole object. label: string label for the new Hist returns: new _DictWrapper with the same type """ new = copy.copy(self) new.d = copy.copy(self.d) new.label = label if label is not None else self.label return new def Scale(self, factor): """Multiplies the values by a factor. factor: what to multiply by Returns: new object """ new = self.Copy() new.d.clear() for val, prob in self.Items(): new.Set(val * factor, prob) return new def Log(self, m=None): """Log transforms the probabilities. Removes values with probability 0. Normalizes so that the largest logprob is 0. """ if self.log: raise ValueError("Pmf/Hist already under a log transform") self.log = True if m is None: m = self.MaxLike() for x, p in self.d.items(): if p: self.Set(x, math.log(p / m)) else: self.Remove(x) def Exp(self, m=None): """Exponentiates the probabilities. m: how much to shift the ps before exponentiating If m is None, normalizes so that the largest prob is 1. """ if not self.log: raise ValueError("Pmf/Hist not under a log transform") self.log = False if m is None: m = self.MaxLike() for x, p in self.d.items(): self.Set(x, math.exp(p - m)) def GetDict(self): """Gets the dictionary.""" return self.d def SetDict(self, d): """Sets the dictionary.""" self.d = d def Values(self): """Gets an unsorted sequence of values. Note: one source of confusion is that the keys of this dictionary are the values of the Hist/Pmf, and the values of the dictionary are frequencies/probabilities. """ return self.d.keys() def Items(self): """Gets an unsorted sequence of (value, freq/prob) pairs.""" return self.d.items() def SortedItems(self): """Gets a sorted sequence of (value, freq/prob) pairs. It items are unsortable, the result is unsorted. """ def isnan(x): try: return math.isnan(x) except TypeError: return False if any([isnan(x) for x in self.Values()]): msg = 'Keys contain NaN, may not sort correctly.' logging.warning(msg) try: return sorted(self.d.items()) except TypeError: return self.d.items() def Render(self, **options): """Generates a sequence of points suitable for plotting. Note: options are ignored Returns: tuple of (sorted value sequence, freq/prob sequence) """ return zip(*self.SortedItems()) def MakeCdf(self, label=None): """Makes a Cdf.""" label = label if label is not None else self.label return Cdf(self, label=label) def Print(self): """Prints the values and freqs/probs in ascending order.""" for val, prob in self.SortedItems(): print(val, prob) def Set(self, x, y=0): """Sets the freq/prob associated with the value x. Args: x: number value y: number freq or prob """ self.d[x] = y def Incr(self, x, term=1): """Increments the freq/prob associated with the value x. Args: x: number value term: how much to increment by """ self.d[x] = self.d.get(x, 0) + term def Mult(self, x, factor): """Scales the freq/prob associated with the value x. Args: x: number value factor: how much to multiply by """ self.d[x] = self.d.get(x, 0) * factor def Remove(self, x): """Removes a value. Throws an exception if the value is not there. Args: x: value to remove """ del self.d[x] def Total(self): """Returns the total of the frequencies/probabilities in the map.""" total = sum(self.d.values()) return total def MaxLike(self): """Returns the largest frequency/probability in the map.""" return max(self.d.values()) def Largest(self, n=10): """Returns the largest n values, with frequency/probability. n: number of items to return """ return sorted(self.d.items(), reverse=True)[:n] def Smallest(self, n=10): """Returns the smallest n values, with frequency/probability. n: number of items to return """ return sorted(self.d.items(), reverse=False)[:n] class Hist(_DictWrapper): """Represents a histogram, which is a map from values to frequencies. Values can be any hashable type; frequencies are integer counters. """ def Freq(self, x): """Gets the frequency associated with the value x. Args: x: number value Returns: int frequency """ return self.d.get(x, 0) def Freqs(self, xs): """Gets frequencies for a sequence of values.""" return [self.Freq(x) for x in xs] def IsSubset(self, other): """Checks whether the values in this histogram are a subset of the values in the given histogram.""" for val, freq in self.Items(): if freq > other.Freq(val): return False return True def Subtract(self, other): """Subtracts the values in the given histogram from this histogram.""" for val, freq in other.Items(): self.Incr(val, -freq) class Pmf(_DictWrapper): """Represents a probability mass function. Values can be any hashable type; probabilities are floating-point. Pmfs are not necessarily normalized. """ def Prob(self, x, default=0): """Gets the probability associated with the value x. Args: x: number value default: value to return if the key is not there Returns: float probability """ return self.d.get(x, default) def Probs(self, xs): """Gets probabilities for a sequence of values.""" return [self.Prob(x) for x in xs] def Percentile(self, percentage): """Computes a percentile of a given Pmf. Note: this is not super efficient. If you are planning to compute more than a few percentiles, compute the Cdf. percentage: float 0-100 returns: value from the Pmf """ p = percentage / 100 total = 0 for val, prob in sorted(self.Items()): total += prob if total >= p: return val def ProbGreater(self, x): """Probability that a sample from this Pmf exceeds x. x: number returns: float probability """ if isinstance(x, _DictWrapper): return PmfProbGreater(self, x) else: t = [prob for (val, prob) in self.d.items() if val > x] return sum(t) def ProbLess(self, x): """Probability that a sample from this Pmf is less than x. x: number returns: float probability """ if isinstance(x, _DictWrapper): return PmfProbLess(self, x) else: t = [prob for (val, prob) in self.d.items() if val < x] return sum(t) def ProbEqual(self, x): """Probability that a sample from this Pmf is exactly x. x: number returns: float probability """ if isinstance(x, _DictWrapper): return PmfProbEqual(self, x) else: return self[x] # NOTE: I've decided to remove the magic comparators because they # have the side-effect of making Pmf sortable, but in fact they # don't support sorting. def Normalize(self, fraction=1): """Normalizes this PMF so the sum of all probs is fraction. Args: fraction: what the total should be after normalization Returns: the total probability before normalizing """ if self.log: raise ValueError("Normalize: Pmf is under a log transform") total = self.Total() if total == 0: raise ValueError('Normalize: total probability is zero.') factor = fraction / total for x in self.d: self.d[x] *= factor return total def Random(self): """Chooses a random element from this PMF. Note: this is not very efficient. If you plan to call this more than a few times, consider converting to a CDF. Returns: float value from the Pmf """ target = random.random() total = 0 for x, p in self.d.items(): total += p if total >= target: return x # we shouldn't get here raise ValueError('Random: Pmf might not be normalized.') def Sample(self, n): """Generates a random sample from this distribution. n: int length of the sample returns: NumPy array """ return self.MakeCdf().Sample(n) def Mean(self): """Computes the mean of a PMF. Returns: float mean """ return sum(p * x for x, p in self.Items()) def Median(self): """Computes the median of a PMF. Returns: float median """ return self.MakeCdf().Percentile(50) def Var(self, mu=None): """Computes the variance of a PMF. mu: the point around which the variance is computed; if omitted, computes the mean returns: float variance """ if mu is None: mu = self.Mean() return sum(p * (x-mu)**2 for x, p in self.Items()) def Expect(self, func): """Computes the expectation of func(x). Returns: expectation """ return np.sum(p * func(x) for x, p in self.Items()) def Std(self, mu=None): """Computes the standard deviation of a PMF. mu: the point around which the variance is computed; if omitted, computes the mean returns: float standard deviation """ var = self.Var(mu) return math.sqrt(var) def Mode(self): """Returns the value with the highest probability. Returns: float probability """ _, val = max((prob, val) for val, prob in self.Items()) return val # The mode of a posterior is the maximum aposteori probability (MAP) MAP = Mode # If the distribution contains likelihoods only, the peak is the # maximum likelihood estimator. MaximumLikelihood = Mode def CredibleInterval(self, percentage=90): """Computes the central credible interval. If percentage=90, computes the 90% CI. Args: percentage: float between 0 and 100 Returns: sequence of two floats, low and high """ cdf = self.MakeCdf() return cdf.CredibleInterval(percentage) def __add__(self, other): """Computes the Pmf of the sum of values drawn from self and other. other: another Pmf or a scalar returns: new Pmf """ try: return self.AddPmf(other) except AttributeError: return self.AddConstant(other) __radd__ = __add__ def AddPmf(self, other): """Computes the Pmf of the sum of values drawn from self and other. other: another Pmf returns: new Pmf """ pmf = Pmf() for v1, p1 in self.Items(): for v2, p2 in other.Items(): pmf[v1 + v2] += p1 * p2 return pmf def AddConstant(self, other): """Computes the Pmf of the sum a constant and values from self. other: a number returns: new Pmf """ if other == 0: return self.Copy() pmf = Pmf() for v1, p1 in self.Items(): pmf.Set(v1 + other, p1) return pmf def __sub__(self, other): """Computes the Pmf of the diff of values drawn from self and other. other: another Pmf returns: new Pmf """ try: return self.SubPmf(other) except AttributeError: return self.AddConstant(-other) def SubPmf(self, other): """Computes the Pmf of the diff of values drawn from self and other. other: another Pmf returns: new Pmf """ pmf = Pmf() for v1, p1 in self.Items(): for v2, p2 in other.Items(): pmf.Incr(v1 - v2, p1 * p2) return pmf def __mul__(self, other): """Computes the Pmf of the product of values drawn from self and other. other: another Pmf returns: new Pmf """ try: return self.MulPmf(other) except AttributeError: return self.MulConstant(other) def MulPmf(self, other): """Computes the Pmf of the diff of values drawn from self and other. other: another Pmf returns: new Pmf """ pmf = Pmf() for v1, p1 in self.Items(): for v2, p2 in other.Items(): pmf.Incr(v1 * v2, p1 * p2) return pmf def MulConstant(self, other): """Computes the Pmf of the product of a constant and values from self. other: a number returns: new Pmf """ pmf = Pmf() for v1, p1 in self.Items(): pmf.Set(v1 * other, p1) return pmf def __div__(self, other): """Computes the Pmf of the ratio of values drawn from self and other. other: another Pmf returns: new Pmf """ try: return self.DivPmf(other) except AttributeError: return self.MulConstant(1/other) __truediv__ = __div__ def DivPmf(self, other): """Computes the Pmf of the ratio of values drawn from self and other. other: another Pmf returns: new Pmf """ pmf = Pmf() for v1, p1 in self.Items(): for v2, p2 in other.Items(): pmf.Incr(v1 / v2, p1 * p2) return pmf def Max(self, k): """Computes the CDF of the maximum of k selections from this dist. k: int returns: new Cdf """ cdf = self.MakeCdf() cdf.ps **= k return cdf class Joint(Pmf): """Represents a joint distribution. The values are sequences (usually tuples) """ def Marginal(self, i, label=None): """Gets the marginal distribution of the indicated variable. i: index of the variable we want Returns: Pmf """ pmf = Pmf(label=label) for vs, prob in self.Items(): pmf.Incr(vs[i], prob) return pmf def Conditional(self, i, j, val, label=None): """Gets the conditional distribution of the indicated variable. Distribution of vs[i], conditioned on vs[j] = val. i: index of the variable we want j: which variable is conditioned on val: the value the jth variable has to have Returns: Pmf """ pmf = Pmf(label=label) for vs, prob in self.Items(): if vs[j] != val: continue pmf.Incr(vs[i], prob) pmf.Normalize() return pmf def MaxLikeInterval(self, percentage=90): """Returns the maximum-likelihood credible interval. If percentage=90, computes a 90% CI containing the values with the highest likelihoods. percentage: float between 0 and 100 Returns: list of values from the suite """ interval = [] total = 0 t = [(prob, val) for val, prob in self.Items()] t.sort(reverse=True) for prob, val in t: interval.append(val) total += prob if total >= percentage / 100: break return interval def MakeJoint(pmf1, pmf2): """Joint distribution of values from pmf1 and pmf2. Assumes that the PMFs represent independent random variables. Args: pmf1: Pmf object pmf2: Pmf object Returns: Joint pmf of value pairs """ joint = Joint() for v1, p1 in pmf1.Items(): for v2, p2 in pmf2.Items(): joint.Set((v1, v2), p1 * p2) return joint def MakeHistFromList(t, label=None): """Makes a histogram from an unsorted sequence of values. Args: t: sequence of numbers label: string label for this histogram Returns: Hist object """ return Hist(t, label=label) def MakeHistFromDict(d, label=None): """Makes a histogram from a map from values to frequencies. Args: d: dictionary that maps values to frequencies label: string label for this histogram Returns: Hist object """ return Hist(d, label) def MakePmfFromList(t, label=None): """Makes a PMF from an unsorted sequence of values. Args: t: sequence of numbers label: string label for this PMF Returns: Pmf object """ return Pmf(t, label=label) def MakePmfFromDict(d, label=None): """Makes a PMF from a map from values to probabilities. Args: d: dictionary that maps values to probabilities label: string label for this PMF Returns: Pmf object """ return Pmf(d, label=label) def MakePmfFromItems(t, label=None): """Makes a PMF from a sequence of value-probability pairs Args: t: sequence of value-probability pairs label: string label for this PMF Returns: Pmf object """ return Pmf(dict(t), label=label) def MakePmfFromHist(hist, label=None): """Makes a normalized PMF from a Hist object. Args: hist: Hist object label: string label Returns: Pmf object """ if label is None: label = hist.label return Pmf(hist, label=label) def MakeMixture(metapmf, label='mix'): """Make a mixture distribution. Args: metapmf: Pmf that maps from Pmfs to probs. label: string label for the new Pmf. Returns: Pmf object. """ mix = Pmf(label=label) for pmf, p1 in metapmf.Items(): for x, p2 in pmf.Items(): mix[x] += p1 * p2 return mix def MakeUniformPmf(low, high, n): """Make a uniform Pmf. low: lowest value (inclusive) high: highest value (inclusize) n: number of values """ pmf = Pmf() for x in np.linspace(low, high, n): pmf.Set(x, 1) pmf.Normalize() return pmf class Cdf: """Represents a cumulative distribution function. Attributes: xs: sequence of values ps: sequence of probabilities label: string used as a graph label. """ def __init__(self, obj=None, ps=None, label=None): """Initializes. If ps is provided, obj must be the corresponding list of values. obj: Hist, Pmf, Cdf, Pdf, dict, pandas Series, list of pairs ps: list of cumulative probabilities label: string label """ self.label = label if label is not None else DEFAULT_LABEL if isinstance(obj, (_DictWrapper, Cdf, Pdf)): if not label: self.label = label if label is not None else obj.label if obj is None: # caller does not provide obj, make an empty Cdf self.xs = np.asarray([]) self.ps = np.asarray([]) if ps is not None: logging.warning("Cdf: can't pass ps without also passing xs.") return else: # if the caller provides xs and ps, just store them if ps is not None: if isinstance(ps, str): logging.warning("Cdf: ps can't be a string") self.xs = np.asarray(obj) self.ps = np.asarray(ps) return # caller has provided just obj, not ps if isinstance(obj, Cdf): self.xs = copy.copy(obj.xs) self.ps = copy.copy(obj.ps) return if isinstance(obj, _DictWrapper): dw = obj else: dw = Hist(obj) if len(dw) == 0: self.xs = np.asarray([]) self.ps = np.asarray([]) return xs, freqs = zip(*sorted(dw.Items())) self.xs = np.asarray(xs) self.ps = np.cumsum(freqs, dtype=np.float) self.ps /= self.ps[-1] def __str__(self): cls = self.__class__.__name__ if self.label == DEFAULT_LABEL: return '%s(%s, %s)' % (cls, str(self.xs), str(self.ps)) else: return self.label def __repr__(self): cls = self.__class__.__name__ if self.label == DEFAULT_LABEL: return '%s(%s, %s)' % (cls, str(self.xs), str(self.ps)) else: return '%s(%s, %s, %s)' % (cls, str(self.xs), str(self.ps), repr(self.label)) def __len__(self): return len(self.xs) def __getitem__(self, x): return self.Prob(x) def __setitem__(self): raise UnimplementedMethodException() def __delitem__(self): raise UnimplementedMethodException() def __eq__(self, other): return np.all(self.xs == other.xs) and np.all(self.ps == other.ps) def Print(self): """Prints the values and freqs/probs in ascending order.""" for val, prob in zip(self.xs, self.ps): print(val, prob) def Copy(self, label=None): """Returns a copy of this Cdf. label: string label for the new Cdf """ if label is None: label = self.label return Cdf(list(self.xs), list(self.ps), label=label) def MakePmf(self, label=None): """Makes a Pmf.""" if label is None: label = self.label return Pmf(self, label=label) def Items(self): """Returns a sorted sequence of (value, probability) pairs. Note: in Python3, returns an iterator. """ a = self.ps b = np.roll(a, 1) b[0] = 0 return zip(self.xs, a-b) def Shift(self, term): """Adds a term to the xs. term: how much to add """ new = self.Copy() # don't use +=, or else an int array + float yields int array new.xs = new.xs + term return new def Scale(self, factor): """Multiplies the xs by a factor. factor: what to multiply by """ new = self.Copy() # don't use *=, or else an int array * float yields int array new.xs = new.xs * factor return new def Prob(self, x): """Returns CDF(x), the probability that corresponds to value x. Args: x: number Returns: float probability """ if x < self.xs[0]: return 0 index = bisect.bisect(self.xs, x) p = self.ps[index-1] return p def Probs(self, xs): """Gets probabilities for a sequence of values. xs: any sequence that can be converted to NumPy array returns: NumPy array of cumulative probabilities """ xs = np.asarray(xs) index = np.searchsorted(self.xs, xs, side='right') ps = self.ps[index-1] ps[xs < self.xs[0]] = 0 return ps ProbArray = Probs def Value(self, p): """Returns InverseCDF(p), the value that corresponds to probability p. Args: p: number in the range [0, 1] Returns: number value """ if p < 0 or p > 1: raise ValueError('Probability p must be in range [0, 1]') index = bisect.bisect_left(self.ps, p) return self.xs[index] def Values(self, ps=None): """Returns InverseCDF(p), the value that corresponds to probability p. If ps is not provided, returns all values. Args: ps: NumPy array of numbers in the range [0, 1] Returns: NumPy array of values """ if ps is None: return self.xs ps = np.asarray(ps) if np.any(ps < 0) or np.any(ps > 1): raise ValueError('Probability p must be in range [0, 1]') index = np.searchsorted(self.ps, ps, side='left') return self.xs[index] ValueArray = Values def Percentile(self, p): """Returns the value that corresponds to percentile p. Args: p: number in the range [0, 100] Returns: number value """ return self.Value(p / 100) def Percentiles(self, ps): """Returns the value that corresponds to percentiles ps. Args: ps: numbers in the range [0, 100] Returns: array of values """ ps = np.asarray(ps) return self.Values(ps / 100) def PercentileRank(self, x): """Returns the percentile rank of the value x. x: potential value in the CDF returns: percentile rank in the range 0 to 100 """ return self.Prob(x) * 100 def PercentileRanks(self, xs): """Returns the percentile ranks of the values in xs. xs: potential value in the CDF returns: array of percentile ranks in the range 0 to 100 """ return self.Probs(x) * 100 def Random(self): """Chooses a random value from this distribution.""" return self.Value(random.random()) def Sample(self, n): """Generates a random sample from this distribution. n: int length of the sample returns: NumPy array """ ps = np.random.random(n) return self.ValueArray(ps) def Mean(self): """Computes the mean of a CDF. Returns: float mean """ old_p = 0 total = 0 for x, new_p in zip(self.xs, self.ps): p = new_p - old_p total += p * x old_p = new_p return total def CredibleInterval(self, percentage=90): """Computes the central credible interval. If percentage=90, computes the 90% CI. Args: percentage: float between 0 and 100 Returns: sequence of two floats, low and high """ prob = (1 - percentage / 100) / 2 interval = self.Value(prob), self.Value(1 - prob) return interval ConfidenceInterval = CredibleInterval def _Round(self, multiplier=1000): """ An entry is added to the cdf only if the percentile differs from the previous value in a significant digit, where the number of significant digits is determined by multiplier. The default is 1000, which keeps log10(1000) = 3 significant digits. """ # TODO(write this method) raise UnimplementedMethodException() def Render(self, **options): """Generates a sequence of points suitable for plotting. An empirical CDF is a step function; linear interpolation can be misleading. Note: options are ignored Returns: tuple of (xs, ps) """ def interleave(a, b): c = np.empty(a.shape[0] + b.shape[0]) c[::2] = a c[1::2] = b return c a = np.array(self.xs) xs = interleave(a, a) shift_ps = np.roll(self.ps, 1) shift_ps[0] = 0 ps = interleave(shift_ps, self.ps) return xs, ps def Max(self, k): """Computes the CDF of the maximum of k selections from this dist. k: int returns: new Cdf """ cdf = self.Copy() cdf.ps **= k return cdf def MakeCdfFromItems(items, label=None): """Makes a cdf from an unsorted sequence of (value, frequency) pairs. Args: items: unsorted sequence of (value, frequency) pairs label: string label for this CDF Returns: cdf: list of (value, fraction) pairs """ return Cdf(dict(items), label=label) def MakeCdfFromDict(d, label=None): """Makes a CDF from a dictionary that maps values to frequencies. Args: d: dictionary that maps values to frequencies. label: string label for the data. Returns: Cdf object """ return Cdf(d, label=label) def MakeCdfFromList(seq, label=None): """Creates a CDF from an unsorted sequence. Args: seq: unsorted sequence of sortable values label: string label for the cdf Returns: Cdf object """ return Cdf(seq, label=label) def MakeCdfFromHist(hist, label=None): """Makes a CDF from a Hist object. Args: hist: Pmf.Hist object label: string label for the data. Returns: Cdf object """ if label is None: label = hist.label return Cdf(hist, label=label) def MakeCdfFromPmf(pmf, label=None): """Makes a CDF from a Pmf object. Args: pmf: Pmf.Pmf object label: string label for the data. Returns: Cdf object """ if label is None: label = pmf.label return Cdf(pmf, label=label) class UnimplementedMethodException(Exception): """Exception if someone calls a method that should be overridden.""" class Suite(Pmf): """Represents a suite of hypotheses and their probabilities.""" def Update(self, data): """Updates each hypothesis based on the data. data: any representation of the data returns: the normalizing constant """ for hypo in self.Values(): like = self.Likelihood(data, hypo) self.Mult(hypo, like) return self.Normalize() def LogUpdate(self, data): """Updates a suite of hypotheses based on new data. Modifies the suite directly; if you want to keep the original, make a copy. Note: unlike Update, LogUpdate does not normalize. Args: data: any representation of the data """ for hypo in self.Values(): like = self.LogLikelihood(data, hypo) self.Incr(hypo, like) def UpdateSet(self, dataset): """Updates each hypothesis based on the dataset. This is more efficient than calling Update repeatedly because it waits until the end to Normalize. Modifies the suite directly; if you want to keep the original, make a copy. dataset: a sequence of data returns: the normalizing constant """ for data in dataset: for hypo in self.Values(): like = self.Likelihood(data, hypo) self.Mult(hypo, like) return self.Normalize() def LogUpdateSet(self, dataset): """Updates each hypothesis based on the dataset. Modifies the suite directly; if you want to keep the original, make a copy. dataset: a sequence of data returns: None """ for data in dataset: self.LogUpdate(data) def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. hypo: some representation of the hypothesis data: some representation of the data """ raise UnimplementedMethodException() def LogLikelihood(self, data, hypo): """Computes the log likelihood of the data under the hypothesis. hypo: some representation of the hypothesis data: some representation of the data """ raise UnimplementedMethodException() def Print(self): """Prints the hypotheses and their probabilities.""" for hypo, prob in sorted(self.Items()): print(hypo, prob) def MakeOdds(self): """Transforms from probabilities to odds. Values with prob=0 are removed. """ for hypo, prob in self.Items(): if prob: self.Set(hypo, Odds(prob)) else: self.Remove(hypo) def MakeProbs(self): """Transforms from odds to probabilities.""" for hypo, odds in self.Items(): self.Set(hypo, Probability(odds)) def MakeSuiteFromList(t, label=None): """Makes a suite from an unsorted sequence of values. Args: t: sequence of numbers label: string label for this suite Returns: Suite object """ hist = MakeHistFromList(t, label=label) d = hist.GetDict() return MakeSuiteFromDict(d) def MakeSuiteFromHist(hist, label=None): """Makes a normalized suite from a Hist object. Args: hist: Hist object label: string label Returns: Suite object """ if label is None: label = hist.label # make a copy of the dictionary d = dict(hist.GetDict()) return MakeSuiteFromDict(d, label) def MakeSuiteFromDict(d, label=None): """Makes a suite from a map from values to probabilities. Args: d: dictionary that maps values to probabilities label: string label for this suite Returns: Suite object """ suite = Suite(label=label) suite.SetDict(d) suite.Normalize() return suite class Pdf(object): """Represents a probability density function (PDF).""" def Density(self, x): """Evaluates this Pdf at x. Returns: float or NumPy array of probability density """ raise UnimplementedMethodException() def GetLinspace(self): """Get a linspace for plotting. Not all subclasses of Pdf implement this. Returns: numpy array """ raise UnimplementedMethodException() def MakePmf(self, **options): """Makes a discrete version of this Pdf. options can include label: string low: low end of range high: high end of range n: number of places to evaluate Returns: new Pmf """ label = options.pop('label', '') xs, ds = self.Render(**options) return Pmf(dict(zip(xs, ds)), label=label) def Render(self, **options): """Generates a sequence of points suitable for plotting. If options includes low and high, it must also include n; in that case the density is evaluated an n locations between low and high, including both. If options includes xs, the density is evaluate at those location. Otherwise, self.GetLinspace is invoked to provide the locations. Returns: tuple of (xs, densities) """ low, high = options.pop('low', None), options.pop('high', None) if low is not None and high is not None: n = options.pop('n', 101) xs = np.linspace(low, high, n) else: xs = options.pop('xs', None) if xs is None: xs = self.GetLinspace() ds = self.Density(xs) return xs, ds def Items(self): """Generates a sequence of (value, probability) pairs. """ return zip(*self.Render()) class NormalPdf(Pdf): """Represents the PDF of a Normal distribution.""" def __init__(self, mu=0, sigma=1, label=None): """Constructs a Normal Pdf with given mu and sigma. mu: mean sigma: standard deviation label: string """ self.mu = mu self.sigma = sigma self.label = label if label is not None else '_nolegend_' def __str__(self): return 'NormalPdf(%f, %f)' % (self.mu, self.sigma) def GetLinspace(self): """Get a linspace for plotting. Returns: numpy array """ low, high = self.mu-3*self.sigma, self.mu+3*self.sigma return np.linspace(low, high, 101) def Density(self, xs): """Evaluates this Pdf at xs. xs: scalar or sequence of floats returns: float or NumPy array of probability density """ return stats.norm.pdf(xs, self.mu, self.sigma) class ExponentialPdf(Pdf): """Represents the PDF of an exponential distribution.""" def __init__(self, lam=1, label=None): """Constructs an exponential Pdf with given parameter. lam: rate parameter label: string """ self.lam = lam self.label = label if label is not None else '_nolegend_' def __str__(self): return 'ExponentialPdf(%f)' % (self.lam) def GetLinspace(self): """Get a linspace for plotting. Returns: numpy array """ low, high = 0, 5.0/self.lam return np.linspace(low, high, 101) def Density(self, xs): """Evaluates this Pdf at xs. xs: scalar or sequence of floats returns: float or NumPy array of probability density """ return stats.expon.pdf(xs, scale=1.0/self.lam) class EstimatedPdf(Pdf): """Represents a PDF estimated by KDE.""" def __init__(self, sample, label=None): """Estimates the density function based on a sample. sample: sequence of data label: string """ self.label = label if label is not None else '_nolegend_' self.kde = stats.gaussian_kde(sample) low = min(sample) high = max(sample) self.linspace = np.linspace(low, high, 101) def __str__(self): return 'EstimatedPdf(label=%s)' % str(self.label) def GetLinspace(self): """Get a linspace for plotting. Returns: numpy array """ return self.linspace def Density(self, xs): """Evaluates this Pdf at xs. returns: float or NumPy array of probability density """ return self.kde.evaluate(xs) def Sample(self, n): """Generates a random sample from the estimated Pdf. n: size of sample """ # NOTE: we have to flatten because resample returns a 2-D # array for some reason. return self.kde.resample(n).flatten() def CredibleInterval(pmf, percentage=90): """Computes a credible interval for a given distribution. If percentage=90, computes the 90% CI. Args: pmf: Pmf object representing a posterior distribution percentage: float between 0 and 100 Returns: sequence of two floats, low and high """ cdf = pmf.MakeCdf() prob = (1 - percentage / 100) / 2 interval = cdf.Value(prob), cdf.Value(1 - prob) return interval def PmfProbLess(pmf1, pmf2): """Probability that a value from pmf1 is less than a value from pmf2. Args: pmf1: Pmf object pmf2: Pmf object Returns: float probability """ total = 0 for v1, p1 in pmf1.Items(): for v2, p2 in pmf2.Items(): if v1 < v2: total += p1 * p2 return total def PmfProbGreater(pmf1, pmf2): """Probability that a value from pmf1 is less than a value from pmf2. Args: pmf1: Pmf object pmf2: Pmf object Returns: float probability """ total = 0 for v1, p1 in pmf1.Items(): for v2, p2 in pmf2.Items(): if v1 > v2: total += p1 * p2 return total def PmfProbEqual(pmf1, pmf2): """Probability that a value from pmf1 equals a value from pmf2. Args: pmf1: Pmf object pmf2: Pmf object Returns: float probability """ total = 0 for v1, p1 in pmf1.Items(): for v2, p2 in pmf2.Items(): if v1 == v2: total += p1 * p2 return total def RandomSum(dists): """Chooses a random value from each dist and returns the sum. dists: sequence of Pmf or Cdf objects returns: numerical sum """ total = sum(dist.Random() for dist in dists) return total def SampleSum(dists, n): """Draws a sample of sums from a list of distributions. dists: sequence of Pmf or Cdf objects n: sample size returns: new Pmf of sums """ pmf = Pmf(RandomSum(dists) for i in range(n)) return pmf def EvalNormalPdf(x, mu, sigma): """Computes the unnormalized PDF of the normal distribution. x: value mu: mean sigma: standard deviation returns: float probability density """ return stats.norm.pdf(x, mu, sigma) def MakeNormalPmf(mu, sigma, num_sigmas, n=201): """Makes a PMF discrete approx to a Normal distribution. mu: float mean sigma: float standard deviation num_sigmas: how many sigmas to extend in each direction n: number of values in the Pmf returns: normalized Pmf """ pmf = Pmf() low = mu - num_sigmas * sigma high = mu + num_sigmas * sigma for x in np.linspace(low, high, n): p = EvalNormalPdf(x, mu, sigma) pmf.Set(x, p) pmf.Normalize() return pmf def EvalBinomialPmf(k, n, p): """Evaluates the binomial PMF. Returns the probabily of k successes in n trials with probability p. """ return stats.binom.pmf(k, n, p) def MakeBinomialPmf(n, p): """Evaluates the binomial PMF. Returns the distribution of successes in n trials with probability p. """ pmf = Pmf() for k in range(n+1): pmf[k] = stats.binom.pmf(k, n, p) return pmf def EvalGammaPdf(x, a): """Computes the Gamma PDF. x: where to evaluate the PDF a: parameter of the gamma distribution returns: float probability """ return x**(a-1) * np.exp(-x) / gamma(a) def MakeGammaPmf(xs, a): """Makes a PMF discrete approx to a Gamma distribution. lam: parameter lambda in events per unit time xs: upper bound of the Pmf returns: normalized Pmf """ xs = np.asarray(xs) ps = EvalGammaPdf(xs, a) pmf = Pmf(dict(zip(xs, ps))) pmf.Normalize() return pmf def EvalGeometricPmf(k, p, loc=0): """Evaluates the geometric PMF. With loc=0: Probability of `k` trials to get one success. With loc=-1: Probability of `k` trials before first success. k: number of trials p: probability of success on each trial """ return stats.geom.pmf(k, p, loc=loc) def MakeGeometricPmf(p, loc=0, high=10): """Evaluates the binomial PMF. With loc=0: PMF of trials to get one success. With loc=-1: PMF of trials before first success. p: probability of success high: upper bound where PMF is truncated """ pmf = Pmf() for k in range(high): pmf[k] = stats.geom.pmf(k, p, loc=loc) pmf.Normalize() return pmf def EvalHypergeomPmf(k, N, K, n): """Evaluates the hypergeometric PMF. Returns the probabily of k successes in n trials from a population N with K successes in it. """ return stats.hypergeom.pmf(k, N, K, n) def EvalPoissonPmf(k, lam): """Computes the Poisson PMF. k: number of events lam: parameter lambda in events per unit time returns: float probability """ return stats.poisson.pmf(k, lam) def MakePoissonPmf(lam, high, step=1): """Makes a PMF discrete approx to a Poisson distribution. lam: parameter lambda in events per unit time high: upper bound of the Pmf returns: normalized Pmf """ pmf = Pmf() for k in range(0, high + 1, step): p = stats.poisson.pmf(k, lam) pmf.Set(k, p) pmf.Normalize() return pmf def EvalExponentialPdf(x, lam): """Computes the exponential PDF. x: value lam: parameter lambda in events per unit time returns: float probability density """ return lam * math.exp(-lam * x) def EvalExponentialCdf(x, lam): """Evaluates CDF of the exponential distribution with parameter lam.""" return 1 - math.exp(-lam * x) def MakeExponentialPmf(lam, high, n=200): """Makes a PMF discrete approx to an exponential distribution. lam: parameter lambda in events per unit time high: upper bound n: number of values in the Pmf returns: normalized Pmf """ pmf = Pmf() for x in np.linspace(0, high, n): p = EvalExponentialPdf(x, lam) pmf.Set(x, p) pmf.Normalize() return pmf def EvalWeibullPdf(x, lam, k): """Computes the Weibull PDF. x: value lam: parameter lambda in events per unit time k: parameter returns: float probability density """ arg = (x / lam) return k / lam * arg**(k-1) * np.exp(-arg**k) def EvalWeibullCdf(x, lam, k): """Evaluates CDF of the Weibull distribution.""" arg = (x / lam) return 1 - np.exp(-arg**k) def MakeWeibullPmf(lam, k, high, n=200): """Makes a PMF discrete approx to a Weibull distribution. lam: parameter lambda in events per unit time k: parameter high: upper bound n: number of values in the Pmf returns: normalized Pmf """ xs = np.linspace(0, high, n) ps = EvalWeibullPdf(xs, lam, k) ps[np.isinf(ps)] = 0 return Pmf(dict(zip(xs, ps))) def EvalParetoPdf(x, xm, alpha): """Computes the Pareto. xm: minimum value (scale parameter) alpha: shape parameter returns: float probability density """ return stats.pareto.pdf(x, alpha, scale=xm) def MakeParetoPmf(xm, alpha, high, num=101): """Makes a PMF discrete approx to a Pareto distribution. xm: minimum value (scale parameter) alpha: shape parameter high: upper bound value num: number of values returns: normalized Pmf """ xs = np.linspace(xm, high, num) ps = stats.pareto.pdf(xs, alpha, scale=xm) pmf = Pmf(dict(zip(xs, ps))) return pmf def StandardNormalCdf(x): """Evaluates the CDF of the standard Normal distribution. See http://en.wikipedia.org/wiki/Normal_distribution #Cumulative_distribution_function Args: x: float Returns: float """ return (math.erf(x / ROOT2) + 1) / 2 def EvalNormalCdf(x, mu=0, sigma=1): """Evaluates the CDF of the normal distribution. Args: x: float mu: mean parameter sigma: standard deviation parameter Returns: float """ return stats.norm.cdf(x, loc=mu, scale=sigma) def EvalNormalCdfInverse(p, mu=0, sigma=1): """Evaluates the inverse CDF of the normal distribution. See http://en.wikipedia.org/wiki/Normal_distribution#Quantile_function Args: p: float mu: mean parameter sigma: standard deviation parameter Returns: float """ return stats.norm.ppf(p, loc=mu, scale=sigma) def EvalLognormalCdf(x, mu=0, sigma=1): """Evaluates the CDF of the lognormal distribution. x: float or sequence mu: mean parameter sigma: standard deviation parameter Returns: float or sequence """ return stats.lognorm.cdf(x, loc=mu, scale=sigma) def RenderExpoCdf(lam, low, high, n=101): """Generates sequences of xs and ps for an exponential CDF. lam: parameter low: float high: float n: number of points to render returns: numpy arrays (xs, ps) """ xs = np.linspace(low, high, n) ps = 1 - np.exp(-lam * xs) #ps = stats.expon.cdf(xs, scale=1.0/lam) return xs, ps def RenderNormalCdf(mu, sigma, low, high, n=101): """Generates sequences of xs and ps for a Normal CDF. mu: parameter sigma: parameter low: float high: float n: number of points to render returns: numpy arrays (xs, ps) """ xs = np.linspace(low, high, n) ps = stats.norm.cdf(xs, mu, sigma) return xs, ps def RenderParetoCdf(xmin, alpha, low, high, n=50): """Generates sequences of xs and ps for a Pareto CDF. xmin: parameter alpha: parameter low: float high: float n: number of points to render returns: numpy arrays (xs, ps) """ if low < xmin: low = xmin xs = np.linspace(low, high, n) ps = 1 - (xs / xmin) ** -alpha #ps = stats.pareto.cdf(xs, scale=xmin, b=alpha) return xs, ps class Beta: """Represents a Beta distribution. See http://en.wikipedia.org/wiki/Beta_distribution """ def __init__(self, alpha=1, beta=1, label=None): """Initializes a Beta distribution.""" self.alpha = alpha self.beta = beta self.label = label if label is not None else '_nolegend_' def Update(self, data): """Updates a Beta distribution. data: pair of int (heads, tails) """ heads, tails = data self.alpha += heads self.beta += tails def Mean(self): """Computes the mean of this distribution.""" return self.alpha / (self.alpha + self.beta) def MAP(self): """Computes the value with maximum a posteori probability.""" a = self.alpha - 1 b = self.beta - 1 return a / (a + b) def Random(self): """Generates a random variate from this distribution.""" return random.betavariate(self.alpha, self.beta) def Sample(self, n): """Generates a random sample from this distribution. n: int sample size """ size = n, return np.random.beta(self.alpha, self.beta, size) def EvalPdf(self, x): """Evaluates the PDF at x.""" return x ** (self.alpha - 1) * (1 - x) ** (self.beta - 1) def MakePmf(self, steps=101, label=None): """Returns a Pmf of this distribution. Note: Normally, we just evaluate the PDF at a sequence of points and treat the probability density as a probability mass. But if alpha or beta is less than one, we have to be more careful because the PDF goes to infinity at x=0 and x=1. In that case we evaluate the CDF and compute differences. The result is a little funny, because the values at 0 and 1 are not symmetric. Nevertheless, it is a reasonable discrete model of the continuous distribution, and behaves well as the number of values increases. """ if label is None and self.label is not None: label = self.label if self.alpha < 1 or self.beta < 1: cdf = self.MakeCdf() pmf = cdf.MakePmf() return pmf xs = [i / (steps - 1.0) for i in range(steps)] probs = [self.EvalPdf(x) for x in xs] pmf = Pmf(dict(zip(xs, probs)), label=label) return pmf def MakeCdf(self, steps=101): """Returns the CDF of this distribution.""" xs = [i / (steps - 1.0) for i in range(steps)] ps = special.betainc(self.alpha, self.beta, xs) cdf = Cdf(xs, ps) return cdf def Percentile(self, ps): """Returns the given percentiles from this distribution. ps: scalar, array, or list of [0-100] """ ps = np.asarray(ps) / 100 xs = special.betaincinv(self.alpha, self.beta, ps) return xs class Dirichlet(object): """Represents a Dirichlet distribution. See http://en.wikipedia.org/wiki/Dirichlet_distribution """ def __init__(self, n, conc=1, label=None): """Initializes a Dirichlet distribution. n: number of dimensions conc: concentration parameter (smaller yields more concentration) label: string label """ if n < 2: raise ValueError('A Dirichlet distribution with ' 'n<2 makes no sense') self.n = n self.params = np.ones(n, dtype=np.float) * conc self.label = label if label is not None else '_nolegend_' def Update(self, data): """Updates a Dirichlet distribution. data: sequence of observations, in order corresponding to params """ m = len(data) self.params[:m] += data def Random(self): """Generates a random variate from this distribution. Returns: normalized vector of fractions """ p = np.random.gamma(self.params) return p / p.sum() def Likelihood(self, data): """Computes the likelihood of the data. Selects a random vector of probabilities from this distribution. Returns: float probability """ m = len(data) if self.n < m: return 0 x = data p = self.Random() q = p[:m] ** x return q.prod() def LogLikelihood(self, data): """Computes the log likelihood of the data. Selects a random vector of probabilities from this distribution. Returns: float log probability """ m = len(data) if self.n < m: return float('-inf') x = self.Random() y = np.log(x[:m]) * data return y.sum() def MarginalBeta(self, i): """Computes the marginal distribution of the ith element. See http://en.wikipedia.org/wiki/Dirichlet_distribution #Marginal_distributions i: int Returns: Beta object """ alpha0 = self.params.sum() alpha = self.params[i] return Beta(alpha, alpha0 - alpha) def PredictivePmf(self, xs, label=None): """Makes a predictive distribution. xs: values to go into the Pmf Returns: Pmf that maps from x to the mean prevalence of x """ alpha0 = self.params.sum() ps = self.params / alpha0 return Pmf(zip(xs, ps), label=label) def BinomialCoef(n, k): """Compute the binomial coefficient "n choose k". n: number of trials k: number of successes Returns: float """ return scipy.misc.comb(n, k) def LogBinomialCoef(n, k): """Computes the log of the binomial coefficient. http://math.stackexchange.com/questions/64716/ approximating-the-logarithm-of-the-binomial-coefficient n: number of trials k: number of successes Returns: float """ return n * math.log(n) - k * math.log(k) - (n - k) * math.log(n - k) def NormalProbability(ys, jitter=0): """Generates data for a normal probability plot. ys: sequence of values jitter: float magnitude of jitter added to the ys returns: numpy arrays xs, ys """ n = len(ys) xs = np.random.normal(0, 1, n) xs.sort() if jitter: ys = Jitter(ys, jitter) else: ys = np.array(ys) ys.sort() return xs, ys def Jitter(values, jitter=0.5): """Jitters the values by adding a uniform variate in (-jitter, jitter). values: sequence jitter: scalar magnitude of jitter returns: new numpy array """ n = len(values) return np.random.normal(0, jitter, n) + values def NormalProbabilityPlot(sample, fit_color='0.8', **options): """Makes a normal probability plot with a fitted line. sample: sequence of numbers fit_color: color string for the fitted line options: passed along to Plot """ xs, ys = NormalProbability(sample) mean, var = MeanVar(sample) std = math.sqrt(var) fit = FitLine(xs, mean, std) thinkplot.Plot(*fit, color=fit_color, label='model') xs, ys = NormalProbability(sample) thinkplot.Plot(xs, ys, **options) def Mean(xs): """Computes mean. xs: sequence of values returns: float mean """ return np.mean(xs) def Var(xs, mu=None, ddof=0): """Computes variance. xs: sequence of values mu: option known mean ddof: delta degrees of freedom returns: float """ xs = np.asarray(xs) if mu is None: mu = xs.mean() ds = xs - mu return np.dot(ds, ds) / (len(xs) - ddof) def Std(xs, mu=None, ddof=0): """Computes standard deviation. xs: sequence of values mu: option known mean ddof: delta degrees of freedom returns: float """ var = Var(xs, mu, ddof) return math.sqrt(var) def MeanVar(xs, ddof=0): """Computes mean and variance. Based on http://stackoverflow.com/questions/19391149/ numpy-mean-and-variance-from-single-function xs: sequence of values ddof: delta degrees of freedom returns: pair of float, mean and var """ xs = np.asarray(xs) mean = xs.mean() s2 = Var(xs, mean, ddof) return mean, s2 def Trim(t, p=0.01): """Trims the largest and smallest elements of t. Args: t: sequence of numbers p: fraction of values to trim off each end Returns: sequence of values """ n = int(p * len(t)) t = sorted(t)[n:-n] return t def TrimmedMean(t, p=0.01): """Computes the trimmed mean of a sequence of numbers. Args: t: sequence of numbers p: fraction of values to trim off each end Returns: float """ t = Trim(t, p) return Mean(t) def TrimmedMeanVar(t, p=0.01): """Computes the trimmed mean and variance of a sequence of numbers. Side effect: sorts the list. Args: t: sequence of numbers p: fraction of values to trim off each end Returns: float """ t = Trim(t, p) mu, var = MeanVar(t) return mu, var def CohenEffectSize(group1, group2): """Compute Cohen's d. group1: Series or NumPy array group2: Series or NumPy array returns: float """ diff = group1.mean() - group2.mean() n1, n2 = len(group1), len(group2) var1 = group1.var() var2 = group2.var() pooled_var = (n1 * var1 + n2 * var2) / (n1 + n2) d = diff / math.sqrt(pooled_var) return d def Cov(xs, ys, meanx=None, meany=None): """Computes Cov(X, Y). Args: xs: sequence of values ys: sequence of values meanx: optional float mean of xs meany: optional float mean of ys Returns: Cov(X, Y) """ xs = np.asarray(xs) ys = np.asarray(ys) if meanx is None: meanx = np.mean(xs) if meany is None: meany = np.mean(ys) cov = np.dot(xs-meanx, ys-meany) / len(xs) return cov def Corr(xs, ys): """Computes Corr(X, Y). Args: xs: sequence of values ys: sequence of values Returns: Corr(X, Y) """ xs = np.asarray(xs) ys = np.asarray(ys) meanx, varx = MeanVar(xs) meany, vary = MeanVar(ys) corr = Cov(xs, ys, meanx, meany) / math.sqrt(varx * vary) return corr def SerialCorr(series, lag=1): """Computes the serial correlation of a series. series: Series lag: integer number of intervals to shift returns: float correlation """ xs = series[lag:] ys = series.shift(lag)[lag:] corr = Corr(xs, ys) return corr def SpearmanCorr(xs, ys): """Computes Spearman's rank correlation. Args: xs: sequence of values ys: sequence of values Returns: float Spearman's correlation """ xranks = pandas.Series(xs).rank() yranks = pandas.Series(ys).rank() return Corr(xranks, yranks) def MapToRanks(t): """Returns a list of ranks corresponding to the elements in t. Args: t: sequence of numbers Returns: list of integer ranks, starting at 1 """ # pair up each value with its index pairs = enumerate(t) # sort by value sorted_pairs = sorted(pairs, key=itemgetter(1)) # pair up each pair with its rank ranked = enumerate(sorted_pairs) # sort by index resorted = sorted(ranked, key=lambda trip: trip[1][0]) # extract the ranks ranks = [trip[0]+1 for trip in resorted] return ranks def LeastSquares(xs, ys): """Computes a linear least squares fit for ys as a function of xs. Args: xs: sequence of values ys: sequence of values Returns: tuple of (intercept, slope) """ meanx, varx = MeanVar(xs) meany = Mean(ys) slope = Cov(xs, ys, meanx, meany) / varx inter = meany - slope * meanx return inter, slope def FitLine(xs, inter, slope): """Fits a line to the given data. xs: sequence of x returns: tuple of numpy arrays (sorted xs, fit ys) """ fit_xs = np.sort(xs) fit_ys = inter + slope * fit_xs return fit_xs, fit_ys def Residuals(xs, ys, inter, slope): """Computes residuals for a linear fit with parameters inter and slope. Args: xs: independent variable ys: dependent variable inter: float intercept slope: float slope Returns: list of residuals """ xs = np.asarray(xs) ys = np.asarray(ys) res = ys - (inter + slope * xs) return res def CoefDetermination(ys, res): """Computes the coefficient of determination (R^2) for given residuals. Args: ys: dependent variable res: residuals Returns: float coefficient of determination """ return 1 - Var(res) / Var(ys) def CorrelatedGenerator(rho): """Generates standard normal variates with serial correlation. rho: target coefficient of correlation Returns: iterable """ x = random.gauss(0, 1) yield x sigma = math.sqrt(1 - rho**2) while True: x = random.gauss(x * rho, sigma) yield x def CorrelatedNormalGenerator(mu, sigma, rho): """Generates normal variates with serial correlation. mu: mean of variate sigma: standard deviation of variate rho: target coefficient of correlation Returns: iterable """ for x in CorrelatedGenerator(rho): yield x * sigma + mu def RawMoment(xs, k): """Computes the kth raw moment of xs. """ return sum(x**k for x in xs) / len(xs) def CentralMoment(xs, k): """Computes the kth central moment of xs. """ mean = RawMoment(xs, 1) return sum((x - mean)**k for x in xs) / len(xs) def StandardizedMoment(xs, k): """Computes the kth standardized moment of xs. """ var = CentralMoment(xs, 2) std = math.sqrt(var) return CentralMoment(xs, k) / std**k def Skewness(xs): """Computes skewness. """ return StandardizedMoment(xs, 3) def Median(xs): """Computes the median (50th percentile) of a sequence. xs: sequence or anything else that can initialize a Cdf returns: float """ cdf = Cdf(xs) return cdf.Value(0.5) def IQR(xs): """Computes the interquartile of a sequence. xs: sequence or anything else that can initialize a Cdf returns: pair of floats """ cdf = Cdf(xs) return cdf.Value(0.25), cdf.Value(0.75) def PearsonMedianSkewness(xs): """Computes the Pearson median skewness. """ median = Median(xs) mean = RawMoment(xs, 1) var = CentralMoment(xs, 2) std = math.sqrt(var) gp = 3 * (mean - median) / std return gp class FixedWidthVariables(object): """Represents a set of variables in a fixed width file.""" def __init__(self, variables, index_base=0): """Initializes. variables: DataFrame index_base: are the indices 0 or 1 based? Attributes: colspecs: list of (start, end) index tuples names: list of string variable names """ self.variables = variables # note: by default, subtract 1 from colspecs self.colspecs = variables[['start', 'end']] - index_base # convert colspecs to a list of pair of int self.colspecs = self.colspecs.astype(np.int).values.tolist() self.names = variables['name'] def ReadFixedWidth(self, filename, **options): """Reads a fixed width ASCII file. filename: string filename returns: DataFrame """ df = pandas.read_fwf(filename, colspecs=self.colspecs, names=self.names, **options) return df def ReadStataDct(dct_file, **options): """Reads a Stata dictionary file. dct_file: string filename options: dict of options passed to open() returns: FixedWidthVariables object """ type_map = dict(byte=int, int=int, long=int, float=float, double=float, numeric=float) var_info = [] with open(dct_file, **options) as f: for line in f: match = re.search( r'_column\(([^)]*)\)', line) if not match: continue start = int(match.group(1)) t = line.split() vtype, name, fstring = t[1:4] name = name.lower() if vtype.startswith('str'): vtype = str else: vtype = type_map[vtype] long_desc = ' '.join(t[4:]).strip('"') var_info.append((start, vtype, name, fstring, long_desc)) columns = ['start', 'type', 'name', 'fstring', 'desc'] variables = pandas.DataFrame(var_info, columns=columns) # fill in the end column by shifting the start column variables['end'] = variables.start.shift(-1) variables.loc[len(variables)-1, 'end'] = 0 dct = FixedWidthVariables(variables, index_base=1) return dct def Resample(xs, n=None): """Draw a sample from xs with the same length as xs. xs: sequence n: sample size (default: len(xs)) returns: NumPy array """ if n is None: n = len(xs) return np.random.choice(xs, n, replace=True) def SampleRows(df, nrows, replace=False): """Choose a sample of rows from a DataFrame. df: DataFrame nrows: number of rows replace: whether to sample with replacement returns: DataDf """ indices = np.random.choice(df.index, nrows, replace=replace) sample = df.loc[indices] return sample def ResampleRows(df): """Resamples rows from a DataFrame. df: DataFrame returns: DataFrame """ return SampleRows(df, len(df), replace=True) def ResampleRowsWeighted(df, column='finalwgt'): """Resamples a DataFrame using probabilities proportional to given column. df: DataFrame column: string column name to use as weights returns: DataFrame """ weights = df[column].copy() weights /= sum(weights) indices = np.random.choice(df.index, len(df), replace=True, p=weights) sample = df.loc[indices] return sample def PercentileRow(array, p): """Selects the row from a sorted array that maps to percentile p. p: float 0--100 returns: NumPy array (one row) """ rows, cols = array.shape index = int(rows * p / 100) return array[index,] def PercentileRows(ys_seq, percents): """Given a collection of lines, selects percentiles along vertical axis. For example, if ys_seq contains simulation results like ys as a function of time, and percents contains (5, 95), the result would be a 90% CI for each vertical slice of the simulation results. ys_seq: sequence of lines (y values) percents: list of percentiles (0-100) to select returns: list of NumPy arrays, one for each percentile """ nrows = len(ys_seq) ncols = len(ys_seq[0]) array = np.zeros((nrows, ncols)) for i, ys in enumerate(ys_seq): array[i,] = ys array = np.sort(array, axis=0) rows = [PercentileRow(array, p) for p in percents] return rows def Smooth(xs, sigma=2, **options): """Smooths a NumPy array with a Gaussian filter. xs: sequence sigma: standard deviation of the filter """ return ndimage.filters.gaussian_filter1d(xs, sigma, **options) class HypothesisTest(object): """Represents a hypothesis test.""" def __init__(self, data): """Initializes. data: data in whatever form is relevant """ self.data = data self.MakeModel() self.actual = self.TestStatistic(data) self.test_stats = None self.test_cdf = None def PValue(self, iters=1000): """Computes the distribution of the test statistic and p-value. iters: number of iterations returns: float p-value """ self.test_stats = [self.TestStatistic(self.RunModel()) for _ in range(iters)] self.test_cdf = Cdf(self.test_stats) count = sum(1 for x in self.test_stats if x >= self.actual) return count / iters def MaxTestStat(self): """Returns the largest test statistic seen during simulations. """ return max(self.test_stats) def PlotCdf(self, label=None): """Draws a Cdf with vertical lines at the observed test stat. """ def VertLine(x): """Draws a vertical line at x.""" thinkplot.Plot([x, x], [0, 1], color='0.8') VertLine(self.actual) thinkplot.Cdf(self.test_cdf, label=label) def TestStatistic(self, data): """Computes the test statistic. data: data in whatever form is relevant """ raise UnimplementedMethodException() def MakeModel(self): """Build a model of the null hypothesis. """ pass def RunModel(self): """Run the model of the null hypothesis. returns: simulated data """ raise UnimplementedMethodException() def main(): pass if __name__ == '__main__': main() ================================================ FILE: thinkplot.py ================================================ """This file contains code for use with "Think Stats", by Allen B. Downey, available from greenteapress.com Copyright 2014 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function import math import matplotlib import matplotlib.pyplot as plt import numpy as np import pandas import warnings # customize some matplotlib attributes #matplotlib.rc('figure', figsize=(4, 3)) #matplotlib.rc('font', size=14.0) #matplotlib.rc('axes', labelsize=22.0, titlesize=22.0) #matplotlib.rc('legend', fontsize=20.0) #matplotlib.rc('xtick.major', size=6.0) #matplotlib.rc('xtick.minor', size=3.0) #matplotlib.rc('ytick.major', size=6.0) #matplotlib.rc('ytick.minor', size=3.0) class _Brewer(object): """Encapsulates a nice sequence of colors. Shades of blue that look good in color and can be distinguished in grayscale (up to a point). Borrowed from http://colorbrewer2.org/ """ color_iter = None colors = ['#f7fbff', '#deebf7', '#c6dbef', '#9ecae1', '#6baed6', '#4292c6', '#2171b5','#08519c','#08306b'][::-1] # lists that indicate which colors to use depending on how many are used which_colors = [[], [1], [1, 3], [0, 2, 4], [0, 2, 4, 6], [0, 2, 3, 5, 6], [0, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6], [0, 1, 2, 3, 4, 5, 6, 7], [0, 1, 2, 3, 4, 5, 6, 7, 8], ] current_figure = None @classmethod def Colors(cls): """Returns the list of colors. """ return cls.colors @classmethod def ColorGenerator(cls, num): """Returns an iterator of color strings. n: how many colors will be used """ for i in cls.which_colors[num]: yield cls.colors[i] raise StopIteration('Ran out of colors in _Brewer.') @classmethod def InitIter(cls, num): """Initializes the color iterator with the given number of colors.""" cls.color_iter = cls.ColorGenerator(num) fig = plt.gcf() cls.current_figure = fig @classmethod def ClearIter(cls): """Sets the color iterator to None.""" cls.color_iter = None cls.current_figure = None @classmethod def GetIter(cls, num): """Gets the color iterator.""" fig = plt.gcf() if fig != cls.current_figure: cls.InitIter(num) cls.current_figure = fig if cls.color_iter is None: cls.InitIter(num) return cls.color_iter def _UnderrideColor(options): """If color is not in the options, chooses a color. """ if 'color' in options: return options # get the current color iterator; if there is none, init one color_iter = _Brewer.GetIter(5) try: options['color'] = next(color_iter) except StopIteration: # if you run out of colors, initialize the color iterator # and try again warnings.warn('Ran out of colors. Starting over.') _Brewer.ClearIter() _UnderrideColor(options) return options def PrePlot(num=None, rows=None, cols=None): """Takes hints about what's coming. num: number of lines that will be plotted rows: number of rows of subplots cols: number of columns of subplots """ if num: _Brewer.InitIter(num) if rows is None and cols is None: return if rows is not None and cols is None: cols = 1 if cols is not None and rows is None: rows = 1 # resize the image, depending on the number of rows and cols size_map = {(1, 1): (8, 6), (1, 2): (12, 6), (1, 3): (12, 6), (1, 4): (12, 5), (1, 5): (12, 4), (2, 2): (10, 10), (2, 3): (16, 10), (3, 1): (8, 10), (4, 1): (8, 12), } if (rows, cols) in size_map: fig = plt.gcf() fig.set_size_inches(*size_map[rows, cols]) # create the first subplot if rows > 1 or cols > 1: ax = plt.subplot(rows, cols, 1) global SUBPLOT_ROWS, SUBPLOT_COLS SUBPLOT_ROWS = rows SUBPLOT_COLS = cols else: ax = plt.gca() return ax def SubPlot(plot_number, rows=None, cols=None, **options): """Configures the number of subplots and changes the current plot. rows: int cols: int plot_number: int options: passed to subplot """ rows = rows or SUBPLOT_ROWS cols = cols or SUBPLOT_COLS return plt.subplot(rows, cols, plot_number, **options) def _Underride(d, **options): """Add key-value pairs to d only if key is not in d. If d is None, create a new dictionary. d: dictionary options: keyword args to add to d """ if d is None: d = {} for key, val in options.items(): d.setdefault(key, val) return d def Clf(): """Clears the figure and any hints that have been set.""" global LOC LOC = None _Brewer.ClearIter() plt.clf() fig = plt.gcf() fig.set_size_inches(8, 6) def Figure(**options): """Sets options for the current figure.""" _Underride(options, figsize=(6, 8)) plt.figure(**options) def Plot(obj, ys=None, style='', **options): """Plots a line. Args: obj: sequence of x values, or Series, or anything with Render() ys: sequence of y values style: style string passed along to plt.plot options: keyword args passed to plt.plot """ options = _UnderrideColor(options) label = getattr(obj, 'label', '_nolegend_') options = _Underride(options, linewidth=3, alpha=0.7, label=label) xs = obj if ys is None: if hasattr(obj, 'Render'): xs, ys = obj.Render() if isinstance(obj, pandas.Series): ys = obj.values xs = obj.index if ys is None: plt.plot(xs, style, **options) else: plt.plot(xs, ys, style, **options) def Vlines(xs, y1, y2, **options): """Plots a set of vertical lines. Args: xs: sequence of x values y1: sequence of y values y2: sequence of y values options: keyword args passed to plt.vlines """ options = _UnderrideColor(options) options = _Underride(options, linewidth=1, alpha=0.5) plt.vlines(xs, y1, y2, **options) def Hlines(ys, x1, x2, **options): """Plots a set of horizontal lines. Args: ys: sequence of y values x1: sequence of x values x2: sequence of x values options: keyword args passed to plt.vlines """ options = _UnderrideColor(options) options = _Underride(options, linewidth=1, alpha=0.5) plt.hlines(ys, x1, x2, **options) def FillBetween(xs, y1, y2=None, where=None, **options): """Fills the space between two lines. Args: xs: sequence of x values y1: sequence of y values y2: sequence of y values where: sequence of boolean options: keyword args passed to plt.fill_between """ options = _UnderrideColor(options) options = _Underride(options, linewidth=0, alpha=0.5) plt.fill_between(xs, y1, y2, where, **options) def Bar(xs, ys, **options): """Plots a line. Args: xs: sequence of x values ys: sequence of y values options: keyword args passed to plt.bar """ options = _UnderrideColor(options) options = _Underride(options, linewidth=0, alpha=0.6) plt.bar(xs, ys, **options) def Scatter(xs, ys=None, **options): """Makes a scatter plot. xs: x values ys: y values options: options passed to plt.scatter """ options = _Underride(options, color='blue', alpha=0.2, s=30, edgecolors='none') if ys is None and isinstance(xs, pandas.Series): ys = xs.values xs = xs.index plt.scatter(xs, ys, **options) def HexBin(xs, ys, **options): """Makes a scatter plot. xs: x values ys: y values options: options passed to plt.scatter """ options = _Underride(options, cmap=matplotlib.cm.Blues) plt.hexbin(xs, ys, **options) def Pdf(pdf, **options): """Plots a Pdf, Pmf, or Hist as a line. Args: pdf: Pdf, Pmf, or Hist object options: keyword args passed to plt.plot """ low, high = options.pop('low', None), options.pop('high', None) n = options.pop('n', 101) xs, ps = pdf.Render(low=low, high=high, n=n) options = _Underride(options, label=pdf.label) Plot(xs, ps, **options) def Pdfs(pdfs, **options): """Plots a sequence of PDFs. Options are passed along for all PDFs. If you want different options for each pdf, make multiple calls to Pdf. Args: pdfs: sequence of PDF objects options: keyword args passed to plt.plot """ for pdf in pdfs: Pdf(pdf, **options) def Hist(hist, **options): """Plots a Pmf or Hist with a bar plot. The default width of the bars is based on the minimum difference between values in the Hist. If that's too small, you can override it by providing a width keyword argument, in the same units as the values. Args: hist: Hist or Pmf object options: keyword args passed to plt.bar """ # find the minimum distance between adjacent values xs, ys = hist.Render() # see if the values support arithmetic try: xs[0] - xs[0] except TypeError: # if not, replace values with numbers labels = [str(x) for x in xs] xs = np.arange(len(xs)) plt.xticks(xs+0.5, labels) if 'width' not in options: try: options['width'] = 0.9 * np.diff(xs).min() except TypeError: warnings.warn("Hist: Can't compute bar width automatically." "Check for non-numeric types in Hist." "Or try providing width option." ) options = _Underride(options, label=hist.label) options = _Underride(options, align='center') if options['align'] == 'left': options['align'] = 'edge' elif options['align'] == 'right': options['align'] = 'edge' options['width'] *= -1 Bar(xs, ys, **options) def Hists(hists, **options): """Plots two histograms as interleaved bar plots. Options are passed along for all PMFs. If you want different options for each pmf, make multiple calls to Pmf. Args: hists: list of two Hist or Pmf objects options: keyword args passed to plt.plot """ for hist in hists: Hist(hist, **options) def Pmf(pmf, **options): """Plots a Pmf or Hist as a line. Args: pmf: Hist or Pmf object options: keyword args passed to plt.plot """ xs, ys = pmf.Render() low, high = min(xs), max(xs) width = options.pop('width', None) if width is None: try: width = np.diff(xs).min() except TypeError: warnings.warn("Pmf: Can't compute bar width automatically." "Check for non-numeric types in Pmf." "Or try providing width option.") points = [] lastx = np.nan lasty = 0 for x, y in zip(xs, ys): if (x - lastx) > 1e-5: points.append((lastx, 0)) points.append((x, 0)) points.append((x, lasty)) points.append((x, y)) points.append((x+width, y)) lastx = x + width lasty = y points.append((lastx, 0)) pxs, pys = zip(*points) align = options.pop('align', 'center') if align == 'center': pxs = np.array(pxs) - width/2.0 if align == 'right': pxs = np.array(pxs) - width options = _Underride(options, label=pmf.label) Plot(pxs, pys, **options) def Pmfs(pmfs, **options): """Plots a sequence of PMFs. Options are passed along for all PMFs. If you want different options for each pmf, make multiple calls to Pmf. Args: pmfs: sequence of PMF objects options: keyword args passed to plt.plot """ for pmf in pmfs: Pmf(pmf, **options) def Diff(t): """Compute the differences between adjacent elements in a sequence. Args: t: sequence of number Returns: sequence of differences (length one less than t) """ diffs = [t[i+1] - t[i] for i in range(len(t)-1)] return diffs def Cdf(cdf, complement=False, transform=None, **options): """Plots a CDF as a line. Args: cdf: Cdf object complement: boolean, whether to plot the complementary CDF transform: string, one of 'exponential', 'pareto', 'weibull', 'gumbel' options: keyword args passed to plt.plot Returns: dictionary with the scale options that should be passed to Config, Show or Save. """ xs, ps = cdf.Render() xs = np.asarray(xs) ps = np.asarray(ps) scale = dict(xscale='linear', yscale='linear') for s in ['xscale', 'yscale']: if s in options: scale[s] = options.pop(s) if transform == 'exponential': complement = True scale['yscale'] = 'log' if transform == 'pareto': complement = True scale['yscale'] = 'log' scale['xscale'] = 'log' if complement: ps = [1.0-p for p in ps] if transform == 'weibull': xs = np.delete(xs, -1) ps = np.delete(ps, -1) ps = [-math.log(1.0-p) for p in ps] scale['xscale'] = 'log' scale['yscale'] = 'log' if transform == 'gumbel': xs = xp.delete(xs, 0) ps = np.delete(ps, 0) ps = [-math.log(p) for p in ps] scale['yscale'] = 'log' options = _Underride(options, label=cdf.label) Plot(xs, ps, **options) return scale def Cdfs(cdfs, complement=False, transform=None, **options): """Plots a sequence of CDFs. cdfs: sequence of CDF objects complement: boolean, whether to plot the complementary CDF transform: string, one of 'exponential', 'pareto', 'weibull', 'gumbel' options: keyword args passed to plt.plot """ for cdf in cdfs: Cdf(cdf, complement, transform, **options) def Contour(obj, pcolor=False, contour=True, imshow=False, **options): """Makes a contour plot. d: map from (x, y) to z, or object that provides GetDict pcolor: boolean, whether to make a pseudocolor plot contour: boolean, whether to make a contour plot imshow: boolean, whether to use plt.imshow options: keyword args passed to plt.pcolor and/or plt.contour """ try: d = obj.GetDict() except AttributeError: d = obj _Underride(options, linewidth=3, cmap=matplotlib.cm.Blues) xs, ys = zip(*d.keys()) xs = sorted(set(xs)) ys = sorted(set(ys)) X, Y = np.meshgrid(xs, ys) func = lambda x, y: d.get((x, y), 0) func = np.vectorize(func) Z = func(X, Y) x_formatter = matplotlib.ticker.ScalarFormatter(useOffset=False) axes = plt.gca() axes.xaxis.set_major_formatter(x_formatter) if pcolor: plt.pcolormesh(X, Y, Z, **options) if contour: cs = plt.contour(X, Y, Z, **options) plt.clabel(cs, inline=1, fontsize=10) if imshow: extent = xs[0], xs[-1], ys[0], ys[-1] plt.imshow(Z, extent=extent, **options) def Pcolor(xs, ys, zs, pcolor=True, contour=False, **options): """Makes a pseudocolor plot. xs: ys: zs: pcolor: boolean, whether to make a pseudocolor plot contour: boolean, whether to make a contour plot options: keyword args passed to plt.pcolor and/or plt.contour """ _Underride(options, linewidth=3, cmap=matplotlib.cm.Blues) X, Y = np.meshgrid(xs, ys) Z = zs x_formatter = matplotlib.ticker.ScalarFormatter(useOffset=False) axes = plt.gca() axes.xaxis.set_major_formatter(x_formatter) if pcolor: plt.pcolormesh(X, Y, Z, **options) if contour: cs = plt.contour(X, Y, Z, **options) plt.clabel(cs, inline=1, fontsize=10) def Text(x, y, s, **options): """Puts text in a figure. x: number y: number s: string options: keyword args passed to plt.text """ options = _Underride(options, fontsize=16, verticalalignment='top', horizontalalignment='left') plt.text(x, y, s, **options) LEGEND = True LOC = None def Config(**options): """Configures the plot. Pulls options out of the option dictionary and passes them to the corresponding plt functions. """ names = ['title', 'xlabel', 'ylabel', 'xscale', 'yscale', 'xticks', 'yticks', 'axis', 'xlim', 'ylim'] for name in names: if name in options: getattr(plt, name)(options[name]) global LEGEND LEGEND = options.get('legend', LEGEND) if LEGEND: global LOC LOC = options.get('loc', LOC) frameon = options.get('frameon', True) warnings.filterwarnings('error', category=UserWarning) try: plt.legend(loc=LOC, frameon=frameon) except UserWarning: pass warnings.filterwarnings('default', category=UserWarning) # x and y ticklabels can be made invisible val = options.get('xticklabels', None) if val is not None: if val == 'invisible': ax = plt.gca() labels = ax.get_xticklabels() plt.setp(labels, visible=False) val = options.get('yticklabels', None) if val is not None: if val == 'invisible': ax = plt.gca() labels = ax.get_yticklabels() plt.setp(labels, visible=False) def Show(**options): """Shows the plot. For options, see Config. options: keyword args used to invoke various plt functions """ clf = options.pop('clf', True) Config(**options) plt.show() if clf: Clf() def Plotly(**options): """Shows the plot. For options, see Config. options: keyword args used to invoke various plt functions """ clf = options.pop('clf', True) Config(**options) import plotly.plotly as plotly url = plotly.plot_mpl(plt.gcf()) if clf: Clf() return url def Save(root=None, formats=None, **options): """Saves the plot in the given formats and clears the figure. For options, see Config. Args: root: string filename root formats: list of string formats options: keyword args used to invoke various plt functions """ clf = options.pop('clf', True) save_options = {} for option in ['bbox_inches', 'pad_inches']: if option in options: save_options[option] = options.pop(option) Config(**options) if formats is None: formats = ['pdf', 'eps'] try: formats.remove('plotly') Plotly(clf=False) except ValueError: pass if root: for fmt in formats: SaveFormat(root, fmt, **save_options) if clf: Clf() def SaveFormat(root, fmt='eps', **options): """Writes the current figure to a file in the given format. Args: root: string filename root fmt: string format """ _Underride(options, dpi=300) filename = '%s.%s' % (root, fmt) print('Writing', filename) plt.savefig(filename, format=fmt, **options) # provide aliases for calling functions with lower-case names preplot = PrePlot subplot = SubPlot clf = Clf figure = Figure plot = Plot vlines = Vlines hlines = Hlines fill_between = FillBetween text = Text scatter = Scatter pmf = Pmf pmfs = Pmfs hist = Hist hists = Hists diff = Diff cdf = Cdf cdfs = Cdfs contour = Contour pcolor = Pcolor config = Config show = Show save = Save def main(): color_iter = _Brewer.ColorGenerator(7) for color in color_iter: print(color) if __name__ == '__main__': main() ================================================ FILE: train.py ================================================ """This file contains code for use with "Think Bayes", by Allen B. Downey, available from greenteapress.com Copyright 2012 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division import thinkbayes import thinkplot class Train(thinkbayes.Suite): """Represents hypotheses about how many trains the company has. The likelihood function for the train problem is the same as for the Dice problem. """ def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. hypo: number of trains the carrier operates data: the number of the observed train """ # fill this in! return 1 def main(): hypos = range(100, 1001) suite = Train(hypos) suite.Update(321) thinkplot.PrePlot(1) thinkplot.Pmf(suite) thinkplot.Show(xlabel='Number of trains', ylabel='Probability', legend=False) if __name__ == '__main__': main() ================================================ FILE: train2.py ================================================ """This file contains code for use with "Think Bayes", by Allen B. Downey, available from greenteapress.com Copyright 2012 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division import thinkbayes import thinkplot class Train(thinkbayes.Suite): """Represents hypotheses about how many trains the company has. The likelihood function for the train problem is the same as for the Dice problem. """ def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. hypo: number of trains the carrier operates data: the number of the observed train """ if hypo < data: return 0 else: return 1.0/hypo def main(): hypos = range(1, 101) suite = Train(hypos) suite.Update(25) print('Posterior mean', suite.Mean()) print('Posterior MLE', suite.MaximumLikelihood()) print('Posterior CI 90', suite.CredibleInterval(90)) thinkplot.PrePlot(1) thinkplot.Pmf(suite, linewidth=5) thinkplot.Save(root='train2', xlabel='Number of trains', ylabel='Probability', formats=['png']) thinkplot.Pmf(suite, linewidth=5, color='0.8') suite.Update(42) print('Posterior mean', suite.Mean()) print('Posterior MLE', suite.MaximumLikelihood()) print('Posterior CI 90', suite.CredibleInterval(90)) thinkplot.PrePlot(1) thinkplot.Pmf(suite, linewidth=5) thinkplot.Save(root='train3', xlabel='Number of trains', ylabel='Probability', formats=['png']) if __name__ == '__main__': main() ================================================ FILE: train_soln.py ================================================ """This file contains code for use with "Think Bayes", by Allen B. Downey, available from greenteapress.com Copyright 2012 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division import thinkbayes import thinkplot class Train(thinkbayes.Suite): """Represents hypotheses about how many trains the company has. The likelihood function for the train problem is the same as for the Dice problem. """ def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. hypo: number of trains the carrier operates data: the number of the observed train """ if hypo < data: return 0 else: return 1.0/hypo def main(): hypos = range(100, 1001) suite = Train(hypos) suite.Update(321) print('Posterior mean', suite.Mean()) print('Posterior MLE', suite.MaximumLikelihood()) print('Posterior CI 90', suite.CredibleInterval(90)) thinkplot.PrePlot(1) thinkplot.Pmf(suite) thinkplot.Show(xlabel='Number of trains', ylabel='Probability', legend=False) if __name__ == '__main__': main() ================================================ FILE: tutorial.md ================================================ ## Tutorial: Bayes Made Simple Allen Downey The tutorial material is based on my book, [*Think Bayes*](http://greenteapress.com/wp/think-bayes/), a class I teach at Olin College, and my blog, [“Probably Overthinking It.”](http://allendowney.com/blog) ### Installation instructions Note: Please try to install everything you need for this tutorial before you leave home! To prepare for this tutorial, you have two options: 1. Install Jupyter on your laptop and download my code from GitHub. 2. Run the Jupyter notebooks on a virtual machine on Binder. I'll provide instructions for both, but here's the catch: if everyone chooses Option 2, the wireless network will fail and no one will be able to do the hands-on part of the workshop. So, I strongly encourage you to try Option 1 and only resort to Option 2 if you can't get Option 1 working. #### Option 1A: If you already have Jupyter installed. To do the exercises, you need Python 2 or 3 with NumPy, SciPy, and matplotlib. If you are not sure whether you have those modules already, the easiest way to check is to run my code and see if it works. Code for this workshop is in a Git repository on Github. If you have a Git client installed, you should be able to download it by running: git clone https://github.com/AllenDowney/BayesMadeSimple It should create a directory named `BayesMadeSimple`. Otherwise you can download the repository in [this zip file](https://github.com/AllenDowney/BayesMadeSimple/archive/master.zip). To start Jupyter, run: cd BayesMadeSimple jupyter notebook Jupyter should launch your default browser or open a tab in an existing browser window. If not, the Jupyter server should print a URL you can use. For example, when I launch Jupyter, I get ``` ~/ThinkComplexity2$ jupyter notebook [I 10:03:20.115 NotebookApp] Serving notebooks from local directory: /home/downey/BayesMadeSimple [I 10:03:20.115 NotebookApp] 0 active kernels [I 10:03:20.115 NotebookApp] The Jupyter Notebook is running at: http://localhost:8888/ [I 10:03:20.115 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). ``` In this case, the URL is [http://localhost:8888](http://localhost:8888). When you start your server, you might get a different URL. Whatever it is, if you paste it into a browser, you should should see a home page with a list of the notebooks in the repository. Click on `workshop01.ipynb`. It should open the first notebook for the tutorial. Select the cell with the import statements and press "Shift-Enter" to run the code in the cell. If it works and you get no error messages, **you are all set**. If you get error messages about missing packages, you can install the packages you need using your package manager, or try Option 1B and install Anaconda. #### Option 1B: If you don't already have Jupyter. I highly recommend installing Anaconda, which is a Python distribution that contains everything you need for this tutorial. It is easy to install on Windows, Mac, and Linux, and because it does a user-level install, it will not interfere with other Python installations. [Information about installing Anaconda is here](http://docs.continuum.io/anaconda/install.html). When you install Anaconda, you should get Jupyter by default, but if not, run conda install jupyter Then go to Option 1A to make sure you can run my code. If you don't want to install Anaconda, [you can see some other options here](http://jupyter.readthedocs.io/en/latest/install.html). #### Option 2: only if Option 1 failed. You can run my notebook in a virtual machine on Binder. To launch the VM, press this button: [![Binder](http://mybinder.org/badge.svg)](http://mybinder.org:/repo/allendowney/BayesMadeSimple) You should see a home page with a list of the files in the repository. If you want to try the exercises, open `workshop01.ipynb`. You should be able to run the notebooks in your browser and try out the examples. However, be aware that the virtual machine you are running is temporary. If you leave it idle for more than an hour or so, it will disappear along with any work you have done. Special thanks to the generous people who run Binder, which makes it easy to share and reproduce computation. ================================================ FILE: volunteer.py ================================================ """This file contains code used in "Think Stats", by Allen B. Downey, available from greenteapress.com Copyright 2013 Allen B. Downey License: GNU GPLv3 http://www.gnu.org/licenses/gpl.html """ from __future__ import print_function, division import thinkbayes import thinkplot import numpy """ Problem: students sign up to participate in a community service project. Some fraction, q, of the students who sign up actually participate, and of those some fraction, r, report back. Given a sample of students who sign up and the number who report back, we can estimate the product q*r, but don't learn much about q and r separately. If we can get a smaller sample of students where we know who participated and who reported, we can use that to improve the estimates of q and r. And we can use that to compute the posterior distribution of the number of students who participated. """ class Volunteer(thinkbayes.Suite): def Likelihood(self, data, hypo): """Computes the likelihood of the data under the hypothesis. hypo: pair of (q, r) data: one of two possible formats """ if len(data) == 2: return self.Likelihood1(data, hypo) elif len(data) == 3: return self.Likelihood2(data, hypo) else: raise ValueError() def Likelihood1(self, data, hypo): """Computes the likelihood of the data under the hypothesis. hypo: pair of (q, r) data: tuple (signed up, reported) """ q, r = hypo p = q * r signed_up, reported = data yes = reported no = signed_up - reported like = p**yes * (1-p)**no return like def Likelihood2(self, data, hypo): """Computes the likelihood of the data under the hypothesis. hypo: pair of (q, r) data: tuple (signed up, participated, reported) """ q, r = hypo signed_up, participated, reported = data yes = participated no = signed_up - participated like1 = q**yes * (1-q)**no yes = reported no = participated - reported like2 = r**yes * (1-r)**no return like1 * like2 def MarginalDistribution(suite, index): """Extracts the marginal distribution of one parameter. suite: Suite index: which parameter returns: Pmf """ pmf = thinkbayes.Pmf() for t, prob in suite.Items(): pmf.Incr(t[index], prob) return pmf def MarginalProduct(suite): """Extracts the distribution of the product of the parameters. suite: Suite returns: Pmf """ pmf = thinkbayes.Pmf() for (q, r), prob in suite.Items(): pmf.Incr(q*r, prob) return pmf def main(): probs = numpy.linspace(0, 1, 101) hypos = [] for q in probs: for r in probs: hypos.append((q, r)) suite = Volunteer(hypos) # update the Suite with the larger sample of students who # signed up and reported data = 140, 50 suite.Update(data) # update again with the smaller sample of students who signed # up, participated, and reported data = 5, 3, 1 suite.Update(data) #p_marginal = MarginalProduct(suite) q_marginal = MarginalDistribution(suite, 0) r_marginal = MarginalDistribution(suite, 1) thinkplot.Pmf(q_marginal, label='q') thinkplot.Pmf(r_marginal, label='r') #thinkplot.Pmf(p_marginal) thinkplot.Save(root='volunteer1', xlabel='fraction participating/reporting', ylabel='PMF', formats=['png'] ) if __name__ == '__main__': main() ================================================ FILE: world_cup01.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Bayesian Statistics Made Simple\n", "===\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2016 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from __future__ import print_function, division\n", "\n", "%matplotlib inline\n", "\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "import math\n", "import numpy as np\n", "from scipy.special import gamma\n", "\n", "from thinkbayes2 import Pmf, Suite\n", "import thinkplot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The World Cup Problem\n", "\n", "We'll use λ to represent the hypothetical goal-scoring rate in goals per game.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To compute prior probabilities for values of λ, I'll use a Gamma distribution. \n", "\n", "The mean is 1.3, which is the average number of goals per team per game in World Cup play." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1.3103599490022562" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from thinkbayes2 import MakeGammaPmf\n", "\n", "xs = np.linspace(0, 8, 101)\n", "pmf = MakeGammaPmf(xs, 1.3)\n", "thinkplot.Pdf(pmf)\n", "thinkplot.Config(xlabel='Goals per game')\n", "pmf.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** Write a class called `Soccer` that extends `Suite` and defines `Likelihood`, which should compute the probability of the data (the time between goals in minutes) for a hypothetical goal-scoring rate, `lam`, in goals per game.\n", "\n", "Hint: For a given value of `lam`, the time between goals is distributed exponentially.\n", "\n", "Here's an outline to get you started:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class Soccer(Suite):\n", " \"\"\"Represents hypotheses about goal-scoring rates.\"\"\"\n", "\n", " def Likelihood(self, data, hypo):\n", " \"\"\"Computes the likelihood of the data under the hypothesis.\n", "\n", " hypo: scoring rate in goals per game\n", " data: interarrival time in minutes\n", " \"\"\"\n", " return 1" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can create a `Soccer` object and initialize it with the prior Pmf:" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1.3103599490022564" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "soccer = Soccer(pmf)\n", "thinkplot.Pdf(soccer)\n", "thinkplot.Config(xlabel='Goals per game')\n", "soccer.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the update after first goal at 11 minutes." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1.3103599490022566" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "thinkplot.Pdf(soccer, color='0.7')\n", "soccer.Update(11)\n", "thinkplot.Pdf(soccer)\n", "thinkplot.Config(xlabel='Goals per game')\n", "soccer.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the update after the second goal at 23 minutes (the time between first and second goals is 12 minutes).\n" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1.3103599490022566" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "thinkplot.Pdf(soccer, color='0.7')\n", "soccer.Update(12)\n", "thinkplot.Pdf(soccer)\n", "thinkplot.Config(xlabel='Goals per game')\n", "soccer.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This distribution represents our belief about `lam` after two goals.\n", "\n", "## Estimating the predictive distribution\n", "\n", "Now to predict the number of goals in the remaining 67 minutes. There are two sources of uncertainty:\n", "\n", "1. We don't know the true value of λ.\n", "\n", "2. Even if we did we wouldn't know how many goals would be scored.\n", "\n", "We can quantify both sources of uncertainty at the same time, like this:\n", "\n", "1. Choose a random values from the posterior distribution of λ.\n", "\n", "2. Use the chosen value to generate a random number of goals.\n", "\n", "If we run these steps many times, we can estimate the distribution of goals scored.\n", "\n", "We can sample a value from the posterior like this:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "1.04" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lam = soccer.Random()\n", "lam" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Given `lam`, the number of goals scored in the remaining 67 minutes comes from the Poisson distribution with parameter `lam * t`, with `t` in units of goals.\n", "\n", "So we can generate a random value like this:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t = 67 / 90\n", "np.random.poisson(lam * t)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we generate a large sample, we can see the shape of the distribution:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.777" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nUqP+H5dHosBsj3FtAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sample = np.random.poisson(lam * t, size=10000)\n", "pmf = Pmf(sample)\n", "thinkplot.Hist(pmf)\n", "thinkplot.Config(xlabel='Goals scored', ylabel='PMF', xlim=[-0.6, 10.5])\n", "pmf.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But that's based on a single value of `lam`, so it doesn't take into account both sources of uncertainty. Instead, we should sample value values from the posterior distribution and generate one prediction for each.\n", "\n", "**Exercise:** Write a few lines of code to\n", "\n", "1. Use `Pmf.Sample` to generate a sample with `n=10000` from the posterior distribution `soccer`.\n", "\n", "2. Use `np.random.poisson` to generate a random number of goals from the Poisson distribution with parameter $\\lambda t$, where `t` is the remaining time in the game (in units of games).\n", "\n", "3. Plot the distribution of the predicted number of goals, and print its mean.\n", "\n", "4. What is the probability of scoring 5 or more goals in the remainder of the game?" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Computing the predictive distribution\n", "\n", "Alternatively, we can compute the predictive distribution by making a mixture of Poisson distributions.\n", "\n", "`MakePoissonPmf` makes a Pmf that represents a Poisson distribution." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from thinkbayes2 import MakePoissonPmf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we assume that `lam` is the mean of the posterior, we can generate a predictive distribution for the number of goals in the remainder of the game." ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nldOXmOmaAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lam = soccer.Mean()\n", "rem_time = 90 - 23\n", "lt = lam * rem_time / 90\n", "pred = MakePoissonPmf(lt, 10)\n", "thinkplot.Hist(pred)\n", "thinkplot.Config(title='Option 1', \n", " xlabel='Expected goals',\n", " xlim=[-0.5, 10.5])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The predictive mean is about 2 goals." ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.97549010518228874" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the chance of scoring 5 more goals is still small." ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.0032977689768040348" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred.ProbGreater(4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But that answer is only approximate because it does not take into account our uncertainty about `lam`.\n", "\n", "The correct method is to compute a weighted mixture of Poisson distributions, one for each possible value of `lam`.\n", "\n", "The following figure shows the different predictive distributions for the different values of `lam`." ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for lam, prob in soccer.Items():\n", " lt = lam * rem_time / 90\n", " pred = MakePoissonPmf(lt, 14)\n", " thinkplot.Pdf(pred, color='gray', alpha=0.3, linewidth=0.5)\n", "\n", "thinkplot.Config(xlabel='Expected goals')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can compute the mixture of these distributions by making a Meta-Pmf that maps from each Poisson Pmf to its probability." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [], "source": [ "metapmf = Pmf()\n", "\n", "for lam, prob in soccer.Items():\n", " lt = lam * rem_time / 90\n", " pred = MakePoissonPmf(lt, 15)\n", " metapmf[pred] = prob" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`MakeMixture` takes a Meta-Pmf (a Pmf that contains Pmfs) and returns a single Pmf that represents the weighted mixture of distributions:" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def MakeMixture(metapmf, label='mix'):\n", " \"\"\"Make a mixture distribution.\n", "\n", " Args:\n", " metapmf: Pmf that maps from Pmfs to probs.\n", " label: string label for the new Pmf.\n", "\n", " Returns: Pmf object.\n", " \"\"\"\n", " mix = Pmf(label=label)\n", " for pmf, p1 in metapmf.Items():\n", " for x, p2 in pmf.Items():\n", " mix[x] += p1 * p2\n", " return mix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the result for the World Cup problem." ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [], "source": [ "mix = MakeMixture(metapmf)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what the mixture looks like." ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "thinkplot.Hist(mix)\n", "thinkplot.Config(title='Option 2', \n", " xlabel='Expected goals',\n", " xlim=[-0.5, 10.5])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** Compute the predictive mean and the probability of scoring 5 or more additional goals." ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" } }, "nbformat": 4, "nbformat_minor": 0 } ================================================ FILE: world_cup01soln.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Bayesian Statistics Made Simple\n", "===\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2016 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from __future__ import print_function, division\n", "\n", "%matplotlib inline\n", "\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "import math\n", "import numpy as np\n", "from scipy.special import gamma\n", "\n", "from thinkbayes2 import Pmf, Suite\n", "import thinkplot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The World Cup Problem\n", "\n", "We'll use λ to represent the hypothetical goal-scoring rate in goals per game.\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To compute prior probabilities for values of λ, I'll use a Gamma distribution. \n", "\n", "The mean is 1.3, which is the average number of goals per team per game in World Cup play." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.3103599490022562" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from thinkbayes2 import MakeGammaPmf\n", "\n", "xs = np.linspace(0, 8, 101)\n", "pmf = MakeGammaPmf(xs, 1.3)\n", "thinkplot.Pdf(pmf)\n", "thinkplot.Config(xlabel='Goals per game')\n", "pmf.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** Write a class called `Soccer` that extends `Suite` and defines `Likelihood`, which should compute the probability of the data (the time between goals in minutes) for a hypothetical goal-scoring rate, `lam`, in goals per game.\n", "\n", "Hint: For a given value of `lam`, the time between goals is distributed exponentially.\n", "\n", "Here's an outline to get you started:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "class Soccer(Suite):\n", " \"\"\"Represents hypotheses about goal-scoring rates.\"\"\"\n", "\n", " def Likelihood(self, data, hypo):\n", " \"\"\"Computes the likelihood of the data under the hypothesis.\n", "\n", " hypo: scoring rate in goals per game\n", " data: interarrival time in minutes\n", " \"\"\"\n", " return 1" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Solution\n", "\n", "class Soccer(Suite):\n", " \"\"\"Represents hypotheses about goal-scoring rates.\"\"\"\n", "\n", " def Likelihood(self, data, hypo):\n", " \"\"\"Computes the likelihood of the data under the hypothesis.\n", "\n", " hypo: scoring rate in goals per game\n", " data: interarrival time in minutes\n", " \"\"\"\n", " x = data / 90\n", " lam = hypo\n", " like = lam * math.exp(-lam * x)\n", " return like" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can create a `Soccer` object and initialize it with the prior Pmf:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.3103599490022564" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "soccer = Soccer(pmf)\n", "thinkplot.Pdf(soccer)\n", "thinkplot.Config(xlabel='Goals per game')\n", "soccer.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the update after first goal at 11 minutes." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.035267756093734" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nme02YiV7SQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "thinkplot.Pdf(soccer, color='0.7')\n", "soccer.Update(11)\n", "thinkplot.Pdf(soccer)\n", "thinkplot.Config(xlabel='Goals per game')\n", "soccer.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the update after the second goal at 23 minutes (the time between first and second goals is 12 minutes).\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.6029902257702706" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "thinkplot.Pdf(soccer, color='0.7')\n", "soccer.Update(12)\n", "thinkplot.Pdf(soccer)\n", "thinkplot.Config(xlabel='Goals per game')\n", "soccer.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This distribution represents our belief about `lam` after two goals.\n", "\n", "## Estimating the predictive distribution\n", "\n", "Now to predict the number of goals in the remaining 67 minutes. There are two sources of uncertainty:\n", "\n", "1. We don't know the true value of λ.\n", "\n", "2. Even if we did we wouldn't know how many goals would be scored.\n", "\n", "We can quantify both sources of uncertainty at the same time, like this:\n", "\n", "1. Choose a random values from the posterior distribution of λ.\n", "\n", "2. Use the chosen value to generate a random number of goals.\n", "\n", "If we run these steps many times, we can estimate the distribution of goals scored.\n", "\n", "We can sample a value from the posterior like this:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.2000000000000002" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lam = soccer.Random()\n", "lam" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Given `lam`, the number of goals scored in the remaining 67 minutes comes from the Poisson distribution with parameter `lam * t`, with `t` in units of goals.\n", "\n", "So we can generate a random value like this:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "9" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t = 67 / 90\n", "np.random.poisson(lam * t)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we generate a large sample, we can see the shape of the distribution:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.8628" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nahgMkqTG/wOE3tJnrWchngAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sample = np.random.poisson(lam * t, size=10000)\n", "pmf = Pmf(sample)\n", "thinkplot.Hist(pmf)\n", "thinkplot.Config(xlabel='Goals scored', ylabel='PMF', xlim=[-0.6, 10.5])\n", "pmf.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But that's based on a single value of `lam`, so it doesn't take into account both sources of uncertainty. Instead, we should sample value values from the posterior distribution and generate one prediction for each.\n", "\n", "**Exercise:** Write a few lines of code to\n", "\n", "1. Use `Pmf.Sample` to generate a sample with `n=10000` from the posterior distribution `soccer`.\n", "\n", "2. Use `np.random.poisson` to generate a random number of goals from the Poisson distribution with parameter $\\lambda t$, where `t` is the remaining time in the game (in units of games).\n", "\n", "3. Plot the distribution of the predicted number of goals, and print its mean.\n", "\n", "4. What is the probability of scoring 5 or more goals in the remainder of the game?" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.9466000000000003" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nBxQjCnrnmmWPAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "lams = soccer.Sample(10000)\n", "scores = np.random.poisson(lams * t)\n", "pmf = Pmf(scores)\n", "thinkplot.Hist(pmf)\n", "thinkplot.Config(xlabel='Goals scored', ylabel='PMF', xlim=[-0.6, 10.5])\n", "pmf.Mean()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.087400000000000005" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "sum(scores>=5) / len(scores)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Computing the predictive distribution\n", "\n", "Alternatively, we can compute the predictive distribution by making a mixture of Poisson distributions.\n", "\n", "`MakePoissonPmf` makes a Pmf that represents a Poisson distribution." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from thinkbayes2 import MakePoissonPmf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we assume that `lam` is the mean of the posterior, we can generate a predictive distribution for the number of goals in the remainder of the game." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lam = soccer.Mean()\n", "rem_time = 90 - 23\n", "lt = lam * rem_time / 90\n", "pred = MakePoissonPmf(lt, 10)\n", "thinkplot.Hist(pred)\n", "thinkplot.Config(title='Option 1', \n", " xlabel='Expected goals',\n", " xlim=[-0.5, 10.5])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The predictive mean is about 2 goals." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.9377241975748247" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the chance of scoring 5 more goals is still small." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.047208117119541912" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pred.ProbGreater(4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But that answer is only approximate because it does not take into account our uncertainty about `lam`.\n", "\n", "The correct method is to compute a weighted mixture of Poisson distributions, one for each possible value of `lam`.\n", "\n", "The following figure shows the different predictive distributions for the different values of `lam`." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for lam, prob in soccer.Items():\n", " lt = lam * rem_time / 90\n", " pred = MakePoissonPmf(lt, 14)\n", " thinkplot.Pdf(pred, color='gray', alpha=0.3, linewidth=0.5)\n", "\n", "thinkplot.Config(xlabel='Expected goals')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can compute the mixture of these distributions by making a Meta-Pmf that maps from each Poisson Pmf to its probability." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "metapmf = Pmf()\n", "\n", "for lam, prob in soccer.Items():\n", " lt = lam * rem_time / 90\n", " pred = MakePoissonPmf(lt, 15)\n", " metapmf[pred] = prob" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`MakeMixture` takes a Meta-Pmf (a Pmf that contains Pmfs) and returns a single Pmf that represents the weighted mixture of distributions:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": true }, "outputs": [], "source": [ "def MakeMixture(metapmf, label='mix'):\n", " \"\"\"Make a mixture distribution.\n", "\n", " Args:\n", " metapmf: Pmf that maps from Pmfs to probs.\n", " label: string label for the new Pmf.\n", "\n", " Returns: Pmf object.\n", " \"\"\"\n", " mix = Pmf(label=label)\n", " for pmf, p1 in metapmf.Items():\n", " for x, p2 in pmf.Items():\n", " mix[x] += p1 * p2\n", " return mix" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the result for the World Cup problem." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "mix = MakeMixture(metapmf)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what the mixture looks like." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nrkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "thinkplot.Hist(mix)\n", "thinkplot.Config(title='Option 2', \n", " xlabel='Expected goals',\n", " xlim=[-0.5, 10.5])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** Compute the predictive mean and the probability of scoring 5 or more additional goals." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1.9377505061485507, 0.08565013621838527)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "mix.Mean(), mix.ProbGreater(4)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "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.6.4" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: world_cup02.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "The World Cup Problem: Germany v. Argentina\n", "-------------------------------------------\n", "\n", "Copyright 2016 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT\n", "\n", "This notebook contains a solution to the following problem:\n", "\n", "> In the final match of the 2014 FIFA World Cup, Germany defeated Argentina 1-0. How much evidence \n", "> does this victory provide that Germany had the better team? What is the probability that Germany\n", "> would win a rematch?\n", "\n", "Scoring in games like soccer and hockey can be modeled by a Poisson process, which assumes that each team, against a given opponent, will score goals at some goal-scoring rate, $\\lambda$, and that this rate does not vary; in other words, the probability of scoring a goal is about the same at any point during the game.\n", "\n", "Based on this modeling decision, we can answer the questions by\n", "\n", "1. Defining a prior distribution for each team's goal-scoring rate against the other,\n", "2. Updating the prior based on the outcome of the game,\n", "3. Using the posterior distributions to compute the probability that Germany's goal-scoring rate is higher.\n", "4. Generating a predictive distribution for the number of goals each team would score in a rematch.\n", "\n", "My solution uses the ThinkBayes2 framework, which is described in [Think Bayes](http://thinkbayes.com), and summarized in [this notebook](http://nbviewer.ipython.org/github/AllenDowney/ThinkBayes2/blob/master/code/framework.ipynb).\n", "\n", "I'll start with Step 2.\n", "\n", "### Step 2: Updating\n", "\n", "If goal-scoring is a Poisson process, the distribution of goals per game is Poisson with parameter $\\lambda$. To compute the distribution of $\\lambda$ we can define a new class that inherits from `thinkbayes2.Suite` and provides an appropriate `Likelihood` function:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# first a little house-keeping\n", "from __future__ import print_function, division\n", "\n", "% matplotlib inline\n", "\n", "import numpy as np\n", "import thinkplot\n", "import thinkbayes2" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "class Soccer2(thinkbayes2.Suite):\n", " \"\"\"Represents hypotheses about goal-scoring rates.\"\"\"\n", "\n", " def Likelihood(self, data, hypo):\n", " \"\"\"Computes the likelihood of the data under the hypothesis.\n", "\n", " hypo: goal rate in goals per game\n", " data: interarrival time in minutes\n", " \"\"\"\n", " # FILL THIS IN!\n", " return 1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`Likelihood` computes the likelihood of `data` given `hypo`, where `data` is an observed number of goals, and `hypo` is a hypothetical goal-scoring rate in goals per game. We can compute the likelihood of the data by evaluating the Poisson probability mass function (PMF).\n", "\n", "Now we can get back to Step 1.\n", "\n", "### Step 1: Constructing the prior\n", "\n", "Before the game starts, what should we believe about each team's goal scoring rate against each other? We could use previous tournament results to construct the priors, but to keep things simple, I'll just use the average goal-scoring rate from all matches in the tournament, which was 2.67 goals per game (total for both teams).\n", "\n", "To construct the prior, I use a gamma distribution with a mean of 1.34 goals per game." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.3103599490022562" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from thinkbayes2 import MakeGammaPmf\n", "\n", "xs = np.linspace(0, 8, 101)\n", "pmf = MakeGammaPmf(xs, 1.3)\n", "thinkplot.Pdf(pmf)\n", "thinkplot.Config(xlabel='Goals per game')\n", "pmf.Mean()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "suite = Soccer2(pmf)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYkAAAEPCAYAAAC3NDh4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd4VFX6wPHvOzPpCSGEEmpAEAGl96LEFRFFxLKroj/B\n1bVjXV3L7gq63dXVVdeuKCiCqKysBbAFBQFBpAihSG+hEwjpyfn9MTeTIWSSCWRyJzfv53nmyb13\nzr33nRDuO+ece88RYwxKKaVURVx2B6CUUip8aZJQSikVkCYJpZRSAWmSUEopFZAmCaWUUgFpklBK\nKRVQyJOEiIwQkbUisl5EHgxQ5lkR2SAiy0Wkp9/2LSKyQkR+FJHvQx2rUkqp43lCeXARcQHPA+cB\nu4AlIvKRMWatX5kLgfbGmNNFpD/wIjDAersESDPGHAplnEoppSoW6ppEP2CDMWarMaYQmAaMLldm\nNDAZwBizGEgUkWbWe1ILMSqllAog1BfglsB2v/Ud1rbKyuz0K2OAz0VkiYjcFLIolVJKVSikzU01\nYLAxZreINMGbLDKMMfPtDkoppeqLUCeJnUAbv/VW1rbyZVpXVMYYs9v6uU9EZuJtvjohSYiIDkCl\nlFLVZIyRqsqEurlpCdBBRFJFJBK4GphVrswsYCyAiAwADhtj9ohIrIjEW9vjgOHAT4FOZIwJ69eE\nCRNsj0Hj1Dg1To2z9BWskNYkjDHFIjIemIs3Ib1ujMkQkVu8b5tXjDGfishFIvIzcAz4tbV7M2Cm\nVUvwAO8YY+aGMl6llFLHC3mfhDFmNnBGuW0vl1sfX8F+m4EeoY1OKaVUZfT20lqSlpZmdwhB0Thr\nlsZZszTO2ifVaZsKVyJinPA5lFKqtogIJoiO63C/BVYpVUe0bduWrVu32h2GKic1NZUtW7ac9P5a\nk1BK1Qjrm6ndYahyAv27BFuT0D4JpZRSAWmSUEopFZAmCaWUUgFpklBKKRWQJgmlVL0xbdo0BgwY\nQHx8PCkpKQwcOJAXX3zR7rDCWr1LEvNXbefel9P5/aT5HM3JtzscpVQteeqpp7j33nt58MEH2bNn\nD5mZmbz00kt89913FBYWVutYxcXFIYoy/NSLJJGdW8CTM5Zy/h8+Yvwb3/P12gN8snIPl/91Nmu3\nH7A7PKVUiB05coQJEybw4osvctlllxEXFwdA9+7dmTJlChERERQUFHD//feTmppK8+bNuf3228nP\n936RnDdvHq1bt+aJJ56gefPm3HDDDb5t//znP2nWrBktW7bko48+4rPPPuOMM86gcePG/O1vf/PF\nsGTJEgYNGkRSUhItW7bkzjvvpKioyPe+y+Xi5ZdfpmPHjjRq1Ijx472jFRUWFpKcnMzq1at9Zfft\n20dcXBwHDoT++lUvHqa74ZkvWb8354Tt+44VMe7f8/jDFd0YNbCDDZEpVT9ccfdLNXq8D/59a7XK\nL1y4kIKCAi655JKAZR588EE2b97MypUr8Xg8XHPNNTz++OP85S9/ASAzM5PDhw+zbds2SkpKWLRo\nEZmZmRQUFLBr1y4mTZrETTfdxPDhw/nxxx/ZsmULffr04ZprriE1NRW3280zzzxD37592b59Oxde\neCEvvPACd911ly+GTz75hB9++IHDhw/Tu3dvLrnkEoYPH86YMWN4++23fUnn3XffZdiwYSQnJ5/E\nb696HF+TWLV533EJwi3QsWksLusRkvxiw6PvreDlT5bbFKFSKtT2799P48aNcbnKLnmDBw8mKSmJ\nuLg4vvnmG1599VWefvppEhMTiYuL46GHHuLdd9/1lXe73Tz22GNEREQQFRUFQGRkJI888ghut5ur\nr76a/fv3c8899xAbG0uXLl3o0qULK1asAKBXr17069cPEaFNmzbcfPPNzJs377g4H374YRISEmjd\nujXnnnsuy5d7r0tjx45l6tSpvnJTpkzhuuuuC9nvy5/jaxJvfr7Gt9wmKYrX7jyXpklxzF26mQnT\nfyS3yGCAV7/cyNBurenUOvSZWSlVu5KTk9m/fz8lJSW+RLFgwQIA2rRpw969e8nJyaF3796+fUpK\nSo57UrlJkyZERESccFwR7zfOmJgYAJo2bep7PyYmhuzsbAA2bNjAfffdx9KlS8nNzaWoqOi48wE0\na9bMtxwbG+vbt1+/fsTFxTFv3jxSUlLYuHFjpbWimuToJJGXX8iCDWVtdmPObk/TJG9b5PA+7Wjf\noiE3PpfO4bwSigw89OYiPvz9hcd921BKnbrqNg/VtIEDBxIVFcVHH33EZZdddtx7xhiSk5OJjY1l\n9erVNG/evMJjlCaDk3XbbbfRq1cvpk+fTmxsLP/+97/54IMPgt5/3LhxTJkyhZSUFH75y18SGRl5\nSvEEy9FXw+nz1pFX5P0mEBchXDGk43Hvt2+RxB+v7IXgLbPlYB7/maXNTko5TWJiIo8++ii33347\nH3zwAdnZ2RhjWL58OTk5Objdbm666Sbuuece9u3bB8DOnTuZO7fm5jk7evQoDRo0IDY2lrVr11b7\n1ttrr72WmTNn8s477zB27Ngai6sqjk4S/11cNiLlkDOaEBnhPqHMeT1TOadjWRPTlG83sznzcK3E\np5SqPQ888AD/+te/eOKJJ0hJSSElJYXbbruNJ554gkGDBvH3v/+dDh06MGDAABo2bMjw4cNZv359\ntc5Rvrbhv/7kk0/yzjvv0KBBA2655RauvvrqoPcFaNWqFb169UJEGDJkSLXiOhWOHQU2Y+t+xjzj\n7RQSDNPvO5eOAfobjubkc/Hjn5KVXwJ4O7anPXiBNjspVQ06Cmzo3XjjjbRs2ZLHH3886H10FNgA\n3phb1mHdLjkmYIIASIiN4oFLu/rW1+/N4ZPFm0Ian1JKVceWLVuYOXMmN954Y62e15FJwtthvd+3\nfvmAdlXuc/GADvRq08C3/tKcDEpKSkISn1JKVcejjz5Kt27d+N3vfkdqamqtntuRzU1zl27md+8s\nAyDGI3z951FER0UE2t1n7fYDjPlXOqVHmvjLblw6+PRQhKyU42hzU3jS5qYKbNhV1vHcvmlcUAkC\noFPrZPq2TfStvzJ3rdYmlFL1miOTxJY9R33LLZNiqrXv/Zf39D2NvetIAf/97ueaDE0ppeoURyaJ\nXYfKhuFo0zShWvt2bJ1Mv7YNfetam1BK1WeOTBL7jhb4lk9v0bCSkhW7/4pevtpE5tFCZi7Q2oRS\nqn5yXJIoKSnhcE7Z2PCd2zSq9jE6tExiwGlJvvXJX1fvgRqllHIKxyWJzIPHKLBahzwCLRtXr7mp\n1F2ju/uG69h6KJ/FGbtqKkSllDrO/Pnz6dy5s91hVMhxSSJj+0HfclKs56Sfmu7UOpnOzeN96y/P\nXl1JaaVUXZGWlkajRo2qPRtdTXK5XGzaVPbA7pAhQ8jIyLAtnso4Lkls2HnIt9w4IeqUjnXDeZ18\ny8u3H2H73qxTOp5Syl5bt25l/vz5uFwuZs2aFbBcqG9WOdURZWuT45LElr1lt7+2qObtr+UN692W\nlATvMxYlBv7z8cpTOp5Syl6TJ09m4MCBXH/99bz55pu+7b/+9a+5/fbbGTlyJAkJCaSnp3Pw4EFG\njRpFYmIi/fv3549//CNnn322b5+1a9cyfPhwkpOT6dy5MzNmzDjueOPHj+fiiy+mQYMGDBw4kM2b\nNwMwdOhQjDF069aNBg0aMGPGDN9UqKXatWvHU089Rffu3UlKSmLMmDEUFHhvyDl8+DCjRo2iadOm\nJCcnM2rUKHbtCl1zuOPmk9h1sOz217bVvP21Ir8a1Jbn5mwAID1jH9m5BcTH1M447ko5xW9eW1qj\nx3vtN31Oar/Jkydz//3307dvXwYMGMC+ffto0qQJ4J0S9LPPPmPAgAHk5+czbtw4EhIS2Lt3L5s2\nbeKCCy6gbdu2AOTk5DB8+HD+/Oc/M2fOHFauXMmwYcPo2rUrnTp5WyCmT5/O7Nmz6dmzJ2PHjuX3\nv/89U6dOZd68ebhcLlatWkW7dt4hg+bNm3dC7WLGjBnMnTuXqKgoBg0axJtvvsnNN99MSUkJN9xw\nA++//z5FRUXccMMNjB8/ng8//PAkf5uVc1xNYu+RfN9y++aJlZQMznXnnUlchPcfL6/IMGnOT6d8\nTKVU7Zs/fz7btm3jyiuvpFevXnTo0OG4KUFHjx7NgAEDAIiIiODDDz/k8ccfJyoqis6dOzNu3Dhf\n2Y8//ph27doxduxYRITu3btzxRVXHFebuOyyy+jduzcul4trr73WNxVpqaqGMLn77rtp1qwZDRs2\nZNSoUb79GzVqxGWXXUZUVBRxcXE8/PDDJ0yDWpMclyQO+d3+ekbr6t/+Wl5khJsR3Vv41v+7ZJs+\nXKdUHTR58mSGDx9OUpL39vYxY8bw1ltv+d73b+7Zt28fxcXFtGrVqsL3t27dyqJFi2jUqBGNGjUi\nKSmJqVOnsmfPHl+ZlJQU37L/VKTBCjSVaW5uLrfccgtt27alYcOGDB06lMOHD4ds3CxHNTftPXSM\n/GLvslugXcqp1yQAbr24G//9YSfFBg7kFPPFsq0M71P1yLJKKa+TbR6qKXl5ebz33nuUlJT4pifN\nz88nKyuLlSu9fY3+zT1NmjTB4/GwY8cOOnToAMD27dt977du3Zq0tDTmzJlTi5/C68knn2TDhg0s\nWbKEJk2asGLFCnr16oUxJiQd4o6qSWRsLZvPOjHGXWOTBjVJjKVXalnCmZKuD9cpVZfMnDkTj8dD\nRkYGK1asYMWKFaxdu5azzz6byZMnn1De5XJx+eWXM3HiRHJzc1m7du1x5S6++GLWr1/P22+/TVFR\nEYWFhSxdupR169YFFU9KSspxt8BWR3Z2NjExMTRo0ICDBw8yceLEkzpOsByVJPxHf20Sf2q3v5Z3\nvd/tsKt3ZbNj39FKSiulwsnkyZO54YYbaNmyJU2bNvW97rjjDqZOnUpxcfEJ+zz33HMcPnyY5s2b\nM27cOK655hqiorzXlfj4eObOncu0adNo0aIFLVq04KGHHiI/P/+E41Rk4sSJjB07lkaNGvH++++f\n8H5lNYJ77rmHnJwcGjduzKBBg7jooouC/C2cnJDPJyEiI4Bn8Cak140x/6igzLPAhcAx4HpjzHK/\n91zAUmCHMeaSAOcwxhj+8OYCPl6RCUDaGck8c2tajX6WEY/OIvOot89jdM/mPDZ2UI0eX6m6zOnz\nSTz00EPs2bOHSZMm2R1KtYT1fBLWBf554ALgTGCMiHQqV+ZCoL0x5nTgFuClcoe5G1hDEHb63f7a\nunF8JSVPzqX92viWv1q9h6KiE799KKWcYd26daxatQqA77//ntdff53LL7/c5qhqX6ibm/oBG4wx\nW40xhcA0YHS5MqOByQDGmMVAoog0AxCRVsBFwGvBnGxPVp5vuSZufy3v/87rQpTbu3y0oIT352+o\n8XMopcLD0aNHufzyy4mPj2fMmDE88MADjBo1yu6wal2o725qCWz3W9+BN3FUVmantW0P8DTwABDU\nFd//9tdOJzH6a1XiYyIZ2CGZ9HXeDvIZCzZxdVqnKvZSStVFffr0YcMG/SIYtrfAishIYI8xZrmI\npAGVtp09+PDv2fyt9x80ofWZdGh+aUjiuvGCM0lf9w0Am/bnkLF1P51TG4fkXEopVVPS09NJT0+v\n9n6hThI7gTZ+662sbeXLtK6gzC+BS0TkIiAGSBCRycaYsRWd6JJrb2NO3mIAGka78HjcNfMJyuna\nrgmnJUez6UAeBuGNuWv4503nhORcSilVU9LS0khLS/OtP/bYY0HtF+o+iSVABxFJFZFI4Gqg/NCL\ns4CxACIyADhsjNljjHnEGNPGGHOatd9XgRIEwIZdfqO/1vDtr+Vd2r+tb3nBhv3k5ds35LBSSoVS\nSJOEMaYYGA/MBVYD04wxGSJyi4jcbJX5FNgsIj8DLwO3n8y5NmeWPbeQcoqjv1blynM6EuPxtn7l\nFBre/1bbLZVKTU1FRPQVZq/U1NRT+ncNeZ+EMWY2cEa5bS+XWx9fxTHmAZWOYLU3K9e33CIpttpx\nVkd0VARDOjbm8zX7APhw0Wb+b1iXkJ5TqXC3ZcsWu0NQIeCYJ64Li8sG3YuJDE1/hL8bhpclhc0H\nclm7/UAlpZVSqm5yTJLwyxF43KH/WJ1TG9OuUTQABmHS3KCe91NKqTrFQUmiLEtEeGrnY13av6yt\n79t1+ygo1CewlVLO4pgkUVRSNjaJp4ZGf63KVUPPOK4De8a3wY0AqZRSdYVjkkSJX5KorZpEdFQE\ng05P9q3PXLilVs6rlFK1xTFJoqjYryZRS0kC4PrzyzqwN+7P4eedhyoprZRSdYtjkkSJ31C4EbXU\n3ATeJ7DbJHkf3vN2YK+utXMrpVSoOSZJ+PdJREaE/hZYf5f0KRt5ZN7afTqEuFLKMRyTJPz7JDzu\nmp/ntTLX/KKzbwjx7IISZn73c62eXymlQsUxSeK4mkSIBvcLJDY6gv6nlQ1N/uF3Jzd3rVJKhRvH\nJAm/HFFrdzf5Gzess2957Z4ctu/NqvUYlFKqpjkmSfg/TFfbNQmA3h1TaNEgEgADvDZbO7CVUnWf\nY5KEf03C4679JAEwsncr33L6mj2U+CUupZSqixyUJMqyRFSkPR9r7LAulJ46K7+ETxZr34RSqm5z\nTpLw+9IeYVNNIiE2it5tG/rWp8/faEscSilVU5yTJPxrErX8nIS/sed18i2v2Z3Nrv1HKymtlFLh\nzTFJotjmu5tKDezSkpSECMDbT/KGPoGtlKrDHJMk/Duu7axJAIzsVdaB/eWqTO3AVkrVWc5JEn5Z\nwl0Lkw5VZuywLlgjiHMor5g5S7fYGo9SSp0s5yQJv+Vom2sSifHR9EpN9K1P+3aDjdEopdTJc0yS\nMP6jwNpckwAY+4szfMurdmaTeTDbxmiUUurk2H81rSGGskH9ansU2IoM6dqaJnEewNtfokOIK6Xq\nIsckiVICuGpxPonKXNSzpW957srd2oGtlKpzwuNqWoNctTtKeKWuH35mWQd2bjGzl2y2NyCllKom\nTRIhlJQQc1wH9rvf6jwTSqm6RZNEiI3zewJ79S59AlspVbc4MEmEV5YYfFYrmsWXPYH9+hztwFZK\n1R0OTBJ2R3Cii/2GEP/iJ+3AVkrVHY5LEu4wzBJjh3UhonQI8TwdQlwpVXc4LkmEYY4gMT6aPn5D\niGsHtlKqrnBgkgjDLAFcP6yLbzlj9zE2Zx62MRqllAqO45JEODY3AfTv3JxWiX5zYH/2k70BKaVU\nEByXJMK1JgFwab9U33J6xl4KCottjEYpparmuCQRrjUJgP87rzPR1iPYxwoN09LX2hyRUkpVznFJ\nIkyGbapQdFQEZ3ds7Fv/cNEW+4JRSqkghPySKiIjRGStiKwXkQcDlHlWRDaIyHIR6WFtixKRxSLy\no4isEpEJwZzPE85ZArhpxJkI3mHNtxzMY/nGPTZHpJRSgYX0iioiLuB54ALgTGCMiHQqV+ZCoL0x\n5nTgFuAlAGNMPnCuMaYn0AO4UET6VXXOMG5tAqBj62RObxrnW39jzhobo1FKqcoFlSRE5GQnaOgH\nbDDGbDXGFALTgNHlyowGJgMYYxYDiSLSzFrPscpEAR7AUAVPGEw4VJWrhrT3LS/aeJCs7Dwbo1FK\nqcCCvaJuEJF/ikiXqosepyWw3W99h7WtsjI7S8uIiEtEfgQygc+NMUuqOqE7zGsSAJcN7kBilPdX\nX1ACb8zR22GVUuEp2CTRHVgPvCYii0TkZhFpEMK4ADDGlFjNTa2A/sEkKXcdqEm4XC5G9GjhW//f\nDzt0PCelVFjyBFPIGHMUeBV4VUSGAlOBp0XkfeBPxphA40zsBNr4rbeytpUv07qyMsaYIyLyNTAC\nqLARP3PhdG/ZBpGk940iLS0tiE9mn99c2JUPvt9BkYGDucV8sngTowZ2sDsspZRDpaenk56eXu39\nxJgqm/lL+yRGAr8G2gJTgHeAs4G/GmM6VrLfOuA8YDfwPTDGGJPhV+Yi4A5jzEgRGQA8Y4wZICKN\ngUJjTJaIxABzgL8bYz6t4Dym+z3vA9C7TQNev/f8YD+/rW577ksWbvIOz9GxaSzvPXyhzREppeoL\nEcEYU2UDfdB9Eng7mP9pjOlpjPmXMWaPMeZ9YHagnYwxxcB4YC6wGphmjMkQkVtE5GarzKfAZhH5\nGXgZuN3avTnwtYgsBxYDcypKEOWF88N05d004kzf8oa9x8jYut/GaJRS6kRBNTcBY40x8/03iMhg\nY8wCY8xdle1ojJkNnFFu28vl1sdXsN8qoFeQ8fnUpSTR6/QU2jWKZvPBPAzCy5/9xDO3ptkdllJK\n+QRbk3i2gm3P1WQgNSWiDnRc+7vq7LLbYb/bcEBvh1VKhZVKr6giMlBEfgs0EZH7/F4TgZN9diKk\n3HXhHlg/V57T8bjbYV+brbfDKqXCR1VfuyOBeLzNUgl+ryPAL0Mb2skJ92E5yjvxdtjtejusUips\nVNonYYyZB8wTkTeNMVtrKaZTUtdqEgC3juzGh0t2UFgCh/NKeO+b9Vyd1qnqHZVSKsSqam56xlp8\nXkRmlX/VQnzVVtf6JACSEmIYfHqyb33qNzq9qVIqPFR1d9MU6+eToQ6kpnjq0N1N/m4d2ZV5677G\nIGw7lM/CNTsZ2KX8CCZKKVW7qmpu+sH6Oa92wjl1EZ6w7E+vUqfWyXRuHs+a3ccAeGX2Gk0SSinb\nVdXctEpEVgZ61VaQ1VEX+yRK3Xh+Z9/yih1H2Jx52MZolFKq6uami2slihoUWQf7JEqd1zOV5v9d\nwe4jhZQYeOF/K/nnTefYHZZSqh6r9IpqzQMR8FVbQVZHXZhPojJXDW7nW563br8+XKeUslVVzU3z\nrZ9HReRI+Z+1E2L1eOpwcxPA//2iS9nDdcWG//xvhc0RKaXqs6pqEkOsnwnGmAblf9ZOiNUT4a6b\nHdelPB43l/QpGzn9kx93kpdfaGNESqn6LOi2GRHpJSJ3icidItIzlEGdCo+nbtckAG4Z2Y1o63Mc\nKzS8+flqmyNSStVXwc5x/SjwFpAMNAbeFJE/hDKwk1VXb4H1Fx8TyflnNfOtv7dwiw7VoZSyRbA1\niWuBvsaYCcaYCcAA4LrQhXXyIurY2E2B3DGqO6WVooM5xbz/zXp7A1JK1UvBXlF3AdF+61GcOA1p\nWIiMqPs1CYCURvEM6tDItz553gYbo1FK1VdV3d30nIg8C2QBq0XkTRGZBPwEhOWTXnX97iZ/d43u\nQemn2XG4gDlLNtkaj1Kq/qnqYbql1s8fgJl+29NDEk0NiHRAn0SpDi2T6NmmAcu2ee82fnlOBhf0\nPc3mqJRS9UlVYze9VVuB1JQIjzP6JErddUk3fv38txiETQfymLd8G0N7tLE7LKVUPRHs3U2ni8j7\nIrJGRDaVvkId3MlwUk0CoEf7ZpzZIsG3/sJnejusUqr2BPu1exLwIlAEnAtMBt4OVVCnwlPHH6ar\nyJ0Xd/Mtr9ubw+KMXTZGo5SqT4JNEjHGmC8BscZtmgiMDF1YJy8q0lnNTQD9OzenU7NY3/pzH6+y\nMRqlVH0S7BU1X0RcwAYRGS8il+Gd+zrsuB3ynER5t190lm959a6jLN+4x8ZolFL1RbBX1LuBWOAu\noDfeB+nGhSqoUxHlsI7rUud0a81pyd5HVQzCUzOX2xyRUqo+COqKaoxZYozJBo4AdxljLjfGLApt\naCcnwiEP01XkjpFltYmfdh7lh/WZNkajlKoPgr27qY+IrAJWAqtEZIWI9A5taCcnymF3N/k7r2cq\n7RvHAFZt4r9am1BKhVawbTNvALcbY9oaY9oCd+C94ynsOLkmAXCXX21ize5jeqeTUiqkgk0SxcaY\nb0tXjDHz8d4OG3aiHZ4khvZoQ8emZXc6Pf2RTkqklAqdqsZu6iUivYB5IvKyiKSJyFAReYEwHZoj\noo5PXxqMu0d19S2v3ZPD/FXbbYxGKeVkVY3d9FS59Ql+y6aGY6kRThkFtjKDz2pF52aryNiTA8DT\ns1YxpGvrKvZSSqnqq2rspnNrK5CaIIDLoc9JlHfP6B7c+soCDMLG/bl8ungjF/Vvb3dYSimHCfbu\npkQR+ZeILLVeT4lIYqiDqy6Xc0YJr1L/zs3p1qpsTKdnP1mts9cppWpcde5uOgpcab2OEIZ3N9Wn\nJAHw8JV9fJ8582ghU79aa29ASinHCTZJtLemLt1kvR4Dwm5ig/qWJDq1Tj5u9rrXv1pPQWGxjREp\npZwm2CSRKyJDSldEZDCQG5qQTp5L6lmWAB76VR8irH/FQ7nFvPyJ3hKrlKo5wSaJW4H/iMgWEdkC\nPA/cErKoTlJ9q0kAtGqSwPCzmvnWp323haM5+TZGpJRykiqThDX66xnGmO5AN6CbMaanMWZlMCcQ\nkREislZE1ovIgwHKPCsiG0RkuYj0sLa1EpGvRGS1iKwSkbuq/DD1sCYB8Ltf9SHG4/3sxwoN/3hv\naRV7KKVUcKpMEsaYEuB31vIRY8yRYA9uJZjngQuAM4ExItKpXJkL8fZ5nI63dvKS9VYRcJ8x5kxg\nIHBH+X3LqwfP0VUoMT6aKweUTWk6e2UmmzMP2xiRUsopgr2sfiEi94tIaxFpVPoKYr9+wAZroqJC\nYBowulyZ0XhnusMYsxhIFJFmxphMY8xya3s2kAG0rPTD1NOaBMCdo3uSHOt9kLDIwJ/fXWJzREop\nJwg2SVwF3A7MA5b6varSEvAfM2IHJ17oy5fZWb6MiLQFegCLKzuZuz52Slg8Hjd3XnSmb33ZtiwW\n/LTDxoiUUk4QbJLoAvwHWAEsB57D23wUciISD7wP3G3VKAKqzzUJgEsHn04Hv6HE//7Bcn3ATil1\nSqoau6nUW3gfoHvWWr/G2nZlFfvtBNr4rbeytpUv07qiMiLiwZsgphhjPqrsRJkLp3Msys3EictI\nS0sjLS2titCc6eFf9eI3Ly7AANsP5zPlizWMG35WlfsppZwtPT2d9PT0au8nxlQ9Tp+IrDHGdKlq\nWwX7uYF1wHnAbuB7YIwxJsOvzEXAHcaYkSIyAHjGGDPAem8ysN8Yc18V5zHd73mfVg0j+XjCqCo/\nj9Pd/vziB0NmAAAZa0lEQVRXfLfxEADxkS4+m3ARCbFRNkellAonIoIxpsrml2Cbm5ZZF/DSg/cn\niD4JY0wxMB6YC6wGphljMkTkFhG52SrzKbBZRH4GXgZus84xGLgW+IWI/Cgiy0RkRGXn89STwf2q\n8ug1/Yhye//tswtK+PPUSrtylFIqoGCbm3oD34nINmu9DbDOmtLUGGO6BdrRGDMbOKPctpfLrY+v\nYL8FQLXG/a7H/dbHSWkUzzWDU5n0zRYAPl+zj//bvI+u7ZrYG5hSqs4J9qv3CKAdMNR6tbO2XQyE\nTfuOp74+KFGBO0f3JCUhAoASA49N1VtilVLVF9RV1XrOIeAr1EEGy601CR+Xy8XDl/dArLmhft6f\ny7tfZ1Sxl1JKHc9RX71d2t50nKE92tC3bUPf+guz15KVnWdjREqpusZRScKjVYkTPH7dAKKsnp2j\nBSU8OmWhvQEppeoURyUJt97ddIKURvFcP7Rs6o9v1h/gm5XbK9lDKaXKOOqq6tHmpgrdMrI7qUne\n5yQMwp/eW6aTEymlguKoJFGfx26qjMvl4s/X9fd17O87VsQTM/RuJ6VU1RyVJCL0FtiAurZrwsge\nzX3rM5fuZNXmfTZGpJSqCxx1VXVrx3WlHrmqr2848WIDD7+1SAcAVEpVylFJQoflqFx0VAQTrupN\naSrdkVXAP97TZielVGCOuqpqTaJq53RrzfAzy4bneP/7HazcuNfGiJRS4cxRSUL7JILz2HUDj2t2\nemjyYoqK9G4npdSJHHVV1VtggxMdFcHjY/r4mp12HSngL+/qSLFKqRM5Kkm4tSYRtMFnteKCrk19\n6x/9uJv5q/QhO6XU8Rx1VdVRYKtn4rUDjhsp9g9Tl+rYTkqp4zjqqqp9EtUTHRXBP389EI/V7nQ4\nr4QHXp9vb1BKqbDiqKtqpMdRH6dWdG3XhOuHtvOtf78li7e/WGNjREqpcOKoq6qOAntybh/Vg84p\ncb71Z2evZe32AzZGpJQKF45KEhHuas12qiwul4unbxpCXIQ3yRYUG+55dQF5+YU2R6aUspujkoTH\nozWJk5XSKJ7Hrurluy0282gh92v/hFL1nqOSRIRHaxKnYljvtlzRt6Vvff6Gg7w19ycbI1JK2c1Z\nSULHbjplj1zdj45NY33rz89Zx/KNe2yMSCllJ0ddVSMjtCZxqlwuF8/feg4Jkd4/jcISuPe1hRzI\nyrU5MqWUHRyVJPTupprRNCmOv1/X1zdJ0aG8Ym57IV2HFVeqHnJUkojUPokaM/isVtx6Xgff+vq9\nOTzy5gIbI1JK2cFRSULHbqpZN43sTtoZyb712av28ubcVTZGpJSqbY66qkbpE9c17okbz6Zto2jf\n+nOz1/Plj1ttjEgpVZscdVXVW2BrXmSEm5fuGEpitPdPpdjA76f+oE9kK1VPOCxJOOrjhI2URvE8\n95vBRFk5OK/IcNuL37IvK8fewJRSIeeoq6rWJEKnW/umTLyyJ6XzOh3KLebGf39FTp4O3aGUkzkq\nSWifRGhd2O80bjmvvW9926F8bvz3lzr1qVIO5qiraoQ+TBdyt4zswageKb71jMxj3KHPUCjlWI5K\nElHa3FQrHrtuIENOb+RbX7z5MA9P0mcolHIiRyUJrUnUDpfLxbO3DqVry3jftjk/7eWxKd/ZGJVS\nKhQclSSiNUnUGpfLxat3/oLTksueoZi5bDd/fXexjVEppWqao5KEznFdu6KjInjrvmG0bhjl2/be\n9zt4csZSG6NSStWkkF9VRWSEiKwVkfUi8mCAMs+KyAYRWS4iPf22vy4ie0RkZTDn0lFga19CbBRv\n/3YYLRpE+ra9/d1WTRRKOURIk4SIuIDngQuAM4ExItKpXJkLgfbGmNOBW4AX/d6eZO1b9bnwNoGo\n2pcYH82U+4aRkhDh2/b2d1u16UkpBwj1VbUfsMEYs9UYUwhMA0aXKzMamAxgjFkMJIpIM2t9PnAo\nmBO5dJRwWyUnxjDlt8cnive+38Ef39K7npSqy0KdJFoC2/3Wd1jbKiuzs4IyVdIkYb8mibG889vz\naZlY1vT0v+WZ/PaVefochVJ1lMfuAGrKroXTmTjRO4x1WloaaWlp9gZUTyUnxjD1/vMZ+68v2Hoo\nH4AvM/Zz4zNf8uIdaURHRVRxBKVUKKSnp5Oenl7t/cQYU/PRlB5cZAAw0Rgzwlp/CDDGmH/4lXkJ\n+NoYM91aXwsMNcbssdZTgf8ZY7pVch4z4P4PWPjPy0P2WVT1ZOcWcP2/vuDn/WXTnrZvHMMbd/+C\nxPjoSvZUStUGEcEYU2UbTKibm5YAHUQkVUQigauBWeXKzALGgi+pHC5NEBaxXpXS5qbwEh8TydTf\nXUDvNg182zbuz+WqJ+ayfW+WjZEppaojpEnCGFMMjAfmAquBacaYDBG5RURutsp8CmwWkZ+Bl4Hb\nS/cXkanAd0BHEdkmIr8OdC6XaJYIN5ERbl69+zzO79LEty3zaCFjnvqKxRm7bIxMKRWskDY31RYR\nMUMf+pD0v11mdygqgCdnLOWd77ZgrEqhR+D+S87k6rROVeyplAqFcGluqjVakwhv9/+qD49c1pUI\n6y+uyMA/PvqJCZO/0zuflApjjkkSbu2UCHu/OucMnv/NIBIivX92BuGjH3dz7RNzOHQ0t4q9lVJ2\ncEyS0JpE3dC/c3PevX/Ycc9SZOzJ4fK/zmHZhkwbI1NKVcQxSUJrEnVHqyYJfPDwCAZ3SPJtO5RX\nzE0vLuA/s360MTKlVHmOSRI6bFPdEh0VwX/u+AW3ntcet5Xfiw28+vUmxj2lzU9KhQvHXFrd2txU\nJ916cQ9euGkgDaPL/hRX7Mjm0r/M5ssft9oYmVIKnJQktLmpzurfuQUf/f5CerYue/AuK7+E+ycv\n4YFXvyEvv9DG6JSq3zRJqLCQGB/NpPvO59bz2vtukzUIn6/Zx6g/fcrCNTvtDVCpesoxScKjScIR\nbr24B1PuSaNVw7K7n/YdK+L2VxfxwKvfkJ1bYGN0StU/jkkSLk0SjtGpdTKz/jiSK/u18o3JZYDP\n1+zj4sc/4eNFP9san1L1iWOShMetScJJXC4Xj4zpzxt3DKGV3zMVh/NK+MP0FVz35Bw2Zx62MUKl\n6gfHJAm33gPrSD3aN2PWoyMZNyTV11cBsGpnNr964kv+9M4icvK0Y1upUHHMlVX7JJzL5XJx7xV9\nmPbbX3BWi3jf9iIDHyzdyYUTP+atuT/pGFBKhYBjkoTe3eR87Vsk8fYDF/CnK7uTFOP2bc/KL+Hp\nz9Yx6vFPmLt0s40RKuU8jkkSEW7HfBRVhVEDO/DZBG/HdqRfX9TOrAJ+984yrvjLpyz4aYeNESrl\nHI65srq147peiY6K4JEx/Zn1yHDOOb3RcTMTbtyfyx2vL2bM3z/TZKHUKXLMpEO/fWUeT950jt2h\nKJus3rKfJz74gZU7jvomNirVoXEMt110Juf1TLUpOqXCT7CTDjkmSfzutW/4x41n2x2KstnijN08\n/dFy1u7JOeG9VomRjDmnPWPSOuHSu+FUPVfvksTvJ83nz9cPtjsUFSYWrtnJs/9bxdrM7BNqFg2j\nXYzs1YrfjDiLpIQYmyJUyl71Lkk8+tYCHhs7yO5QVJj5YX0mz/5vBSt3ZFP+Lz3CBf1OS+KG87vQ\nu2OKLfEpZZd6lyT+9M5C/nDNALtDUWHq552H+M/HK5i//gCFFTxO0aJBJCN7t2LssC4kxEbVfoBK\n1bJ6lyT+Nm0xD13Vz+5QVJg7kJXLG3N/4tNlOzmUV3zC+xEu6NaqAVcMOo0Rfdtp34VyrHqXJJ6c\nsYTf/rKP3aGoOqKkpIRZCzcy/dufWbsn54SmKICESBf92jfi8kHtGdilhSYM5Sj1Lkk8O/MH7ry0\nl92hqDpo+94s3pizmq/W7CErr+KhPRpGu+h7WjKjB7Rj0JktNWGoOq/eJYkXZi3jtlE97Q5F1WEl\nJSV8vWI7M779mWXbsigorvj/RkKki+6pDRnWvRUj+rQlOiqiliNV6tTVuyTx6icr+M1F3ewORTlE\nTl4hHy38mU9/2EbGrmyKAvw3iXBBhyax9O/YlIv6tqVj6+TaDVSpk1TvksSkOSu5fnhXu0NRDnQ0\nJ58P52/gq1U7ydiVTUElg802jHbRuUUDBpzRjAv6tCWlUXzgwkrZqN4libe/XM21v+hidyjK4fLy\nC5m9dAufL9/Oym1ZHK0kYwiG5NgIOjZPoM/pTTi3e2vapTSsxWiVCqzeJYl3v87g6rROdoei6pGS\nkhJ+/Hkvc37YytKN+9l6MI8A3Rg+CZEuUhvHclabJPp2bEb/Ts2Jj4msfCelQqDeJYkPvl3H5UM6\n2h2Kqseycwv4YtlWFqzZzarth9lztLDCW2v9uQSSYz20axLHGS0b0qN9E00cqlbUuyQx67sNjBrY\nwe5QlPI5kJVL+srtLFqbScauLHZnFVRZ0wBvM1XDaA/Nk6I5rWkCnVol0a1dY7qkJuPxuKs+gFJB\nqHdJYvb3G7mg72l2h6JUQHn5hSzO2M3CdZn8tO0Q2w/mBHwuoyIugaQYN80So2mdHMdpKQl0bJnE\nmamNaZoUF8LIlRPVuyTxxbItOl+AqnP2HjrGd2t2sWLTPjZkHmXHwRyy8opPGLm2KlFuSIqNoHFC\nFM0bxtCmSTytmyTQvkVD2jdvSGy0PsuhjlfvksS3K7cxpGtru0NR6pRlZeex7Oc9/LTlAGt3Hmbn\nwVz2Hs0np/Dk/6/GeIQG0R4axUWQ3CCapg2iaZ4US8vG8bRoHE9q0wY6bHo9U++SxKI1O+nfuYXd\noSgVMnsPHWPVlv2s3X6QTZlH2Hkwh71H88nKLQ6qr6MqHoG4SBdxUR4SYzwkxkaSFB9FckI0jROj\naNwghiaJcaQ0iqVZw1h90ryOC5skISIjgGfwzqf9ujHmHxWUeRa4EDgGXG+MWR7svlY588P63fQ6\nXecEUPVPSUkJm3ZnsX7HQTbvOcK2fdlkHs7hwNECDuUUklNYUu3mq2BEuCDa4yI6wkVspJu4aA/x\nUR7ioyOIj4mgQUwkDeMiaRAbScP4KBLjokmKjySpQQxJcVHaCW+zsEgSIuIC1gPnAbuAJcDVxpi1\nfmUuBMYbY0aKSH/g38aYAcHs63cMs3LTXrq2axKyz3Kq0tPTSUtLszuMKmmcNSsc4szLL2TL3iNs\nzcxi+75sdh/KYU9WLgeO5HE4t5DsvGIyN60krtVZtRqXWyDCLUS6hUi3i0gr4UR5XERFuImOcBMd\n6X3FRLiJjvKwc/1yuvUaQEy0h5hI7ys20kNsTATRkR5iozzERUcQE+n9aVciCod/96oEmyQ8IY6j\nH7DBGLPVCmoaMBrwv9CPBiYDGGMWi0iiiDQD2gWxr0+UJ7xH5awLfzSgcda0cIgzOiqCTq2T6VTJ\nuFITJizntrsvYOf+bHYfzCbzYA77j+Zx6Ggeh44VkJVTSHZ+ETn5xeQUllBQfOq1k2IDxUWGvCID\nBHeXV+bCL/jmQPDjYwneZOR2gdsluEV8yx6Xy/vTLXhcgkuECLfgdrtwu/B734XH+hnh9v50uYQI\nt6vcsvc9t0v49N3pbMpPxi2Cx+PC7XIR4S47n9s6ttvtwiOC2zqvS7zHcVtlPC5BSmN1e2N0u7xl\nXFL6nrXd7cIlgkvAZZUBTnnE4lAniZbAdr/1HXgTR1VlWga5r09EhFZdlTpZIkJKo/igx5oqKSlh\nf1Yuew7ncDAr15dQDh8r4EhuAUdzC8jOK+JYfhF5BcXkFBSTX1RCQVEJBcWGohITkiaw8gxQZKCo\nGG9WOu7xxhMnnaopmRsPsG32+pAdvzoEA9bvWoRq/9ZDnSROxkn95URp+6ZStcblctE0Ke6kn88o\nKSnhaE4BB7PzyDqWT3ZOAUdyCsjOLSQ7v5CcvEKO5ReRk1dEXmEx+YXF5BUUs2hNFF2ax1FQWEJh\ncQmFxYbC4hKKrMRTbAxFxYZiAyWmdhJRuPP/HZxM70Ko+yQGABONMSOs9YcA498BLSIvAV8bY6Zb\n62uBoXibmyrd1+8Ydf8WLaWUqmXh0CexBOggIqnAbuBqYEy5MrOAO4DpVlI5bIzZIyL7g9gXCO6D\nKqWUqr6QJgljTLGIjAfmUnYba4aI3OJ927xijPlURC4SkZ/x3gL768r2DWW8SimljueIh+mUUkqF\nRnjfN1oFERkhImtFZL2IPGh3PBURkddFZI+IrLQ7lsqISCsR+UpEVovIKhG5y+6YKiIiUSKyWER+\ntOKcYHdMgYiIS0SWicgsu2MJRES2iMgK6/f5vd3xBGLdGj9DRDKsv9H+dsdUnoh0tH6Py6yfWWH8\n/+heEflJRFaKyDsiEnBs+jpbk6jOw3Z2EpEhQDYw2RgTtpNwi0gKkGKMWS4i8cAPwOhw+30CiEis\nMSZHRNzAAuAuY0zYXeBE5F6gN9DAGHOJ3fFUREQ2Ab2NMYfsjqUyIvImMM8YM0lEPECsMeaIzWEF\nZF2fdgD9jTHbqypfm0SkBTAf6GSMKRCR6cAnxpjJFZWvyzUJ34N6xphCoPRhu7BijJkPhPV/QABj\nTGbpcCjGmGwgA++zKmHHGJNjLUbh7VcLu286ItIKuAh4ze5YqiCE+XVARBoAZxtjJgEYY4rCOUFY\nhgEbwy1B+HEDcaUJF+8X7QqF9R9HFQI9hKdOkYi0BXoAi+2NpGJWM86PQCbwuTFmid0xVeBp4AHC\nMIGVY4DPRWSJiNxkdzABtAP2i8gkqynnFREJ9yFrrwLetTuIihhjdgFPAduAnXjvKP0iUPm6nCRU\nCFhNTe8Dd1s1irBjjCkxxvQEWgH9RaSL3TH5E5GRwB6rZiac5AOitWSwMaYX3lrPHVbzaLjxAL2A\n/1ix5gAP2RtSYCISAVwCzLA7loqISEO8rS6pQAsgXkSuCVS+LieJnUAbv/VW1jZ1kqyq5/vAFGPM\nR3bHUxWryeFrYITdsZQzGLjEau9/FzhXRCps77WbMWa39XMfMJNKhr6x0Q5guzFmqbX+Pt6kEa4u\nBH6wfqfhaBiwyRhz0BhTDHwIDApUuC4nCd+DelbP/NV4H8wLR+H+bbLUG8AaY8y/7Q4kEBFpLCKJ\n1nIMcD4BBn20izHmEWNMG2PMaXj/Lr8yxoy1O67yRCTWqjkiInHAcOAne6M6kTFmD7BdRDpam84D\n1tgYUlXGEKZNTZZtwAARiRYRwfv7DPgMWjiO3RSUuvKwnYhMBdKAZBHZBkwo7YALJyIyGLgWWGW1\n9xvgEWPMbHsjO0Fz4C3r7hEXMN0Y86nNMdVVzYCZ1rA2HuAdY8xcm2MK5C7gHaspZxPWQ7fhRkRi\n8X5Tv9nuWAIxxnwvIu8DPwKF1s9XApWvs7fAKqWUCr263NyklFIqxDRJKKWUCkiThFJKqYA0SSil\nlApIk4RSSqmANEkopZQKSJOEqvdEZIKI3FdL52ouIu/Vxrn8zpkqIhXO6qhUVTRJKFVLRMRtjNlt\njLkyFMeu5O12QMCxeZSqjCYJVWeJyB+tSae+EZGppbUBEekhIgtFZLmIfOA3jMdvROR7a0KYGSIS\nXcXxY0XkY6v8ShH5lbW9r4gssI6/SETirMmQ3rDK/SAiaVbZcSLykYh8CXxhfatf5ffeByLymYis\nE5F/+J37RmvbImvU02criG+CiEwWkfnAZOvY34jIUus1wCr6N2CINYLq3dYouk+Id/Km5WE8+qsK\nA3V2WA5Vv4lIH+AyoCveeSWWAaUDwL0F3GGMmS8ijwETgXuBD4wxr1n7/wm4EfhPJacZAew0xlxs\n7ZNgDQsxDfiVMWaZNfZRHnA3UGKM6SYiZwBzReR06zg9ga7GmCwRSeX44cO74x2WvRBYZyWDEuAP\n1vZsvIMYLg8QY2e8I7kWWElvmLXcAe/4QX3xjpj629KJj6ykcNgY098a92yBiMw1xmyt5Heh6imt\nSai6ajDwkTGm0BrS/H/gm6Am0ZrsCbwJ42xruZv1TXsl3uaXM6s4xyrgfBH5m4gMMcYcBc4Adhlj\nloF3giZrJM0hwNvWtnXAFqB0QLrPjTFZAc7xpXWMfGA13uGb+wHpxpgs69iVDTk9yxhTYC1HAq9Z\nn28G3gRSkeHAWGuMrsVAI+D0AGVVPac1CeVEgUbcnQRcYoz5SUTGAUOP28k7m9z/8H7Tf8kY84qI\nlM618Ceryei/lRw/UAzHKimX77dcQtn/yWBHDfY/9r1AplWbcQO5lcR2pzHm8yDPoeoxrUmoumoB\nMMrqC4gHLgbfHBMHrVFtAa4D0q3leCDTajK6tvwBjTE7jDE9jTG9rATRHMg1xkwFnsQ7h8E6IEVE\neoN3kibrgvxt6TGtIa1bW2VPxhLgHBFJFO8cH1cEuV8isNtaHot3ikqAo0CCX7k5wO3WsRGR0yX8\nZ3pTNtGahKqTjDFLRWQWsALYA6wESpt0rgdesi58/sNK/xH4HtiLt5nF/8JZka7AP0WkBCgAbjPG\nFIrIVcDz1vFz8A4N/QLwotXUUwiMs8pW62NZn22XiPzVivUg3vkyAjVX+XsB+EBExgKzKatlrARK\nrOalN40x/xbvFLXLxBvgXuDS6gSq6g8dKlzVWSISZ4w5Zl2svwFusqYMrfP8Ppsb74xxr9eF2QKV\n82hNQtVlr4h3fusovN+QHZEgLBNFZBjezzZXE4Syi9YklFJKBaQd10oppQLSJKGUUiogTRJKKaUC\n0iShlFIqIE0SSimlAtIkoZRSKqD/B1Dv6uLRcfuZAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "germany = suite.Copy(label='Germany')\n", "argentina = suite.Copy(label='Argentina')\n", "thinkplot.Pdf(germany)\n", "thinkplot.Pdf(argentina)\n", "thinkplot.Config(xlabel='goal-scoring rate', ylabel='probability')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "According to this prior, the goal-scoring rates are always greater than zero, with the most likely value (a priori) near 0.5. Goal scoring rates greater than 5 are considered unlikely.\n", "\n", "### Step 2: Comparing posteriors\n", "\n", "The next step is to compute the posteriors for the two teams:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "posterior mean Germany 1.310359949\n", "posterior mean Argentina 1.310359949\n" ] } ], "source": [ "germany = suite.Copy(label='Germany')\n", "argentina = suite.Copy(label='Argentina')\n", "germany.Update(1)\n", "argentina.Update(0)\n", "\n", "print('posterior mean Germany', germany.Mean())\n", "print('posterior mean Argentina', argentina.Mean())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`Update` invokes the likelihood function for each hypothetical value of $\\lambda$ and updates the distribution accordingly.\n", "\n", "Since both teams scored fewer goals than the prior mean (1.4), we expect both posterior means to be lower. Germany's posterior mean is 1.2; Argentina's is 0.7. We can plot the posteriors:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "thinkplot.Pdf(germany)\n", "thinkplot.Pdf(argentina)\n", "thinkplot.Config(xlabel='goal-scoring rate', ylabel='probability')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To answer the first question, \"How much evidence does this victory provide that Germany had the better team?\", we can compute the posterior probability that Germany had a higher goal-scoring rate:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "posterior prob Germany > Argentina 0.485133146448\n" ] } ], "source": [ "post_prob = germany.ProbGreater(argentina)\n", "print('posterior prob Germany > Argentina', post_prob)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Based on the prior distributions, we would have said that Germany had a 50% chance of having the better team, or 1:1 odds. Based on the posteriors, we would say that Germany has a 70% chance. We can use the ratio of the prior and posterior odds to compute the Bayes factor, which measures the strength of the evidence." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "posterior odds Germany > Argentina 0.942249715827\n", "Bayes factor 0.942249715827\n" ] } ], "source": [ "prior_odds = 1\n", "post_odds = post_prob / (1 - post_prob)\n", "print('posterior odds Germany > Argentina', post_odds) \n", "k = post_odds / prior_odds\n", "print('Bayes factor', k) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Bayes factor is 2.4, which is generally considered weak evidence.\n", "\n", "Now on to Step 4." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Step 4\n", "\n", "**Exercise:** Write a few lines of code to \n", "\n", "1. Choose a random value of `lam` from the posterior distribution of each time.\n", "\n", "2. Choose a random number of goals for each team, conditioned on the value of `lam` you chose.\n", "\n", "3. Run that \"simulation\" many times and accumulate the distribution of wins, losses, and ties.\n", "\n", "Use the results to estimate the probability that Germany would win a rematch." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# Solution goes here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Instead of running simulations, you could compute the posterior predictive distributions explicitly.\n", "\n", "`PredictiveDist` takes the posterior distribution of $\\lambda$ and a duration (in units of games).\n", "\n", "It loops through the hypotheses in `suite`, computes the predictive distribution of goals for each hypothesis, and assembles a \"meta-Pmf\" which is a Pmf that maps from each predictive distribution to its probability.\n", "\n", "Finally, it uses `MakeMixture` to compute the mixture of the distributions. Here's what the predictive distributions look like." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYkAAAEPCAYAAAC3NDh4AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt4VdWd//H3J1QQiiCIgxgEEaoVL1RRxBFrfPyNotMR\nLyNFLTBeKNVG8VJHHW1NpnZ+rXV+VqtjoV5GR0dsrSj28YKjRkQfBBUFKwgVRW6DxRtCL9Lw/f1x\nduIhZicnmJ1zQj6v5znP2Ze19vkmyvlmrbX3WooIzMzMGlNW7ADMzKx0OUmYmVkqJwkzM0vlJGFm\nZqmcJMzMLJWThJmZpco8SUgaLWmJpKWSLm+i3KGSNks6paV1zcwsG8ryOQlJZcBS4BhgDTAfGBcR\nSxop9yTwJ+COiHiw0LpmZpadrFsSI4BlEbEiIjYD04ExjZS7AHgAeG8b6pqZWUayThLlwMq8/VXJ\nsXqSdgdOiohbAbWkrpmZZasUBq5/Bni8wcysBH0p4+uvBgbk7fdPjuU7BJguSUAf4HhJfy2wLgCS\nPAGVmVkLRYSaK5N1kpgPDJE0EFgLjANOzy8QEXvVbUu6E3gkImZK6tRc3QbXofLa+1o1+Ndem83X\nTzu/1a73o7EHtNq10lRVVVFVVZX557SW9hYvtL+Y21u84JjbQu7v8uZlmiQiolZSJTCLXNfW7RGx\nWNLk3OmY1rBKc3WzjNfMzLaWdUuCiHgc2KfBsakpZc9urq6ZmbWdUhi4LlkDhx5a7BBarKKiotgh\ntEh7ixfaX8ztLV5wzKUk04fp2oqkyGJMoufe+7fq9dpiTMLMrBCSSmLg2sw6kD333JMVK1YUOwzL\nM3DgQN55551tru8kYWatZsWKFWwPvRPbk0LvYkrjMQkzM0vlJGFmZqmcJMzMLJWThJmZpfLAtZll\nqrVvTW/o5qtTZ+uxVuCWhJlZC9TW1hY7hDblJGFmHcYrr7zCwQcfTM+ePRk7dizjxo3jBz/4AQC/\n/e1vOeigg+jVqxejRo1i0aJF9fUGDRrEddddx7Bhw+jevTu1tbUMGjSI66+/nmHDhrHTTjsxadIk\n3nvvPU444QR69OjBsccey8cff1x/jbFjx9KvXz969epFRUUFb7zxRv25s846i8rKSr7xjW/Qo0cP\nDj/8cN5++20AKisr+d73vrfVzzFmzBhuvPHGLH9V9ZwkzKxD2Lx5M6eccgpnn302H3zwAaeffjoz\nZswA4NVXX+Wcc87hl7/8JR988AGTJ0/mxBNPZPPmzfX1p0+fzmOPPcZHH31Ep06dAHjwwQd56qmn\nWLp0KTNnzuSEE07gxz/+MevXr6e2tpabbrqpvv4JJ5zAW2+9xXvvvcfBBx/MmWeeuVV8999/P9XV\n1Xz00UcMHjyYq666CoCJEycyffr0+nLvv/8+Tz311OfqZ8VJwsw6hLlz51JbW0tlZSWdOnXi5JNP\nZsSIEQBMmzaN73znOxxyyCFIYvz48XTp0oW5c+fW158yZQq77747Xbp0qT92wQUX0KdPH/r168eR\nRx7JYYcdxoEHHkjnzp05+eSTWbBgQX3Zf/qnf6Jbt27ssMMO/OAHP+C1117jk08+qT9/8sknM3z4\ncMrKyjjzzDN59dVXATj00EPp2bMnTz31FJBLVhUVFfTp0yfT31cdJwkz6xDWrFlDefnWKyDvscce\nQO5J8euvv57evXvTu3dvevXqxapVq1izZk192f79+3/umn379q3f7tq16+f2N27cCMCWLVu44oor\nGDJkCDvvvDODBg1CEuvXr68vv9tuu9Vvd+vWrb4uwIQJE7jnnnsAuOeeexg/fvw2/Q62he9uMrMO\noV+/fqxevfXilitXrmTIkCEMGDCAq6++miuvvDK1/heZ3uLee+/lkUce4emnn2bAgAF8/PHH9OrV\nq+ApTL71rW9xwAEHsHDhQpYsWcJJJ520zbG0lFsSZtYhHH744XTq1IlbbrmF2tpaHn74YebNmwfA\nueeey6233lq/v2nTJh599FE2bdrUKp+9ceNGunTpQq9evdi0aRNXXnlli5JOeXk5hxxyCOPHj+fU\nU0/dqssra25JmFmmSuU5hh122IEHH3yQc845hyuvvJLjjz+ef/iHf6BLly4MHz6c2267jcrKSn7/\n+9/TtWtXRo0axVFHHQU03opoeKypL/0JEybwxBNPUF5ezi677MIPf/hDpk5tdO21VBMnTmTChAn8\n/Oc/b1G9L8rrSTTB60mYtUyyRkGxwyjYyJEjOe+885g4cWKxQ2nWc889x/jx41s87Xfaf5NC15Nw\nd5OZdRizZ89m3bp11NbWctddd7Fo0SJGjx5d7LCatXnzZm688UYmTZrU5p+deZKQNFrSEklLJV3e\nyPkTJb0maYGkeZKOyDv3Tv65rGM1s+3bm2++ybBhw+jVqxc33HADv/nNb7a6I6kULVmyhF69erFu\n3TqmTJnS5p+faXeTpDJgKXAMsAaYD4yLiCV5ZbpFxB+T7QOAX0XEvsn+cmB4RHzYzOe4u8msBLS3\n7qaOoNS7m0YAyyJiRURsBqYDY/IL1CWIRHdgS96+2iBGMzNLkfUXcDmwMm9/VXJsK5JOkrQYeAQ4\nO+9UAE9Kmi+p7TvjzMw6uJL4Kz0iHkq6mE4Crs07dUREHAycAHxX0qiiBGhm1kFl/ZzEamBA3n7/\n5FijImKOpL0k9Y6IDyJibXL8D5JmkOu+mtNY3aqqKubNzs3aWD5oKOWDhrbWz2Bm1u7V1NRQU1PT\n4npZD1x3At4kN3C9FpgHnB4Ri/PKDI6It5Ltg4GHI2IPSd2AsojYKOnLwCygOiJmNfI5Hrg2KwEe\nuC49X3TgOtOWRETUSqok9wVfBtweEYslTc6djmnAqZImAJ8CfwLGJtX7AjMkRRLnvY0lCDOz7cFO\nO+3EokWL2HPPPYsdylYyn5YjIh4H9mlwbGre9nXAdY3Uexv4WtbxmVm2rvrVouYLfQHtsYV+9NFH\nM378eM4++7P7dPKnDS8lJTFwbWZWSjraEqVNcZIwsw7jJz/5CUOGDKFHjx7sv//+PPTQQwDcdddd\njBo1iksuuYQ+ffpQXV3Nli1buPTSS9l1110ZPHgwt9xyC2VlZWzZknuUa8OGDZx77rnsvvvu7LHH\nHnz/+9+v7/u/6667OPLII7nsssvo3bs3gwcP5oknngDg6quv5rnnnqOyspIePXpw4YUXAlBWVsby\n5cuBppczBbjooosYMGAAPXv25NBDD2XOnEbv52kVThJm1mEMGTKE559/ng0bNnDNNdcwfvx41q1b\nB8CLL77IkCFDeO+997jqqquYNm0aTzzxBAsXLuSVV17hoYce2mqm14kTJ9K5c2eWL1/OggULePLJ\nJ7ntttvqz8+bN499992X999/n8suu6y+a+naa6/lyCOP5Oabb2bDhg31S5w2nEU2bTlTgBEjRrBw\n4UI+/PBDzjjjDE477TQ+/fTTTH5nThJm1mGceuqp9XM1nXbaaQwZMqR+DYny8nLOP/98ysrK6NKl\nC7/+9a+ZMmUK/fr1o2fPnlxxxRX111m3bh2PPfYYN9xwAzvuuCN9+vThoosu4r77PrvDcuDAgZx9\n9tlIYuLEiaxdu5b33nsvNbaGdyClLWcKcMYZZ7DzzjtTVlbGxRdfzF/+8hfefPPNVvkdNeT1JMys\nw7j77ru54YYb6qfb3rRpE+vXr6esrKx+KdM6a9as2epY/va7777L5s2b6devH5D7go8IBgz47LGw\n/OVIu3btCuQWH/qbv/mbgmJtajnT66+/njvuuIO1a9cCuUHv/KVQW5OThJl1CO+++y7f/va3eeaZ\nZzj88MMBOOigg+r/gm/Y3dOvXz9WrVq1Vf06e+yxBzvuuCPvv//+Ni1r+kWWQn3uuef46U9/yjPP\nPMPQobmHhnv37p3Z8ynubjKzDmHTpk2UlZXRp08ftmzZwp133snrr7+eWn7s2LHceOONrFmzho8+\n+ojrrvvsTv3ddtuNY489losvvphPPvmEiGD58uXMnj27oFj69u1bP0jdUhs3bmSHHXZgl1124dNP\nP+Vf//VfM7191i0JM8tUqTzHsO+++3LppZcycuRIOnXqxIQJExg1Kn06uEmTJrFs2TIOPPBAevbs\nyYUXXsizzz5LWVnub+u7776byy+/nKFDh7Jx40b22msvLr/8c0vm1MtvPUyZMoWJEydy6623Mn78\neH72s58V3Lo47rjjOO6449h7773p3r07F1988ee6ylqTly9tgqflMGuZ7Xlajscff5zzzjtvq1tR\n24NSX0/CzKxd+vOf/8xjjz1GbW0tq1evprq6mlNOOaXYYbU5Jwkzs0ZEBNdccw29e/dm+PDh7Lff\nflRXVxc7rDbnMQkzs0Z07dq1/hmKjswtCTMzS+UkYWZmqZwkzMwslcckzKzVDBw48As9TWytb+DA\ngV+ovpOEmbWaujmRbPvh7iYzM0vlJGFmZqkyTxKSRktaImmppM9NbCLpREmvSVogaZ6kIwqta2Zm\n2co0SUgqA24GjgP2A06X9NUGxf4nIoZFxEHAOcBtLahrZmYZyrolMQJYFhErImIzMB0Yk18gIv6Y\nt9sd2FJoXTMzy1bWSaIcWJm3vyo5thVJJ0laDDwCnN2SumZmlp2SuAU2Ih4CHpI0CrgW+LuWXqOq\nqop5sxcBUD5oKOWDhrZukGZm7VhNTQ01NTUtrpd1klgNDMjb758ca1REzJG0l6TeLa1bVVXF+lZe\nT8LMbHtRUVFBRUVF/X6hM9pm3d00HxgiaaCkzsA4YGZ+AUmD87YPBjpHxAeF1DUzs2xl2pKIiFpJ\nlcAscgnp9ohYLGly7nRMA06VNAH4FPgTMLapulnGa2ZmW8t8TCIiHgf2aXBsat72dcB1Deul1TUz\ns7bjJ67NzCyVk4SZmaVykjAzs1ROEmZmlspJwszMUjlJmJlZKicJMzNL5SRhZmapnCTMzCyVk4SZ\nmaVykjAzs1ROEmZmlspJwszMUjlJmJlZqpJYvrSjqsxgJb2ee+/fqtf70dgDWvV6Zta+uCVhZmap\nnCTMzCyVk4SZmaVykjAzs1SZJwlJoyUtkbRU0uWNnD9D0mvJa46kA/POvZMcXyBpXtaxmpnZ1jK9\nu0lSGXAzcAywBpgv6eGIWJJXbDnw9Yj4WNJoYBowMjm3BaiIiA+zjNPMzBqXdUtiBLAsIlZExGZg\nOjAmv0BEzI2Ij5PduUB53mm1QYxmZpYi6y/gcmBl3v4qtk4CDZ0LPJa3H8CTkuZLmpRBfGZm1oSS\neZhO0tHAWcCovMNHRMRaSbuSSxaLI2JOY/WrqqqYN3sRAOWDhlI+aGjmMZuZtRc1NTXU1NS0uF7W\nSWI1MCBvv39ybCvJYPU0YHT++ENErE3e/yBpBrnuq9QksT6DJ5jNzLYHFRUVVFRU1O9XV1cXVC/r\n7qb5wBBJAyV1BsYBM/MLSBoA/AYYHxFv5R3vJql7sv1l4Fjg9YzjNTOzPAW1JCR1iojall48Imol\nVQKzyCWk2yNisaTJudMxDfg+0Bv4D0kCNkfECKAvMENSJHHeGxGzWhqDmZltu0K7m5ZJ+g1wZ0S8\n0ZIPiIjHgX0aHJuatz0J+NygdES8DXytJZ9lZmatq9DupmHAUuA2SXMlfVtSjwzjMjOzElBQkoiI\nTyLilxHxt8DlwDXAWkl3SRqSaYRmZlY0BSUJSZ0knZjcYfQz4N+BvYBHgEczjM/MzIqo4DEJ4Bng\npxHxQt7xByR9vfXDMjOzUlBokpjQ8CE2SUdExPMRcWEGcZmZWQkodOD6pkaO/bw1AzEzs9LTZEtC\n0uHA3wK7Srok71QPoFOWgZmZWfE1193UGeielNsp7/gG4B+zCsrMzEpDk0kiIp4FnpX0nxGxoo1i\nMjOzEtFcd9PPIuIi4OZkeoytRMSJmUVmZmZF11x3038l79dnHYiZmZWe5rqbXk7en22bcMzMrJQ0\n1920iNzqcI2KiANbPSIzMysZzXU3faNNojAzs5LUXHeT72gyM+vAmnziWtKc5P0TSRsavrdNiGZm\nVizNtSRGJe87NVXOzMy2T4VO8Iekg4FR5Aay50TEgsyiMjOzklDoehI/AO4CdgH6AP8p6eosAzMz\ns+IrdBbYM4FDI+KaiLgGGAmML6SipNGSlkhaKunyRs6fIem15DVH0oGF1jUzs2wVmiTWADvm7XcB\nVjdXSVIZcDNwHLAfcLqkrzYothz4ekQMA64FprWgrpmZZai5h+l+Tm4M4mPgd5KeTPb/DphXwPVH\nAMvqbqWVNB0YAyypKxARc/PKzwXKC61rZmbZam7g+qXk/WVgRt7xmgKvXw6szNtfRe7LP825wGPb\nWNfMzFpZc7fA3tVWgUg6GjiL3B1ULVZVVcW82YsAKB80lPJBQ1sxOjOz9q2mpoaampoW1yvoFlhJ\nXwH+LzCUvLGJiNirmaqrgQF5+/1pZCwjGayeBoyOiA9bUrdOVVUV66+9r5lwzMw6poqKCioqKur3\nq6urC6pX6MD1ncCtwF+Bo4G7gXsKqDcfGCJpoKTOwDhgZn4BSQOA3wDjI+KtltQ1M7NsFZokukbE\nU4AiYkVEVAF/31yliKgFKoFZwO+A6RGxWNJkSd9Oin0f6A38h6QFkuY1VbcFP5uZmX1BhT5x/Zfk\nltRlkirJdft0L6RiRDwO7NPg2NS87UnApELrmplZ2ym0JTEF6AZcCAwn9yDdxKyCMjOz0lBQSyIi\n5kP9A24XRsQnmUZlZmYlodC5mw5JVqlbCCxKptAYnm1oZmZWbIWOSdwBnB8RzwFIGkXujicvX2pm\nth0rdEyiti5BAETEHHK3w5qZ2XasubmbDk42n5U0FbiP3NxN36TwqTnMzKydaq676d8b7F+Ttx2t\nHIuZmZWY5uZuOrqtAjEzs9JT6N1NPSX9P0kvJa9/l9Qz6+DMzKy4Ch24vgP4BBibvDaQu7vJzMy2\nY4XeAjs4Ik7N26+W9GoWAZmZWekotCXxp+TZCAAkHQH8KZuQzMysVBTakvgOcHfeOMSHeO4mM7Pt\nXrNJIpmvaZ+IGCapB0BEbMg8MjMzK7pmu5siYgvwz8n2BicIM7OOo9Axif+R9D1Je0jqXffKNDIz\nMyu6QsckvknuCevzGxxvbo1rMzNrxwpNEkPJJYhR5JLFc8AvsgrKzMxKQ6FJ4i5yD9DdlOyfkRwb\nm0VQZmZWGgodk9g/Is6NiGeS1yRg/0IqShotaYmkpZIub+T8PpJekPRnSZc0OPdOssDRAknzCozV\nzMxaSaEtiVckjYyIuQCSDgNeaq5ScvvszcAxwBpgvqSHI2JJXrH3gQuAkxq5xBagIiI+LDBOMzNr\nRYUmieHAC5LeTfYHAG8mS5pGRKStUDcCWBYRKwAkTQfGAPVJIiLWA+slfaOR+qLw1o61gcpr72vV\n6/Xcu6AGacF+NPaAVr2eWUdXaJIYvY3XLwdW5u2vIpc4ChXAk5JqgWkR8cttjMPMzLZBQUmiriVQ\nBEdExFpJu5JLFouTpVM/p6qqinmzFwFQPmgo5YOGtmWcZmYlraamhpqamhbXK7Qlsa1Wk+uaqtM/\nOVaQiFibvP9B0gxyrZDUJLG+lbtCzMy2FxUVFVRUVNTvV1dXF1Qv6/7++cAQSQMldQbGATObKK/6\nDambpO7J9peBY4HXswzWzMy2lmlLIiJqJVUCs8glpNsjYrGkybnTMU1SX3J3Su0EbJE0hdzDe7sC\nMyRFEue9ETEry3jNzGxrWXc3ERGPA/s0ODY1b3sdsEcjVTcCX8s2OjMza4pvLzUzs1ROEmZmlspJ\nwszMUjlJmJlZKicJMzNL5SRhZmapnCTMzCyVk4SZmaVykjAzs1ROEmZmlspJwszMUjlJmJlZKicJ\nMzNL5SRhZmapnCTMzCyVk4SZmaVykjAzs1ROEmZmlspJwszMUmWeJCSNlrRE0lJJlzdyfh9JL0j6\ns6RLWlLXzMyylWmSkFQG3AwcB+wHnC7pqw2KvQ9cAPx0G+qamVmGsm5JjACWRcSKiNgMTAfG5BeI\niPUR8TLw15bWNTOzbGWdJMqBlXn7q5JjWdc1M7NW8KViB9BaqqqqmDd7EQDlg4ZSPmhokSMyMysd\nNTU11NTUtLhe1kliNTAgb79/cqzV61ZVVbH+2vtaHKCZWUdQUVFBRUVF/X51dXVB9bLubpoPDJE0\nUFJnYBwws4ny+gJ1zcyslWXakoiIWkmVwCxyCen2iFgsaXLudEyT1Bd4CdgJ2CJpCjA0IjY2VjfL\neM3MbGuZj0lExOPAPg2OTc3bXgfsUWhdMzNrO37i2szMUjlJmJlZKicJMzNL5SRhZmaptpuH6czS\nVLby8zM9996/Va/3o7EHtOr1zFqTWxJmZpbKScLMzFI5SZiZWSonCTMzS+UkYWZmqZwkzMwslZOE\nmZmlcpIwM7NUThJmZpbKScLMzFI5SZiZWSonCTMzS+UkYWZmqZwkzMwsVeZJQtJoSUskLZV0eUqZ\nmyQtk/SqpIPyjr8j6TVJCyTNyzpWMzPbWqbrSUgqA24GjgHWAPMlPRwRS/LKHA8MjoivSDoMuBUY\nmZzeAlRExIdZxmlmZo3LuiUxAlgWESsiYjMwHRjToMwY4G6AiHgR6Cmpb3JObRCjmZmlyPoLuBxY\nmbe/KjnWVJnVeWUCeFLSfEmTMovSzMwaVerLlx4REWsl7UouWSyOiDmNFayqqmLe7EUAlA8aSvmg\noW0Zp5lZSaupqaGmpqbF9bJOEquBAXn7/ZNjDcvs0ViZiFibvP9B0gxy3VepSWJ9K69lbGa2vaio\nqKCioqJ+v7q6uqB6WSeJ+cAQSQOBtcA44PQGZWYC3wXulzQS+Cgi1knqBpRFxEZJXwaOBQr7qcza\nscpW/mOn5977t+r1AH409oBWv6aVpkyTRETUSqoEZpEb/7g9IhZLmpw7HdMi4lFJJ0j6PbAJOCup\n3heYISmSOO+NiFlZxmtmZlvLfEwiIh4H9mlwbGqD/cpG6r0NfC3b6MzMrCm+vdTMzFI5SZiZWSon\nCTMzS+UkYWZmqZwkzMwslZOEmZmlcpIwM7NUThJmZpbKScLMzFKV+iywZtYOlPp8U55ratu5JWFm\nZqmcJMzMLJWThJmZpXKSMDOzVE4SZmaWyknCzMxS+RZYM+uQfNtuYdySMDOzVJknCUmjJS2RtFTS\n5SllbpK0TNKrkr7WkrpmZpadTLubJJUBNwPHAGuA+ZIejogleWWOBwZHxFckHQb8AhhZSN2srfjd\nfAbud2hbfVyraG8xt7d4of3F3N7iBcfcmNbuHitU1i2JEcCyiFgREZuB6cCYBmXGAHcDRMSLQE9J\nfQusm6kVb8xvy49rFe0t5vYWL7S/mNtbvOCYS0nWSaIcWJm3vyo5VkiZQuqamVmGSnHgWsUOwMzM\nchQR2V1cGglURcToZP8KICLiJ3llfgE8ExH3J/tLgKOAQc3VzbtGdj+Emdl2KiKa/aM86+ck5gND\nJA0E1gLjgNMblJkJfBe4P0kqH0XEOknrC6gLFPaDmplZy2WaJCKiVlIlMItc19btEbFY0uTc6ZgW\nEY9KOkHS74FNwFlN1c0yXjMz21qm3U1mZta+leLAddG1t4f4JN0uaZ2khcWOpVCS+kt6WtLvJC2S\ndGGxY2qKpC6SXpS0IIn3mmLHVChJZZJekTSz2LEUQtI7kl5Lftfzih1PcyT1lPRrSYuT/58PK3ZM\nTZG0d/K7fSV5/7ipf39uSTSQPMS3lLyH+IBxbfkQX0tJGgVsBO6OiAOLHU8hJO0G7BYRr0rqDrwM\njCnx33O3iPijpE7A88CFEdEevsQuBoYDPSLixGLH0xxJy4HhEfFhsWMphKT/BJ6NiDslfQnoFhEb\nihxWQZLvu1XAYRGxsrEybkl8XtEf4mupiJgDtIt/UHUi4n8j4tVkeyOwmBJ/DiYi/phsdiE3nlfy\nf2FJ6g+cANxW7FhaQLST7yZJPYAjI+JOgIj4a3tJEIn/A7yVliCgnfyHaGN+iK+NSdoT+BrwYnEj\naVrSbbMA+F/gyYhoD4/Y3gBcRjtIaHkCeFLSfEmTih1MMwYB6yXdmXTfTJPUtdhBtcA3gSbn+3CS\nsKJKupoeAKYkLYqSFRFbIuIgoD9wmKShxY6pKZL+HliXtNhE+3lQ9YiIOJhcC+i7SXdqqfoScDBw\nSxLzH4ErihtSYSTtAJwI/Lqpck4Sn7caGJC33z85Zq0s6b99APiviHi42PEUKulOeAYYXexYmnEE\ncGLSx38fcLSku4scU7MiYm3y/gdgBrku4FK1ClgZES8l+w+QSxrtwfHAy8nvOZWTxOfVPwAoqTO5\nh/jaw10h7ekvxTp3AG9ExI3FDqQ5kvpI6plsdwX+DijZQXaAiPiXiBgQEXuR+//46YiYUOy4miKp\nW9K6RNKXgWOB14sbVbqIWAeslLR3cugY4I0ihtQSp9NMVxN4ZbrPaY8P8Un6b6AC2EXSu8A1dQNp\npUrSEcCZwKKknz+Af4mIx4sbWap+wF3J3SBlwP0R8WiRY9oe9QVmJFPtfAm4NyJmFTmm5lwI3Jt0\n3ywneSC4lEnqRm7Q+tvNlvUtsGZmlsbdTWZmlspJwszMUjlJmJlZKicJMzNL5SRhZmapnCTMzCyV\nk4R1eJI+Sd77SfpVM2WnSNqxhdc/StIjzZR5WlJnSTdkPdV0IfGY1XGSsO1S8tBboQJy00FExNhm\nyl4EdNuGkFIfSEqe4K6NiE+BQ4GX0sq2Ij8gZQVxkrB2JZkuZbGkeyS9IelXdX/ZS3pb0o8lvQT8\no6S9JD2WzCb6bN3UCZL2lPRCsrDNDxtce1GyXSbpp8kCQ69K+q6kC4DdgWckPZWUOza51kuS7k+e\nZK1buGpxEsspTfw8TwMLgf2VWzRqf2C+pM/NC6XcMr+Lk5/nxrrWgKRekmYkP88Lkg5Ijh+a7L8s\naY6krzRyzaPyFqB5OZkKw+wzEeGXX+3mBQwEtgAjk/3bgUuS7beB7+WV/R9gcLI9Angq2X4YODPZ\nPh/YkHfthcn2ecCv+GxWgp2T9+VAr2R7F+BZoGuy/8/A1eTWm3gX2Cs5fj8ws4mf6VLgZOBI4Ccp\nZequOSAVeF32AAACi0lEQVTZ/++6awI3Ad9Pto8GFiTb3YGyZPsY4IFk+6i8ujOBw5PtbnXl/fKr\n7uWWhLVH70bE3GT7HiB/Kun7oX5yuL8Ffp3MDTWV3LxAkJsddXqy/V8pn3EMMDUi6rqiPkqO50+k\nOBIYCjyffMYEconmq8DyiFieF2NThpNrTQxL3hvzVXKLw7yb7OdPzDaq7ueIiGeA3skkeTsDDySt\noxuSWBt6HrghaSX1iogtzcRqHYwn+LPtQX7/+qbkvQz4MHJz/DdWvq7OF5k5V8CsiDhzq4PSsEKu\nK+kcoBIYTC4JDAT+V9LoiBif8nkt8UNyM7+eImkguenNtxIRP5H0W+DvySW7YyNiaQs/x7ZjbklY\nezQg7w6gM4DnGhaIiE+AtyX9Y90xSXXrfz9PbppkyM1E25gngcnKrWeNpF7J8Q1Aj2R7LnCEpMFJ\nmW5Jv/8SYKCkQUm502lERNxObirsp5Nktiwi9ktJEG8CgyTVrXXyzbxzzwHfSmKoANZHbgGnnny2\nFkqjM5NK2isifhcR15GbJv+rjf42rMNykrD26E1yK5a9Qa5L5RfJ8YZ37JwJnJMMPL9ObhUuyN2h\n9F1Jr5GbArwxt5FbxnZh0pVU90X/S+BxSU9FxHpyX773Jdd6AdgnIv4CTAYeTQau1zXxs3wdmKPc\nWtQr0gpFxJ/JjZ88IWk+uWT1cXK6ChiexPBvwMTk+HXAjyW9TPq/9YvqBueBT4HHmojVOiBPFW7t\nStJt8tuIOKDYsbQ1SV+OiE3J9i3A0mgHCzZZ++aWhLVHHfUvm0nJ7aq/I9flNbXYAdn2zy0JMzNL\n5ZaEmZmlcpIwM7NUThJmZpbKScLMzFI5SZiZWSonCTMzS/X/ARf6VqPK/VB6AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def PredictiveDist(suite, duration=1, label='pred'):\n", " \"\"\"Computes the distribution of goals scored in a game.\n", "\n", " returns: new Pmf (mixture of Poissons)\n", " \"\"\"\n", " metapmf = thinkbayes2.Pmf()\n", " for lam, prob in suite.Items():\n", " pred = thinkbayes2.MakePoissonPmf(lam * duration, 15)\n", " metapmf[pred] = prob\n", "\n", " mix = thinkbayes2.MakeMixture(metapmf, label=label)\n", " return mix\n", "\n", "germany_pred = PredictiveDist(germany, label='germany')\n", "argentina_pred = PredictiveDist(argentina, label='argentina')\n", "\n", "thinkplot.Hist(germany_pred, width=0.45, align='right')\n", "thinkplot.Hist(argentina_pred, width=0.45, align='left')\n", "thinkplot.Config(xlabel='predicted # goals', ylabel='probability', xlim=[-0.5, 7])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Using the predictive distributions, we can compute probabilities for the outcomes of a rematch." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "thinkplot.Hist(germany_pred, width=0.45, align='right')\n", "thinkplot.Hist(argentina_pred, width=0.45, align='left')\n", "thinkplot.Config(xlabel='predicted # goals', ylabel='probability', xlim=[-0.5, 7])" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "posterior prob Germany wins rematch 0.367755251824\n", "posterior prob Argentina wins rematch 0.367755251824\n", "posterior prob tie 0.264489496352\n" ] } ], "source": [ "win = germany_pred.ProbGreater(argentina_pred)\n", "lose = germany_pred.ProbLess(argentina_pred)\n", "tie = 1 - (win + lose)\n", "\n", "print('posterior prob Germany wins rematch', win)\n", "print('posterior prob Argentina wins rematch', lose)\n", "print('posterior prob tie', tie)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.6.4" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: world_cup_soln.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Bayesian Statistics Made Simple\n", "\n", "Code and exercises from my workshop on Bayesian statistics in Python.\n", "\n", "Copyright 2019 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "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": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "\n", "import seaborn as sns\n", "sns.set_style('white')\n", "sns.set_context('talk')\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "from empiricaldist import Pmf" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The World Cup problem\n", "\n", "In the 2018 FIFA World Cup final, France defeated Croatia 4 goals to 2. Based on this outcome, we can answer the following questions:\n", "\n", "1. How confident should we be that France is the better team?\n", "\n", "2. If the same teams played again, what is the chance Croatia would win?\n", "\n", "To answer these questions, we have to make some modeling assumptions:\n", "\n", "1. Goal scoring can be well modeled by a Poisson process, so the distribution of goals scored by each team against the other is Poisson($\\lambda$), where $\\lambda$ is a goal-scoring rate, measured in goals per game.\n", "\n", "2. For two random World Cup teams, the distribution of goal scoring rates is Gamma($\\alpha$), where $\\alpha$ is a parameter we can choose based on past results.\n", "\n", "To determine $\\alpha$, I used [data from previous World Cups](https://www.statista.com/statistics/269031/goals-scored-per-game-at-the-fifa-world-cup-since-1930/) to estimate that the average goal scoring rate is about 1.4 goals per game.\n", "\n", "We can use `scipy.stats.gamma` to compute the PDF of the Gamma distribution." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import gamma\n", "\n", "α = 1.4\n", "qs = np.linspace(0, 6)\n", "ps = gamma(α).pdf(qs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can use `qs` and `ps` to make a `Pmf` that represents the prior distribution" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.3870150350170796" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior = Pmf(ps, index=qs)\n", "prior.normalize()\n", "prior.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And plot it." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def decorate_rate(title):\n", " \"\"\"Labels the axes.\n", " \n", " title: string\n", " \"\"\"\n", " plt.xlabel('Goal scoring rate')\n", " plt.ylabel('PMF')\n", " plt.title(title)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "prior.plot()\n", "decorate_rate('Prior distribution')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This prior implies:\n", "\n", "1. The most common goal-scoring rates are near 1.\n", "\n", "2. The goal-scoring rate is never 0; eventually, any team will score against any other.\n", "\n", "3. The goal-scoring rate is unlikely to be greater than 4, and never greater than 6." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The likelihood function\n", "\n", "Suppose you are given the goal-scoring rate, $\\lambda$, and asked to compute the probability of scoring a number of goals, $k$. The answer is given by the Poisson PMF:\n", "\n", "$ \\mathrm{PMF}(k; \\lambda) = \\frac{\\lambda^k \\exp(-\\lambda)}{k!} $\n", "\n", "**Exercise 1:** Write a likelihood function that takes $k$ and $\\lambda$ as parameters `data` and `hypo`, and computes $\\mathrm{PMF}(k; \\lambda)$.\n", "\n", "You can use NumPy/SciPy functions or `scipy.stats.poisson`. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def likelihood(data, hypo):\n", " \"\"\"Likelihood function for World Cup\n", " \n", " data: integer number of goals in a game\n", " hypo: goal scoring rate in goals per game\n", " \n", " returns: float probability\n", " \"\"\"\n", " # TODO: fill this in!\n", " return 1" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "# Solution\n", "\n", "from math import factorial\n", "\n", "def likelihood(data, hypo):\n", " \"\"\"Likelihood function for World Cup\n", " \n", " data: integer number of goals in a game\n", " hypo: goal scoring rate in goals per game\n", " \n", " returns: float probability\n", " \"\"\"\n", " k = data\n", " λ = hypo\n", " return λ**k * np.exp(-λ) / factorial(k)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "# Solution\n", "\n", "from scipy.stats import poisson\n", "\n", "def likelihood(data, hypo):\n", " \"\"\"Likelihood function for World Cup\n", " \n", " data: integer number of goals in a game\n", " hypo: goal scoring rate in goals per game\n", " \n", " returns: float probability\n", " \"\"\"\n", " k = data\n", " λ = hypo\n", " return poisson.pmf(k, λ)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Update\n", "\n", "First we'll compute the posterior distribution for France, having seen them score 4 goals." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.656282076744656" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "france = Pmf(prior, copy=True)\n", "\n", "france.update(likelihood, 4)\n", "france.plot(label='France')\n", "decorate_rate('Posterior distribution, 4 goals')\n", "\n", "france.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 2:** Do the same for Croatia." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.695567117265963" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "## Solution\n", "\n", "croatia = Pmf(prior, copy=True)\n", "\n", "croatia.update(likelihood, 2)\n", "croatia.plot(label='Croatia', color='C3')\n", "decorate_rate('Posterior distribution, 2 goals')\n", "\n", "croatia.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Probability of superiority\n", "\n", "Now that we have a posterior distribution for each team, we can answer the first question: How confident should we be that France is the better team?\n", "\n", "In the model, \"better\" means having a higher goal-scoring rate against the opponent. We can use the posterior distributions to compute the \"probability of superiority\", which is the probability that a random value drawn from France's distribution exceeds a value drawn from Croatia's.\n", "\n", "Remember that `Pmf` provides `choice`, which returns a random sample as a NumPy array:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.7176326530612243" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_france = france.choice(size=1000)\n", "sample_france.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 3:** Generate a similar sample for Croatia; then compute the fraction of samples where the goal-scoring rate is higher for Croatia. \n", "\n", "Hint: use `np.mean`." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.7011836734693875" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "sample_croatia = croatia.choice(size=1000)\n", "sample_croatia.mean()" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.755" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "np.mean(sample_france > sample_croatia)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On the basis of one game, we have only moderate confidence that France is actually the better team." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Predicting the rematch\n", "\n", "Now we can take on the second question: If the same teams played again, what is the chance Croatia would win?\n", "\n", "To answer this question, we'll generate a sample from the \"posterior predictive distribution\", which is the number of goals we expect a team to score.\n", "\n", "If we knew the goal scoring rate, $\\lambda$, the distribution of goals would be $Poisson(\\lambda)$.\n", "\n", "Since we don't know $\\lambda$, we can use the sample we generated in the previous section to generate a sample of goals, like this:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "goals_france = np.random.poisson(sample_france)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can plot the results:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "def decorate_goals(title):\n", " \"\"\"Labels the axes.\n", " \n", " title: string\n", " \"\"\"\n", " plt.xlabel('Goals scored')\n", " plt.ylabel('PMF')\n", " plt.ylim([0, 0.32])\n", " plt.title(title)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.78" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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mcL1118PwKJFixgxYgQfffQR1113HVdeeSULFixg5MiRmeWTG0S5azK4+yRgUp5900h05rv7EmJNR0SkXN5880369u272fbLL7+cESNGAKHf5vzzz984B9jcuXPp06cPEyZMYJtttgFg//3356mnnuL555/ntNNO23ic3r17M27cOAAOOOAAXnrpJebMmQOEG11vueUWjjjiCMaOHQvAoEGDqKys5KmnnqK6upqJEyey9dZbM3Xq1I3n2nfffTnkkEO48847OfPMM1P6y2yq7EFGRKQp6tq1KxMnTtxse/fu3Tf+vvvuu28yyeTgwYMZPHgwa9euZeHChSxZsoQFCxawYsUKunTpsslx9t57783O98knnwChlvLBBx9w6KGb9hKMHj2a0aNHA/Dss8+y33770aZNG9atWwfA9ttvT//+/Xn66acVZEREGrPWrVvTr1+/gmmy+08g1EBuuOEGZsyYwapVq+jWrRv9+/enTZs2mzSzAbRtu+lMWS1atNg41cvKlStzHj/bypUruf/++7n//vs329ejR4+C5S4lBRkRkQYyefJkpk2bxtixYzn00EPp0CHcFnj88cfX6jiZfCtWrNhk+/Lly3nttdfYe++9ad++PYMHD+bkk0/eLH/r1q3reAW1p5UxRUQayLx58zAzjjvuuI2BYtmyZSxYsKBWE1L27NmT7bbbjkcffXST7bNmzeKss84C4Ctf+Qqvv/46ffv2pV+/fvTr148+ffowefJk5s6dW7qLqoFqMiIiDaR///7ceuutTJkyhQEDBrBkyRImTZrEp59+urG/pRgtW7Zk9OjRXH311Wy//fYcfPDBLFiwgMmTJ3PqqafSpk0bzj77bIYNG8aZZ57JsGHDaNmyJXfeeSdPP/30xoEJDUFBRkTKok+3jsw8fWBZz9/QzjjjDD788EOmT59OVVUV3bp145hjjqGiooLJkyfz8ccf0759+6KOddJJJ9GuXTtuu+02Zs6cyU477cQ555zDKaecAoTRaTNmzOCmm25izJgxVFRU0Lt3byZPntygU95UJDubtjRmtrJDhw7bvvDCC+UuikizsmTJEgB22WWXMpdEaqum126fffahqqrqI3ffrqZjqU9GRERSoyAjIiKpUZAREZHUKMiIiEhqFGRERCQ1CjIikooWLVqwfv36chdD6mD9+vW0aFGa8KAgIyKpaNu2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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pmf_france = Pmf.from_seq(goals_france)\n", "pmf_france.bar(label='France')\n", "decorate_goals('Predictive distribution')\n", "plt.legend()\n", "\n", "goals_france.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This distribution represents two sources of uncertainty: we don't know the actual value of $\\lambda$, and even if we did, we would not know the number of goals in the next game." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 4:** Generate and plot the predictive distribution for Croatia." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "1.711" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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/YFB7j4lFhkATAd+EssvBQ4k1E7uBh4HfgQc7O6v12PoIrIJKi8v569//Sv77bcfzZo1y1rm2GOP5fzzz2ezzcL39ocffpgePXowatQoBgwYwDfffMOJJ57I7NmzueKKKxg5ciTNmzdn8ODBTJ8+HYDvv/+eM888kwULFnDdddfx4IMPMnDgQJ555hlGjhwJwLBhw+jZsyd77LEHU6ZMoXv37uvF8sorr3DJJZfQq1cv7rnnHu666y523HFHrr/+ej788MM6+pRyX2PB3ccCYyvYlk9Gh7y7f06s0YiI1Kdly5ZRUlLCDjvsUO19tttuO6644oq1z9269dZbKSws5PHHH2f77bcHoH///hxzzDHcfvvtPPHEE8ybN4+OHTsyYsQIdtxxRwD23XdfZs+ezXvvvQdA165dadmyJaWlpey1115Zzz137lyOP/54hg4dunZd79696devH++++y69evWq1edQlZwnFhGRhiL1RIH0DvOq7Lbbbus8zHHmzJnsvffea5MKhKcKH3nkkYwaNYoVK1bQvXt3HnnkEcrKyliwYAGff/45c+bMYd68eTWK97zzzgNg5cqVzJ8/n4ULF/LRR6E7evXq1TU6Vk0osYiIVFObNm1o0aIFX331VYVlVqxYAbC2A32bbbZZZ/t3332XdcRYu3btKC8vZ+XKlbRs2ZJx48Zx7733snz5ctq1a0ePHj3YcsstWbVqVbXjXbp0KcOGDePll18mLy+PnXfemb333huo2/tfNNGXiEgN7L///syYMYOSkpKs2/Pz8+nbty+ff/551u2tW7dmyZIl663/5ptvANh666155plnuOWWWzjvvPOYPn06b7/9NmPHjq3xEObLLruMjz/+mPz8fD744AOee+45rrrqqhodozaUWEREamDw4MEsX76cUaNGrbftq6++YtKkSfTq1Yudd9456/59+vRh1qxZLFq0aO26srIynn/+eXr27MkWW2zBrFmz2HrrrTnnnHPWPiV65cqVzJo1a52HQ1b1sM9Zs2ZxxBFH0K9fP7bYYgsA3nzzzbXnrCtqChMRqYHevXtz4YUXMmbMGObNm8cxxxzDVlttRUFBAQ8++CBNmjThtttuq3D/wYMH8/TTT3PWWWdx8cUX06JFCx555BHmzp3L/fffD0CvXr2YPHkyI0aMoH///ixatIiHHnqIJUuWrDMdQatWrZg5cybTp09njz32WO9cvXr1Ytq0aey+++506NCB999/n/vuu4+8vDy+//775D+cSIlFROpV827d6DRhfE7Pv6EuvvhiunfvzqRJk7jpppsoLCxk++2354gjjuC8885j2223rXDfbbfdlsmTJ3P77bczbNgwysrK6NGjB+PGjaNfv34AHHfccXz55Zc88cQTTJw4kQ4dOnDQQQdx+umnc8011zB//nx22WUXBg8ezOzZszn33HMZMWLEev05t9xyCzfccAPDhw8HoHPnzlx//fVMmzaNWbNmrRdbUvI2xgeY1SczW96qVas2M2fOzHUoIo1Cqm+hoqYg2fhV9TfcZ599KCoq+s7dt8q2XX0sIiKSKCUWERFJlBKLiIgkSolFREQSpVFhjViuJlRKaiIlEWmYlFgasVxNqJTERErScDVp0qROn0Mlda+0tJTNN9+81vurKUxEEtW8eXNKSkpYunRprkORWli6dCklJSU0b9681sdQjUVEEtWuXTtKSkpYvHgxy5cvr/KxI7LxKC0tpaSkhFatWtGuXbtaH0eJRUQSlZeXR8eOHVmyZAnFxcV1+kwqSdbmm2++NqmkP+q/ppRYRCRxeXl5tG/fPtdhSI6oj0VERBKlxCIiIolSYhERkUQpsYiISKKUWEREJFFKLCIikiglFhERSZQSi4iIJEqJRUREEqXEIiIiiVJiERGRRCmxiIhIopRYREQkUUosIiKSKCUWERFJlBKLiIgkSolFREQSpRkkN1BpYSHFBQX1ft7m3brRtHXrej+viEhVlFg2UHFBAQsHnVXv5+00YTwt+vat9/OKiFRFTWEiIpIoJRYREUmUEouIiCRKfSySExr0INJ4KbFITmjQg0jjpaYwERFJlBKLiIgkSolFREQSpcQiIiKJUmIREZFEKbGIiEiilFhERCRRSiwiIpIoJRYREUmUEouIiCRKiUVERBKlxCIiIolSYhERkUQpsYiISKJy/th8MzsNuBroAiwAbnb3CZWU3w64ATgMaAs4cKu7P1730YqISFVyWmMxs5OAScCLwLHA68B4MzuxgvLNgOeBQ4FrgeOBWcBjMUGJiEiO5brGcjPwmLsPia9fMLO2hBrJ1CzlfwHsCfR19/fiupfMrBPwP8Dkug5YREQql7Mai5l1AXYFnsjYNBXoZma7ZNmtELgPmJmxviAeS0REciyXNZZu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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "goals_croatia = np.random.poisson(sample_croatia)\n", "\n", "pmf_croatia = Pmf.from_seq(goals_croatia)\n", "pmf_croatia.bar(label='Croatia', color='C3')\n", "decorate_goals('Predictive distribution')\n", "plt.legend()\n", "\n", "goals_croatia.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In a sense, these distributions represent the outcomes of 1000 simulated games." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise 5:** Compute the fraction of simulated rematches Croatia would win, how many France would win, and how many would end in a tie." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.27" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "np.mean(goals_croatia > goals_france)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.563" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "np.mean(goals_france > goals_croatia)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.167" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "np.mean(goals_france == goals_croatia)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Assuming that Croatia wins half of the ties, their chance of winning the rematch is about 33%." ] } ], "metadata": { "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.7.3" } }, "nbformat": 4, "nbformat_minor": 1 } ================================================ FILE: zigzag.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Bayesian Zig Zag\n", "===\n", "\n", "Developing probabilistic models using grid methods and MCMC.\n", "\n", "Thanks to Chris Fonnesback for his help with this notebook, and to Colin Carroll, who added features to pymc3 to support some of these examples.\n", "\n", "To install the most current version of pymc3 from source, run\n", "\n", "```\n", "pip3 install -U git+https://github.com/pymc-devs/pymc3.git\n", "```\n", "\n", "Copyright 2018 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [], "source": [ "from __future__ import print_function, division\n", "\n", "%matplotlib inline\n", "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n", "\n", "import numpy as np\n", "import pymc3 as pm\n", "\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulating hockey\n", "\n", "I'll model hockey as a Poisson process, where each team has some long-term average scoring rate, `lambda`, in goals per game.\n", "\n", "For the first example, we'll assume that `lambda` is known (somehow) to be 2.7. Since regulation play (as opposed to overtime) is 60 minutes, we can compute the goal scoring rate per minute." ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.045000000000000005, 0.0020250000000000003)" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lam_per_game = 2.7\n", "min_per_game = 60\n", "lam_per_min = lam_per_game / min_per_game\n", "lam_per_min, lam_per_min**2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we assume that a goal is equally likely during any minute of the game, and we ignore the possibility of scoring more than one goal in the same minute, we can simulate a game by generating one random value each minute." ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.80963831, 0.68228864, 0.13633497, 0.80645911, 0.729188 ,\n", " 0.65674259, 0.99358942, 0.96864162, 0.88277691, 0.75849531,\n", " 0.35889732, 0.19137711, 0.66359306, 0.40455576, 0.61752533,\n", " 0.89568021, 0.92808127, 0.09675268, 0.77288355, 0.8062082 ,\n", " 0.81343716, 0.28649071, 0.23592759, 0.07554884, 0.27467564,\n", " 0.88651527, 0.0404887 , 0.1928815 , 0.27599385, 0.78840173,\n", " 0.03477541, 0.73363459, 0.5207207 , 0.72170079, 0.1656318 ,\n", " 0.71835063, 0.70509143, 0.70747962, 0.55850228, 0.83333248,\n", " 0.8526162 , 0.38003919, 0.66625907, 0.12228102, 0.55990397,\n", " 0.47440832, 0.05773948, 0.21012857, 0.89557751, 0.85694797,\n", " 0.72104716, 0.0069061 , 0.1445821 , 0.07352778, 0.68039483,\n", " 0.54128289, 0.67084244, 0.25088576, 0.1803315 , 0.18103963])" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.random(min_per_game)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If the random value is less than `lam_per_min`, that means we score a goal during that minute." ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([False, False, False, False, False, False, False, False, False,\n", " False, False, False, False, False, True, False, False, False,\n", " False, False, False, False, False, False, False, False, False,\n", " False, False, False, False, False, False, False, False, False,\n", " False, False, False, False, False, False, False, False, False,\n", " False, False, False, False, False, False, False, False, False,\n", " False, False, False, False, False, False])" ] }, "execution_count": 79, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.random.random(min_per_game) < lam_per_min" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So we can get the number of goals scored by one team like this:" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4" ] }, "execution_count": 80, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.sum(np.random.random(min_per_game) < lam_per_min)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll wrap that in a function." ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [], "source": [ "def half_game(lam_per_min, min_per_game=60):\n", " return np.sum(np.random.random(min_per_game) < lam_per_min)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And simulate 10 games." ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 2, 1, 5, 2, 6, 3, 7, 2, 4]" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" } ], "source": [ "size = 10\n", "sample = [half_game(lam_per_min) for i in range(size)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we simulate 1000 games, we can see what the distribution looks like. The average of this sample should be close to `lam_per_game`." ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.666, 2.7)" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "size = 1000\n", "sample_sim = [half_game(lam_per_min) for i in range(size)]\n", "np.mean(sample_sim), lam_per_game" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PMFs\n", "\n", "To visualize distributions, I'll start with a probability mass function (PMF), which I'll implement using a `Counter`.\n", "\n" ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [], "source": [ "from collections import Counter\n", "\n", "class Pmf(Counter):\n", " \n", " def normalize(self):\n", " \"\"\"Normalizes the PMF so the probabilities add to 1.\"\"\"\n", " total = sum(self.values())\n", " for key in self:\n", " self[key] /= total\n", " \n", " def sorted_items(self):\n", " \"\"\"Returns the outcomes and their probabilities.\"\"\"\n", " return zip(*sorted(self.items()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are some functions for plotting PMFs." ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [], "source": [ "plot_options = dict(linewidth=3, alpha=0.6)\n", "\n", "def underride(options):\n", " \"\"\"Add key-value pairs to d only if key is not in d.\n", "\n", " options: dictionary\n", " \"\"\"\n", "\n", " for key, val in plot_options.items():\n", " options.setdefault(key, val)\n", " return options\n", "\n", "def plot(xs, ys, **options):\n", " \"\"\"Line plot with plot_options.\"\"\"\n", " plt.plot(xs, ys, **underride(options))\n", "\n", "def bar(xs, ys, **options):\n", " \"\"\"Bar plot with plot_options.\"\"\"\n", " plt.bar(xs, ys, **underride(options))\n", "\n", "def plot_pmf(sample, **options):\n", " \"\"\"Compute and plot a PMF.\"\"\"\n", " pmf = Pmf(sample)\n", " pmf.normalize()\n", " xs, ps = pmf.sorted_items()\n", " bar(xs, ps, **options)\n", " \n", "def pmf_goals():\n", " \"\"\"Decorate the axes.\"\"\"\n", " plt.xlabel('Number of goals')\n", " plt.ylabel('PMF')\n", " plt.title('Distribution of goals scored')\n", " legend()\n", " \n", "def legend(**options):\n", " \"\"\"Draw a legend only if there are labeled items.\n", " \"\"\"\n", " ax = plt.gca()\n", " handles, labels = ax.get_legend_handles_labels()\n", " if len(labels):\n", " plt.legend(**options)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the results from the simulation look like." ] }, { "cell_type": "code", "execution_count": 87, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_pmf(sample_sim, label='simulation')\n", "pmf_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analytic distributions\n", "\n", "For the simulation we just did, we can figure out the distribution analytically: it's a binomial distribution with parameters `n` and `p`, where `n` is the number of minutes and `p` is the probability of scoring a goal during any minute.\n", "\n", "We can use NumPy to generate a sample from a binomial distribution." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.723" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = min_per_game\n", "p = lam_per_min\n", "sample_bin = np.random.binomial(n, p, size)\n", "np.mean(sample_bin)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And confirm that the results are similar to what we got from the model." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_pmf(sample_sim, label='simulation')\n", "plot_pmf(sample_bin, label='binomial')\n", "pmf_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But plotting PMFs is a bad way to compare distributions. It's better to use the cumulative distribution function (CDF)." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "def plot_cdf(sample, **options):\n", " \"\"\"Compute and plot the CDF of a sample.\"\"\"\n", " pmf = Pmf(sample)\n", " xs, freqs = pmf.sorted_items()\n", " ps = np.cumsum(freqs, dtype=np.float)\n", " ps /= ps[-1]\n", " plot(xs, ps, **options)\n", " \n", "def cdf_rates():\n", " \"\"\"Decorate the axes.\"\"\"\n", " plt.xlabel('Goal scoring rate (mu)')\n", " plt.ylabel('CDF')\n", " plt.title('Distribution of goal scoring rate')\n", " legend()\n", "\n", "def cdf_goals():\n", " \"\"\"Decorate the axes.\"\"\"\n", " plt.xlabel('Number of goals')\n", " plt.ylabel('CDF')\n", " plt.title('Distribution of goals scored')\n", " legend()\n", "\n", "def plot_cdfs(*sample_seq, **options):\n", " \"\"\"Plot multiple CDFs.\"\"\"\n", " for sample in sample_seq:\n", " plot_cdf(sample, **options)\n", " cdf_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can compare the results from the simulation and the sample from the biomial distribution." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_sim, label='simulation')\n", "plot_cdf(sample_bin, label='binomial')\n", "cdf_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Poisson process\n", "\n", "For large values of `n`, the binomial distribution converges to the Poisson distribution with parameter `mu = n * p`, which is also `mu = lam_per_game`." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.708" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mu = lam_per_game\n", "sample_poisson = np.random.poisson(mu, size)\n", "np.mean(sample_poisson)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can confirm that the results are consistent with the simulation and the binomial distribution." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_cdfs(sample_sim, sample_bin)\n", "plot_cdf(sample_poisson, label='poisson', linestyle='dashed')\n", "legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Warming up PyMC\n", "\n", "Soon we will want to use `pymc3` to do inference, which is really what it's for. But just to get warmed up, I will use it to generate a sample from a Poisson distribution." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " goals = pm.Poisson('goals', mu)\n", " trace = pm.sample_prior_predictive(1000)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1000" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(trace['goals'])" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.681" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_pm = trace['goals']\n", "np.mean(sample_pm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This example is like using a cannon to kill a fly. But it help us learn to use the cannon." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_cdfs(sample_sim, sample_bin, sample_poisson)\n", "plot_cdf(sample_pm, label='poisson pymc', linestyle='dashed')\n", "legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Evaluating the Poisson distribution\n", "\n", "One of the nice things about the Poisson distribution is that we can compute its CDF and PMF analytically. We can use the CDF to check, one more time, the previous results." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import scipy.stats as st\n", "\n", "xs = np.arange(11)\n", "ps = st.poisson.cdf(xs, mu)\n", "\n", "plot_cdfs(sample_sim, sample_bin, sample_poisson, sample_pm)\n", "plt.plot(xs, ps, label='analytic', linestyle='dashed')\n", "legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can use the PMF to compute the probability of any given outcome. Here's what the analytic PMF looks like:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "image/png": "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//33Z/DgwRx11FE0Z/vtt+eAAw7ghRdeALJvfK5du5ZXX32ViOD+++/n2GOPbbXXKMVhYWYd3pQpU1iwYAG1tbVcffXVrFq1CoA1a9YwfPhwFi1axOGHH84NN9wAwKGHHsq8efNYuHAhY8eO5corr9ygvW7dunHEEUfw61//Gsg+5X/pS19i9OjR1NTUcNttt/Hkk0+y7bbbNqyzcuVKvva1r3HnnXeyaNEipk+fTnNWrVrFvHnzGDhwYMO0UaNGMX36dB555BH2339/ttlmmw3WOe+88xgyZAhDhgxh8eLW7U3oMAMJmpk15eqrr+ZXv/oVAMuXL+f555+nR48edOnSpaGb54ADDmD27NlAdm3ImDFjeOWVV3j//ffLXptw+umnc+WVV3LCCSfws5/9rCFomjJv3jwOP/zwhrZ22mmnsss9/PDDDB06lK222orzzz+fgQMHMmfOHAC+/OUvM2bMGJ599lnGjRvHI488ssG67oYyM9tIc+bM4Te/+Q2PPvooixYtYujQoQ3XG3Tu3LnhK6WdOnVi3brsTrYTJ07krLPOYvHixVx//fVlr0845JBDeOmll5g7dy7r169n3333bbaOiKjo66uHHXYYCxcuZMGCBZx55pkbzPvkJz9J586dmT17drIbq7U5LMysQ3vzzTfp3r072223Hc8++yzz5s2raJ3evXsDcPPNNze53Fe+8hXGjRvHaaed1jCtW7duvP322x9Z9uCDD2bu3Lm8+OKLAKxevbqluwLApEmTuOKKK+jUqdNGrb+x3A1lZm2qrb89N2LECK677jr2228/9t57b4YPH55c59JLL2X06NH07t2b4cOHN/yBb+ykk07ioosuYty4cQ3TTj31VM4880y23XZbHn300YbpvXr1YvLkyZx44ol8+OGH7Lzzzg3dXi3xmc98psXrtIYOcw/umpqa8M2Pmuavzlq1PPPMM+yzzz7VLqMQM2bM4O677+aWW26pdikVKfdeSFqQD63ULB9ZmJlthIkTJ3Lfffcxa9as9MIdgMPCzGwj/OQnP6l2CW3KJ7jNrHAdpbt7c7ap74HDwswK1bVrV1atWuXAqKL6+1l07dp1o9twN5SZFapPnz7U1dWxcuXKapeyRau/U97GcliYWaE6d+680Xdns/bD3VBmZpbksDAzsySHhZmZJTkszMwsyWFhZmZJDgszM0vyV2etEB640Kxj8ZGFmZklOSzMzCzJYWFmZkkOCzMzS3JYmJlZksPCzMySHBZmZpbksDAzsySHhZmZJTkszMwsyWFhZmZJDgszM0tyWJiZWZLDwszMkgoNC0kjJD0naamk88vMP0fS05L+IOm3knYrmTde0vP5z/gi6zQzs+YVFhaSOgHXAscCA4BxkgY0WmwhUBMR+wEzgCvzdXcCLgEOAoYBl0jqXlStZmbWvCKPLIYBSyNiWUS8D0wDRpYuEBEPRcTf8qfzgD75488DsyNidUT8FZgNjCiwVjMza0aRYdEbWF7yvC6f1pQJwH0tWVfSGZJqJdWuXLlyE8s1M7OmFBkWKjMtyi4onQzUAFe1ZN2ImBwRNRFR06tXr40u1MzMmldkWNQBu5Y87wOsaLyQpKOBC4HjI+K9lqxrZmZto8iwmA/sJam/pC7AWGBm6QKShgLXkwXFayWzHgCOkdQ9P7F9TD7NzMyqYOuiGo6IdZLOIvsj3wmYEhFLJE0CaiNiJlm30w7AdEkAL0fE8RGxWtL3yAIHYFJErC6qVjMza15hYQEQEbOAWY2mXVzy+Ohm1p0CTCmuOjMzq5Sv4DYzsySHhZmZJTkszMwsyWFhZmZJDgszM0tyWJiZWZLDwszMkhwWZmaW5LAwM7OkQq/gtqZdcNfiQtq97MRBhbRrZls2H1mYmVmSw8LMzJIcFmZmluSwMDOzJIeFmZklOSzMzCzJYWFmZkkOCzMzS3JYmJlZksPCzMySHBZmZpbksDAzsySHhZmZJTkszMwsyWFhZmZJDgszM0tyWJiZWZLDwszMkhwWZmaW5LAwM7Mkh4WZmSU5LMzMLMlhYWZmSYWGhaQRkp6TtFTS+WXmHy7pCUnrJI1qNG+9pCfzn5lF1mlmZs3buqiGJXUCrgU+B9QB8yXNjIinSxZ7GTgVOLdME+9GxJCi6jMzs8oVFhbAMGBpRCwDkDQNGAk0hEVEvJTP+7DAOszMbBMV2Q3VG1he8rwun1aprpJqJc2TdEK5BSSdkS9Tu3Llyk2p1czMmlHkkYXKTIsWrN83IlZI2h14UNLiiHhhg8YiJgOTAWpqalrStnUwF9y1uLC2LztxUGFtm20uijyyqAN2LXneB1hR6coRsSL/dxkwBxjamsWZmVnligyL+cBekvpL6gKMBSr6VpOk7pK2yR/3BA6h5FyHmZm1rcLCIiLWAWcBDwDPAHdExBJJkyQdDyDpQEl1wGjgeklL8tX3AWolLQIeAi5v9C0qMzNrQ0WesyAiZgGzGk27uOTxfLLuqcbrPQK4o9jMrJ3wFdxmZpbksDAzsySHhZmZJTkszMwsyWFhZmZJzYaFpKklj8cXXo2ZmbVLqSOLwSWPv1FkIWZm1n6lwsLjLZmZWfKivD6SriYbFLD+cYOIOLuwyszMrN1IhcV5JY9riyzEzMzar2bDIiJubqtCzMys/Wo2LFL3vo6I41u3HDMza49S3VAHk93t7pfAY5S/oZGZmXVwqbD4JPA5YBzwL8CvgV9GxJJm1zIzsw6l2a/ORsT6iLg/IsYDw4GlwBxJE9ukOjMzaxeS97PI71j3BbKji37A1cBdxZZlZmbtSeoE983AvsB9wHcj4qk2qcrMzNqV1JHFKcAa4NPANyTVX9EtICLiY0UWZ2Zm7UPqOguPSmtmZsluqK7AmcCewB+AKRGxri0KMzOz9iN15HAzUAMsBv4J+EHhFZmZWbuTOmcxICIGAUi6CXi8+JLMzKy9SR1ZfFD/wN1PZmZbrtSRxWBJb+WPBWybP/e3oczMtiCpb0N1aqtCzMys/fJXY83MLMlhYWZmSQ4LMzNLcliYmVmSw8LMzJIcFmZmluSwMDOzJIeFmZklFRoWkkZIek7SUknnl5l/uKQnJK2TNKrRvPGSns9/xhdZp5mZNa+wsJDUCbgWOBYYAIyTNKDRYi8DpwK/aLTuTsAlwEHAMOASSd2LqtXMzJpX5JHFMGBpRCyLiPeBacDI0gUi4qWI+APwYaN1Pw/MjojVEfFXYDYwosBazcysGUWGRW9gecnzunxaq60r6QxJtZJqV65cudGFmplZ84oMC5WZFmWmbfS6ETE5ImoioqZXr14tKs7MzCpXZFjUAbuWPO8DrGiDdc3MrJUVGRbzgb0k9ZfUBRgLzKxw3QeAYyR1z09sH5NPMzOzKigsLPI7651F9kf+GeCOiFgiaZKk4wEkHSipDhgNXC9pSb7uauB7ZIEzH5iUTzMzsypI3Slvk0TELGBWo2kXlzyeT9bFVG7dKcCUIuszM7PK+ApuMzNLcliYmVmSw8LMzJIcFmZmluSwMDOzJIeFmZklOSzMzCzJYWFmZkkOCzMzS3JYmJlZksPCzMySCh0byqwju+CuxYW0e9mJgwpp12xT+MjCzMySHBZmZpbksDAzsySHhZmZJTkszMwsyWFhZmZJDgszM0tyWJiZWZLDwszMkhwWZmaW5OE+ch66wcysaT6yMDOzJIeFmZklOSzMzCzJYWFmZkkOCzMzS3JYmJlZksPCzMySHBZmZpbksDAzsySHhZmZJRUaFpJGSHpO0lJJ55eZv42k2/P5j0nql0/vJ+ldSU/mP9cVWaeZmTWvsLGhJHUCrgU+B9QB8yXNjIinSxabAPw1IvaUNBa4AhiTz3shIoYUVZ+ZmVWuyCOLYcDSiFgWEe8D04CRjZYZCdycP54BHCVJBdZkZmYbociw6A0sL3lel08ru0xErAPeBHrk8/pLWihprqTDCqzTzMwSihyivNwRQlS4zCtA34hYJekA4L8lDYyItzZYWToDOAOgb9++rVCymZmVU+SRRR2wa8nzPsCKppaRtDWwI7A6It6LiFUAEbEAeAH4dOMNRMTkiKiJiJpevXoVsAtmZgbFhsV8YC9J/SV1AcYCMxstMxMYnz8eBTwYESGpV36CHEm7A3sBywqs1czMmlFYN1RErJN0FvAA0AmYEhFLJE0CaiNiJnATcIukpcBqskABOByYJGkdsB44MyJWF1WrmZk1r9DbqkbELGBWo2kXlzxeC4wus96dwJ1F1mZmZpXzFdxmZpbksDAzsySHhZmZJTkszMwsyWFhZmZJDgszM0sq9KuzZtZ6LrhrcSHtXnbioELatY7FRxZmZpbksDAzsySHhZmZJTkszMwsyWFhZmZJDgszM0tyWJiZWZLDwszMkhwWZmaW5LAwM7Mkh4WZmSU5LMzMLMlhYWZmSQ4LMzNLcliYmVmSw8LMzJIcFmZmluSwMDOzJN9W1czK8m1crZSPLMzMLMlhYWZmSQ4LMzNLcliYmVmSw8LMzJIcFmZmluSwMDOzJF9nYWbtQlHXdYCv7WgNhR5ZSBoh6TlJSyWdX2b+NpJuz+c/JqlfybwL8unPSfp8kXWamVnzCgsLSZ2Aa4FjgQHAOEkDGi02AfhrROwJ/F/ginzdAcBYYCAwAvhp3p6ZmVVBkd1Qw4ClEbEMQNI0YCTwdMkyI4FL88czgGskKZ8+LSLeA16UtDRv79EC6zWzLUhbd3tt7t1siohiGpZGASMi4vT8+SnAQRFxVskyT+XL1OXPXwAOIguQeRFxaz79JuC+iJjRaBtnAGfkT/cGnitkZz6qJ/B6G22rGjr6/kHH30fv3+avrfZxt4jolVqoyCMLlZnWOJmaWqaSdYmIycDklpe2aSTVRkRNW2+3rXT0/YOOv4/ev81fe9vHIk9w1wG7ljzvA6xoahlJWwM7AqsrXNfMzNpIkWExH9hLUn9JXchOWM9stMxMYHz+eBTwYGT9YjOBsfm3pfoDewGPF1irmZk1o7BuqIhYJ+ks4AGgEzAlIpZImgTURsRM4CbglvwE9mqyQCFf7g6yk+HrgH+PiPVF1boR2rzrq4119P2Djr+P3r/NX7vax8JOcJuZWcfh4T7MzCzJYWFmZkkOixZIDV+yuZO0q6SHJD0jaYmkb1S7piJI6iRpoaR7q11LESR9XNIMSc/m7+XB1a6pNUn6Zv77+ZSkX0rqWu2aNpWkKZJey689q5+2k6TZkp7P/+1ezRodFhWqcPiSzd064FsRsQ8wHPj3DriPAN8Anql2EQX6MXB/RPwDMJgOtK+SegNnAzURsS/Zl2fGVreqVjGVbGijUucDv42IvYDf5s+rxmFRuYbhSyLifaB++JIOIyJeiYgn8sdvk/2R6V3dqlqXpD7AF4Abq11LESR9DDic7JuGRMT7EfFGdatqdVsD2+bXZm1HB7gGKyJ+R/aN0FIjgZvzxzcDJ7RpUY04LCrXG1he8ryODvaHtFQ+AvBQ4LHqVtLqfgR8G/iw2oUUZHdgJfCzvKvtRknbV7uo1hIRfwb+C3gZeAV4MyL+p7pVFeYTEfEKZB/kgJ2rWYzDonIVDUHSEUjaAbgT+I+IeKva9bQWSccBr0XEgmrXUqCtgf2B/xcRQ4E1VLn7ojXl/fYjgf7ALsD2kk6ublVbBodF5baIIUgkdSYLitsi4q5q19PKDgGOl/QSWTfiP0q6tboltbo6oC4i6o8IZ5CFR0dxNPBiRKyMiA+Au4DPVLmmorwq6VMA+b+vVbMYh0XlKhm+ZLOWDw9/E/BMRPyw2vW0toi4ICL6REQ/svfvwYjoUJ9KI+IvwHJJe+eTjmLD2wJs7l4GhkvaLv99PYoOdAK/kdLhkMYDd1exFt9WtVJNDV9S5bJa2yHAKcBiSU/m074TEbOqWJO13ETgtvxDzTLgtCrX02oi4jFJM4AnyL69t5B2NizGxpD0S+AIoKekOuAS4HLgDkkTyEJydPUq9HAfZmZWAXdDmZlZksPCzMySHBZmZpbksDAzsySHhZmZJTksrEOQFJJ+UPL8XEmXtlLbUyWNao22EtsZnY8S+1CB22iTfbGOx2FhHcV7wImSela7kFL5aMWVmgD8W0QcWVQ9ZhvLYWEdxTqyi7O+2XhG40/Tkt7J/z1C0lxJd0j6o6TLJZ0k6XFJiyXtUdLM0ZIezpc7Ll+/k6SrJM2X9AdJ/1rS7kOSfgEsLlPPuLz9pyRdkU+7GDgUuE7SVY2W30rST/N7ONwraVb9/kg6Kh8wcHF+T4Rt6tvL63pK0uT8aufGdVwu6em89v9q2cttWxqHhXUk1wInSdqxBesMJru/xSCyq9c/HRHDyIYwn1iyXD/gs2TDm1+X33BnAtmopwcCBwJfk9Q/X34YcGFEbHA/EEm7AFcA/wgMAQ6UdEJETAJqgZMi4rxGNZ6Yb38QcDpwcN5WV7L7IIyJiEFkIzJ8PV/nmog4ML/nw7bAcY3q2An4Z2BgROwHfL/SF8y2TA4L6zDyEXJ/TnZznErNz+/j8R7wAlA/3PVisj/Q9e6IiA8j4nmyITT+ATgG+Eo+NMpjQA9gr3z5xyPixTLbOxCYkw+Etw64jez+E805FJieb/8vQP05jb3JBtX7Y/785pK2jpT0mKTFZME0sFGbbwFrgRslnQj8LVGDbeEcFtbR/IjsE3/pPRzWkf+u590xXUrmvVfy+MOS5x+y4dhpjcfFCbJh6ydGxJD8p3/JvRXWNFFfuaHuU5pap+z0/Ijjp8Co/IjjBmCDW4/mQTWMbIThE4D7N6Iu24I4LKxDiYjVwB1kgVHvJeCA/PFIoPNGND06P3ewB9kNhp4jG1Ty6/mw7kj6dAU3GnoM+KyknvnJ73HA3MQ6vwe+lG//E2QDzgE8C/STtGf+/JS8rfpgeD2/N8lHvv2UT98xHyTyP8i6xMya5FFnrSP6AXBWyfMbgLslPU52L+OmPvU35zmyP8SfAM6MiLWSbiTrqnoiP2JZSeLWlxHxiqQLyLqSBMyKiNTQ03eSDcX9FPBHssB5M6/hNGB6fovR+cB1EfGepBvIutJeyqc31o3sNema1/GRLwaYlfKos2abAUk7RMQ7knoAjwOH5OcvzNqEjyzMNg/3Svo42fmW7zkorK35yMLMzJJ8gtvMzJIcFmZmluSwMDOzJIeFmZklOSzMzCzp/wO6PLlRpsIIYAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "xs = np.arange(11)\n", "ps = st.poisson.pmf(xs, mu)\n", "bar(xs, ps, label='analytic PMF')\n", "pmf_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's a function that compute the probability of scoring a given number of goals in a game, for a known value of `mu`." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "def poisson_likelihood(goals, mu):\n", " \"\"\"Probability of goals given scoring rate.\n", " \n", " goals: observed number of goals (scalar or sequence)\n", " mu: hypothetical goals per game\n", " \n", " returns: probability\n", " \"\"\"\n", " return np.prod(st.poisson.pmf(goals, mu))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the probability of scoring 6 goals in a game if the long-term rate is 2.7 goals per game." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.036162211957124435" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poisson_likelihood(goals=6, mu=2.7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the probability of scoring 3 goals." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.22046768454274915" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poisson_likelihood(goals=3, mu=2.7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function also works with a sequence of goals, so we can compute the probability of scoring 6 goals in the first game and 3 in the second." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.008858443486812598" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poisson_likelihood(goals=[6, 2], mu=2.7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bayesian inference with grid approximation\n", "\n", "Ok, it's finally time to do some inference! The function we just wrote computes the likelihood of the data, given a hypothetical value of `mu`:\n", "\n", "$\\mathrm{Prob}~(x ~|~ \\mu)$\n", "\n", "But what we really want is the distribution of `mu`, given the data:\n", "\n", "$\\mathrm{Prob}~(\\mu ~|~ x)$\n", "\n", "If only there were some theorem that relates these probabilities!\n", "\n", "The following class implements Bayes's theorem." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "class Suite(Pmf):\n", " \"\"\"Represents a set of hypotheses and their probabilities.\"\"\"\n", " \n", " def bayes_update(self, data, like_func):\n", " \"\"\"Perform a Bayesian update.\n", " \n", " data: some representation of observed data\n", " like_func: likelihood function that takes (data, hypo), where\n", " hypo is the hypothetical value of some parameter,\n", " and returns P(data | hypo)\n", " \"\"\"\n", " for hypo in self:\n", " self[hypo] *= like_func(data, hypo)\n", " self.normalize()\n", " \n", " def plot(self, **options):\n", " \"\"\"Plot the hypotheses and their probabilities.\"\"\"\n", " xs, ps = self.sorted_items()\n", " plot(xs, ps, **options)\n", " \n", "\n", "def pdf_rate():\n", " \"\"\"Decorate the axes.\"\"\"\n", " plt.xlabel('Goals per game (mu)')\n", " plt.ylabel('PDF')\n", " plt.title('Distribution of goal scoring rate')\n", " legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll start with a uniform prior just to keep things simple. We'll choose a better prior later." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0. , 0.4, 0.8, 1.2, 1.6, 2. , 2.4, 2.8, 3.2, 3.6, 4. ,\n", " 4.4, 4.8, 5.2, 5.6, 6. , 6.4, 6.8, 7.2, 7.6, 8. , 8.4,\n", " 8.8, 9.2, 9.6, 10. , 10.4, 10.8, 11.2, 11.6, 12. , 12.4, 12.8,\n", " 13.2, 13.6, 14. , 14.4, 14.8, 15.2, 15.6, 16. , 16.4, 16.8, 17.2,\n", " 17.6, 18. , 18.4, 18.8, 19.2, 19.6, 20. ])" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hypo_mu = np.linspace(0, 20, num=51)\n", "hypo_mu" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Initially `suite` represents the prior distribution of `mu`." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "suite = Suite(hypo_mu)\n", "suite.normalize()\n", "suite.plot(label='prior')\n", "pdf_rate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can update it with the data and plot the posterior." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "suite.bayes_update(data=6, like_func=poisson_likelihood)\n", "suite.plot(label='posterior')\n", "pdf_rate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With a uniform prior, the posterior is the likelihood function, and the MAP is the value of `mu` that maximizes likelihood, which is the observed number of goals, 6.\n", "\n", "This result is probably not reasonable, because the prior was not reasonable." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A better prior\n", "\n", "To construct a better prior, I'll use scores from previous Stanley Cup finals to estimate the parameters of a gamma distribution.\n", "\n", "Why gamma? You'll see.\n", "\n", "Here are (total goals)/(number of games) for both teams from 2013 to 2017, not including games that went into overtime. " ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[2.1666666666666665,\n", " 3.1666666666666665,\n", " 2.0,\n", " 1.0,\n", " 1.6666666666666667,\n", " 2.1666666666666665,\n", " 1.0,\n", " 2.0,\n", " 1.6666666666666667,\n", " 2.0]" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xs = [13/6, 19/6, 8/4, 4/4, 10/6, 13/6, 2/2, 4/2, 5/3, 6/3]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If those values were sampled from a gamma distribution, we can estimate its parameters, `k` and `theta`." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [], "source": [ "def estimate_gamma_params(xs):\n", " \"\"\"Estimate the parameters of a gamma distribution.\n", " \n", " See https://en.wikipedia.org/wiki/Gamma_distribution#Parameter_estimation\n", " \"\"\"\n", " s = np.log(np.mean(xs)) - np.mean(np.log(xs))\n", " k = (3 - s + np.sqrt((s-3)**2 + 24*s)) / 12 / s\n", " theta = np.mean(xs) / k\n", " alpha = k\n", " beta = 1 / theta\n", " return alpha, beta" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the estimates." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "9.590040427964036 5.092056864405683\n" ] } ], "source": [ "alpha, beta = estimate_gamma_params(xs)\n", "print(alpha, beta)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following function takes `alpha` and `beta` and returns a \"frozen\" distribution from SciPy's stats module:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [], "source": [ "def make_gamma_dist(alpha, beta):\n", " \"\"\"Returns a frozen distribution with given parameters.\n", " \"\"\"\n", " return st.gamma(a=alpha, scale=1/beta)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The frozen distribution knows how to compute its mean and standard deviation:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.883333333333333 0.6081587702831356\n" ] } ], "source": [ "dist = make_gamma_dist(alpha, beta)\n", "print(dist.mean(), dist.std())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And it can compute its PDF." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.00000000e+00, 6.38558824e-08, 1.47882071e-05, 2.89335244e-04,\n", " 2.05818741e-03, 8.41008968e-03, 2.42005653e-02, 5.46708620e-02,\n", " 1.03457950e-01, 1.71009756e-01, 2.54058869e-01, 3.46221457e-01,\n", " 4.39353435e-01, 5.25141940e-01, 5.96484573e-01, 6.48394461e-01,\n", " 6.78362677e-01, 6.86251605e-01, 6.73866305e-01, 6.44365210e-01,\n", " 6.01647333e-01, 5.49811363e-01, 4.92738384e-01, 4.33813676e-01,\n", " 3.75777888e-01, 3.20683656e-01, 2.69928462e-01, 2.24335393e-01,\n", " 1.84257838e-01, 1.49689963e-01, 1.20370713e-01, 9.58741574e-02,\n", " 7.56829865e-02, 5.92447692e-02, 4.60123559e-02, 3.54707493e-02,\n", " 2.71531125e-02, 2.06485333e-02, 1.56038850e-02, 1.17217339e-02,\n", " 8.75583226e-03, 6.50534975e-03, 4.80865843e-03, 3.53721739e-03,\n", " 2.58989044e-03, 1.88787645e-03, 1.37032322e-03, 9.90624353e-04,\n", " 7.13355115e-04, 5.11779658e-04, 3.65852616e-04, 2.60637420e-04,\n", " 1.85068625e-04, 1.30993248e-04, 9.24350534e-05, 6.50346646e-05,\n", " 4.56267621e-05, 3.19230663e-05, 2.22762016e-05, 1.55048845e-05,\n", " 1.07652488e-05, 7.45664014e-06, 5.15299332e-06, 3.55308296e-06,\n", " 2.44461832e-06, 1.67844019e-06, 1.15005230e-06, 7.86453021e-07,\n", " 5.36780624e-07, 3.65690768e-07, 2.48683805e-07, 1.68818324e-07,\n", " 1.14406721e-07, 7.74040680e-08, 5.22848551e-08, 3.52619808e-08,\n", " 2.37451120e-08, 1.59659882e-08, 1.07198354e-08, 7.18732361e-09,\n", " 4.81225325e-09, 3.21770923e-09, 2.14870341e-09, 1.43301682e-09,\n", " 9.54518898e-10, 6.35022369e-10, 4.21965684e-10, 2.80066266e-10,\n", " 1.85674197e-10, 1.22959061e-10, 8.13389408e-11, 5.37496810e-11,\n", " 3.54815628e-11, 2.33985422e-11, 1.54149991e-11, 1.01455589e-11,\n", " 6.67106332e-12, 4.38237291e-12, 2.87625299e-12, 1.88606377e-12,\n", " 1.23567713e-12])" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hypo_mu = np.linspace(0, 10, num=101)\n", "ps = dist.pdf(hypo_mu)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "image/png": "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ae9J/hJEY/Crp7dz5anzqa0qHeTZxpiR+s53vsMnPvEJAG6++WYAXn75ZZqamjjrrLNYu3YtoVDy7+nHHnuM+++/n5deeonS0lKamppGdK7HHnuMmprBl+eeMmUK3/ve97jvvvuStpeUlHD66adz55138uEPf3g0L29YNqI5Rzz+enMiIYjAu46qoarMyend/VFu/fM2uvoKaip/k+O+/vWvc+yxx3LmmWeyatWqxC/hm2++mWXLlrF48WIuuOACurq6ALjkkku48sorOe200zjyyCN54oknuPTSSznuuOO45JJLEsetrKzkS1/6EieffDJnnHEGzz77LKeeeipHHnkka9asAWDbtm28+93vZunSpSxdupQ///nPieffc889rFixAoANGzZw+unOcuXTpk1j8uTJaafZ+dGPfsRVV11FaWlpYt9MmDZtGsuWLUvbvfTcc8/lttsytarqgJyb+6gQRaIxXt7Zlri/atlsFtVPYvGsSdz05Bb6o8r+zj4ee62Zvz3RViU0o3P1vYcs250x15+/KO32devWcc899/DCCy8QiURYunQpJ598MgDnn39+4pf6Nddcw09/+lM+8xlnxdWWlhYeffRR1qxZw9lnn81TTz3FLbfcwrJly1i/fj1Lliyhs7OTU089lW9+85ucd955XHPNNTz88MNs2LCBiy++mJUrVzJt2jQefvhhysrKeOONN1i1ahXr1q1j69atVFdXJy7uixcv5v777+eiiy5ix44dPPfcc+zYsYPly5cnvZ5Nmzbxxz/+kS9/+cuUlZXxrW99i2XLlg353ogI73nPexARPvnJT3L55ZeP6r094YQTWLt27aieMxKWFHLAG00ddPU5vXWrK4o5oc5Z17y+uoLzl9Zz51pnOMiLja2cdcIRhELWq8Rktz/96U+cc845lJeXA3D22WcnHnvllVe45ppraG1tpaOjg/e+972Jx84++2xEhEWLFjF9+nQWLXKSzvHHH8+2bdtYsmQJJSUliV/6ixYtorS0lOLiYhYtWsS2bdsAZ/De6tWrWb9+PeFwmE2bNgFOe4K32/ull17Kxo0baWhoYM6cObzjHe+gqOjQy2YkEqGlpYWnn36atWvXcuGFF7Jly5YhewI99dRTzJw5k6amJs4880yOPfZYTjnllBG/h+FwmJKSEtrb26mqqhrx84Zj1Uc54MUdA1NC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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot(hypo_mu, ps, label='gamma(9.6, 5.1)')\n", "pdf_rate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use `make_gamma_dist` to construct a prior suite with the given parameters." ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "def make_gamma_suite(xs, alpha, beta):\n", " \"\"\"Makes a suite based on a gamma distribution.\n", " \n", " xs: places to evaluate the PDF\n", " alpha, beta: parameters of the distribution\n", " \n", " returns: Suite\n", " \"\"\"\n", " dist = make_gamma_dist(alpha, beta)\n", " ps = dist.pdf(xs)\n", " prior = Suite(dict(zip(xs, ps)))\n", " prior.normalize()\n", " return prior" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "prior = make_gamma_suite(hypo_mu, alpha, beta)\n", "\n", "prior.plot(label='gamma prior')\n", "pdf_rate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can update this prior using the observed data." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "posterior = prior.copy()\n", "posterior.bayes_update(data=6, like_func=poisson_likelihood)\n", "\n", "prior.plot(label='prior')\n", "posterior.plot(label='posterior')\n", "pdf_rate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results are substantially different from what we got with the uniform prior." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "image/png": "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8WI2bdpERUUF11xzDR0dHQA8++yzrFq1ihUrVnDTTTc5Vtsdd9zB0qVLqaio4Pbbb+eVV15h8+bNfOlLX2LlypVUVVVRVVXFJZdcwhlnnMH69evZs2cPADfeeCNf+MIXuPDCC/nKV77Cz3/+c267zZop9cCBA2zcuJGKigo2btzIwYMHo+7j5rLLLmPHjh0ArFq1invuuQeAr33ta9x///3U1NSwfPlyenp6uOuuu3jsscdYuXIljz32GAC7du1iw4YNzJs3j+9///tRr1FeXp7TfuKJJ7jxxhsduT772c9yzjnnMG/ePEdBhM4J8P73v59jx46xcuVKXnrpJbZv385ZZ51FRUUFV199NU1NTQBs2LCBO++8kwsuuIDvfe973Hjjjdx6661ceOGFzJs3jxdeeIGbbrqJJUuWOOePpLy8nK985SusXbuWtWvXUllZ6ck1Hyn6CDea6OuFt34Bve3W8tuPwoV3Qtrw8qJTQXV1NcePH3eW8/LymDdvHmVlZaSlpQGW4li6dCmLFi2ivr6empoa58939OhR3nnnHVasWDGmYhm//e1vPTv2FVdcEXX93r17eeCBBzj33HO56aab+NGPfsRtt93GjTfeyLPPPstpp53GDTfcwH/+539yww038OSTT7Jnzx5EhObmZoqKirjyyiu5/PLLHffLxo0bue+++1i4cCGvvfYan/70p3nuuecA2LdvH3/+859JS0vj5z//uSPHbbfdxg033MCmTZv46U9/ymc/+1meeuqpU/Zxc/755/PSSy9RXl6O3+/n5ZdfBmDLli187GMfc/plZGRwzz33sHXrVn7wgx8Alhtqz549PP/887S2trJo0SJuvfXWIY0fqK+vZ8uWLezZs4crr7wyzP0Elsvn8ssvZ/v27QBUVFTwH//xH1xwwQXcddddfP3rX+ff//3fAWhubuaFF14ArJt1U1MTzz33HJs3b+aKK67g5Zdf5v777+fMM89k+/btrFy58hR5CgoKeP3113nooYf43Oc+x+9+97uEX/ORopbFaGLfM9B2pH+5sxGqnk+dPEOkpaXFeRIFmD9/Phs2bGDOnDlRf7hpaWmUlZVx3nnnsXDhQmf9gQMHqKqqSorMY5lZs2Zx7rnnAvCxj32MLVu2sHfvXubOnctpp50GwKZNm3jxxRcpKCggKyuLT3ziE/z6178mJyfnlOO1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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "suite.plot(label='posterior with uniform prior', color='gray')\n", "posterior.plot(label='posterior with gamma prior', color=COLORS[1])\n", "pdf_rate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose the same team plays again and scores 2 goals in the second game. We can perform a second update using the posterior from the first update as the prior for the second." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "posterior2 = posterior.copy()\n", "posterior2.bayes_update(data=2, like_func=poisson_likelihood)\n", "\n", "prior.plot(label='prior')\n", "posterior.plot(label='posterior')\n", "posterior2.plot(label='posterior2')\n", "pdf_rate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Or, starting with the original prior, we can update with both pieces of data at the same time." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "posterior3 = prior.copy()\n", "posterior3.bayes_update(data=[6, 2], like_func=poisson_likelihood)\n", "\n", "prior.plot(label='prior')\n", "posterior.plot(label='posterior')\n", "posterior2.plot(label='posterior2')\n", "posterior3.plot(label='posterior3', linestyle='dashed')\n", "pdf_rate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Update using conjugate priors\n", "\n", "I'm using a gamma distribution as a prior in part because it has a shape that seems credible based on what I know about hockey.\n", "\n", "But it is also useful because it happens to be the conjugate prior of the Poisson distribution, which means that if the prior is gamma and we update with a Poisson likelihood function, the posterior is also gamma.\n", "\n", "See https://en.wikipedia.org/wiki/Conjugate_prior#Discrete_distributions\n", "\n", "And often we can compute the parameters of the posterior with very little computation. If we observe `x` goals in `1` game, the new parameters are `alpha+x` and `beta+1`." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "class GammaSuite:\n", " \"\"\"Represents a gamma conjugate prior/posterior.\"\"\"\n", " \n", " def __init__(self, alpha, beta):\n", " \"\"\"Initialize.\n", " \n", " alpha, beta: parameters\n", " dist: frozen distribution from scipy.stats\n", " \"\"\"\n", " self.alpha = alpha\n", " self.beta = beta\n", " self.dist = make_gamma_dist(alpha, beta)\n", " \n", " def plot(self, xs, **options):\n", " \"\"\"Plot the suite.\n", " \n", " xs: locations where we should evaluate the PDF.\n", " \"\"\"\n", " ps = self.dist.pdf(xs)\n", " ps /= np.sum(ps)\n", " plot(xs, ps, **options)\n", " \n", " def bayes_update(self, data):\n", " return GammaSuite(self.alpha+data, self.beta+1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the prior looks like using a `GammaSuite`:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.883333333333333" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gamma_prior = GammaSuite(alpha, beta)\n", "gamma_prior.plot(hypo_mu, label='prior')\n", "pdf_rate()\n", "gamma_prior.dist.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's the posterior after one update." ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.559076642743212" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gamma_posterior = gamma_prior.bayes_update(6)\n", "\n", "gamma_prior.plot(hypo_mu, label='prior')\n", "gamma_posterior.plot(hypo_mu, label='posterior')\n", "pdf_rate()\n", "gamma_posterior.dist.mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can confirm that the posterior we get using the conjugate prior is the same as the one we got using a grid approximation." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "gamma_prior.plot(hypo_mu, label='prior')\n", "gamma_posterior.plot(hypo_mu, label='posterior conjugate')\n", "posterior.plot(label='posterior grid', linestyle='dashed')\n", "pdf_rate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior predictive distribution\n", "\n", "Ok, let's get to what is usually the point of this whole exercise, making predictions.\n", "\n", "The prior represents what we believe about the distribution of `mu` based on the data (and our prior beliefs).\n", "\n", "Each value of `mu` is a possible goal scoring rate.\n", "\n", "For a given value of `mu`, we can generate a distribution of goals scored in a particular game, which is Poisson.\n", "\n", "But we don't have a given value of `mu`, we have a whole bunch of values for `mu`, with different probabilities.\n", "\n", "So the posterior predictive distribution is a mixture of Poissons with different weights.\n", "\n", "The simplest way to generate the posterior predictive distribution is to\n", "\n", "1. Draw a random `mu` from the posterior distribution.\n", "\n", "2. Draw a random number of goals from `Poisson(mu)`.\n", "\n", "3. Repeat.\n", "\n", "Here's a function that draws a sample from a posterior `Suite` (the grid approximation, not `GammaSuite`)." ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "def sample_suite(suite, size):\n", " \"\"\"Draw a random sample from a Suite\n", " \n", " suite: Suite object\n", " size: sample size\n", " \"\"\"\n", " xs, ps = zip(*suite.items())\n", " return np.random.choice(xs, size, replace=True, p=ps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a sample of `mu` drawn from the posterior distribution (after one game)." ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.5440000000000005" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "size = 10000\n", "sample_post = sample_suite(posterior, size)\n", "np.mean(sample_post)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the posterior distribution looks like." ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "image/png": "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9uoGdtY0sKumkT3hiX9PXSO76yLUR2KpDrPTzCDTjMwMI8OMDAuWBessOFE1zYcTZsEia2V5wubxA9i+swBkhMszMqx5vo39Jj4vJzO5dxKk8sxQzr7juZYSjAzV65SVlTFnzhxOOOEE3nrrLSZOnMg999xDQUEBzz77LN/4xjeIRCLMmjWLX//61+Tm5nLTTTexcOFCsrKyOOuss7jgggtYuHAhL774Ij/84Q955JFHALj++uupqKigoKCA3/zmNxx55JFcffXVFBcX89Zbb3Hssccyffp0lixZwi9/+Us2bNjANddcQ0VFBSUlJdx1112MHj16v+f87Gc/i8e/fPlyPv/5z9PQ0EAsFuORRx5hwoQJfPrTn2bTpk3U1dXx1a9+lWuvvRYIfulff/31PPPMMwwaNIgf//jHfPOb32Tjxo384he/YN68edx99908+uij1NfXs379ei699FK++93v7vfe3XLLLTz00EPU19dz/vnn8/3vf797/mnSoVjM+XB3HRsqa9iyq5bKvfVU7m1gd23XDxmRm5VBXnYmuVkZ5GRlxP9mZwaPnKwMcjKNrIwMsjItvjwr08jKaF6emRHMZ2YE22TET/bBCb5puml5pln8pCyBVCaFhcANZvYgQQNzVVe0J3zrz/sNQdxlfnLB9DbXrV69mt/97neccsopXHPNNfzqV7/ihhtu4Oqrr+bZZ59l4sSJXHnllfz617/myiuv5NFHH2XVqlWYGbt27WLgwIHMmzePuXPnctFFFwHwyU9+kttvv50JEybw+uuv80//9E8899xzALz//vs888wzZGZmcvfdd8fjuOGGG7jyyiu56qqruPPOO7nxxhtZsGDBfs9JdPvtt/PVr36Vyy67jIaGBqLRYNjfO++8k+LiYmpra5k1axYXXnghgwcPZu/evcyePZuf/vSnnH/++Xz729/m6aefZsWKFVx11VXxUsvixYt57733KCgoYNasWZx33nnMnDkzftynnnqKNWvWsHjxYtydefPm8dJLL/Hxj3/80P9ZcsCq6yNs2lHDxh01bKysYfOu2oP+xZ+ZAf1zsynKz6IoL5vCvOBvUX4WhXnZFORkUpCTRV52BnlZmTox9yBJSwpm9gAwGxhiZuXAd4FsAHe/HXgCOJdgfNsa2h4/uFcYNWoUp5xyCgCXX345t956K2eeeSbjxo1j4sSJ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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_post, label='posterior sample')\n", "cdf_rates()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now for each value of `mu` in the posterior sample we draw one sample from `Poisson(mu)`" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.5065" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post_pred = np.random.poisson(sample_post)\n", "np.mean(sample_post_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the posterior predictive distribution looks like." ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "image/png": "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IfTu3ZshQ4awZs2avG1yTZ06lREjRjBs2DD2228/Lrvsssr16tGjB+eccw4HHXQQr7/+Og899BADBgzgoIMOYuTIkWzcuBGAP/zhD+y///4MGjSI2bNnb9F3RW1vvvkmxx9/PH369KFPnz4888wzTJw4kRUrVlBcXMyECRNYtWoVBx54IACHHHIIS5Ysqexr8ODBzJ8/n/fee4/TTjuNfv360bdvX377299u9Tt54403OOKIIyguLubAAw/kqaeeAmD8+PGUlJRwwAEHcMkll1Qu37lzZ37wgx8wYMAASkpKWLBgAUOHDqVr167cdNNNQLJFdcQRR3D88cfTs2dPzj77bDZv3rzVa995553079+f4uJizjrrLD7+eKs7DDcoX2Fu1owtW7aMcePGsWjRInbddVduuOEGNm3axNixY5kxYwaLFy+mvLycG2+8kfXr1/Ob3/yGJUuWsGjRIn70ox9x2GGHMXz4cKZMmcLChQvp2rUr48aN4xe/+AXz58/nqquuqvx2DvDqq6/yyCOPcPXVV29Rx7nnnsupp57KokWL+MY3vsF5551XYxuAuXPnMm3aNBYuXMg999xTOT7dsmXLOPXUU3nhhRfYeeedmTRpEo888ggLFiygpKSEa665hk2bNnHmmWfyu9/9jqeeeoq//e1ved+j8847jyOPPJIXX3yRBQsWcMABBzB58mS6du3KwoULmTJlyhbLjxo1ipkzZwJJGKxdu5aDDz6YK664gi9+8YvMmzePxx9/nAkTJvDee+9t0fauu+5i6NChLFy4kBdffJHi4uRStSuuuILS0lIWLVrEn/70JxYtWlTZplOnTjz77LMcfvjhjB07llmzZvHcc89x8cWVt7Jn7ty5XH311SxevJgVK1ZsEZQAL7/8MjNmzODPf/4zCxcupKioiGnTpuV9PxqKw8OsGevUqRMDBw4E4JRTTuHpp59m2bJldOnShe7duwMwZswYnnzySXbddVdat27NGWecwezZs/nMZz6zVX8bN27kmWeeYeTIkZXfYN94443K+SNHjqSoqGirds8++ywnn5wc0hw9ejRPP/10jW0Ajj76aNq2bcunP/1pTjjhhMp2e++9N4ceeigAzz33HEuXLmXgwIEUFxdz++23s3r1al555RW6dOlCt27dkMQpp+S/TOyxxx5j/Pjk3lpFRUXstttu23xPv/a1r3HPPfcAMHPmTEaOHAnAQw89xOTJkykuLmbw4MFs2rSpcgurQr9+/bjtttu49NJLWbx4MW3atKns56CDDqJv374sWbKEpUv/vRe+Yvdar169OOSQQ2jTpg3t27endevWbNiwAYD+/fuzzz77UFRUxEknnbTF+wvJlub8+fPp168fxcXFPProo6xcuXKb61lfLWZUXbNPoqqnX0qiuhu87bjjjsydO5dHH32U6dOnc9111/HYY49tsczmzZvZfffdWbhwYd4+dt5558x1batNvvqrtokIjj76aO6+++4tll24cGFBTpXu0KEDbdu2ZdGiRcyYMYNf/vKXlXXce++97LffftW2PeKII3jyySf5/e9/z+jRo5kwYQKHH344V111FfPmzWOPPfZg7NixW1xvsdNOOwGwww47VD6ueF5entyJuLr3qUJEMGbMGK688sr6rXwG3vIwa8bWrFnDs88+C8Ddd9/NoEGD2H///Vm1ahXLly8H4I477uDII49k48aNvPPOO3zpS1/iZz/7WWVAtGnThn/+858A7LrrrnTp0qXym3dE8OKLL9ZYx2GHHcb06dMBmDZtGoMGDapV/Q8//DDr16/ngw8+4L777qvcisp16KGH8uc//7lyfd5//31effVV9t9/f1577TVWrFhRuf75DBkyhBtvvBGAjz/+mHfffXeLdc5n1KhR/PSnP+Wdd96hV6/kZJGhQ4fyi1/8ojKcX3jhha3arV69ms997nOceeaZnH766SxYsIB3332XnXfemd12240333yTBx98cKt2NZk7dy6vvfYamzdvZsaMGVu9v0OGDGHWrFm89VZy0ur69etZvbpOI63Xmrc8zBpIY5yR1qNHD26//XbOOussunXrxvjx42ndujW33XYbI0eOpLy8nH79+nH22Wezfv16RowYwaZNm4gI/ud//gdIPijPPPNMrr32WmbNmsW0adMYP348kyZN4qOPPmLUqFH06dNnm3Vce+21nHbaaUyZMoX27dtz22231ar+QYMGMXr0aJYvX87JJ59MSUkJq1at2mKZ9u3bM3XqVE466aTKA/+TJk2ie/fu3HzzzXz5y1+mXbt2DBo0iJdeemmr1/j5z3/OuHHjuOWWWygqKuLGG29kwIABDBw4kAMPPJBjjz2Wb33rW1u0OfHEE/nOd77DRRddVDntoosu4rvf/S69e/cm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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_pmf(sample_post_pred, label='posterior predictive sample')\n", "pmf_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior prediction done wrong\n", "\n", "The posterior predictive distribution represents uncertainty from two sources:\n", "\n", "1. We don't know `mu`\n", "\n", "2. Even if we knew `mu`, we would not know the score of the next game.\n", "\n", "It is tempting, but wrong, to generate a posterior prediction by taking the mean of the posterior distribution and drawing samples from `Poisson(mu)` with just a single value of `mu`.\n", "\n", "That's wrong because it eliminates one of our sources of uncertainty.\n", "\n", "Here's an example:" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.5512" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mu_mean = np.mean(sample_post)\n", "sample_post_pred_wrong = np.random.poisson(mu_mean, size)\n", "np.mean(sample_post_pred_wrong)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the samples looks like:" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "image/png": "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zTffPKHnUMcKalJoaVbsPlrwLqVyP2eGb0bE/kPW8ZZDwq/eXh+0ff/5isHHzNu9ezcXXHABZ5xxBmvWrKFPnz689NJLxMTEsGDBAn7+85/j8XgYOXIkzzzzDJGRkdx3333Mnz+fsLAwJk+ezBVXXMH8+fP54osveOihh3jrrbcAuOuuu8jOziYmJoZ//etf9OvXjxkzZpCUlMSaNWsYPnw4gwcPZuXKlTz11FPs2bOHm2++mezsbFJSUnjhhRfo1q3bMds89thj/vhnz57NO++8Q3l5Obt27eLaa6/lt7/9Lbt37+bCCy/k7LPPZtmyZcybN4+tW7fy29/+lvLycnr16sULL7xAXFwcH3/8MT/5yU9ITk5m+PDh1fZdFVtWVhYzZ85k586dADzzzDM88cQT7Nixg/T0dCZNmsRdd93FJZdcwoYNGzjjjDN4/vnnGThwIAATJ07kscceo1+/ftx9992sX78ej8fDrFmzuPTS6ucIDx48yLRp0ygoKMDj8fDMM88wbtw47rjjDlasWEFpaSlXXXUVv/vd7wDrm/61117LokWLqKys5LnnnuNXv/oVGRkZ3HvvvcycOZPFixfz4IMP0q5dO7Zu3cr48eN5+umnj0mUr7zyCk888QQVFRWcccYZPP3007jd7kb462s4LXNhKyr38PEGq+Cdy3i4TJYQHW6/Pe0HQOoIB6NTrdnWrVu5/fbbWbduHQkJCTz99NOUlZUxY8YM5s6d6z+APfPMM+Tl5fHOO++wceNG1q1bx/33389ZZ53FlClTeOSRR1i7di29evXi9ttv58knn2TVqlU8+uij/m/TANu2bePzzz+vdnAH+NGPfsSNN97IunXruO6667jnnnvq3QZg+fLlzJkzh7Vr1/LGG2+wcuVK/+u68cYbWbNmDbGxsTz00EN8/vnnrF69mhEjRvD4449TVlbGbbfdxnvvvceXX37J999/f8z+Ae655x4mTJjAd999x+rVqxk4cCAPP/wwvXr1Yu3atTzySPULF6+55hpef/11wDrIHzhwgNNPP50//vGPnHPOOaxYsYJFixZx7733UlxcXG3b//73v5x//vmsXbuW7777jvT0dAD++Mc/snLlStatW8cXX3zBunXr/Nt07dqVZcuWMW7cOGbMmMGbb77JN998w4MP+jtGWL58OY899hjr169nx44dvP3229Wed/PmzcydO5evvvqKtWvX4na7mTNnTq3vRzBpUrB9GFDwbmTFcrpHWZej4o6EwVN14BwVNF27dmXMmDEAXH/99SxdupStW7eSlpZGnz59ALjppptYsmQJCQkJREVFceutt/L2228TE3PsRQ9FRUV8/fXXTJ06lfT0dH74wx9y8ODR4WOnTp1a67fPZcuWce211wJwww03sHTp0nq3AZg0aRLt2rUjOjqaK664wr9d9+7dGT16NADffPMNmzZtYsyYMaSnp/Piiy+yZ88etmzZQlpaGr1790ZEuP762u9fXbhwIXfccQcAbrebxMTE476nV199NW+88QYAr7/+OlOnTgXg008/5eGHHyY9PZ2JEydSVlbG3r17q207cuRIXnjhBWbNmsX69euJj4/372f48OEMGzaMjRs3VjuHU9XNNXjwYM444wzi4+NJSUkhKiqKI0esummjRo2iZ8+euN1upk+fXu39BViwYAGrVq1i5MiRpKens2DBAn/LqClp9xGwI7uINXbBu8SKLCa61+MW+x9gwBQdbzmE1NbFE2w1LyEUEYyp9ZYewsLCWL58OQsWLOC1117jqaeeYuHChdXW8fl8tGnThrVr19a6j9jY2BOO63jb1BZ/zW2MMUyaNIlXX3212rpr164NyuXAXbp0oV27dqxbt465c+fyf//3f/443nrrLfr2rfs+o/Hjx7NkyRI++OADbrjhBu69917GjRvHo48+yooVK2jbti0zZsyodi9AZKR1I6vL5fI/rpr2eKwrGet6n6oYY7jpppv485//fGov/hSFfEvB4/Xx7hprOE0xXi7yLaJNtJ0QknpB9zEORqdCwd69e1m2bBkAr776KmPHjqVfv37s3r2bjIwMAF5++WUmTJhAUVER+fn5XHTRRfz973/3H/jj4+MpLCwEICEhgbS0NP83ZWMM3333Xb1xnHXWWbz22msAzJkzh7FjGzbW+GeffUZeXh6lpaXMmzfP3+oJNHr0aL766iv/6ykpKWHbtm3069ePXbt2sWPHDv/rr825557LM888A4DX66WgoKDaa67NNddcw1//+lfy8/MZPNhK9ueffz5PPvmkP+muWbPmmO327NlD+/btue2227jllltYvXo1BQUFxMbGkpiYSFZWFh99dOLFF5YvX86uXbvw+XzMnTv3mPf33HPP5c033+TQIevq/Ly8PPbs2XPCz3OqQj4pfLk9h+wiqwz2gJKV9I0usBa4wq1SFtptpIKsf//+vPjiiwwZMoS8vDzuuOMOoqKieOGFF5g6dSqDBw/G5XIxc+ZMCgsLueSSSxgyZAgTJkzgb3/7G2AdAB955BGGDRvGjh07mDNnDv/5z38YOnQoAwcO5N133603jieeeIIXXniBIUOG8PLLL/OPf/yjQfGPHTuWG264gfT0dK688kpGjDj2/FtKSgqzZ89m+vTpDBkyhNGjR7NlyxaioqJ47rnnuPjiixk7dizdu9deKPkf//gHixYtYvDgwZx++uls3LiRdu3aMWbMGAYNGsS99957zDZXXXUVr732GldffbV/3gMPPEBlZSVDhgxh0KBBPPDAA8dst3jxYtLT0xk2bBhvvfUWP/7xjxk6dCjDhg1j4MCB3HzzzbUmvvqceeaZ3HfffQwaNIi0tDQuv/zyassHDBjAQw89xOTJkxkyZAiTJk2q1u3XVKSuZmpzNWLECFN1IutU5RVX8PfPt1HpNcRV5nKz9w06xds9av1/YA2eo1q9zZs3079/f0eee/fu3f4rZlqiwCuEVN0WL17Mo48+yvvvv98kz1fb37SIrDLG1HvFTMi2FKx7EuyCd8YwsexzOsbZCSGxK/TU8ZaVUqEnZE80bzxQwDa74F2vkjUMjT2MSJiOt6yaVI8ePVpsKwFgxowZzJgxw+kwmr2JEycyceJEp8NokJA88gUWvIvx5HOO+Za4SDs/njYJErs4GJ1SSjknJJPC55uzrIJ3xjC66HO6JdgJIa6jjreslAppIZcUrIJ3uQB0K9nA8Ogsu+Bd1XjLIdujppRSoZUUfD7DO2v2YwxEeosZW7GUpNgIa2HaeEg6uZGKlFKqtQippLB8dx6Zh63Bcobnf8ZpbV3WbQgx7aDfxc4Gp0LWWWed5XQIx7V48WK+/vrroD7Hn/70p5Pa7tZbbz2pkuHBUlX3COqPreb7+uyzz/LSSy8FPcb6hExfSWFZJZ9stIptdS7ZyvCIfUSHR1sLh+h4y8o5wTzg1ix17fV6T7jq5uLFi4mLiwtq8vrTn/7Er3/96xPaxuv18u9///uEtznR138y5cKBemOr+b7OnDnzhJ8jGEImKXy0/nvKKn2E+0oZXbKITh2jrAXdzoSUPs4Gp5qP934cvH3/oPY7hOPi4igqKmLx4sXMmjWL5ORkNmzYwOmnn84rr7yCiLBixQp+/OMfU1xcTGRkJAsWLCA8PJw77riDlStXEhYWxuOPP87ZZ5/N7Nmz+eCDDygrK6O4uJgHH3yQ3/3ud3Tq1Im1a9eyadOmOks0f/zxx/z617/G6/WSnJzMf/7zH5599lncbjevvPIKTz75JOPGjfPHPmvWLHbs2MH+/fvZt28fv/jFL7jtttswxvCLX/yCjz76CBHh/vvvZ9q0abWWpf7ggw8oLS0lPT2dgQMHMmfOnDrji4uL46c//SmffPIJjz32GPfffz+PPvooI0aM4NVXX+VPf/oTxhguvvhi/vKXv/jf38BtAstLTJw4kfT0dJYvX05BQQHPP/88o0aNYtasWRw4cIDdu3eTnJzMyy+/zH333cfixYspLy/nrrvu4oc//CHGGO6++24WLlxIWlpatZpVEydO9MfWkPd1wYIFxMXFcfHFF3PTTTexfPlywLrBccqUKaxbt45Vq1bx05/+lKKiIpKTk5k9ezadOnVq1D/TkEgKGYeKWLPPKng3+Mgi+rQxuEUgKhH6N3yAEaWCbc2aNWzcuJHOnTszZswYvvrqK0aNGsW0adOYO3cuI0eOpKCggOjoaH8ZivXr17NlyxYmT57Mtm3bAKvi6bp160hKSmLx4sUsX76cDRs2kJaWVq1Ec3h4OHfeeSdz5szhwgsv5LbbbmPJkiWkpaWRl5dHUlISM2fOJC4ujp///Oe1xrxu3Tq++eYbiouLGTZsGBdffDHLli3zl57Oyclh5MiRjB8/3l+W+je/+Q1er5eSkhLGjRvHU0895a/jVFd8N954I8XFxQwaNIjf//731WI4cOAAv/zlL1m1ahVt27Zl8uTJzJs3j8suu6zObaoUFxfz9ddfs2TJEm6++Wb/fSOrVq1i6dKlREdH89xzz5GYmMiKFSsoLy9nzJgxTJ48mTVr1rB161bWr19PVlYWAwYM4Oabb662/+zs7Aa9rwsWLACssicVFRXs3LmTnj17MnfuXK6++moqKyu5++67effdd0lJSWHu3Ln85je/4fnnnz+ZP7U6hURSyCkqJ8wlJJXsYJhsIzE6zloweKqOt6yalVGjRpGamgpAeno6u3fvJjExkU6dOjFy5EjAKngHsHTpUu6++24A+vXrR/fu3f1JYdKkSSQlJVXbb1qadSFFYIlmgNLSUtq3b88333zD+PHj/esFbn88l156KdHR0URHR3P22WezfPlyli5dyvTp03G73XTo0IEJEyawYsUKRo4cyc0330xlZSWXXXaZf6yCQHXFB1bZ7CuvPHYExBUrVjBx4kRSUlIAuO6661iyZAmXXXZZndtUmT59OmBVRy0oKPCXup4yZQrR0VYX86effsq6dev85wvy8/PZvn07S5Ys8b/Ozp07c845x1ZCOJn39eqrr+b111/nvvvuY+7cucydO5etW7eyYcMGJk2aBFhdYY3dSoAQSQqje7ajV9swsuY/T7d2dhLoPAw6Nn2ZZNXM1dHF01QCyy673W48Hg/GmFrLSx+vblnNUtc1y1jXVqJ5/vz5J1XG+kRKf9dWlvrGG2+sts7xSkhHRUXVek7geO9FXdscL3449j178sknOf/886ut++GHH9b7ntX1+R3PtGnTmDp1KldccQUiQu/evVm/fj0DBw70V9QNlpC5+igl8zMGJXmJcLt0vGXVovTr148DBw6wYsUKAAoLC/F4PIwfP94/Mte2bdvYu3fvcccJqFJXieYzzzyTL774gl27dvnnA/WWqH733XcpKysjNzeXxYsX+7uK5s6di9frJTs7myVLljBq1Khay1IDhIeHU1lZedz4jueMM87giy++ICcnB6/Xy6uvvsqECRPqfS8A5s6dC1gtr8TExFoH8Dn//PN55pln/DFu27aN4uJixo8fz2uvvYbX6+XgwYMsWrTomG1P5n3t1asXbrebP/zhD0ybNg2Avn37kp2d7U8KlZWVbNy4sUGv8USEREuB3B2w+8uj04OugMh45+JR6gREREQwd+5c7r77bkpLS4mOjubzzz/nzjvvZObMmQwePJiwsDBmz55draVRl8ASzT6fj/DwcP75z38yevRonnvuOa644gp8Ph/t27fns88+4wc/+AFXXXUV77777jEnmsHqmrr44ovZu3cvDzzwAJ07d+byyy9n2bJlDB06FBHhr3/9Kx07duTFF1/kkUceITw8nLi4OP8lmLfffjtDhgxh+PDhzJkzp9b46iqrDdCpUyf+/Oc/c/bZZ2OM4aKLLjpm7OW6tG3blrPOOst/ork2t956K7t372b48OEYY0hJSWHevHlcfvnlLFy4kMGDB9OnT59aE1FKSkqD3teapk2bxr333utPJhEREbz55pvcc8895Ofn4/F4+MlPfuIfh7qxhEbp7J2LYeM8wED7gTDqNh0nQfk5WTq7pZs1a9ZxT0I3d4FXCLUmp1I6OzRaCj0nQlJP2PgODNHxlpVSqi6hkRQA2nSDMUG8Bl2pEDRr1iynQzglixcvdjqEZidkTjQrdTwtrRtVqbqc6t+yJgUV8qKiosjNzdXEoFo8Ywy5ublERUWd9D5Cp/tIqTqkpqaSmZlJdna206EodcqioqL8N0CeDE0KKuSFh4f77zZVKtRp95FSSik/TQpKKaX8NCkopZTya3F3NItINnD8Qih1SwZyGjGc5qY1vz59bS1Xa359Lem1dTfGpNS3UotLCqdCRFY25Dbvlqo1vz59bS1Xa359rfG1afeRUkopP00KSiml/EItKTzndABB1ppfn762lqs1v75W99pC6pyCUkqp4wu1loJSSqnj0KSglFLKL2SSgohcICJbRSRDRO5zOp7GIiJdRWSRiGwWkY0i0uoGjRARt4isEZH3nY6lsYlIGxF5U0S22J/hmU7H1FhE5H/tv8kNIvKqiJx86c5mQESeF5FDIrIhYF6SiHwmItvt322djLExhERSEBE38E/gQmAAMF1EBjgbVaPxAD8zxvQHRgN3taLXVuXHwGangwiSfwAfG2P6AUNpJa9TRLoA9wAjjDGDADdwjbNRnbLZwAU15t0HLDDG9AYW2NMtWkgkBWAUkGGM2WmMqQBeAxo2qnczZ4w5aIxZbT8uxDqodHE2qsYjIqnAxcC/nY6lsYlIAjAe+A+AMabCGHPE2agaVRgQLSJhQAxwwOF4TokxZgmQV2P2pcCL9uMXgcuaNKggCJWk0AXYFzCdSSs6cFYRkR7AMOBbZyNpVH8HfgH4nA4kCHoC2cALdvfYv0Uk1umgGoMxZj/wKLAXOAjkG2M+dTaqoOhgjDkI1hc0oL3D8ZyyUEkKUsu8VnUtrojEAW8BPzHGFDgdT2MQkUuAQ8aYVU7HEiRhwHDgGWPMMKCYVtD9AGD3rV8KpAGdgVgRud7ZqFRDhEpSyAS6Bkyn0sKbsoFEJBwrIcwxxrztdDyNaAwwRUR2Y3X5nSMirzgbUqPKBDKNMVUtuzexkkRrcB6wyxiTbYypBN4GznI4pmDIEpFOAPbvQw7Hc8pCJSmsAHqLSJqIRGCd8JrvcEyNQkQEq096szHmcafjaUzGmF8ZY1KNMT2wPrOFxphW823TGPM9sE9E+tqzzgU2ORhSY9oLjBaRGPtv9FxayUn0GuYDN9mPbwLedTCWRhESw3EaYzwi8iPgE6yrIJ43xmx0OKzGMga4AVgvImvteb82xnzoYEyq4e4G5thfVnYC/+NwPI3CGPOtiLwJrMa6Qm4NLbwkhIi8CkwEkkUkE/gt8DDwuojcgpUIpzoXYePQMhdKKaX8QqX7SCmlVANoUlBKKeWnSUEppZSfJgWllFJ+mhSUUkr5aVJQLYaIGBF5LGD65yIyq5H2PVtErmqMfdXzPFPtaqiLgvgcTfJaVOukSUG1JOXAFSKS7HQggewqvA11C3CnMebsYMWj1KnQpKBaEg/WDVD/W3NBzW/HIlJk/54oIl+IyOsisk1EHhaR60RkuYisF5FeAbs5T0S+tNe7xN7eLSKPiMgKEVknIj8M2O8iEfkvsL6WeKbb+98gIn+x5z0IjAWeFZFHaqzvEpGn7fEH3heRD6tej4icaxfMW2/X9I+s2p8d1wYRec6+c7hmHA+LyCY79kdP7O1WoUiTgmpp/glcJyKJJ7DNUKwxGQZj3f3dxxgzCqsc990B6/UAJmCV6n7WHhTmFqwKnyOBkcBtIpJmrz8K+I0xptr4FSLSGfgLcA6QDowUkcuMMb8HVgLXGWPurRHjFfbzDwZuBc609xWFVcd/mjFmMFYVgjvsbZ4yxoy0xyuIBi6pEUcScDkw0BgzBHiooW+YCl2aFFSLYleAfQlrAJeGWmGPO1EO7ACqSjivxzoQV3ndGOMzxmzHKjnRD5gM3GiXEPkWaAf0ttdfbozZVcvzjQQW28XgPMAcrHETjmcs8Ib9/N8DVecc+mIVlttmT78YsK+zReRbEVmPlYAG1thnAVAG/FtErgBK6olBKU0KqkX6O9Y3+MCxBzzYf892N0pEwLLygMe+gGkf1et/1az5YrDKrt9tjEm3f9ICxgUoriO+2kq116eubWqdb7cgngauslsQ/wKqDXdpJ6RRWBV0LwM+Pom4VIjRpKBaHGNMHvA6VmKoshs43X58KRB+Erueavft98IaAGcrVhHFO+zy5IhInwYMhPMtMEFEku2T0NOBL+rZZilwpf38HbAKrwFsAXqIyGn29A32vqoSQI49lsYxVxvZ8xPt4og/werKUuq4QqJKqmqVHgN+FDD9L+BdEVmONVZuXd/ij2cr1gG3AzDTGFMmIv/G6mJabbdAsqlnyEVjzEER+RVWF5AAHxpj6iup/BZWeekNwDasxJJvx/A/wBv2sJYrgGeNMeUi8i+sLrDd9vya4rHekyg7jmNO0CtVk1ZJVaqZEJE4Y0yRiLQDlgNj7PMLSjUZbSko1Xy8LyJtsM6H/EETgnKCthSUUkr56YlmpZRSfpoUlFJK+WlSUEop5adJQSmllJ8mBaWUUn7/D9Jo1ByOwT/QAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_post_pred, label='posterior predictive sample')\n", "plot_cdf(sample_post_pred_wrong, label='incorrect posterior predictive')\n", "cdf_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the incorrect predictive sample, low values and high values are slightly less likely.\n", "\n", "The means are about the same:" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2.5065 2.5512\n" ] } ], "source": [ "print(np.mean(sample_post_pred), np.mean(sample_post_pred_wrong))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But the standard deviation of the incorrect distribution is lower." ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.690904417759916 1.5917847090608706\n" ] } ], "source": [ "print(np.std(sample_post_pred), np.std(sample_post_pred_wrong))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Abusing PyMC\n", "\n", "Ok, we are almost ready to use PyMC for its intended purpose, but first we are going to abuse it a little more.\n", "\n", "Previously we used PyMC to draw a sample from a Poisson distribution with known `mu`.\n", "\n", "Now we'll use it to draw a sample from the prior distribution of `mu`, with known `alpha` and `beta`.\n", "\n", "We still have the values I estimated based on previous playoff finals:" ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "9.590040427964036 5.092056864405683\n" ] } ], "source": [ "print(alpha, beta)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can draw a sample from the prior predictive distribution:" ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " mu = pm.Gamma('mu', alpha, beta)\n", " trace = pm.sample_prior_predictive(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This might not be a sensible way to use PyMC. If we just want to sample from the prior predictive distribution, we could use NumPy or SciPy just as well. We're doing this to develop and test the model incrementally.\n", "\n", "So let's see if the sample looks right." ] }, { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.558354884672989" ] }, "execution_count": 88, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_prior_pm = trace['mu']\n", "np.mean(sample_prior_pm)" ] }, { "cell_type": "code", "execution_count": 89, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.8779000000000001" ] }, "execution_count": 89, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_prior = sample_suite(prior, 2000)\n", "np.mean(sample_prior)" ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_prior, label='prior')\n", "plot_cdf(sample_prior_pm, label='prior pymc')\n", "cdf_rates()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks pretty good (although not actually as close as I expected)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's extend the model to sample from the prior predictive distribution. This is still a silly way to do it, but it is one more step toward inference." ] }, { "cell_type": "code", "execution_count": 101, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " mu = pm.Gamma('mu', alpha, beta)\n", " goals = pm.Poisson('goals', mu, observed=[6])\n", " trace = pm.sample_prior_predictive(2000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's see how the results compare with a sample from the prior predictive distribution, generated by plain old NumPy." ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.851" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_prior_pred_pm = trace['goals'].flatten()\n", "np.mean(sample_prior_pred_pm)" ] }, { "cell_type": "code", "execution_count": 103, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.877" ] }, "execution_count": 103, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_prior_pred = np.random.poisson(sample_prior)\n", "np.mean(sample_prior_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looks good." ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_prior_pred, label='prior pred')\n", "plot_cdf(sample_prior_pred_pm, label='prior pred pymc')\n", "cdf_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Using PyMC\n", "\n", "Finally, we are ready to use PyMC for actual inference. We just have to make one small change.\n", "\n", "Instead of generating `goals`, we'll mark goals as `observed` and provide the observed data, `6`:" ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Auto-assigning NUTS sampler...\n", "Initializing NUTS using jitter+adapt_diag...\n", "Multiprocess sampling (4 chains in 4 jobs)\n", "NUTS: [mu]\n", "Sampling 4 chains: 100%|██████████| 12000/12000 [00:02<00:00, 4469.06draws/s]\n" ] } ], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " mu = pm.Gamma('mu', alpha, beta)\n", " goals = pm.Poisson('goals', mu, observed=[6])\n", " trace = pm.sample(2000, tune=1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With `goals` fixed, the only unknown is `mu`, so `trace` contains a sample drawn from the posterior distribution of `mu`. We can plot the posterior using a function provided by PyMC:" ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAboAAAEoCAYAAAAuWTTNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzt3Xl4FeX5xvHvExIg7LITENllDaCIWiziAlptrbXIUrUCUkVbtSoVrSvWn2DrUrGI2kqFguAuVVsEBFRcUGQVpCiggKAQQXYkgef3x0xiCAnJIQknZ7g/15WLk1neeWYSzp33nTkz5u6IiIhEVVK8CxARESlNCjoREYk0BZ2IiESagk5ERCJNQSciIpGmoBMRkUhT0EmxmdnjZnZHCbXV2Mx2mFm58PvZZja4JNoO2/uvmV1eUu3FsN17zSzDzL4+wtv9wszOPpLbzLP9P5rZP+K1fRGA5HgXIGWbmX0B1AOygH3AMmA88KS77wdw9yExtDXY3WcUtIy7rwGqFK/qnO3dDbRw90tztf+Tkmg7xjqOBW4CjnP3jUd6+/Hk7vfFu4Zs+f0+yNFBPTopip+5e1XgOGAkMAx4qqQ3YmZR/cPrOODboy3kjuTPM8K/O1ICFHRSZO6+1d3/DfQFLjez9gBm9rSZ3Ru+rm1mr5nZd2a22czeMbMkM/sX0Bh4NRyavNnMmpiZm9kVZrYGmJlrWu43ruZm9qGZbTWzKWZWM9xWDzNbl7vG7KE6MzsX+CPQN9zeonB+zlBoWNftZvalmW00s/FmVj2cl13H5Wa2Jhx2vK2gY2Nm1cP1N4Xt3R62fzYwHUgL63i6gPVvNrMNZrbezAaH225xqLbDec3NbKaZfRvWONHMahTl52lm55nZMjPbbmZfmdnQXPN+bmYLzWybma0MjydmlmZm/w5/tp+b2W9yrXO3mb1gZhPMbBswIJw2oSjH1MxSzWycmW0xs0/DY3LAzzdP/W5mvzWzz4DPwmmPmNnasO6PzezH4fSCfh+qm9lT4bH/yoIh5nJFOX6SOBR0EjN3/xBYB/w4n9k3hfPqEAx5/jFYxS8D1hD0Dqu4+59zrXM60AY4p4BN/hoYBKQRDKGOKkKNU4H7gGfD7XXMZ7EB4dcZQDOCIdO/5VnmNOB44CzgTjNrU8AmHwWqh+2cHtY8MBym/QmwPqxjQN4VwzfhG4GzgRbh+oW2nb06MILg2LQBjgXuLqDGvJ4Crgp76+2BmWE9XQmGp/8A1AC6A1+E60wi+PmmAb2B+8zsrFxt/hx4IVxvYgHbLeiY3gU0CfezJ1CUIcYLgZOBtuH3HwGdgJrAM8DzZlbxEL8P4wh+p1oAnYFeQImdE5ayQUEnh2s9wZtJXplAA4LzUZnu/o4XfkPVu919p7vvLmD+v9z9E3ffCdwB9Cmhv7ovAR5y91XuvgO4FeiXpzc53N13u/siYBFwUGCGtfQFbnX37e7+BfAgcFkR6+gD/NPdl7r7LmB4Udt298/dfbq7f+/um4CHODgoC5IJtDWzau6+xd3nh9OvAMaG7e5396/cfbkF5xpPA4a5+x53Xwj8I89+vu/ur4TrFfTzLOiY9gHuC2tZRxH+oAFGuPvm7G25+wR3/9bds9z9QaACQagexMzqEfwR8vvw928j8DDQrwjblQSioJPD1RDYnM/0vwCfA9PMbJWZ3VKEttbGMP9LIAWoXaQqDy0tbC9328kEPdFsua+S3EX+F8rUBsrn01bDGOrIvY+5Xx+ybTOra2aTw2G3bcAEin5sfgmcB3xpZm+Z2anh9GOBlQXUudndt+dXSz61F6SgY3qo41CQA5Yxs5vCYc+tZvYdQU+4oONxHMHv0gYLhtq/A54A6hZhu5JAFHQSMzM7ieDNbU7eeWGv4yZ3bwb8DLgx19BWQT27wnp8x+Z63ZigJ5IB7AQq5aqrHMGQaVHbXU/wZpe77Szgm0LWyysjrClvW18Vcf0NQKNc3+fe38LaHkGwn+nuXo1guM+KslF3/8jdf07wxv4K8Fw4ay3QPJ9V1gM1zaxqAbVA4cf8UA51HAqSs73wfNwwgp7hMe5eA9jKD8cjb21rge+B2u5eI/yq5u7tDncHpGxS0EmRmVk1M/spMBmY4O5L8lnmp2bWwswM2EbwkYR94exvCM6/xOpSM2trZpWAe4AX3H0fsAKoaGbnm1kKcDvBUFW2b4Am2Rdu5GMScIOZNTWzKvxwDicrluLCWp4D/s/MqprZcQTn3CYUsYnngIFm1ibcxztjaLsqsAP4zswaEpxXK5SZlTezS8ysurtn8sPPCoJzdwPN7CwLLqhpaGat3X0t8B4wwswqmlk6wTBnQefiYvUccKuZHRPuy+9iXL8qwR8qm4BkM7sTqJZr/gG/D+6+AZgGPBj+bidZcHFPUYd+JUEo6KQoXjWz7QR/Ad9GcB5oYAHLtgRmELz5vg885u6zw3kjgNvDYaKhBayfn38BTxMMeVUEroPgKlDgGoLzRF8R9PByX6X3fPjvt2Y2n4ONDdt+G1gN7AGujaGu3K4Nt7+KoKf7TNh+odz9vwTno2YRDPu+H876vghtDwdOIOi5vA68FEPNlwFfhEOeQwgv/ggvNhpIcL5qK/AWP/Qo+xNcMLIeeBm4y92nx7DNQ7mH4Oe3muB36AV+OAZF8QbwX4I/gL4k+HnmHtrM7/fh1wRDw8uALeE2Gxxm/VJGmR68KlK2hFchfgJUiLV3GSVmdjXQz93Vw5JiUY9OpAwws1+Ew4nHAPcDrx5tIWdmDcysWziEeDzBR1VejnddkvgUdCJlw1UE55ZWEpwruzq+5cRFeYKrHrcTfKZvCvBYXCuSSNDQpYiIRJp6dCIiEmnxuBGqupAiIlJSCv3cqHp0IiISaQo6ERGJNAWdiIhEmoJOREQiTUEnIiKRpqATEZFIU9CJiEikKehERCTSFHQiIhJpCjoREYk0BZ2IiESagk7KvKz9sd0eNdblRSTa4vGYHr0LScxGLsgo8rK3dK5dipWISBmjmzqLiMjRTUEnxRbrUGGmhhZF5AiKx/PoJGKSkyzmoUUNRYrIkaIenYiIRJqCTkREIk1BJyIikaagExGRSFPQiYhIpCnoREQk0hR0IiISaQo6ERGJNAWdiIhEmoJODqA7/4tI1OgWYHKAWG/nBbpFl4iUberRiYhIpCnoREQk0hR0IiISaQo6ERGJNAWdiIhEmoJOREQiTUEnIiKRpqATEZFIU9CJiEikKehERCTSFHQiIhJpCjoREYk0BZ0kjAX/eYFH+pzOI31OZ8yA89iw4pN8l/v15QNo2rQpnTp1olOnTixcuBCA2bNnU7169Zzp99xzT846Dzz0EO3ataN9+/b079+fPXv2HJF9EpHSp6cXSMKo2bAxV/5jCqnVavC/d2fw0r038dvxbxy0XJLBj665gw5nXwDAVIepCzJY9dlWGqSfTL9Rz+QsO3JBBls3bmDyo4+ybNkyUlNT6dOnD5MnT2bAgAFHatdEpBQp6KRAW9av4Z+/68txnU5m7ZKPqd+qHV0u6M+Mx+9nx+YM+v7f49RrfjyDBt3MtLkL2L8vi7Ovupm2PX7ClvVreO72a9i7ZxcAFwwbyXEdu7Jq3rv0uOFhvk2uyjcrl5PWpiN97x2DmRVaz3Edu+a8btyhC9u+WV9i+5qVlcXu3btJSUlh165dpKWllVjbIhJfCjo5pG/XruZX9z9F3dtbM/rSniz874tcNfZ1Pn1rKrPH/pW6TVtxxZln0uraP7N7+1ZGX9aLFid3p/IxtRk05gVSKlQkY81KJt96Fb+bOAOABQsWcM2z71C1Tn0eH3g+Xy6cS5POp/DaA7ezat6cg4sYeCmcM/iASR+9MpFW3c4qsO5po+9j5pMP0rzrjzn3ujtILl8BgDVL5vFI3x5Uq1OP824YTr3mraletwFDhw6lcePGpKam0qtXL3r16lVyB1FE4kpBJ4d0TFpj6rdsC0C95q1p3rU7Zkb9Fm3Ysn4NW79Zz8gPZ7A5cyQAWXu/57sNX1GtTn2m3H8LG1Z8QlJSEhlrVuW02bVrV6rXC3pMace3Z8v6tTTpfAo/HXpvvjXc0rn2AQ+DXfnRHOa9MpGrxr6W7/IjRozg+A3J7Mvcy0v33shbTz/KWVcOJa11OsNen0+FSlVYPmc6/7rx1wyd8iG7t33HtClTWL16NTVq1ODiiy9mwoQJXHrppSVyDEUkvhR0ckjZPSEASzKSy5cPXyexf98+LKkcL774Ii/vqnXAejMe/zNVa9Xh4smz8f37ufPURjnzKlTI3WYS+/dlARSpR7dhxVJe+tMNDHh0MpVr1My35gYNGmBfZ5BcvgJdLvgVb48fDUDFKlVzlml9Wk+mjBjGzi3fsmreHJo2bUqdOnUAuOiii3jvvfcUdCIRoaCTYml16hk8+uijNBx0F2bG+uWLSWudzp4d26heL42kpCTmvTqZ/fv2FdpWYT267zasY8LQAfT502jqHNe8wHY2bNgApODuLJ31H+q3aA3A9oxvqFKrLmbG2k/m476fSjVqUr1+I94a9wG7du0iNTWVN998ky5duhzW8RCRskdBJ8Vy5m9uYt3T9/JI39PBnRoNjmXAqGc4pc9AJg4dxJLp/6bZSd0on1qp2Nt68+8PsGvrFqaMuBmApHLJOef9/nltP35551+pVqc+l1xyCcvWfg3uNGjVngtv+wsAS2a8ytwXniapXDIpFSrSf8STmBmNO5xI7969OeGEE0hOTqZz585ceeWVxa5XRMoGc/cjvc0jvkGJTe7zYUWR9xxaoi2fvY6IJKRCL9nWB8ZFRCTSFHQiIhJpCjoREYk0BZ2IiESagk5ERCJNQSciIpGmoBMRkUhT0ImISKQp6EREJNIUdCIiEmkKOhERiTQFnYiIRJqCLuKy9use2iJydNNjeiIuOclivvO/iEiUqEcnIiKRpqATEZFIU9CJiEikKehERCTSFHQiIhJpCjoREYk0BZ2IiESagk5ERCJNQSciIpGmoBMRkUhT0ImISKQp6ESI/ebXulm2SOLQTZ1F0M2vRaJMPToREYk0BZ2IiESagk5ERCJNQSciIpGmoBMRkUhT0ImISKQp6EREJNIUdCIiEmkKOhERiTQFnYiIRJqCTkREIk1BJyIikaagExGRSFPQiYhIpCnoRA6Dnl8nkjj0PDqRw6Dn14kkDvXoREQk0hR0IiISaQo6ERGJNAWdiIhEmoJOREQiTUEnIiKRpqATEZFIU9CJiEikKehERCTSFHQiIhJpCjoREYk0BZ2IiESagi7B6C74IiKx0dMLEozumi8iEhv16EREJNIUdCIiEmkKOhERiTQFnYiIRJqCTkREIk1BJyIikXbIoDOzable31r65YiIiJSswnp0dXK9vrg0CxERESkNhQWdbsMhIiIJrbA7ozQzs38Dlut1Dne/oNQqExERKQGFBd3Pc71+oDQLEYmyrP1OcpKV2vIiUrBDBp27v5X92szqhNM2lXZRIlGje5SKxE9hV12amd1lZhnAcmCFmW0yszuPTHkiIiLFU9jFKL8HTgNOcvda7n4McDLQzcxuKPXqREREiqmwoPs10N/dV2dPcPdVwKXhPBERkTKtsKBLcfeDTiyE5+lSSqckERGRklNY0O09zHkiIiJlQmEfL+hoZtsIPkcHP3yA3ICKpVaViIhICSns4wXljlQhIiIipeGQQWdmFYEhQAtgMTDW3bOORGEiIiIlobBzdOOALsAS4DzgwVKvSEREpAQVdo6urbt3ADCzp4APS78kERGRklNYjy4z+4WGLEVEJBEV9apLCK60TM11Faa7e7VSrU5ERKSYdNWliIhEWmFDlyIiIglNQSciIpGmoBMRkUhT0ImISKQp6EREJNIUdCIiEmkKOhERiTQFnYiIRJqCTqQMytrvhS9UAuuIHA0KuwWYiMRBcpIxckFGTOvc0rl2KVUjktjUoxMRkUhT0MWZhptEREqXhi7jLNYhKg1PiYjERj06ERGJNAWdiIhEmoJOREQiTUEnIiKRpqATEZFIU9CJiEikKehERCTSFHQiIhJpCjoREYk0BZ2IiESagk5ERCJNQSciIpGmoBMRkUhT0ImISKQp6EREJNIUdCIiEmkKOhERiTQFnYiIRJqCTkREIk1BJyIikaagExGRSFPQiURE1n4v1eVFElVyvAsQkZKRnGSMXJBR5OVv6Vy7FKsRKTvUoxMRkUhT0ImISKQp6EREJNIUdCIiEmkKOhERiTQFnYiIRJqCTkREIk1BJyIikaagExGRSFPQiYhIpCnoREQk0hR0IiISaQo6ERGJNAVdCdJjT0REyh49pqcExfqYFNCjUkRESpt6dFIs7z7zBO3bt+fh3qcxZ+LjOdNnPP5nRpzTgVH9ejCqXw+Wz5kOwBcL55Kens7fLu1JxppVAOzevpWx11yMe/494h49erBu2cKc77esX8NfL/4xAKvmvcvd3Zsxqv8ZPHTRj5jxxF8Omv7gL07hiSt+xqdvTyuVYyAiZZt6dHLYvv78Uz56eQKrFn/Mw0u38c/f9aX1j3tSu3FzALpdMoTuv/7tAevM+dcYXn7xRUbOWMTcF57m/BvvYebfH6THFb/HzA6rjiadTmHAqGfYu3sno/qdwccf9zlgOsD6/y3hXzdeTkqFirQ4uXsx9lpEEo16dHLYNq1ewbEdTqRSpUqUS06m6Yk/YunM/xxynaTkZHbv3k3mnt2US07m27Wr2bZxA81O7FbsesqnVqZhm46sXLnyoHlpx3fgrN/cxPvPPVXs7YhIYlGPTg5bveZteGP0fXz77bfs3b2L/82ZQaO2HXPmv//sUyx47Tkatu3I+TfeQ2q1GvQYdD1XXnklm/Yl0+dPj/Gfh++i5zW3FLqtZ28bQkqFigDsy8zEkg7+G23nd5tZs+Rj2rW7lxnvfX7Q/LQ26bw9fnQx9lhEEpGCTg5b3WatOH3AtfTs2ZMtVKBBq3YklQt+pU6+eABn/uYmMGP6YyN4/aE76X33KNKO78AHH3zAyAUZrP74ParWqY87PDNsMOWSUzjvxuFUrVX3oG31/b/HadS2ExCcoxt3/SU5875Y+AGj+p+BWRI9Bl5Hu3btIJ+go4BzgCISbRq6lGI56cJLmT9/Plc99SqVqtWgVuNmAFStVZekcuVISkqi60WXsW7pggPWc3dmPvUwZ/3mJt588i+cPWQYnc7rzXuT/h5zDU06ncJ1k2Zx7TNvcnLvAQUut375Euo2bRVz+yKS2BR0Uiw7Nm8C4LsN61g663U6nXsRANs2fZ2zzNKZ/6Fe89YHrDf/1cm0Pu1sUqvVIHPPbiwpCUtKInPP7lKpc8OKpcz8x0Oc0mdQqbQvImWXhi6lWCYOHchL329jS1YSFwy7n9RqNQD47yP3sGHFJxjGMWnHcuFtD+Sss2vXLua/9iyDRj8PwGmXDGHiHwZSLjmFfiOeLLHasoc0M/fspsoxtfnZH+7TFZciRyEFnRTLVWNf45bOtQ/6oHzfex8rcJ1KlSrxmydfyfm+6Qmn8vvn3i5w+dmzZx/Q/jFpjfn98+8A0KxLN5p1OfiKzWZdunH326uKvB8iEl0auhQ5SsV6yzrd4k4SlXp0IkepWG9Zp9vVSaJSj05ERCJNQSciIpGmoBMRkUhT0ImISKQp6EREJNIUdCIiEmkKOhERiTQFnYiIRJqCTkREIk1BJyIikaagExGRSFPQHYJuYisikvh0U+dD0E1vRUQSn3p0IlIkeqyPJCr16ESkSDTCIYlKPToREYk0BZ2IiESagk5ERCJNQSciIpGmoBORUnE4V13qSk0pDQkTdIMGDaJu3bq0b98+3/lTpkwhPT2dTp060aVLF+bMmZMzb9y4cbRs2ZKWLVsybty4nOmTJk2iQ4cOpKenc+6555KRUfQrykSOFpnf72H0Zb3o2LEjD/c+jelj7j9omdceuJ1R/Xowql8PHrjwZIZ3b55zlebpA66jfos21G/Rhl+N/DsjF2QwckEGgx9/iYZt0kk7vj1NOp/M0CkfkpxkcdhDibqECboBAwYwderUAuefddZZLFq0iIULFzJ27FgGDx4MwObNmxk+fDhz587lww8/ZPjw4WzZsoWsrCyuv/56Zs2axeLFi0lPT+dvf/vbkdodkYSRXL4Cg594iUWLFnHdpFmseH8maxbPO2CZnw69l+smz+a6ybP5Ub/BtDvzfACWvzON9csXc+2kWVwzfipvjx/Nnh3bAXhlxB/oe+/jXDd5Nh3P/SWznnroiO+bHB0SJui6d+9OzZo1C5xfpUoVzIK/Bnfu3Jnz+o033qBnz57UrFmTY445hp49ezJ16lTcHXdn586duDvbtm0jLS3tiOyLSCIxMypUqgLAvqxM9mdlghXc81o09WU6nnsRABtXraDpiadSLjmZ8qmVadCqHSveezOn3T07g9D7fsc2qtWuX8p7IkerSH1g/OWXX+bWW29l48aNvP766wB89dVXHHvssTnLNGrUiK+++oqUlBTGjBlDhw4dqFy5Mi1btmT06NHxKl2kTNu/bx+dOnXi0xWfcUqfK2jc4cR8l9uyfi1b1n9J85N+DED9Vu2Y+eRfOO2Sq8ncs5uV896lbrPjAbjojod5+rr+pFSoSMXKVbl6XMEjNiLFkTA9uqL4xS9+wfLly3nllVe44447AHA/+OS2mZGZmcmYMWNYsGAB69evJz09nREjRhzpkkUSQlK5cixcuJBbpi5m3dL5fP35p/kut3jay7Q/62cklSsHQKtTz+D4bmfz+MDzmPzHq2ic3iVn3rsTn2DAqEncOnUxJ17Qn9cfuuOI7Y8cXSIVdNm6d+/OypUrycjIoFGjRqxduzZn3rp160hLS2PhwoUANG/eHDOjT58+vPfee/EqWSQhpFatTtMTu7HivZn5zl/0xg/DltnOGHwj102ezRVjXgB3ajVuxo4tGWz4bGlOzzC914WsWfRRqdcvR6fIBN3nn3+e03ubP38+e/fupVatWpxzzjlMmzaNLVu2sOnbzUybNo1zzjmHhg0bsmzZMjZt2gTA9OnTadOmTTx3QaRM2rElg93btwIEw49z36JOk5YHLbfpi8/ZvW0rjdNPypm2f98+dn63GYANK5by9WfLaHnKGaRWrcGeHdvY9OVKAD6bO5s6TQ9uU6QkJMw5uv79+zN79uycXtrw4cPJzMwEYMiQIbz44ouMHz+elJQUUlNTefbZZzEzatasyR133MFJJwX/+U68/Aae/HI/UJ5TBt1Eu67dKJecQo0Gjeg9/NEDblqrm9KKwPZN3/D8Xb/j5fLGxl2ZdOj5c9p078X0MSNp2LYTbU8/F4BFU1+i4zkX5lwIBsHFK09e8TMAKlSuSp97H6NccvC2c9HtDzHxDwMxSyK1WnV63/UIWfs9po8YxLq8HJ0SJugmTZp0yPnDhg1j2LBh+c4bNGgQgwYNAjggyE7uPYCTew8osRpFoqhBq3ZcN2kWt3SufcD/n55X33LAcmcPufmgdVMqVOSGF9/Nt912Z56f8zGEbHpCgpSGyAxdioiI5EdBJyIikaagExGRSFPQiYhIpCnoRCRhxfq0Az0d4eiUMFddiojkpas0pSjUoxMRkUhT0ImISKRZfjc9LmVxHSQ/1DDHrSfUOYKViCSOEfM3HfSB8cLEuvzhrBPr8kM71tKdV6Kn0B+QztGJyFFD5/SOThq6FBEpwOFcpakrO8uehO7RaVhBREpTrD1ACIZHY6H3sdKX0EFX0sMQI+ZvOmj5RD8noX0oG9uIwj5I0cT6vqRgLH0JHXQiIomutIMxc7+TEmMwRi1Mj/hVl8OHD58KFPcMbxqwvgTKOdrouB0+HbvDo+N2eHTcii7jrrvuOveQS7h7wn3dfffdHu8aEvFLx03HTsctMb503Er2S1ddiohIpCVq0A2PdwEJSsft8OnYHR4dt8Oj41aC4nFnFBERkSMmUXt0IiIiRaKgExGRSFPQiYhIpCVU0JnZWDPbaGafxLuWRGJmx5rZLDP71MyWmtn18a4pEZhZRTP70MwWhcdNFwjEwMzKmdkCM3st3rUkEjP7wsyWmNlCM5sX73qiIKEuRjGz7sAOYLy7t493PYnCzBoADdx9vplVBT4GLnT3ZXEurUwzMwMqu/sOM0sB5gDXu/sHcS4tIZjZjUAXoJq7/zTe9SQKM/sC6OLuuj9bCUmoHp27vw1sjncdicbdN7j7/PD1duBToGF8qyr7PLAj/DYl/EqcvwzjyMwaAecD/4h3LSIJFXRSfGbWBOgMzI1vJYkhHH5bCGwEpru7jlvR/BW4Gdgf70ISkAPTzOxjM7sy3sVEgYLuKGJmVYAXgd+7+7Z415MI3H2fu3cCGgFdzUxD5oUws58CG93943jXkqC6ufsJwE+A34anbKQYFHRHifAc04vARHd/Kd71JBp3/w6YDRz65rEC0A24IDzXNBk408wmxLekxOHu68N/NwIvA13jW1HiU9AdBcKLKp4CPnX3h+JdT6IwszpmViN8nQqcDSyPb1Vln7vf6u6N3L0J0A+Y6e6XxrmshGBmlcMLxjCzykAvQFeZF1NCBZ2ZTQLeB443s3VmdkW8a0oQ3YDLCP6yXhh+nRfvohJAA2CWmS0GPiI4R6dL5aU01QPmmNki4EPgdXefGueaEl5CfbxAREQkVgnVoxMREYmVgk5ERCJNQSciIpGmoBMRkUhT0ImISKQp6CQSzKyemT1jZqvCWye9b2a/OMy2mhytT8iwwEwzq1YCbZU3s7fNLLkkahM5XAo6SXjhB+JfAd5292bufiLBB5UbxbeywpXBEDgPWFQSt4hz973Am0DfYlclUgwKOomCM4G97v549gR3/9LdH4Wc58r9M3zG1wIzOyOc3sTM3jGz+eHXj/I2bGbtwmfSLTSzxWbWMp9ldpjZg2Ebb5pZnXB6czObGvYw3zGz1uH0p83sITObBdyfp61KZvZcuK1nzWyumXUJ540xs3l5n40XPr/svrAXO8/MTjCzN8xspZkNybXcH8zso7Dtgp6tdwkwJdfxWW5m/zCzT8xsopmdbWbvmtlnZtY1XO5uMxuaazufhDcPh+APkEsK2JbIEaGgkyhoB8w/xPzfArh7B6A/MM7MKhI8kaAIYI6AAAADXklEQVRneAPdvsCofNYdAjwS3ti5C7Aun2UqA/PDdt4C7gqnPwlcG/YwhwKP5VqnFXC2u9+Up61rgC3ung78CTgx17zb3L0LkA6cbmbpueatdfdTgXeAp4HewCnAPQBm1gtoSXDfxE7AiQXcLLgbwfMKs7UAHgm32Rr4FXBauD9/zGf9vD4BTirCciKlpqwNm4gUm5mNJngz3uvuJ4WvHwVw9+Vm9iVB0HwJ/M3MOgH7wml5vQ/cFj5f7SV3/yyfZfYDz4avJwAvhU+K+BHwfDCyCkCFXOs87+778mnrNIJgwd0/CW8/lq1P+NiWZILbk7UFsuf/O/x3CVAlfO7gdjPbE96vs1f4tSBcrgpB8L2dZ/s1w3WzrXb3JQBmthR4093dzJYATfKp/wDuvs/M9ppZ1TztihwxCjqJgqXAL7O/cfffmlltYF44yfJdC24AvgE6Eoxu7Mm7gLs/Y2ZzCR4i+oaZDXb3mYXU42F734U9wfzsLGB6vrWaWVOCXtRJ7r7FzJ4GKuZa5Pvw3/25Xmd/nxy2O8Ldnyik9iwzS3L37OfI5W0r93ay3z+yOHB0KHddEAT8QcdW5EjR0KVEwUygopldnWtapVyv3yY8T2RmrYDGwP+A6sCG8E39MqBc3obNrBmwyt1HEfSa0vMuQ/D/qHf4+lfAnPBijtVmdnHYjplZxyLsyxygT7hOW6BDOL0aQThuNbN6BM8qi8UbwKCwp4mZNTSzuvks9z+gWYxtfwGcELZ7AtA0e4aZ1QI2uXtmjG2KlBgFnSQ8D+5MfiHBeavVZvYhMA4YFi7yGFAuHG57Fhjg7t+H0y83sw8Ihi3z62X1BT6x4CnjrYHx+SyzE2hnZh8TXBhzTzj9EuAKC+5EvxT4eRF25zGgTjhkOYxgaHKruy8iGHZcCowF3i1CWzncfRrwDPB+eBxeAKrms+jrQI9Y2iZ4zmHN8BhdDazINe8M4D8xtidSovT0ApFiMrMd7l6lhNoqB6S4+x4za05weX6r8FL9UmdmDYDx7t6zhNp7CbjV3f9XEu2JHA6doxMpWyoRPAMvheC82tVHKuQA3H2Dmf3dzKoV97N0ZlYeeEUhJ/GmHp2IiESaztGJiEikKehERCTSFHQiIhJpCjoREYk0BZ2IiETa/wNQUglgkpTMkwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pm.plot_posterior(trace)\n", "pdf_rate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can extract a sample from the posterior of `mu`" ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.558354884672989" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post_pm = trace['mu']\n", "np.mean(sample_post_pm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And compare it to the sample we drew from the grid approximation:" ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "image/png": "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spDUbAjlQGomBNOdDlN/inNS7ocn4J4oaUlBRJ4E5gL5IlIC/BQIAqjqb4GXgYtw5retpe35g3uF4cOHM2fOHACuueYa7rvvPs477zxGjx7NhAkTALj++uu5//77uf322wmFQtx8881cfPHFzJ8//5j9VVdX88EHH3DllVfG1jU0xKe+vfLKK485uQN8+OGHPPecM+Xvtddey/e///0OX7N48WLuvPNOAKZOncr06dNj2/x+P1dcccUxr/n444+ZO3cuBQXOoItf/vKX2bJlSzufkPFCTUOYfZV17Dlcz97Ddew7XMfhqioGNuwhv2E3gxr2cFLTvlZrAAKkBvyEgj5Sg35SAz58abkEsgcTzCkklDWAlKx8SM12TvIp7sNnAyX0Zsm8+ugrHWxX4NvJOn53a3l5pYjQ1gRGgUCAJUuW8Oabb/LUU0/xm9/8JlYDaBaNRsnNzWXVqlWt7iMjI+O442rrNe1NtBQKhVpNJC33bXoGVaWkoo51eypZv/cIZTWNBKP15DbuJ79hN1MadpDbeICW3XdBv5CZGiQrFCAt6Cc16CM1Ixdf7nDIKYLsYTBwtPMr3/RpfeKO5kTtNfEk065du/jwww/5zGc+w5NPPslZZ53FxIkTKS4uZuvWrYwbN47HH3+cs88+m+rqampra7nooos444wzGDduHABZWVlUVVUBkJ2dzejRo3nmmWe48sorUVXWrFnDySef3G4cZ555Jk899RTXXnstTzzxBGeddVaHsZ911lk8/fTTzJs3jw0bNrB2bcdNcKeffjp33nknZWVlZGdn88wzz3QYm0kOVWV3eR1r91Sydk8llbWNDGjcy4jaDcyq30papOqo8gKkpfjJTA04j1CAUFomkjcWckc6SSBnmCWAfqrPJQWvTJo0iT/84Q9885vfZPz48dx2222EQiEeffRRrrzyylhH86233kp5eTmXXnop9fX1qCq//vWvAbj66qv5xje+wX333cezzz7LE088wW233cYvfvELmpqauPrqqzs88d53333ceOON3HPPPbGO5o5861vf4vrrr2f69OnMnDmT6dOnk5PT/gmhsLCQn/3sZ3zmM5+hsLCQU045hUjkxDshzfHbX1nPyl0VrC6ppLKuiYxwBcNr13Na7QYywocBpyM3PTVAeoqf9JQAGal+0lL8+HOGQ95Y55E7AkK51qZvgF44R/OsWbO05SQ7GzduZNKkSR5F5Fx9NH/+fNata3VEjx4vEonQ1NREKBRi27ZtnHPOOWzZsoWUlORfNe71d9fbVNU3sXp3JSt3VbC3sp6USC1FdZsYXrueAY3OdRoBnzAgPYWBGSlkpwXw+YOQVeic/PPGQsFESOlc86PpO0RkuarO6qic1RQMtbW1zJs3j6amJlSVBx98sFsSgukcVWXT/io+2l7GJwerkWiYwrqtnFG7nsH1OxCiTiLITGVgZgrZoSC+YAgKZ0DRbBg4xjp/TadZUugCo0aN6rW1BHD6MmyK055pV1ktr6zbR3FZLTmNB5hZvYKhdZsJaCM+EQZkBMnLTCUnLYjP54NBk6FoFgyemvSbnEzfZEnBmB6otKqBV9fvZ/3eI2SEK5hZ9REja9YBSnYoSH5mBgMyUgj4BAaMdhJB4Qzn0lBjPgVLCsb0IJV1Tby16QDLdpRTUL+DM6pXMaR+Gz5RCrJDFGaHSA36IKPAaRoadipk5HsdtulDLCkY0wM0hCO8t+UQ731SijbVclr5Kwyp3wpAXkYKRQPSCAX9kH8STLzIuXTUrhYySWBJwRgPRaPK8l0VvL7hAFX1YYbVbmLG4dcJRuvIDgUZPjCNzNQAFEyCcec6Vw9ZMjBJZEmhB+kNQ2ebrrPlQBUvr93HgSMN+DTMtMp3GFu9nPQUPyMGZpGTFoQRZ8LYeUkdP9+YRJYUepCePnS26RqHqht4afVethyoBiC/YRcnH36DPC2nKD+D/MxUJJQF078MQ7y5Q9/0X3Zm6AK9fejsBQsW8Pzzz9PQ0MCOHTv46le/yk9/+lN+/OMfk5+fHxss74c//CGDBw9m+vTp/PSnP2Xw4MGsWrWKyy+/nGnTpnHvvfdSV1fHCy+8wNixYzlw4AC33nor27dvB+DBBx/kzDPP7P4vqIdQVZYWV/Dy2n00hKOIRjip6iOmVH9IYU4qQ7Jz8PvE6Tc49QZISfc6ZNMP9b2k8NKdydv3F+5tc1NvHjobYMmSJaxbt4709HRmz57NxRdfzE033cTll1/OnXfeSTQa5amnnmLJkiWsXbuW1atXs3HjRgYOHMiYMWO4+eabWbJkCffeey//8z//w3//939zxx13cPbZZ/P8888TiUSorq7uwi+jd6mqb+K5FXvYtN8Zhyg9XMmsir8yMeUQw4qySfG7N5eNnANTv2Q3mxnP2F9eF2k5dPbixYvZvHnzMUNnv/vuu2RnZ8eGzn7uuedITz/2F2Hi0NkzZszgm9/8Jvv2xaebaG/o7K9+9auAM3T24sWLO3wNwHnnnUdeXh5paWlcfvnlLF68mFGjRpGXl8fKlSt57bXXmDlzJnl5eQDMnj2bwsJCUlNTGTt2LOeffz4A06ZNo7i4GIC33nqL2267DXCG4O5oPKW+at2eSu5945NYQiioL+bCw0/y2bwqRudnOAkhcwic/U8w/SpLCMZTfa+m4JHePHR2W/GDMyfzggUL2L9/PzfeeGNse+Isaz6fL7bs8/kIh8Odiq2vq2+K8Nc1+1i+syK2bmzVUs7jI4qGhJzZxgAmXAjjz7dkYHqEvpcU2mniSabePHQ2wOuvv055eTlpaWm88MILPPLIIwBcdtll/OQnP6GpqYk//elPx/WZnHPOOTz44IN85zvfIRKJUFNTQ3Z29nHto7c6VN3AYx8UU1rtzl6myqn1H3Be2hpy0tKcdcEMmPV1yB/vXaDGtGA/TbpI89DZ06dPp7y8/Jihs6dNm4bP5+PWW2+lqqqK+fPnM336dM4+++yjhs6+5557mDlzJtu2beOJJ57g4Ycf5uSTT2bKlCm8+OKLHcZx33338eijjzJ9+nQef/xx7r23c0nyrLPO4tprr2XGjBlcccUVzJrlDKaYkpLCvHnzuOqqq9psemrLvffey6JFi5g2bRqnnnoq69evP67X91ZbD1bzwKJt8YQAXJSygi9mbHAuMwVnkLq5d1tCMD2ODZ3dBXr70NkLFiyIXb3UUjQa5ZRTTuGZZ55h/PiuP4F5/d11tY+2l/HS6r1E3f9WQR9cn7+RsRXvxwvljYPTb7UB60y36uzQ2VZTMG3asGED48aN45xzzklKQuhLolHlxVV7eHFVPCFkp/q4Y8j6oxNC/gQ4/TZLCKbHspqC8VRf+O7qGiP8ackuth6MX3I7IsfPDcE3SavcGi+YPwFm3wyB1Fb2Ykxy9btJdlTVJpLvZXrbD5LWVNY28fDi7Uf1H3wm9wgXh1/FX1sZL5g3DmZ/AwI2eZHp2fpEUgiFQpSVlZGXl2eJoZdQVcrKygiFQl6HcsLKqht4ePEOKmqbYuuuytnAjOoPjh6zbvz5zmWndsmp6QX6RFIoKiqipKSE0tJSr0MxxyEUClFUVOR1GCfk4JF6Hl68gyP1zj0Zfh98ffAOxh76AJoTQiANpl4Bw2d7F6gxx6lPJIVgMMjo0aO9DsP0E3sP1/Ho+zuobogAEPQLXx9fx+htCTcgDhwLM75qE+CYXqdPJAVjusvu8loefb+YuiYnIaQGfHx9eiojNz4OuH0kA0Y5l5xa/4HphSwpGNNJ20ureezDnTSEowCEgj5uOjmDog3/C+F6p1Ao173CyBKC6Z2s58uYTtheWs2CD4pjCSEjxc8tZwym6JPHoKnWKeRPhdO+AalZHkZqzKdjScGYDhw4Us/jH+2kKeI0D2WHAtwyp4jCzY9DbZlTyBeA078JOb2z49yYZpYUjGlHZV0Tj75fTH2TU0PIDgX4xmdHMeiTP0NFcbzgtKuc+ZON6eUsKRjThvqmCH/4oJjKOuc+hNSAj+vPHEX+gffhQMI4V5O+ACNO9yhKY7qWJQVjWhGORPnjRzvZV+l0IPsErjljBENrNsLGv8YLjpkL4871JEZjkiGpSUFELhCRzSKyVUTubmX7CBFZJCIrRWSNiFyUzHiM6QxV5bkVe9hWWhNbd8WpRYwLVcGqPxG79DRnOEyc702QxiRJ0pKCiPiB+4ELgcnAV0RkcotiPwKeVtWZwNXAA8mKx5jOem3DAVbuPhxbPn/yYE4Z5IMlD0HUHdIiYxCcYaOdmr4nmTWF04CtqrpdVRuBp4BLW5RRoHkqrhxgbxLjMaZDH28v4+3N8eFSThs9gLnjcmHJ76DOnVYzEILZN0FK56ZENaY3SWZSGAbsTlgucdcl+hlwjYiUAC8D/9jajkTkFhFZJiLLbHwjkyw7y2pYuDr+u2RSYRaXnjwM2fIKVLp/yuKDU2+ArCHeBGlMkiUzKbQ2XGnLsZK/AixQ1SLgIuBxETkmJlV9SFVnqeqsgoKCJIRq+rsj9U088fGu2AQ5w3JDfHn2cHwlH0PimEYnXQyDevf8D8a0J5lJoQQYnrBcxLHNQzcBTwOo6odACLARxEy3Ckei/OnjXVS5I56mp/j52ukjSS3fAqufihfMPwnGzvMoSmO6RzKTwlJgvIiMFpEUnI7khS3K7ALOARCRSThJwdqHTLd6ed1+dpY5Q1WIwFdOG86AhhJY+ntildusQph1I/j83gVqTDdIWlJQ1TBwO/AqsBHnKqP1IvJzEbnELfZd4Bsishp4ErhB+8J0XKbXWLGrgg+3lcWW/2HKEMal18GS30PUqTmQmuUMYRHsvRMCGdNZSR0lVVVfxulATlz3k4TnG4A5yYzBmLbsPVzHCyv3xJanDsvmc6Oz4N17oMm9RyGYDqd9E9IGeBSlMd3L7mg2/VJtY5g/JgxyNygrlStOKUI2vgS1h5xC/hRnXoTc4e3syZi+xZKC6XdUlT8v3R2bWzk14OOaM0YSOrwNdi6OF5x6BQwY6VGUxnjDkoLpd5YWV7DlQHVs+apZwykIKax9Ol6oYBIMt0HuTP9jScH0K5V1Tbyybl9s+XPj85lcmAUr/gA17oVvgTSY8RXnUiRj+hlLCqZfeWn13tjcCPmZKZw7eTAUvwcHN8QLTb0CQjkeRWiMtywpmH5j3Z5K1u89Elv+4sxhBPcsgfXPxwuNOBOGz/YgOmN6BksKpl+oa4wcNa7R7FEDGJtSCWv+DOrUHMgeBlMv9yhCY3oGSwqmX/j7+n2xYSyyQgEunDIE1j4TTwhZhc7lpzYUtunnLCmYPm97aTVLdlTEli85eShpe96Hih3xQjO+BqHsVl5tTP9iScH0aU2RKM8n3LU8ZWg2U9MPH92PMPYcu0HNGJclBdOnvbnxIIeqGwHnJrUvTM6F5QuIDXSXMQhOutCz+IzpaSwpmD5rX2Ud730SH3T3ommF5Gz5C9SVOysCITjtFutHMCaBJQXTJ6kqL67aG5s0Z3R+OrNTd8G+1fFCJ38FMm3SJmMSWVIwfdKKXYdjcyT4ffDFqbnIumfjBYbOhKEzPIrOmJ7LkoLpc+oaI/w9YSiLs8YVMGjn36GhylmRmg3TrvIoOmN6NksKps95feMBqhsiAOSkBfn8wFIoWRIvMP0qSEn3KDpjejZLCqZP2Xu4jo+2x2dS+8LkAaSsT2w2OgWGTPMgMmN6B0sKps9o7lxuntB1/KBMJle9D/WHnRUpmc5gd8aYNllSMH3Gil0V7CqPdy5fOqIe2fFOvMDUyyE106PojOkdLCmYPqGuMcIra/fHlj87Lp+8HS/FCwwc6zQdGWPaZUnB9AmvbdhPTaPTuZybHmRe7n444g5v4Qs69yTYpDnGdMiSgun1Sipq+XhHeWx5/qQBpGz+a7zAyDPtJjVjOsmSgunVVJW/rdkX61yeMDiTyRVvQu0hZ0UgBOPO8S5AY3oZSwqmV1u/9wjFCXcuXzoGZHfCPQnTrrKpNY05DpYUTK8VjkR5dX28c/kzY/IZuPsNYiOgDpoMRad6E5wxvZQlBdNrfbyjPDYsdlrQz+eH1MGBde5WgUmXeBecMb2UJQXTK9U1Rnhz48HY8ucnDiKt+M14gaEzIbvQg8iM6d0sKZhe6a1NB6lrci5BzctI4YzsQwm1BGDCP3gUmTG9myUF0+uU1zTy4fZDseULJucTWPdMvEDhDMga4kFkxvR+lhRMr/P3dfuJRJ3nI/PSmRLeEL8ENZgOUy7zLjhjermkJgURuUBENovIVhG5u40yV4nIBhFZLyJ/SmY8pvfbWVbD2j2VseWLJ+YiW1+PFxh/HqTlehCZMX32l8y9AAAcjUlEQVRDIFk7FhE/cD9wHlACLBWRhaq6IaHMeOAHwBxVrRCRQcmKx/R+qsrLCeMbTR+WzfCSl6DeTRIpmTByjkfRGdM3JLOmcBqwVVW3q2oj8BRwaYsy3wDuV9UKAFU9iDFtWLunMjYKasAnXDRwD+xdGS8w5TIIpHoUnTF9QzKTwjBgd8Jyibsu0QRggoi8LyIficgFre1IRG4RkWUisqy0tDRJ4ZqerOWNap8dkUrO1hfjBYaeAsPsRjVjPq1kJoXWhqTUFssBYDwwF/gK8HsROaZBWFUfUtVZqjqroMAGNuuPPt5RTnlNEwDpKX7m6hII1zsb0/OcKTZtFFRjPrVkJoUSYHjCchGwt5UyL6pqk6ruADbjJAljYuoaI7y1Kd6yeP7oFFL2Lo0XmHI5BNM8iMyYvieZSWEpMF5ERotICnA1sLBFmReAeQAiko/TnLQ9iTGZXuidLaXUunMlDMwIMouNxCqdA8fCkKneBWdMH5O0pKCqYeB24FVgI/C0qq4XkZ+LSPOgNK8CZSKyAVgE/F9VLWt9j6Y/qqxt4oNtCTeqjcvAv/PdeIFRZ3kQlTF9V9IuSQVQ1ZeBl1us+0nCcwXuch/GHOP1jQdoiji1gqIBaUytWwoRZxA8soc5YxwZY7qM3dFseqz9lfWs2FURW75wbCqy8/14gZMuss5lY7qYJQXTY/19XXxGtZMGZTDmwGsQDTsrckfC4CneBWdMH2VJwfRI20qr2XygGnAqA/ML9sP+NfECE+dbLcGYJLCkYHocVeXv6+I3qp1alEX+7tfiBUacCQUTPIjMmL7PkoLpcdbuqaSkog6AoF84P68U6ty+hZRMmPQFD6Mzpm+zpGB6lJbDWZw5ZiBZe1pcgpqS7kFkxvQPlhRMj7Jq9+Gjh7PI2Q+Hd7lbBYaf7l1wxvQD7SYFEVmQ8Pz6pEdj+jVV5d1P4jeqfW5CAaFdCbWE0Z+D9IEeRGZM/9FRTeHkhOd3JjMQYzbtr6K0qgGA1ICPM3IroWKHs1H8MO5cD6Mzpn/oKCm0HNXUmKR5d0t8WPTTRw8kdXfCjWqFJ0Mo24OojOlfOhrmokhE7sMZBrv5eYyq3pG0yEy/squsluIyZwIdvw/mDPXDBwkT6IyZ60lcxvQ3HSWF/5vwfFkyAzH927ufxGsJM4YPILv4FeIjoY6BASO9CcyYfqbdpKCqf+iuQEz/VVrVwIZ9R2LLc/MrYc2KeIGTLvIgKmP6pw4vSRWR60VkhYjUuI9lInJddwRn+ofFW0tjYxxNHJJF/u7X4xuHTId8m3fJmO7Sbk3BPfl/B2do6xU4fQunAPeICKr6WPJDNH1ZVX0TK3Yeji3PHe6DVQlXHE293KPIjOmfOqopfAu4TFUXqWqlqh5W1beAK9xtxnwqH2wrIxyNz5cw4khCs9GgSZA2wKPIjOmfOkoK2apa3HKlu86uDzSfSn1ThI+3l8eW541KQ4oXxwsMP82DqIzp3zpKCnUnuM2YDi3fWUFdkzP3cn5mChNrlkDUGeKCzCEweJqH0RnTP3V0SeokEVnTynoBxiQhHtNPRKLKe4lDWowM4dv2QbzApPngs6G5jOluHSWFk4HBwO4W60cCe5MSkekXVpccprLOqRVkpvqZWb/k6LmXB0/1MDpj+q+Ofor9GjiiqjsTH0Ctu82Y4xaNKm9vOhhbPmtEKoHdH8YLTLjAZlUzxiMdJYVRqnpM85GqLgNGJSUi0+etKjlMabVTKwgFfZyha0GdvgVyimCI9SUY45WOkkKonW1pXRmI6R+iUWVRQi3hc6PSSS1JGPhu7DlWSzDGQx0lhaUi8o2WK0XkJmB5ckIyfdnK3Yc55NYS0oJ+5kSWxvsSsgph6EwPozPGdNTR/B3geRH5GvEkMAtIAS5LZmCm74lElbc2HYgtnzekipTdCVccjTvXagnGeKyjAfEOAGeKyDyg+XKQv7l3NRtzXFbuqohNtZnpDzO7ImEk1EGTYdip3gVnjAE6rikAoKqLgEVJjsX0YZGosmhzvC/h0vQ1BOornAV/Cky/ymoJxvQAdneQ6RYrEmoJgyljYm3CGEdTr7AxjozpISwpmKQLR6K8lXDF0UWpawg0/+XljYPhp3sTmDHmGJYUTNIt31nB4VqnlpAvVYyNbI9vnHK5NRsZ04NYUjBJFY5EWbQ5PtXmxWnr8IvbuZw/AXKGeRSZMaY1SU0KInKBiGwWka0icnc75b4kIiois5IZj+l+S4srYmMcDZFyxjduiG8cd55HURlj2pK0pCAifuB+4EJgMvAVEZncSrks4A7g42TFYrzRFIny9ha3L0GVS2RxvJYwcAwUTPAuOGNMq5JZUzgN2Kqq21W1EXgKuLSVcv8C/AdQn8RYjAeW7ijnSF0YgEnhDYwQ98Y18cG0Kz2MzBjTlmQmhWEcPeR2ibsuRkRmAsNV9a/t7UhEbhGRZSKyrLS0tL2ipodoDEd5e4v7Xanyef8q/D63Q3nsOZA91LvgjDFtSmZSaO2SEo1tFPHhDL/93Y52pKoPqeosVZ1VUFDQhSGaZPloexlV9U4tYYJuozCl1tkQTIfx53sYmTGmPclMCiXA8ITlIo6emCcLZ+iMt0WkGDgDWGidzb1fQzjCuwm1hHP9K/E3X3ZaNBsCKd4FZ4xpVzKTwlJgvIiMFpEU4GpgYfNGVa1U1XxVHaWqo4CPgEvcuRpML/bBtjJqGp35EcZJCcP8h50N/lSY8A8eRmaM6UjSkoKqhoHbgVeBjcDTqrpeRH4uIpck67jGW/VNEd7bEp97+fyU1fiaawnDT4OUDI8iM8Z0RqcGxDtRqvoy8HKLdT9po+zcZMZiusf7Ww9R1+TWEnz7GBbd7/QuiQ/GzPUyNGNMJyQ1KZj+pa4xwnufOLUE0SgX+JfGq6JFp0FGvmexGWM6x4a5MF3mvU9KaQhHAZgR3cBQdW9cE5/1JRjTS1hSMF2ipiHMB9vKAEiJ1DKPJfFx7kbOgfSB3gVnjOk0SwqmS7y7JV5LOD28lPxU5zkZBTD5ix5GZow5HpYUzKdWWdvEh9udWkJmUzmn+zbFawmTLwW/dV0Z01tYUjCf2ivr9tEUUVBlXt2rDEzzOxsGjILBU9t9rTGmZ7GkYD6V7aXVrC6pBCC/cTdT0w87tQTxO9Ns2gQ6xvQqlhTMCYtGlZdW74stz/WvITst6CyMOANyR3gUmTHmRFlSMCfsox1l7D/ijHg+KLyfqcHmoa3EblQzppeyHkBzQqobwryx4WBs+aL0daSq+xtj6EzIHORRZMaYT8NqCuaEvL5hf2w4i1HBCsZHd8Q32tDYxvRalhTMcSupqGVpcUVs+ZKMDfFB74ZMh+xCjyIzxnxalhTMcVFVFq7ei7rTJZ2ac4TCmo3xAuPO9SYwY0yXsKRgjsuKXRXsLq8DIOATLgiuim8sPBkGjPQoMmNMV7CkYDqtvinC39ftjy2fPSpEZuUn7pLASRd5E5gxpstYUjCd9vbmUqobnM7l7LQAZ/tWEZt2O3c4ZA3xLjhjTJewpGA6pbKuiQ+2xWdUmz82heCu9+MFRs7xICpjTFezpGA6ZdGmg874RsDQnBBTj7wH6o6EmjMchp/uYXTGmK5iScF0qLSqgaXF5bHli0YLsn91vMDkL9oYR8b0EZYUTIfe2HiAqNt1MLYggzH7Xo7XEvInQP4474IzxnQpSwqmXSUVtaxxR0EFmD+4Ainf5iyID6Zc5lFkxphksKRg2vXq+gOx59MGpzKk+Pn4xuGnQ/ZQD6IyxiSLJQXTpq0Hq9l6sBpwugwuSlsHDVXOxkCa3ZdgTB9kScG0SlV5dX38RrUzhqWQu/+jeIFpX4JQtgeRGWOSyZKCadX6vUcoqXCGswj64NzohxBpcDZmDYVhp3oYnTEmWSwpmGNEo8prCbWEC3NLSC9dGS8w4R/sElRj+ihLCuYYy3ZWUFrdCEC2r45ZNW/HNxae7DyMMX2SJQVzlLrGyFG1hC+mLicYdabcJD0PTv6q1RKM6cMsKZijvLZhPzWNzqB3hcEaJjRtim+cdiUEQx5FZozpDpYUTExJRS0f74gPZ3F55nr8zZWC/JNg0CRvAjPGdJukJgURuUBENovIVhG5u5Xtd4nIBhFZIyJviojN0OKRY2ZUyypnWPXaeIHx53kTmDGmWyUtKYiIH7gfuBCYDHxFRCa3KLYSmKWq04Fngf9IVjymfct2xmdUS5EIF0XeRprnShg0BfJsfCNj+oNk1hROA7aq6nZVbQSeAi5NLKCqi1S11l38CChKYjymDbWN4aNmVLssYy3pTW4zUiAE06+0zmVj+olkJoVhwO6E5RJ3XVtuAl5pbYOI3CIiy0RkWWlpaReGaABeW3+AWrdzeXJkE9Pql8U3TroE0gZ4FJkxprslMym09tNSWy0ocg0wC7inte2q+pCqzlLVWQUFBV0YotldXssSd66EnMb9XKzvJnQuT4CRZ3oXnDGm2wWSuO8SYHjCchGwt2UhETkX+CFwtqo2JDEe00I0Gu9cFo1wYeNrDMh1fydkFMDMa63ZyJh+Jpk1haXAeBEZLSIpwNXAwsQCIjIT+F/gElU9mMRYTCuWFpfHxjcaW7eWkzLrnBzgC8Lsb9iAd8b0Q0lLCqoaBm4HXgU2Ak+r6noR+bmIXOIWuwfIBJ4RkVUisrCN3ZkuVlHTyN/dO5cHNuzhfD4kFPQ7GydcAFmDPYzOGOOVZDYfoaovAy+3WPeThOfnJvP4pnXhSJQ/LdlFfVOUYLSeuUdeZGhh0NmYngdjzvY2QGOMZ+yO5n7otQ0HYs1G42qWMynPh18E/Kkw60bwBz2O0BjjFUsK/czGfUd475NDAKSHD3NucC2ZqW6FceoVkGO3ihjTn1lS6Ecqa5t4dnmJs6DKBZF3KMx0E0LGICia7V1wxpgewZJCPxGNKk8u3RW7SW2CbmdG2sH4FafTrwKf/TkY09/ZWaCfeH3jAXaWOSOKZEQqucL3LsHmu9RGzoH88R5GZ4zpKZJ69ZHpGbYcqOLtzc7wID4N85XAIrIDTo2BlEw46SIPozPG9CRWU+jjKmoaeWZZfAiq86LvM8Z/KF7glOshNdODyIwxPZElhT6suiHMo+/voLrBqRWMiRZzZnBzvB9h/PlQMMG7AI0xPY4lhT6qvinCHz4oprS6EYA0reeqwHuk+N2vfMh0azYyxhzDkkIfFI5EeeLjXbEb1ATlpuyPyfG74w0GM5z5lm2wO2NMC5YU+phoVHlmeQlbD1Y7K1S5KXspw+o/iRc6+cs22J0xplWWFPoQVeWlNXtZU1LZvIKvZS5lbN2aeKERZ0Lhyd4EaIzp8Swp9CGLNh/ko+3lseUvZqxlSkNCQiic4dykZowxbbCk0Ee8v/UQr2+IT0lxXmgDpzUuiXcbDJ5qk+YYYzpkN6/1AYs2H+S19QecBVXODqxlbvhjpDkB5I6EU28Av33dxpj22VmiF1NVXt9wgEXu3cqiUc5tWsTnAtvxNSeEAaPh9FttOGxjTKdYUuilVJVX1u2PDYMtGuW86Ht8Lm07fl9CQjjtFgiGPIzUGNObWFLohVSVhav3xjqV08OVXND0BqdklTuT5QAMnQkzrrEmI2PMcbEzRi8TjSrPrdzD8p0VAGQ2lXNp/YtMHhCONxkNmQ4zr7OhsI0xx82SQi9S1xjh2eW72bCvCoCi2g2c1/Q24/JS3IQgcNKFzphGdpWRMeYEWFLoJXaX1/Lkkl1U1DaBKpOPvMccXcno/Azn/O8LOJecDp3hdajGmF7MkkIPp6p8sK2MV9btIxIFVJle+SZz/BsYPsBNCBkFziWnNr+yMeZTsqTQg9U1Rnh2RQkb9h4BYGDDHk6teoMZ2TUMzEh3Cg2a7MyJYFcYGWO6gCWFHmpXWS1PLXWaiwLRBqZUvsvU8DrGFWQQCqY4hQZNgVk32hVGxpguY2eTHqa8ppHX1u9ndUklqDK0bgvTK99kVEaY4QWZToeyLwij5sDEL1hCMMZ0KTuj9BDVDWHe2nSQJTvKiEQhs6mMaZVvM6xxO6PzM45uLpp2JaQP9DZgY0yfZEnBY/VNEd7feoj3PjlEQzhKKHyEiTUrGFe9jIFpfkYMzSEU9EFqFky9whnp1C43NcYkiSUFjxyqbmDpjnKW7ayA2nKG1m9jaN0nFDTsJCsUYPiQTLJCAUBg5ByYeDGkpHsdtjGmj7Ok0I0iUWXjviN8vKOc4v1ljKpZwxm168lucoa8Tk/xUzQ4i9y0oFMZGDDKqR3kjvA0bmNM/2FJIcnCkSglFXVsPlDFxq3byDm8gYKGEiY37MKnYQBSAz6G5aaRn5kaTwZj5jkzpFlTkTGmG1lS6GIN4Qi7y2spPlhJecknRPavI6vhIAUNxXwmoZwAuelBCrJC5GaEkPwJMHiK87BOZGOMR5KaFETkAuBewA/8XlX/rcX2VOAx4FSgDPiyqhYnM6YTpaqEo0pDOEpjOEpNQ5jy6gYqj1RQU1lOXWUp0SN7CVTvI6uxlKxwBVnoMftJ8fsoyEqlICuV1AFFMOosGHaq3XxmjOkRkpYURMQP3A+cB5QAS0VkoapuSCh2E1ChquNE5Grg34Evd3Us5TWNLN56iGhUiTQ/NOF5VMmsLmbgkQ1oNAyRMETDSDSMRpuIhp1/fdEwPo3gJ4w/GiYlWkcqUVI7OH4o6CcrNUBOZhoDBo/EN/osGDgWMvKtecgY06Mks6ZwGrBVVbcDiMhTwKVAYlK4FPiZ+/xZ4DciIqp67E/sT6G6PsyH28raLTOmehcjD3/UJcdLT/GTGQqSPmAIWUWTSB86xRmfKD0PAh2lEGOM8U4yk8IwYHfCcglweltlVDUsIpVAHnAosZCI3ALcAjBixPFfieP3d/xrPCr+Dsv4RPAJ+H1CwCekBPwEU9MIZAwgmDGA0MBhpOcXkZJbBFmFEEg57liNMcZLyUwKrZ2JW9YAOlMGVX0IeAhg1qxZx12LyEkLMn96IX6fxB8iRy0Ha9NIqyxA/EF8/iC+QACfL0ggmEIwGCSYkoo/EHTmOvYFwecHf4rdO2CM6VOSmRRKgOEJy0XA3jbKlIhIAMgByrs6kMzUAHPG5XdQKgsY19WHNsaYXiWZ8zUuBcaLyGgRSQGuBha2KLMQuN59/iXgra7uTzDGGNN5SaspuH0EtwOv4lyS+oiqrheRnwPLVHUh8DDwuIhsxakhXJ2seIwxxnQsqfcpqOrLwMst1v0k4Xk9cGUyYzDGGNN5yWw+MsYY08tYUjDGGBNjScEYY0yMJQVjjDEx0tuuABWRUmBnNx4ynxZ3WPcj9t77p/763vv6+x6pqgUdFep1SaG7icgyVZ3ldRxesPdu770/6a/vuyVrPjLGGBNjScEYY0yMJYWOPeR1AB6y994/9df33l/f91GsT8EYY0yM1RSMMcbEWFIwxhgTY0mhDSLyiIgcFJF1XsfSnURkuIgsEpGNIrJeRO70OqbuIiIhEVkiIqvd9/7PXsfU3UTELyIrReSvXsfSnUSkWETWisgqEVnmdTxesj6FNojI54Bq4DFVnep1PN1FRAqBQlVdISJZwHLgi6q6oYOX9noiIkCGqlaLSBBYDNypql0zeXcvICJ3AbOAbFWd73U83UVEioFZqtqXb17rFKsptEFV3yUJs8D1dKq6T1VXuM+rgI04c2n3eeqodheD7qPf/GoSkSLgYuD3XsdivGNJwbRJREYBM4GPvY2k+7jNJ6uAg8Drqtpv3jvw38D3gajXgXhAgddEZLmI3OJ1MF6ypGBaJSKZwF+A76jqEa/j6S6qGlHVGThzip8mIv2i6VBE5gMHVXW517F4ZI6qngJcCHzbbT7ulywpmGO47el/AZ5Q1ee8jscLqnoYeBu4wONQussc4BK3bf0p4PMi8kdvQ+o+qrrX/fcg8DxwmrcReceSgjmK29n6MLBRVf/L63i6k4gUiEiu+zwNOBfY5G1U3UNVf6CqRao6Cmeu9LdU9RqPw+oWIpLhXlSBiGQA5wP96qrDRJYU2iAiTwIfAieJSImI3OR1TN1kDnAtzi/FVe7jIq+D6iaFwCIRWQMsxelT6FeXZvZTg4HFIrIaWAL8TVX/7nFMnrFLUo0xxsRYTcEYY0yMJQVjjDExlhSMMcbEWFIwxhgTY0nBGGNMjCUF061EZLCI/ElEtrtDCnwoIped4L5GddcotiIyS0Tu645jJRxzxolcDiwihV01yqmITBORBV2xL9M7WFIw3ca9Me4F4F1VHaOqp+LcKFXkbWTtE5GAqi5T1TuSse92Ns8ATuQekbuA351YREdT1bVAkYiM6Ir9mZ7PkoLpTp8HGlX1t80rVHWnqv4PxOYzeNQd136liMxz148SkfdEZIX7OLO9g7i/lN91b7xbJyKfdddf4L5+tYi86a4bKCIviMgaEflIRKa7638mIg+JyGvAYyIyt/nXt7vtERF5263x3JFw7B+LyCYReV1EnhSR77US3wIR+S8RWQT8u4icJiIfuO/5AxE5SURSgJ8DX3bfx5fdO28fEZGlbtlL2/gIrgD+7h7rBvf9vSQiO0TkdhG5y339RyIy0C33tojMcp/nu8NdNHsJJ3mbfqC9XynGdLUpwIp2tn8bQFWnichEnFErJ+CMWHqeqtaLyHjgSZwx/9vyVeBVVf1/IuIH0kWkAOfX8+dUdUfzyRD4Z2Clqn5RRD4PPIbzCx3gVOAsVa0TkbktjjERmAdkAZtF5EHgZJwT8kyc/1srcOajaM0E4FxVjYhIthtXWETOBf5VVa8QkZ/gjPF/O4CI/CvO8BM3usNxLBGRN1S1pnmnIjIaqFDVhoRjTXVjCgFbgX9S1Zki8mvgOpzRUduzDLgb+I8Oypk+wJKC8YyI3A+chVN7mO0+/x8AVd0kIjtxTp47gd+IyAwg4q5rz1LgEXdgvxdUdZV7Un9XVXe4+2+eK+MsnBM5qvqWiOSJSI67baGq1rVxjL+5J94GETmIM1TCWcCLza8RkZfaifEZVY24z3OAP7gJT3HmcWjN+TiD1jXXPkLACJw5L5oVAqUtXrfInRujSkQqcX75A6wFprcTY7ODwNBOlDN9gCUF053W456AAVT12yKSj/NLFEDaeN3/AQ7g/BL3AfXtHURV3xVn6OOLgcdF5B7gMK1PmNPaMZvL1bSyrVniL/EIzv+ltuJvTeK+/wXnxH2ZOHNYvN3GawS4QlU3t7PfOpxk0Vas0YTlKPFzQJh4c3LL14fc/Zp+wPoUTHd6CwiJyG0J69ITnr8LfA3AbTYaAWzG+SW9T1WjOIP1+ds7iIiMxJkb4Hc4I76egjO44dlu8woJzUeJx5wLHPoU80csBr7g9o1k4iSlzsgB9rjPb0hYX4XTPNXsVeAf3Q57RGRmK/vaAow6jpibFeM0lwF8qcW2CfTjUUP7G0sKptuoM/riF3FOzjtEZAnwB+Cf3CIPAH4RWQv8GbjBbaJ5ALheRD7COUG19wseYC6wSkRW4tRM7lXVUuAW4DlxRsP8s1v2Z8AscUZG/Tfg+k/x/pYCC4HVwHM4NaDKTrz0P4Bfisj7HJ3wFgGTmzuacWoUQWCNOJfi/ksrMdQA20Rk3HGG/5/AbSLyAZDfYts84G/HuT/TS9koqcZ0IRHJVNVqEUnHqYXc0jzndTfGcBlwqqr+qAv2lQq8g9PhHv7UwZkez/oUjOlaD4nIZJx2+D90d0IAUNXnRSSvi3Y3ArjbEkL/YTUFY4wxMdanYIwxJsaSgjHGmBhLCsYYY2IsKRhjjImxpGCMMSbm/wdtDzwFFLYO6gAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_post, label='posterior grid')\n", "plot_cdf(sample_post_pm, label='posterior pymc')\n", "cdf_rates()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, it looks pretty good.\n", "\n", "To generate a posterior predictive distribution, we can use `sample_posterior_predictive`" ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 2000/2000 [00:00<00:00, 2945.38it/s]\n" ] } ], "source": [ "with model:\n", " post_pred = pm.sample_posterior_predictive(trace, samples=2000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like:" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2000,)" ] }, "execution_count": 72, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post_pred_pm = post_pred['goals'].flatten()\n", "sample_post_pred_pm.shape" ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.503" ] }, "execution_count": 73, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post_pred_pm = post_pred['goals']\n", "np.mean(sample_post_pred_pm)" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "unhashable type: 'numpy.ndarray'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mplot_cdf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msample_post_pred\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'posterior pred grid'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mplot_cdf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msample_post_pred_pm\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'posterior pred pm'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0mcdf_goals\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m\u001b[0m in \u001b[0;36mplot_cdf\u001b[0;34m(sample, **options)\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mplot_cdf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msample\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0moptions\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;34m\"\"\"Compute and plot the CDF of a sample.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mpmf\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mPmf\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0msample\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0mxs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfreqs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpmf\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msorted_items\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mps\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcumsum\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfreqs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/BayesMadeSimple/lib/python3.6/collections/__init__.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(*args, **kwds)\u001b[0m\n\u001b[1;32m 533\u001b[0m \u001b[0;32mraise\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'expected at most 1 arguments, got %d'\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 534\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mCounter\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__init__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 535\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 536\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 537\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m__missing__\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;32m~/anaconda3/envs/BayesMadeSimple/lib/python3.6/collections/__init__.py\u001b[0m in \u001b[0;36mupdate\u001b[0;34m(*args, **kwds)\u001b[0m\n\u001b[1;32m 620\u001b[0m \u001b[0msuper\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mCounter\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0miterable\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m# fast path when counter is empty\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 621\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 622\u001b[0;31m \u001b[0m_count_elements\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0miterable\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 623\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mkwds\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 624\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwds\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: unhashable type: 'numpy.ndarray'" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_post_pred, label='posterior pred grid')\n", "plot_cdf(sample_post_pred_pm, label='posterior pred pm')\n", "cdf_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Look's pretty good!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Going hierarchical\n", "\n", "So far, all of this is based on a gamma prior. To choose the parameters of the prior, I used data from previous Stanley Cup finals and computed a maximum likelihood estimate (MLE). But that's not correct, because\n", "\n", "1. It assumes that the observed goal counts are the long-term goal-scoring rates.\n", "2. It treats `alpha` and `beta` as known values rather than parameters to estimate.\n", "\n", "In other words, I have ignored two important sources of uncertainty. As a result, my predictions are almost certainly too confident.\n", "\n", "The solution is a hierarchical model, where `alpha` and `beta` are the parameters that control `mu` and `mu` is the parameter that controls `goals`. Then we can use observed `goals` to update the distributions of all three unknown parameters.\n", "\n", "Of course, now we need a prior distribution for `alpha` and `beta`. A common choice is the half Cauchy distribution (see [Gelman](http://www.stat.columbia.edu/~gelman/research/published/taumain.pdf)), but on advice of counsel, I'm going with exponential." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sample = pm.Exponential.dist(lam=1).random(size=1000)\n", "plot_cdf(sample)\n", "plt.xscale('log')\n", "plt.xlabel('Parameter of a gamma distribution')\n", "plt.ylabel('CDF')\n", "np.mean(sample)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This distribution represents radical uncertainty about the value of this distribution: it's probably between 0.1 and 10, but it could be really big or really small.\n", "\n", "Here's a PyMC model that generates `alpha` and `beta` from an exponential distribution." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " alpha = pm.Exponential('alpha', lam=1)\n", " beta = pm.Exponential('beta', lam=1)\n", " trace = pm.sample_prior_predictive(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the distributions of `alpha` and `beta` look like." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sample_prior_alpha = trace['alpha']\n", "plot_cdf(sample_prior_alpha, label='alpha prior')\n", "sample_prior_beta = trace['beta']\n", "plot_cdf(sample_prior_beta, label='beta prior')\n", "\n", "plt.xscale('log')\n", "plt.xlabel('Parameter of a gamma distribution')\n", "plt.ylabel('CDF')\n", "np.mean(sample_prior_alpha)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have `alpha` and `beta`, we can generate `mu`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " alpha = pm.Exponential('alpha', lam=1)\n", " beta = pm.Exponential('beta', lam=1)\n", " mu = pm.Gamma('mu', alpha, beta)\n", " trace = pm.sample_prior_predictive(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the prior distribution of `mu` looks like." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sample_prior_mu = trace['mu']\n", "plot_cdf(sample_prior_mu, label='mu prior hierarchical')\n", "cdf_rates()\n", "np.mean(sample_prior_mu)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In effect, the model is saying \"I have never seen a hockey game before. As far as I know, it could be soccer, could be basketball, could be pinball.\"\n", "\n", "If we zoom in on the range 0 to 10, we can compare the prior implied by the hierarchical model with the gamma prior I hand picked." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plot_cdf(sample_prior_mu, label='mu prior hierarchical')\n", "plot_cdf(sample_prior, label='mu prior', color='gray')\n", "plt.xlim(0, 10)\n", "cdf_rates()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Obviously, they are very different. They agree that the most likely values are less than 10, but the hierarchical model admits the possibility that `mu` could be orders of magnitude bigger.\n", "\n", "Crazy as it sounds, that's probably what we want in a non-committal prior.\n", "\n", "Ok, last step of the forward process, let's generate some goals." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " alpha = pm.Exponential('alpha', lam=1)\n", " beta = pm.Exponential('beta', lam=1)\n", " mu = pm.Gamma('mu', alpha, beta)\n", " goals = pm.Poisson('goals', mu)\n", " trace = pm.sample_prior_predictive(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the prior predictive distribution of goals." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sample_prior_goals = trace['goals']\n", "plot_cdf(sample_prior_goals, label='goals prior')\n", "cdf_goals()\n", "np.mean(sample_prior_goals)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To see whether that distribution is right, I ran samples using SciPy." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def forward_hierarchical(size=1):\n", " alpha = st.expon().rvs(size=size)\n", " beta = st.expon().rvs(size=size)\n", " mu = st.gamma(a=alpha, scale=1/beta).rvs(size=size)\n", " goals = st.poisson(mu).rvs(size=size)\n", " return goals[0]\n", "\n", "sample_prior_goals_st = [forward_hierarchical() for i in range(1000)];" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "plot_cdf(sample_prior_goals, label='goals prior')\n", "plot_cdf(sample_prior_goals_st, label='goals prior scipy')\n", "cdf_goals()\n", "plt.xlim(0, 50)\n", "plt.legend(loc='lower right')\n", "np.mean(sample_prior_goals_st)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Hierarchical inference\n", "\n", "Once we have the forward process working, we only need a small change to run the reverse process." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " alpha = pm.Exponential('alpha', lam=1)\n", " beta = pm.Exponential('beta', lam=1)\n", " mu = pm.Gamma('mu', alpha, beta)\n", " goals = pm.Poisson('goals', mu, observed=[6])\n", " trace = pm.sample(1000, tune=2000, nuts_kwargs=dict(target_accept=0.99))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the posterior distribution of `mu`. The posterior mean is close to the observed value, which is what we expect with a weakly informative prior." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sample_post_mu = trace['mu']\n", "plot_cdf(sample_post_mu, label='mu posterior')\n", "cdf_rates()\n", "np.mean(sample_post_mu)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Two teams\n", "\n", "We can extend the model to estimate different values of `mu` for the two teams." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " alpha = pm.Exponential('alpha', lam=1)\n", " beta = pm.Exponential('beta', lam=1)\n", " mu_VGK = pm.Gamma('mu_VGK', alpha, beta)\n", " mu_WSH = pm.Gamma('mu_WSH', alpha, beta)\n", " goals_VGK = pm.Poisson('goals_VGK', mu_VGK, observed=[6])\n", " goals_WSH = pm.Poisson('goals_WSH', mu_WSH, observed=[4])\n", " trace = pm.sample(1000, tune=2000, nuts_kwargs=dict(target_accept=0.95))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use `traceplot` to review the results and do some visual diagnostics." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "pm.traceplot(trace);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the posterior distribitions for `mu_WSH` and `mu_VGK`." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sample_post_mu_WSH = trace['mu_WSH']\n", "plot_cdf(sample_post_mu_WSH, label='mu_WSH posterior')\n", "\n", "sample_post_mu_VGK = trace['mu_VGK']\n", "plot_cdf(sample_post_mu_VGK, label='mu_VGK posterior')\n", "\n", "cdf_rates()\n", "np.mean(sample_post_mu_WSH), np.mean(sample_post_mu_VGK)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On the basis of one game (and never having seen a previous game), here's the probability that Vegas is the better team." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.mean(sample_post_mu_VGK > sample_post_mu_WSH)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## More background\n", "\n", "But let's take advantage of more information. Here are the results from the five most recent Stanley Cup finals, ignoring games that went into overtime." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "data = dict(BOS13 = [2, 1, 2],\n", " CHI13 = [0, 3, 3],\n", " NYR14 = [0, 2],\n", " LAK14 = [3, 1],\n", " TBL15 = [1, 4, 3, 1, 1, 0],\n", " CHI15 = [2, 3, 2, 2, 2, 2],\n", " SJS16 = [2, 1, 4, 1],\n", " PIT16 = [3, 3, 2, 3],\n", " NSH17 = [3, 1, 5, 4, 0, 0],\n", " PIT17 = [5, 4, 1, 1, 6, 2],\n", " VGK18 = [6,2,1],\n", " WSH18 = [4,3,3],\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's how we can get the data into the model." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " alpha = pm.Exponential('alpha', lam=1)\n", " beta = pm.Exponential('beta', lam=1)\n", " \n", " mu = dict()\n", " goals = dict()\n", " for name, observed in data.items():\n", " mu[name] = pm.Gamma('mu_'+name, alpha, beta)\n", " goals[name] = pm.Poisson(name, mu[name], observed=observed)\n", " \n", " trace = pm.sample(1000, tune=2000, nuts_kwargs=dict(target_accept=0.95))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here are the results." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": false }, "outputs": [], "source": [ "pm.traceplot(trace);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the posterior means." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sample_post_mu_VGK = trace['mu_VGK18']\n", "np.mean(sample_post_mu_VGK)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "sample_post_mu_WSH = trace['mu_WSH18']\n", "np.mean(sample_post_mu_WSH)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "They are lower with the background information than without, and closer together. Here's the updated chance that Vegas is the better team." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "np.mean(sample_post_mu_VGK > sample_post_mu_WSH)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Predictions\n", "\n", "Even if Vegas is the better team, that doesn't mean they'll win the next game.\n", "\n", "We can use `sample_posterior_predictive` to generate predictions." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "with model:\n", " post_pred = pm.sample_posterior_predictive(trace, samples=1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the posterior predictive distributions of goals scored." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "WSH = post_pred['WSH18']\n", "WSH.shape" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "WSH = post_pred['WSH18'].flatten()\n", "VGK = post_pred['VGK18'].flatten()\n", "\n", "plot_cdf(WSH, label='WSH')\n", "plot_cdf(VGK, label='VGK')\n", "cdf_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the chance that Vegas wins the next game." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "win = np.mean(VGK > WSH)\n", "win" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The chance that they lose." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "lose = np.mean(WSH > VGK)\n", "lose" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the chance of a tie." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "tie = np.mean(WSH == VGK)\n", "tie" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overtime!\n", "\n", "In the playoffs, you play overtime periods until someone scores. No stupid shootouts!\n", "\n", "In a Poisson process with rate parameter `mu`, the time until the next event is exponential with parameter `lam = 1/mu`.\n", "\n", "So we can take a sample from the posterior distributions of `mu`:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "mu_VGK = trace['mu_VGK18']\n", "mu_WSH = trace['mu_WSH18']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And generate time to score,`tts`, for each team:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "tts_VGK = np.random.exponential(1/mu_VGK)\n", "np.mean(tts_VGK)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "tts_WSH = np.random.exponential(1/mu_WSH)\n", "np.mean(tts_WSH)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the chance that Vegas wins in overtime." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "win_ot = np.mean(tts_VGK < tts_WSH)\n", "win_ot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since `tts` is continuous, ties are unlikely." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "total_win = win + tie * win_ot\n", "total_win" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, we can simulate the rest of the series and compute the probability that Vegas wins the series." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def flip(p):\n", " \"\"\"Simulate a single game.\"\"\"\n", " return np.random.random() < p" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def series(wins, losses, p_win):\n", " \"\"\"Simulate a series.\n", " \n", " wins: number of wins so far\n", " losses: number of losses so far\n", " p_win: probability that the team of interest wins a game\n", " \n", " returns: boolean, whether the team of interest wins the series\n", " \"\"\"\n", " while True:\n", " if flip(p_win):\n", " wins += 1\n", " else:\n", " losses += 1\n", "\n", " if wins==4:\n", " return True\n", "\n", " if losses==4:\n", " return False" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "series(1, 2, total_win)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "t = [series(1, 2, total_win) for i in range(1000)]\n", "np.mean(t)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.6.5" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: zigzag2.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bayesian Zig Zag\n", "\n", "Developing probabilistic models using grid methods and MCMC.\n", "\n", "Thanks to Chris Fonnesback for his help with this notebook, and to Colin Carroll, who added features to pymc3 to support some of these examples.\n", "\n", "Copyright 2018 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n", "\n", "import numpy as np\n", "import pymc3 as pm\n", "\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulating hockey\n", "\n", "I'll model hockey as a Poisson process, where each team has some long-term average scoring rate, `lambda`, in goals per game.\n", "\n", "For the first example, I'll assume that `lambda` is somehow known to be 2.7. Since regulation play (as opposed to overtime) is 60 minutes, we can compute the goal scoring rate per minute." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.045000000000000005, 0.0020250000000000003)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lam_per_game = 2.7\n", "min_per_game = 60\n", "lam_per_min = lam_per_game / min_per_game\n", "lam_per_min, lam_per_min**2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we assume that a goal is equally likely during any minute of the game, and we ignore the possibility of scoring more than one goal in the same minute, we can simulate a game by generating one random value each minute." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def simulate_game(p, n=60):\n", " goals = np.random.choice([0, 1], n, p=[1-p, p])\n", " return np.sum(goals)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And simulate 10 games." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[1, 6, 2, 3, 0, 1, 3, 2, 2, 1]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "size = 10\n", "sample = [simulate_game(lam_per_min) for i in range(size)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we simulate 1000 games, we can see what the distribution looks like. The average of this sample should be close to `lam_per_game`." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.706, 2.7)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "size = 1000\n", "sample_sim = [simulate_game(lam_per_min) for i in range(size)]\n", "np.mean(sample_sim), lam_per_game" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PMFs\n", "\n", "To visualize distributions, I'll start with a probability mass function (PMF), which I'll implement using a `Counter`.\n", "\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "from collections import Counter\n", "\n", "class Pmf(Counter):\n", " \n", " def normalize(self):\n", " \"\"\"Normalizes the PMF so the probabilities add to 1.\"\"\"\n", " total = sum(self.values())\n", " for key in self:\n", " self[key] /= total\n", " \n", " def sorted_items(self):\n", " \"\"\"Returns the outcomes and their probabilities.\"\"\"\n", " return zip(*sorted(self.items()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are some functions for plotting PMFs." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "plot_options = dict(linewidth=3, alpha=0.6)\n", "\n", "def underride(options):\n", " \"\"\"Add key-value pairs to d only if key is not in d.\n", "\n", " options: dictionary\n", " \"\"\"\n", "\n", " for key, val in plot_options.items():\n", " options.setdefault(key, val)\n", " return options\n", "\n", "def plot(xs, ys, **options):\n", " \"\"\"Line plot with plot_options.\"\"\"\n", " plt.plot(xs, ys, **underride(options))\n", "\n", "def bar(xs, ys, **options):\n", " \"\"\"Bar plot with plot_options.\"\"\"\n", " plt.bar(xs, ys, **underride(options))\n", "\n", "def plot_pmf(sample, **options):\n", " \"\"\"Compute and plot a PMF.\"\"\"\n", " pmf = Pmf(sample)\n", " pmf.normalize()\n", " xs, ps = pmf.sorted_items()\n", " bar(xs, ps, **options)\n", " \n", "def decorate_pmf_goals():\n", " \"\"\"Decorate the axes.\"\"\"\n", " plt.xlabel('Number of goals')\n", " plt.ylabel('PMF')\n", " plt.title('Distribution of goals scored')\n", " legend()\n", " \n", "def legend(**options):\n", " \"\"\"Draw a legend only if there are labeled items.\n", " \"\"\"\n", " ax = plt.gca()\n", " handles, labels = ax.get_legend_handles_labels()\n", " if len(labels):\n", " plt.legend(**options)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the results from the simulation look like." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pmf(sample_sim, label='simulation')\n", "decorate_pmf_goals()\n", "\n", "plt.savefig('zigzag1.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Poisson process\n", "\n", "For large values of `n`, the process we just simulated converges to the Poisson distribution with parameter `mu = n * p`, which is also `mu = lam_per_game`.\n", "\n", "We can use NumPy to generate a sample from a Poisson distribution." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.733" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = 60\n", "p = lam_per_min\n", "mu = n * p\n", "sample_poisson = np.random.poisson(mu, size)\n", "np.mean(sample_poisson)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And confirm that the results are similar to what we got from the model." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pmf(sample_sim, label='simulation')\n", "plot_pmf(sample_poisson, label='Poisson')\n", "decorate_pmf_goals()\n", "\n", "plt.savefig('zigzag2.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But plotting PMFs is a bad way to compare distributions. It's better to use the cumulative distribution function (CDF)." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def plot_cdf(sample, **options):\n", " \"\"\"Compute and plot the CDF of a sample.\"\"\"\n", " pmf = Pmf(sample)\n", " xs, freqs = pmf.sorted_items()\n", " ps = np.cumsum(freqs, dtype=np.float)\n", " ps /= ps[-1]\n", " plot(xs, ps, **options)\n", " \n", "def decorate_cdf_rates():\n", " \"\"\"Decorate the axes.\"\"\"\n", " plt.xlabel('Goal scoring rate (mu)')\n", " plt.ylabel('CDF')\n", " plt.title('Distribution of goal scoring rate')\n", " legend()\n", "\n", "def decorate_cdf_goals():\n", " \"\"\"Decorate the axes.\"\"\"\n", " plt.xlabel('Number of goals')\n", " plt.ylabel('CDF')\n", " plt.title('Distribution of goals scored')\n", " legend()\n", "\n", "def plot_cdfs(*sample_seq, **options):\n", " \"\"\"Plot multiple CDFs.\"\"\"\n", " for sample in sample_seq:\n", " plot_cdf(sample, **options)\n", " decorate_cdf_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Comparing CDFs makes it clearer that the results from the simulation are consistent with the Poisson model." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_sim, label='simulation')\n", "plot_cdf(sample_poisson, label='Poisson')\n", "decorate_cdf_goals()\n", "\n", "plt.savefig('zigzag3.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Warming up PyMC\n", "\n", "Soon we will want to use `pymc3` to do inference, which is really what it's for. But just to get warmed up, I will use it to generate a sample from a Poisson distribution." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " goals = pm.Poisson('goals', mu)\n", " trace = pm.sample_prior_predictive(1000)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1000" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(trace['goals'])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.634" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_pm = trace['goals']\n", "np.mean(sample_pm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This example is like using a cannon to kill a fly. But it help us learn to use the cannon." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_sim, label='simulation')\n", "plot_cdf(sample_pm, label='PyMC')\n", "decorate_cdf_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Evaluating the Poisson distribution\n", "\n", "One of the nice things about the Poisson distribution is that we can compute its PMF analytically, and SciPy provides an implementation." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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IvnmR2adS37G1fPAhm3dyzErivcszDoBSYflXS69yY4n3OugsM7EYWHWOXybrDvmZbLjA9+pbjlmq3M3lJmZJXnPwszMkrrMgF59+/aNQYMGVbsMM7N1ytNPP70kIvqllusyYTFo0CBmzZpV7TLMzNYpkiq6Ot7dUGZmllRoWEgaJeklSfPKjREk6XRJL0h6TtKD+dWpTfNWSKrPf6YUWaeZmbWusG6ofJyeq4Avk13pOVPSlIh4oWSxZ4C6iFgu6TvAT/nHFaHvR0RtUfWZmVnlijxmMQKYFxHzASRNIru8f1VYRMTDJcs/STYImpl1QR9//DENDQ188EG5EUasaD179mTAgAF07959jdYvMiz6s/qQxA1kY720ZBxwf8nznpJmkY1cOSEi7mm+gqSTgJMABg70oJRmnVlDQwObbropgwYNIhuj0DpKRLB06VIaGhoYPHjwGrVR5DGLcv8ayl4BKOkYoI5sHP0mAyOijmxAsSskbfeJxiKujYi6iKjr1y955peZVdEHH3xAnz59HBRVIIk+ffqs1V5dkWHRwOrj8g8gG/N+NcruUfxj4JCIaBplk4hYlP+eDzwC7FZgrWbWARwU1bO2732RYTET2CEf374HMAZY7awmSbsBvyALijdKpveWtGH+uC+wNyXHOszMrGMVdswiIholnQJMA7oBN0TEXEkXALMiYgpZt1Mv4M489RZGxCFkN3X/haSVZIE2odlZVGa2jjv77k/cO2utXDS6JrlMt27dqKmpobGxkaFDhzJx4kQ23njjFpffa6+9eOKJJ9qzzFYtWLCAoUOHstNOO/HRRx8xcuRIrr76ahYuXMjgwYM555xzuPDCCwFYsmQJW221Fd/+9re58sorGT9+PNdddx1NXfKjRo1iwoQJ7VZboVdwR8RUYGqzaaV3ATughfWeANKfvFWsvf9jlqrkP6lZZ7DRRhtRX18PwNFHH80111zD6aef3uLyHRkUTbbbbjvq6+tpbGzkS1/6Evfccw+77747Q4YM4b777lsVFnfeeSe77LLLauuedtppfP/7bbmvWOV8BbeZrZf22Wcf5s2bB8Bll13GsGHDGDZsGFdcccWqZXr16gXA66+/zsiRI6mtrWXYsGE89thjrFixguOPP55hw4ZRU1PD5ZdfDkB9fT177rknu+66K4cddhhvvvkmAPvttx8//OEPGTFiBDvuuCOPPfZYq/VtsMEG7LXXXqtq3GijjRg6dOiqYY3uuOMOvvnNb7bvm9IKh4WZrXcaGxu5//77qamp4emnn+bGG2/kqaee4sknn+S6667jmWeeWW352267jQMPPJD6+nqeffZZamtrqa+v57XXXuP5559nzpw5nHBCdqfh4447josvvpjnnnuOmpoazj///NW2O2PGDK644orVppezfPlyHnzwQWpq/rHnPmbMGCZNmkRDQwPdunVj6623Xm2dyy+/nNraWmpra5k2bdravk2rcViY2Xrj/fffp7a2lrq6OgYOHMi4ceN4/PHHOeyww9hkk03o1asXo0eP/sS3/uHDh3PjjTcyfvx45syZw6abbsqQIUOYP38+p556Kg888ACbbbYZb7/9Nm+99Rb77rsvAGPHjuXRRx9d1c7o0aMB2GOPPViwYEHZGl9++WVqa2vZe++9OfjggznooINWzRs1ahTTp0/n9ttv58gjj/zEuqeddhr19fXU19dz4IEHru3btZouM+qsmVlK6TGLJpXcAG7kyJE8+uij/O53v+PYY4/lzDPP5LjjjuPZZ59l2rRpXHXVVUyePHlVV1RLNtxwQyA70N7YWP6uuU3HLMrp0aMHe+yxB5deeilz587l3nvvTdbeXrxnYWbrtZEjR3LPPfewfPly3nvvPX7zm9+wzz77rLbMK6+8wpZbbsm3vvUtxo0bx+zZs1myZAkrV67kG9/4BhdeeCGzZ89m8803p3fv3qv2TG655ZZVexnt5YwzzuDiiy+mT58+7dpuivcszKwqOstZdLvvvjvHH388I0aMAODEE09kt91Wvwb4kUce4ZJLLqF79+706tWLm2++mddee40TTjiBlStXAnDRRRcBMHHiRE4++WSWL1/OkCFDuPHGG9u13l122eUTZ0F1hC5zD+66urrwzY9a5lNnrdpefPFFhg4dWu0y1mvlPgNJT+dDK7XK3VBmZpbksDAzsySHhZl1mK7S7b0uWtv33mFhZh2iZ8+eLF261IFRBU33s+jZs+cat+GzocysQwwYMICGhgYWL15c7VLWS013yltTDgsz6xDdu3df47u0WfW5G8rMzJIcFmZmluSwMDOzJIeFmZklOSzMzCzJYWFmZkk+ddYK4YELzboW71mYmVmSw8LMzJIcFmZmluSwMDOzJIeFmZklOSzMzCzJYWFmZkkO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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from scipy.stats import poisson\n", "\n", "xs = np.arange(11)\n", "ps = poisson.pmf(xs, mu)\n", "bar(xs, ps, label='Poisson PMF')\n", "decorate_pmf_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's a function that computes the probability of scoring a given number of goals in a game, for a known value of `mu`." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "def poisson_likelihood(goals, mu):\n", " \"\"\"Probability of goals given scoring rate.\n", " \n", " goals: observed number of goals (scalar or sequence)\n", " mu: hypothetical goals per game\n", " \n", " returns: probability\n", " \"\"\"\n", " return np.prod(poisson.pmf(goals, mu))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the probability of scoring 6 goals in a game if the long-term rate is 2.7 goals per game." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.036162211957124435" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poisson_likelihood(goals=6, mu=2.7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the probability of scoring 3 goals." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.22046768454274915" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poisson_likelihood(goals=3, mu=2.7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This function also works with a sequence of goals, so we can compute the probability of scoring 6 goals in the first game and 3 in the second." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.007972599138131342" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "poisson_likelihood(goals=[6, 3], mu=2.7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bayesian inference with grid approximation\n", "\n", "Ok, it's finally time to do some inference! The function we just wrote computes the likelihood of the data, given a hypothetical value of `mu`:\n", "\n", "$\\mathrm{Prob}~(x ~|~ \\mu)$\n", "\n", "But what we really want is the distribution of `mu`, given the data:\n", "\n", "$\\mathrm{Prob}~(\\mu ~|~ x)$\n", "\n", "If only there were some theorem that relates these probabilities!\n", "\n", "The following class implements Bayes's theorem." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "class Suite(Pmf):\n", " \"\"\"Represents a set of hypotheses and their probabilities.\"\"\"\n", " \n", " def bayes_update(self, data, like_func):\n", " \"\"\"Perform a Bayesian update.\n", " \n", " data: some representation of observed data\n", " like_func: likelihood function that takes (data, hypo), where\n", " hypo is the hypothetical value of some parameter,\n", " and returns P(data | hypo)\n", " \"\"\"\n", " for hypo in self:\n", " self[hypo] *= like_func(data, hypo)\n", " self.normalize()\n", " \n", " def plot(self, **options):\n", " \"\"\"Plot the hypotheses and their probabilities.\"\"\"\n", " xs, ps = self.sorted_items()\n", " plot(xs, ps, **options)\n", " \n", "\n", "def decorate_pdf_rate():\n", " \"\"\"Decorate the axes.\"\"\"\n", " plt.xlabel('Goals per game (mu)')\n", " plt.ylabel('PDF')\n", " plt.title('Distribution of goal scoring rate')\n", " legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll start with a uniform prior just to keep things simple. We'll choose a better prior later." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0. , 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4, 2.7, 3. ,\n", " 3.3, 3.6, 3.9, 4.2, 4.5, 4.8, 5.1, 5.4, 5.7, 6. , 6.3,\n", " 6.6, 6.9, 7.2, 7.5, 7.8, 8.1, 8.4, 8.7, 9. , 9.3, 9.6,\n", " 9.9, 10.2, 10.5, 10.8, 11.1, 11.4, 11.7, 12. , 12.3, 12.6, 12.9,\n", " 13.2, 13.5, 13.8, 14.1, 14.4, 14.7, 15. ])" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hypo_mu = np.linspace(0, 15, num=51)\n", "hypo_mu" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Initially `uniform_prior` represents the prior distribution of `mu`." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "uniform_prior = Suite(hypo_mu)\n", "uniform_prior.normalize()\n", "uniform_prior.plot(label='prior')\n", "decorate_pdf_rate()\n", "\n", "plt.savefig('zigzag4.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can update it with the data and plot the posterior." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "uniform_prior.bayes_update(data=3, like_func=poisson_likelihood)\n", "uniform_prior.plot(label='posterior')\n", "decorate_pdf_rate()\n", "\n", "plt.savefig('zigzag5.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With a uniform prior, the posterior is the likelihood function, and the MAP is the value of `mu` that maximizes likelihood, which is the observed number of goals, 6.\n", "\n", "This result is probably not reasonable, because the prior was not reasonable." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A better prior\n", "\n", "To construct a better prior, I'll use a Gamma distribution with parameters chosen to be consistent with previous playoff games." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use `make_gamma_dist` to construct a prior suite with the given parameters." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import gamma\n", "\n", "def make_gamma_suite(xs, alpha, beta):\n", " \"\"\"Makes a suite based on a gamma distribution.\n", " \n", " xs: places to evaluate the PDF\n", " alpha, beta: parameters of the distribution\n", " \n", " returns: Suite\n", " \"\"\"\n", " ps = gamma(a=alpha, scale=1/beta).pdf(xs)\n", " prior = Suite(dict(zip(xs, ps)))\n", " prior.normalize()\n", " return prior" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "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1UvbOeHoagoLvDrKja8bf3HQMu9j5qvvWZxw/+rVq/n5z3/O888/T29vL0uXLmXZsmUAvOc97+EjH/kIAJ///Oe5/fbb+cQngpV4W1paeOSRR1i1ahUXXnghf/rTn/j+97/PqaeeygsvvMDJJ59Me3s755xzDrfccgvvfve7+fznP89DDz3EK6+8wsqVK7nooouYNm0aDz30EGVlZbz++utcccUVCeewW7duHbfffjunn346V111Fd/5znf4zGeC1YrLysp4/PHHAfjtb38LBL3MrrzySh5++GEWLFjAhz70Ib773e/yyU9+8qBrxoqXLHLE46/vHtxePLOayRNKACguLOCDb62nqiz4XLC/s5dXt+9LS4zOjbfHH3+cFStWUF5eTlVVFRdeeOHgsTVr1nDmmWeyePFi7r77btauXTt47MILL0QSixcvZvr06SxevJiCggJOOOEEGhoaACgpKeGCCy4AYPHixZx99tkUFxezePHiwXN6enr4yEc+wuLFi7n00kt55ZVXEsY5a9YsTj/9dAA+8IEPxLzRX3bZZQedv27dOubOncuCBQsAWLlyJY899tghrzlSnixyQGtHDy9GqpfOmD815nh5SSHL50wefPzUpj3jFptz6XSobuNXXnkl3/rWt3j55Zf5whe+EDMGobS0FICCgoLB7YHHvb3BCrnFxcWDHUai50XPufXWW5k+fTovvvgiq1evpru7O2Es8R1Poo8nTJgwqp9ruGuOVEqroSRdAHwTKAS+b2ZfizteCvwIWAY0A5eZWUN4bAnBsowTgX7gVDPzOQMSeOKN3fSHfztzp1Ywa0rFQeecNncKf1jfhBls2NXG7rYuplaWHnSec6kyXFVRKp1xxhl89KMf5cYbb6S3t5df//rXg1VP+/fvZ8aMGfT09HD33Xczc+bMMX/+1tZW6urqKCgo4M4776Svry/heW+++SZPPvkkb3vb2/jpT3/KGWecccj7Lly4kIaGBjZs2MD8+fO56667OPvss8c8/qiUlSwkFQLfBt4BLAKukLQo7rSrgRYzmw/cSrC4PZKKgB8D15rZCcA5QE+qYs1mnT19PN0wVFI4Y37i3k6TKko4bnrV4OPVDV66cLnv1FNP5aKLLuKkk07iPe95D8uXL6e6uhoIGr7f8pa3cP7557Nw4cKUPP/HPvYx7rzzTt761reyfv36YT/x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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "alpha = 9\n", "beta = 3\n", "hypo_mu = np.linspace(0, 15, num=101)\n", "\n", "gamma_prior = make_gamma_suite(hypo_mu, alpha, beta)\n", "\n", "gamma_prior.plot(label='gamma prior')\n", "decorate_pdf_rate()\n", "\n", "plt.savefig('zigzag6.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can update this prior using the observed data. If we only score 1 goal in a game, our estimate for the goal scoring rate shifts left." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "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zXQei7TLk8wq4vVrNbEwjMkkUYryRGnIb7jhBtauXcv69ev59Kc/zR//+Ee2bt3K3/7t33LGGWewd+9e9u7dy6ZNmzj77LO58MILeekltzjlfe97H9dffz1vetOb+MxnPsMdd9zBddddB8DBgwfZuHEj69evZ+PGjRw6dCjumMnEdnBnM/4a28XzUhtT5itO2HZocu0xjGzif/4mfff+q68mvBSbovzmm2/mW9/61qg05FdffTU//elPeemllxARWltbKS8v59JLL+WSSy7hsssuA9wO729+85usWrWKbdu28dGPfpRHHnkEgJdffpnf/OY3BIPBqF3h1113HVdffTVbtmzhO9/5Dh//+Md54IEHRo2ZTGxmkc10NUbaRSmm7yj3iYXNLAxj0olNUf7www/HTUNeWlpKfn4+H/zgB/nJT35CYWHhqHt1dnbyxz/+kcsvv5wzzjiDD33oQzQ0NIxcv/zyy+N+6D/xxBO8+93vBuCqq66KqomRaMxESatYiMgmEdkjInUiMsrZJiJ5InKvd32biNR4598jIs/6HmEROSOdtmYdqicnFiULIkHunhbo65x82wxjFhObojwRoVCIJ598kne84x088MADbNq0aVSfcDhMeXk5zz777Mhj9+7dI9dTTWHutyldac/T5oYSkSCuPOqbgXpgu4hsVVV/ZOca4ISqrhSRK4GvAFeo6t3A3d59TgN+pqrPpsvWrKSvw1XAA7dzO68ktXGBIJQuhFbPBdV2OHpJrWHMFMZwFaWT2BTlF198Md/61rdGpSHv7Oyku7ubt771rZx77rmsXOnyupWUlNDR4Uogl5aWUltby49+9CMuv/xyVJXnn3+e008/fUwbXv/613PPPfdw1VVXcffdd3PBBRek/XWnc2ZxDlCnqvtUtR+4B9gc02czcKfXvh/YKKNl+13AD9NoZ3YSO6tI8dsMAOXLIm1zRRnGpBKbovyTn/xk3DTkHR0dXHLJJaxfv56LLrqIW265BYArr7ySf/3Xf+XMM89k79693H333dx+++2cfvrprFu3jp/97GdJbfja177Gd7/7XdavX89dd93FV7+afuGUZJWcTvrGIpcBm1T1g97xVcDrVPU6X5+dXp9673iv16fJ12cvsFlVR2XvEpFrgWsBli5devbBgwfT8loywsEn4Pl7XHvR2XDW1amPPbQNnvuBa89f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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior = gamma_prior.copy()\n", "posterior.bayes_update(data=1, like_func=poisson_likelihood)\n", "\n", "gamma_prior.plot(label='prior')\n", "posterior.plot(label='posterior')\n", "decorate_pdf_rate()\n", "\n", "plt.savefig('zigzag7.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we go back to the original prior, and score 6 goals in a game, the estimate shifts to the right." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior = gamma_prior.copy()\n", "posterior.bayes_update(data=6, like_func=poisson_likelihood)\n", "\n", "gamma_prior.plot(label='prior')\n", "posterior.plot(label='posterior')\n", "decorate_pdf_rate()\n", "\n", "plt.savefig('zigzag8.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we score 3 goals in a game, the estimate doesn't shift much, but it gets pointier, which means we are more certain about the goal scoring rate." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior = gamma_prior.copy()\n", "posterior.bayes_update(data=3, like_func=poisson_likelihood)\n", "\n", "gamma_prior.plot(label='prior')\n", "posterior.plot(label='posterior')\n", "decorate_pdf_rate()\n", "\n", "plt.savefig('zigzag8.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior predictive distribution\n", "\n", "Now, let's get to what is usually the point of this whole exercise, making predictions.\n", "\n", "The prior represents what we believe about the distribution of `mu` based on the data (and our prior beliefs).\n", "\n", "Each value of `mu` is a possible goal scoring rate.\n", "\n", "For a given value of `mu`, we can generate a distribution of goals scored in a particular game, which is Poisson.\n", "\n", "But we don't have a given value of `mu`, we have a whole bunch of values for `mu`, with different probabilities.\n", "\n", "So the posterior predictive distribution is a mixture of Poissons with different parameters.\n", "\n", "The simplest way to generate the posterior predictive distribution is to\n", "\n", "1. Draw a random `mu` from the posterior distribution.\n", "\n", "2. Draw a random number of goals from `Poisson(mu)`.\n", "\n", "3. Repeat.\n", "\n", "Here's a function that draws a sample from a posterior `Suite`:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "def sample_suite(suite, size):\n", " \"\"\"Draw a random sample from a Suite\n", " \n", " suite: Suite object\n", " size: sample size\n", " \"\"\"\n", " xs, ps = np.transpose(list(suite.items()))\n", " return np.random.choice(xs, size, replace=True, p=ps)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a sample of `mu` drawn from the posterior distribution (after one game)." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.988255" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "size = 10000\n", "sample_post = sample_suite(posterior, size)\n", "np.mean(sample_post)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now for each value of `mu` in the posterior sample we draw one sample from `Poisson(mu)`" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.9984" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post_pred = np.random.poisson(sample_post)\n", "np.mean(sample_post_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is a sample from the posterior predictive distribution. Here's what it looks like." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "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Ib0z7CVgi/qeHZkVk89IzJowScel3TjbkVy/+IuTiDU1TiRmTdsZJF08C0muR5zVuOGYrc1dW2ZmlonPSMzMLJNNYpC01q1bR4cOHRo7DDOzDcqMGTP+ExFtaiu3SSSSDh06UFZW1thhmJltUCTVaeQAd22ZmVkmTiRmZpaJE4mZmWWySVwjMVvfPv/8c8rLy1m1qtBII2ZNS4sWLWjXrh3Nmzdfp/pOJGZFUF5eTsuWLenQoQPJGIdmTVNE8O6771JeXk7Hjh3XqQ13bZkVwapVq2jVqpWTiDV5kmjVqlWms2cnErMicRKxDUXWf6tOJGZmlomvkZitB+fdu9ZcX5lcenyXBm2vOvfddx+77747nTt3rle9KVOmMG/ePEaPrsuMysX35JNPcsUVV/DAAw/UGtuKFSu48847+d73vgfAkiVLOPvss5k8efL6DDmzygexW7duiNmna+ZEshFoiC+p9fXFZBuW++67j2OOOaZeiaSiooL+/fvTv3//etVp1qx+X0cRQUSw2Wb161ipLbYVK1Zw3XXXVSWSHXfccYNLIuubu7bMNkKLFi1izz33ZNiwYXTt2pWBAwfy8ccfA/DYY4+x33770aVLF0455RQ+/TSZcHH06NF07tyZrl27cu655/LMM88wZcoURo0aRbdu3Vi4cCELFy6kX79+HHDAARxyyCG88sorAAwfPpwf/ehHHH744fz0pz9l3LhxjBw5EoA33niDPn360LVrV/r06cPixYsL1sk1btw4BgwYQL9+/dhjjz246KKLqo5rr7324nvf+x77778/b775Jg8//DA9e/Zk//33Z9CgQaxcuRKAv/3tb+y555706tWLe++9d422K2N7++23Oe6449h3333Zd999eeaZZxg9ejQLFy6kW7dujBo1ikWLFrHPPvsAcOCBBzJ37tyqtg477DBmzJjBRx99xCmnnEL37t3Zb7/9uP/++9f6nSxdupTevXvTrVs39tlnH5566ikAzjrrLEpLS9l77735xS9+UVW+Q4cO/OxnP6Nnz56UlpYyc+ZMjjzySHbddVduuOEGIDnT6t27N8cddxydO3fmzDPPZPXq1Wvt+4477qBHjx5069aNM844gy++WGsm5UycSMw2UvPnz2fEiBHMnj2brbfemuuuu45Vq1YxfPhwJk6cyJw5c6ioqOD6669n+fLl/PnPf2bu3LnMnj2b888/n6997Wv079+fyy+/nFmzZrHrrrsyYsQI/vCHPzBjxgyuuOKKqr/aAV599VUeffRRrrzyyjXiGDlyJCeffDKzZ8/mxBNP5Oyzz661DsC0adMYP348s2bN4u67764aL2/+/PmcfPLJvPDCC2y55ZaMGTOGRx99lJkzZ1JaWspvf/tbVq1axemnn85f/vIXnnrqKf79738X/IzOPvtsDj30UF588UVmzpzJ3nvvzWWXXcauu+7KrFmzuPzyy9coP3jwYCZNmgQkiWHJkiUccMABXHLJJRxxxBFMnz6dJ554glGjRvHRRx+tUffOO+/kyCOPZNasWbz44ot069YNgEsuuYSysjJmz57N3//+d2bPnl1Vp3379jz77LMccsghDB8+nMmTJ/Pcc89x4YUXrvE5XXnllcyZM4eFCxeukTQBXn75ZSZOnMg///lPZs2aRUlJCePHjy/4eawrd21ZQVm7y9xV1vjat2/PwQcfDMBJJ53E1VdfTd++fenYsSO77747AMOGDePaa69l5MiRtGjRgtNOO42jjz6aY445Zq32Vq5cyTPPPMOgQYOq1lWezQAMGjSIkpKSteo9++yzVV9uQ4cO5Sc/+UmtdQD69u1Lq1atADj++ON5+umnOfbYY9l555056KCDAHjuueeYN29e1XF+9tln9OzZk1deeYWOHTvSqVOnquMfO3bsWvt4/PHHue22ZNr3kpISttlmG957772C8QB8+9vfpm/fvlx00UVMmjSp6rN4+OGHmTJlCldccQWQ3P69ePFi9tprr6q63bt355RTTuHzzz/n2GOPrUokkyZNYuzYsVRUVLB06VLmzZtH165dAaq64Lp06cLKlStp2bIlLVu2pEWLFqxYsQKAHj16sMsuuwAwZMgQnn76aQYOHFi138cee4wZM2bQvXt3AD755BN22GGHao9xXTiRmG2k8m/plER1E9k1a9aMadOm8dhjjzFhwgSuueYaHn/88TXKrF69mm233ZZZs2YVbGPLLbesd1w11SkUf36diKBv377cdddda5SdNWtWUW6/btu2La1atWL27NlMnDiRG2+8sSqOe+65hz322KPaur179+Yf//gHf/3rXxk6dCijRo3ikEMO4YorrmD69Olst912DB8+fI3nObbYYgsANttss6rlyvcVFcmMy9V9TpUigmHDhnHppZdmO/gauGvLbCO1ePFinn32WQDuuusuevXqxZ577smiRYtYsGABALfffjuHHnooK1eu5P333+eb3/wmv/vd76qSRcuWLfnwww8B2HrrrenYsSN33303kHxBvfjii7XG8bWvfY0JEyYAMH78eHr16lWn+B955BGWL1/OJ598wn333Vd11pHroIMO4p///GfV8Xz88ce8+uqr7Lnnnrz++ussXLiw6vgL6dOnD9dffz0AX3zxBR988MEax1zI4MGD+c1vfsP7779Ply7JmfeRRx7JH/7wh6pE/cILL6xV74033mCHHXbg9NNP59RTT2XmzJl88MEHbLnllmyzzTa8/fbbPPjgg3X6bHJNmzaN119/ndWrVzNx4sS1Pt8+ffowefJk3nnnHQCWL1/OG2/UaXT4OivqGYmkfsDvgRLgTxFxWd72HwGnARUk81KfEhFvpNuGAeenRcdExK3p+gOAccCXgKnAOeH5gq2Ja4yuvr322otbb72VM844g06dOnHWWWfRokULbrnlFgYNGkRFRQXdu3fnzDPPZPny5QwYMIBVq1YREVx11VVA8qV5+umnc/XVVzN58mTGjx/PWWedxZgxY/j8888ZPHgw++67b41xXH311ZxyyilcfvnltGnThltuuaVO8ffq1YuhQ4eyYMECvvOd71BaWsqiRYvWKNOmTRvGjRvHkCFDqrrZxowZw+67787YsWM5+uijad26Nb169eKll15aax+///3vGTFiBDfddBMlJSVcf/319OzZk4MPPph99tmHo446iu9///tr1Bk4cCDnnHMOF1xwQdW6Cy64gB/+8Id07dqViKBDhw488MADa9R78sknufzyy2nevDlbbbUVt912Gx07dmS//fZj7733ZpdddimYLGvTs2dPRo8ezZw5c6ouvOfq3LkzY8aM4Rvf+AarV6+mefPmXHvttey888713ld1ijZnu6QS4FWgL1AOTAeGRMS8nDKHA89HxMeSzgIOi4gTJG0PlAGlQAAzgAMi4j1J04BzgOdIEsnVEVFjGi8tLY2NeWKrYtz+62sk2bz88str9I+vb4sWLeKYY44p+OW5IRg3bhxlZWVcc801jR1Kk5b7fExWhf7NSpoREaW11S1m11YPYEFEvBYRnwETgAG5BSLiiYj4OH37HNAuXT4SeCQilkfEe8AjQD9JXwW2john07OQ24Bji3gM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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_pmf(sample_post_pred, label='posterior predictive sample')\n", "decorate_pmf_goals()\n", "\n", "plt.savefig('zigzag9.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The prior and posterior are distributions of mu, which is a continuous value.\n", "\n", "The prior predictive and posterior predictive are distributions of goals, which are discrete.\n", "\n", "To help keep them straight, I will plot distributions of mu as CDFs, and distributions of goals as PMFs.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Back to PyMC\n", "\n", "Previously we used PyMC to draw a sample from a Poisson distribution with known `mu`.\n", "\n", "Now we'll use it to draw a sample from a gamma distribution of `mu`, with known `alpha` and `beta`.\n", "\n", "And then use that value of `mu` to draw a sample from a Poisson distribution.\n", "\n", "Here are the values of the parameters:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "9 3\n" ] } ], "source": [ "print(alpha, beta)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the model looks like:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " mu = pm.Gamma('mu', alpha, beta)\n", " goals = pm.Poisson('goals', mu)\n", " trace = pm.sample_prior_predictive(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The distribution of `mu` from this model is the prior. Let's see what it looks like:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.9737837778840777" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_prior_pm = trace['mu']\n", "np.mean(sample_prior_pm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And compare it to a sample from the gamma prior." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.9865" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_prior = sample_suite(gamma_prior, 1000)\n", "np.mean(sample_prior)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_prior, label='prior')\n", "plot_cdf(sample_prior_pm, label='prior pymc')\n", "decorate_cdf_rates()\n", "\n", "plt.savefig('zigzag10.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks pretty good." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The distributions of `goals` from this model is the prior predictive." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.965" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_prior_pred_pm = trace['goals']\n", "np.mean(sample_prior_pred_pm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And let's compare it to a prior predictive distribution estimated by sampling." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.971" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_prior_pred = np.random.poisson(sample_prior)\n", "np.mean(sample_prior_pred)" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEWCAYAAACJ0YulAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl8HNWV6PHf6VZr3yx5lxfZxjs2eGMzYJvVEGwggQAvJHYI2ebBTCbbkJeEIcxkJhPeMJm8IWEyWRxCAgFCwmbAZjWExTa28W68ybYsWZa17+rlvD+q3LRlyZJstUpSn+/no4+6qm5VHXWr69S9VXWvqCrGGGMMgM/rAIwxxvQdlhSMMcZEWVIwxhgTZUnBGGNMlCUFY4wxUZYUjDHGRFlSMF0mIg+LyPd7aFtjRKReRPzu9BsicmdPbNvd3osisqyntteN/f6ziBwTkSO9vN8iEbmiN/cZDyJyn4g86nUciSzJ6wBM3yAiRcAwIASEge3AI8AvVDUCoKpf6ca27lTVVzoqo6oHgcwzizq6v/uAs1T19pjtX9MT2+5mHKOBbwBjVfVob+/fmJ5gNQUTa4mqZgFjgR8B/wD8qqd3IiID9WRkLFBhCcExgD/nAc2SgjmJqtao6rPALcAyETkbQERWiMg/u68Hi8jzIlItIpUi8paI+ETkd8AY4Dm3eejbIlIoIioiXxCRg8BrMfNiDxwTRGStiNSIyDMikufua6GIFMfGeLy5REQWA/8HuMXd34fu8mhzlBvX90TkgIgcFZFHRCTHXXY8jmUictBt+vluR++NiOS465e72/ueu/0rgNXASDeOFR2s/20RKRWREhG50933Wafatrtsgoi8JiIVboy/F5HcDvZxnoisF5FaESkTkQc7KNfuZ+guGy0iT7uxVIjIf3XjvYx+zu78C0TkHXc/H4rIwpgYxonImyJSJyKrgcEdvfemd1hSMB1S1bVAMXBJO4u/4S4bgtPs9H+cVfSzwEGcWkemqv44Zp0FwFTg6g52+TngDmAkTjPWT7sQ40vAvwB/dPd3TjvFlrs/i4DxOM1W/9WmzMXAZOBy4F4RmdrBLv8fkONuZ4Eb8+fdprJrgBI3juVtV3QT2NeBK4Cz3PU73fbx1YF/xXlvpgKjgfs6iPE/gf9U1WxgAvBEB+Xa/QzFuc7zPHAAKAQKgMfddZbT+XsZ/ZxFpAB4AfhnIA/4JvAnERnilv0D8AFOMvgnoNevA5kTWVIwnSnB+TK3FQRG4LSfB1X1Le28I637VLVBVZs6WP47Vd2qqg3A94FPuweoM/UZ4EFV3aeq9cB3gFvb1FJ+oKpNqvoh8CFwUnJxY7kF+I6q1qlqEfDvwGe7GMengd+o6jZVbQR+0NVtq+oeVV2tqi2qWg48yMlJ5bggcJaIDFbVelV97xTl2vsMz8NJPt9yP69mVX3bXacr72Xs53w7sFJVV6pqRFVXA+uBa0VkDDAP+L77d60Bnuvie2nixJKC6UwBUNnO/AeAPcAqEdknIvd0YVuHurH8ABCgZ5oTRrrbi912Es7Z8XGxdws10v5F8MFAcjvbKuhGHLF/Y+zrU25bRIaKyOMiclhEaoFH6fi9+QIwCdgpIutE5LoOynX0GY4GDqhqqIO/obP3MvbvGgvc7DYdVYtINU6tbIS7rSr3JCB2e8ZDlhRMh0RkHs5B6e22y9yz2W+o6nhgCfB1Ebn8+OIONtlZTWJ0zOsxOGeyx4AGID0mLj9Ok0dXt1uCc3CK3XYIKOtkvbaOuTG13dbhLq5fCoyKmY79ezvb9r/i/J0z3Wah23GalE6iqrtV9TZgKPBvwFMiktFOuY4+w0PAGGn/QnFX3svYz+MQTg0wN+YnQ1V/5L4fg9rENqa9v8n0HksK5iQiku2eXT4OPKqqW9opc52InCUiAtTi3MYadheX4bQ3d9ftIjJNRNKB+4GnVDUMfASkisgnRCQAfA9IiVmvDCg8fpG0HY8Bf+9e1Mzk42sQ7Z0Jd8iN5QnghyKSJSJjca4RdPW++ieAz4vIVPdvvLcb284C6oFqt53+Wx3tRERuF5Eh7q3E1e7scDvlOvoM1+IcsH8kIhkikioi893VuvtePgosEZGrRcTvbmuhiIxS1QM4TUk/EJFkEbkYJzkZD1lSMLGeE5E6nLO77+K0W3++g7ITgVdwDlTvAj9T1TfcZf8KfM9tLvhmN/b/O2AFTlNOKvC34NwNBfwN8EucM+cGnAukxz3p/q4QkQ3tbPfX7rbXAPuBZuDubsQV6253//twalB/cLffKVV9Eefi+es4zTbvuotaurDtHwCzgRqcC7dPn2JXi4FtIlKPc9H5VlVtbqdcu5+hm6CW4FwMP4jzXt/irtOt91JVDwHX41zELsf53/oWHx97/hdwPk4T5T/iPBtjPCQ2yI4x3nDvcNoKpHS31mJMvFhNwZheJCI3uk0lg3Da+5+zhGD6EksKxvSuL+M0o+zFab//qrfhGHMiaz4yxhgTZTUFY4wxUf2uw6rBgwdrYWGh12EYY0y/8sEHHxxT1SGdlet3SaGwsJD169d7HYYxxvQrItKlp8Wt+cgYY0yUJQVjjDFRlhSMMcZE9btrCu0JBoMUFxfT3Nzek/ymP0lNTWXUqFEEAgGvQzEmIQ2IpFBcXExWVhaFhYU4fXuZ/khVqaiooLi4mHHjxnkdjjEJKW7NRyLya3e4vq0dLBcR+amI7BGRzSIy+3T31dzcTH5+viWEfk5EyM/PtxqfMR6KZ01hBc4wfR31engNTi+NE3F6Sfy5+/u0WEIYGOxzNKdNFSKhE3/CbaYjYYgEIWcUpGT16O7DESUUiaDqhKIoEXVqwBEFFCKqKO5vt0x75TvcBsqYvAySk+J3OThuSUFV14hI4SmKXA884g7/956I5IrICFUtjVdMxpgeogoaiTn4Bt0DbtuDcBcP0idMH99eCI2E0LDzm3AQjYSj+/p4Xsgt6w4Zoc4oP3p8rJ/o9PHXStW0z9KYN51gOEJrOEIorCe9dn6c16FwhNaY18F2ykR6qcegr185iSFZKZ0XPE1eXlMo4MRh+4rdeSclBRH5EvAlgDFj+vfATPfeey+XXnopV1xxhdehAHDfffeRmZnJN7/ZnWEPTL8VDkG4BYLNEHJ+NNhEONhMqKWRUEuT87u1mUiwiXBrE5FWp0wk2IweXy/cimrsWbF7hkvMmS7OMtDoATMSswxVIs7i6Bn08fLRMnGyrvkQh9NPGoyuX4h3f3VeJoX22gna/WtV9RfALwDmzp3bb3vwC4fD3H///d1ex+/v3tj1oVCIpKQBcQ+B6SINNlNfcZj6Y8U0V5UQrDlCpLXJPeh/nAAIh4ioEo4oYVUiEed1v/1StRERPxH8zm/3J0zSCdMRkmj1pfX4vn0CST5BRPCJIOIc5Hw+cQ52AoLgExDBKYPTZHri9MfzYssLzryAP75PEnh55CjmxDFqR+GM/9rvFBUVsXjxYs4//3w2btzIpEmTeOSRR0hPT6ewsJA77riDVatWcdddd/HSSy9x3XXXcdNNN/Hqq6/yzW9+k1AoxLx58/j5z39OSkrKSevceuut0X0tX76c1NRUtm3bRllZGQ8++CDXXXcdK1as4IUXXqC5uZmGhgZee+01HnjgAZ544glaWlq48cYb+cEPfgDAD3/4Qx555BFGjx7NkCFDmDNnjldvnekiVaUpGKaypob68sPOgb/6MOHaI/jqy5DmaiK93OOx4os50PoJS9uDb5t57sE6Oi/m4B2WpA4P5upzppEkIr4k8Dll8SWhPj/qS0J9SYAf8fk+PhjHHJhjD7x+n5DpFwb5fQT8PpL9PpL8QpLfR7JfCPh9JPl9BPziLnNeB9zyHb32+wbG9TAvk8KzwF0i8jjOBeaanrie8J2nTxpOuMf86ydndLhs165d/OpXv2L+/Pnccccd/OxnP4s2yaSmpvL2228D8NJLLwHOHVPLly/n1VdfZdKkSXzuc5/j5z//OV/72tdOWqetoqIi3nzzTfbu3cuiRYvYs2cPAO+++y6bN28mLy+PVatWsXv3btauXYuqsnTpUtasWUNGRgaPP/44GzduJBQKMXv2bEsKfURzMExVYytVDUFqaqtpqjxMsLqUcM0RfA1HSGspJzVcf8I6Qkx7eRcoPkK+ZIKSQsiXTEiSCfpSCPuSISkNklIgkIovkIYkpSLJafgCqfgDqfhS0vAnp5OUkoY/KQWf34dfhIBPogdbX8yB19/JfJ/gvD5eTgSfD+f38QO63XjQ6+KWFETkMWAhMFhEinHGXw0AqOrDwErgWpyxahvpeCzgfmH06NHMn++MbX777bfz05/+NJoUbrnllpPK79q1i3HjxjFp0iQAli1bxkMPPRRNCu2tc9ynP/1pfD4fEydOZPz48ezcuROAK6+8kry8PABWrVrFqlWrmDVrFgD19fXs3r2buro6brzxRtLT0wFYunRpT/z5phtqGoPsPVZPWXUTtXXVBKtLidSUktx0lKxQBVnBClIiDXSnxVvx0ZKSTyRjKJI9gkDOCJLSstyDeGr0YJ6SnEIgyU9Kko+UJD+BpI/Pho2B+N59dFsnyxX43/Haf29re0YTO52RcfLXu7OLRe2t09m+YtdRVb7zne/w5S9/+YSyP/nJT+zsq5fVNQfZV97A/qPVVBTvwV+1j8Eth8gNlpEXaerydvw+IRBIRtMHI1nDCeSOJDWvgIz8AnIGjyA1JX53pJjEMeCuRp6qiSeeDh48yLvvvsuFF17IY489xsUXX3zK8lOmTKGoqIg9e/Zw1lln8bvf/Y4FCxZ0aV9PPvkky5YtY//+/ezbt4/JkyezcePGE8pcffXVfP/73+czn/kMmZmZHD58mEAgwKWXXsry5cu55557CIVCPPfccyclDnNmGltD7CtvYF9ZFRXFu/FV7mVwyyGGtZYw4hTDMftE3DN4H4HkFCRrGIGckaTmjSAjfxSpg0YiGUPAZ2f1Jn4GXFLwytSpU/ntb3/Ll7/8ZSZOnMhXv3rqoXdTU1P5zW9+w8033xy90PyVr3ylS/uaPHkyCxYsoKysjIcffpjU1NSTylx11VXs2LGDCy+8EIDMzEweffRRZs+ezS233MK5557L2LFjueSSS7r/x5oTNAfD7D/WwP6yKioPfUSkYg+DWw4ypLWUYRo+qbxPhMyUJLJSk0hOTSOQPZzUvJGkDipAsoZD1ghIG2QHf+OJfjdG89y5c7XtIDs7duxg6tSpHkXkXPi97rrr2Lq13R49etTy5cujdy8NVF5/np1pCYU5UNHI/iOVVB7aSejYHgY3H2JQsBTRyEnlfYKbBAJkDBpGdsFU/EMmQt54SM9z7jc0Js5E5ANVndtZOaspGNOJYDjCwcpGio5UcuzgDsLlu8lrPkhuaxm5nJwEBMhISSI7LUBG3nCyC6aSNGQS5I93agDG9GGWFHpAYWFhr9QSAFasWNEr+0l09S0hPthzmIoD22k9uptBzYfIbS0js52bPwVIT/aTnRYgPa+A7FFTSR46EfInQGpO7wdvzBmwpGBMjJZQmA82beDY5tUMrd9FQTs1AXCSQFZqgPTBo8kpmELKsElOEujhTtaM6W2WFIwBwqEQ2zes4djm1aQ3FjOszfK0gJ+stABp+aPJHT2N1ONJILl/9p9jTEcsKZiEpi317N/wCse2vII215Aesywt4Ce/YAK5Y6aTMXySc2E4Ob3DbRkzEFhSMImp7ghHPlzF0e1v0dRmUJ+kpAB5ky5k7Nxr8OWO8ihAY7xhSaGXWdfZHlKF8p3UbHuFI3s2Ut0UPGFxOJBJ1pSFTDn/agLpuR4FaYy3LCn0Ius62yOhViheR9NHr1NSXMSx+pYTFtclDyNz6mXMOv9y0lKtqwiT2OyRyR5QVFTElClTWLZsGTNnzuSmm26isbERcG5Xvf/++7n44ot58sknWb58OU899RQAr776KrNmzWLGjBnccccdtLS0tLtOrOXLl/OVr3yFSy65hEmTJvH8888Dzq2qN998M0uWLOGqq64C4IEHHmDevHnMnDmTf/zHf4xu44c//CGTJ0/miiuuYNeuXe3+TR3t55JLLmHTpk3RcvPnz2fz5s3cd999LFu2jKuuuorCwkKefvppvv3tbzNjxgwWL15MMOicla9bt46LLrqIc845h/POO4+6urozfv871FQFO56j9eV7OfDGCrbu2hWTEIQjaROpPufLzPvsv3DBgmstIRjDQKwpPPd38dv2kv/scNFA7Dq7vf3ceeedrFixgp/85Cd89NFHtLS0MHPmTJ5++mn27t3L66+/zvbt27nwwgv505/+xI9//GNuvPFGXnjhBa699lpuueUW/vjHPzJv3jxqa2tJS+v5wU6oOgD73iB8eCNHahoprWkm7A79FZJkDmTMIGnCpSyYNY1h2Sd3EWJMIrOaQg9p23V27AG9q11nr1mz5pTrHNfdrrNnz57Nzp072b17N2+99Va06+zs7OxTdp3d3n5uvvlmnn/+eYLBIL/+9a9Zvnx5tPw111xDIBBgxowZhMNhFi9eDMCMGTMoKipi165djBgxgnnz5gGQnZ3dc81ckQgc3gBv/weRtx6kbOe7bD5URXFVE+GI0piUw5acy9g+/RtctPSLfHrBbEsIxrRj4NUUPDIQu85ubz/p6elceeWVPPPMMzzxxBPE9kOV4nbd7PP5CAQC0fV9Ph+hUAhV7fluu1sb4eA7sP8ttKmaysZWiquaaA46HdEdSxnN3sy5hIdM4+qzRzJ1RJZ1HW7MKQy8pHCKJp54GohdZ7e3H4A777yTJUuWcMkll0RrJl0xZcoUSkpKWLduHfPmzaOuro60tLTTqy2EQ/DRS7D/TQi3UtMUpLiqifqWECo+itOnsydzDpoziiunDmP2mEH4BshwicbE08BLCh4ZiF1nd7SfOXPmkJ2dzec/373B8pKTk/njH//I3XffTVNTE2lpabzyyitkZmZ2azs0VsIHv4HqgzS0hCmuaqS6KUiLL5392eexP2MWvtRsFkwewkUT8uM+0LkxA4l1nd0DBmLX2afaT0lJCQsXLmTnzp344tDn/yk/z9LN8OFjhJobOFjZSHl9C7WBIezJnEtx+lR8/gDzz8pnwaShpCV371ZeYwYy6zrbxMUjjzzCd7/7XR588MG4JIQOhUOw41nY/yZVjUGKjjXQEoatOYvYmzkX8QlzxgziiqnDyEkP9F5cxgwwVlMwfc5Jn2dDBWxYQajiAAcqGzlW30KTP5u1eUuoSilg6ogsrp4+3O4mMuYUEq6mEJc7W0yvO+kkpfRD2PQYVbW1FB1roDUc4UjqWXyQdw2p6Vncfu5Ipo+0MQuM6SkDIimkpqZSUVFBfn6+JYZ+TFWpqKhwLmiHQ7D9LwT3ruGgWztQfNHmonPH5LLknJGkJw+If2Fj+owB8Y0aNWoUxcXFlJeXex2KOUOpqamMysuAv/6EqtJ90dpBoz+HdflLCGWPsdqBMXE0IJJCIBBg3LhxXodhekLJJoJv/Yy9R6ui/RQ5zUXXMn3sMKsdGBNn9u0yfYPbXFS1/bVo7UDFx9bshRwdfD63zCqw2oExvcCSgvFewzFa1/6KQ/t3R2sHjf4c1uYvZdyEqfyvc0ZY7cCYXmLfNOOtko1UvvMIB8oqaQ1HnFlpk9g9/DqWzJnAtJHZHgdoTGKxpGC8EQ7SsvlpijeujtYOVHxsyVlEzpTLuOtcu3ZgjBfsW2d6X305R998mMNFe6K1g8akHLaPuJFF58+z2oExHrKkYHpV84F1HHz9N1TVfjziWknaJCIzbuHzs8db7cAYj9k30PSOcJDiv/6B8i2vRWsHEfGzd8gVzL5kCdMK7M4iY/oCSwom7hqrStn74kM0Hjvw8bykHBqmf5ZPXjjHagfG9CH2bTRxtW/TGirefYRIsCU6ryJ7GuMuu4OpY4Z5GJkxpj2WFEzcfLTuFare/W10OiJ+micuYeGipaSnWPfWxvRFce0QX0QWi8guEdkjIve0s3yMiLwuIhtFZLOIXBvPeEzvaagspWrt49HpUGoe+Vf/A4sWf8oSgjF9WNxqCiLiBx4CrgSKgXUi8qyqbo8p9j3gCVX9uYhMA1YChfGKyfSSSIS9q/4bwk6TUSh9KLNuu4/0jCyPAzPGdCaeNYXzgD2quk9VW4HHgevblFHg+E3pOUBJHOMxvaRk/bM0Hd0LgOJjxMIvWkIwpp+IZ1IoAA7FTBe782LdB9wuIsU4tYS729uQiHxJRNaLyHrrHrtvC1YUcfSDZ6LTLeOvYvxZUzyMyBjTHfFMCu2NdtN27M/bgBWqOgq4FvidiJwUk6r+QlXnqurcIUOGxCFU0yNCrRx85b9pCYYAqEsbzezLb/I4KGNMd8QzKRQDo2OmR3Fy89AXgCcAVPVdIBUYHMeYTBzVbHiKirJiAMKSTN7Fd5CVluJxVMaY7ohnUlgHTBSRcSKSDNwKPNumzEHgcgARmYqTFKx9qB/Ssm0c3rQ6WhUsG/sJZk2Z4GlMxpjui1tSUNUQcBfwMrAD5y6jbSJyv4gsdYt9A/iiiHwIPAYs15NGbjd9Xks9R9b8hrpmp9noSNokLlpwjY2XbUw/FNeH11R1Jc4F5Nh598a83g7Mj2cMJs5Uad7wB0rKjgLQ4ssgY95tDMtJ8zgwY8zpiOvDayYBHFpL8fb3CUWcCt6+gqUsmDHe46CMMafLkoI5fQ0VVK17nIqGVgCKMs7l4vmXEPDbv5Ux/ZV9e83piUQIbfgdB8sqAWhIGoR/+g2cNdQeUjOmP7OkYE7P3tco3bed5lAExceWodezeNZYr6MyxpwhSwqm+2qKadzyHKU1TQDsyr6Q+XNnkZline4a099ZUjDdEw6iGx5hf3ktClQlj6Bl3OXMGTvI68iMMT3AkoLpnh3PcbTkIPUtIcISYGP+ddwwa7Q9k2DMAGFJwXRd+S5a97xOcVUjAFtyFjF3+mSGZqd6HJgxpqdYUjBd09oAm37PwYpGQhGlLHUC9cPmsXCydVBozEBiScF0zZanqK48RkVDK62+NDYMWsz1s0bZMwnGDDD2jTadK/6AcPEHFFU0ALBh0GKmjSvgrKGZHgdmjOlplhTMqTVWwpYnKaluoiUU4UDGDGpzpnDtjBFeR2aMiQNLCqZjqrDpDzQ01lNa00xjUg5bci7j2hnD7ZkEYwYoSwqmY/veQI/tpuhYA4qwftB1jB46iNlj7JkEYwYqSwqmfbUlsPN5jta1UN8SYlfWBdSmjeKGWQX2TIIxA5glBXOycAg2PkpLayuHqhqpDgxjV/aFLJg0hKFZ9kyCMQOZJQVzsl0vQO1hDlY2ElQ/H+R9gvysdBbYMwnGDHiWFMyJju2Bva9T1RiksqGVrTkLqQsM5vpZBfZMgjEJwL7l5mPBJtj0KOFIhAMVDRxNLWRfxixmj8llwhB7JsGYRGBJwXxs65+gqYrD1U3UR5LZMOga0lOS7JkEYxKIJQXjKNkIxetoaAlzpKaZjblX0ezP4toZI8iwZxKMSRiWFAw0VcPmJ1CFoooGDqZPpyR9CuMHZzB7TK7X0RljepElhUSnCh8+BsFGyuqaKQ+l82HuFST5xJ5JMCYBWVJIdEVvQflOWkIRiqua+SDvWkK+FBZOHsKQrBSvozPG9DJLComsuQZ2PA/AwYpGdmbM5VjKGIZkJrNgkj2TYEwisqSQyHauhHALVQ1BDrRmsSP7YgBumFVAkj2TYExCsm9+oqo5DIfeJxxRiiob2JJ7GRFJYs7YQYy3ZxKMSViWFBKRKmz/C6AUVzVxKKmQo6njyEj2c+2M4V5HZ4zxkCWFRHR0Oxz7yHkmoc7pygLg2pkjSE+2ZxKMSWSWFBJNJAzbn4k+k7A/fSZ1gcFMGJLBrNH2TIIxic6SQqI58A7Ul1Fe30J1q48d2Rfj98HSc0faMwnGGEsKCaW1EXa9SDCsHKpsZFf2hbT607l0oo2TYIxxWFJIJHtWQ7CBQ5WN1Eo2ezPnkJcRYNGUoV5HZozpIywpJIqGY7B/DXXNIcrrW9iWs4CIJLHknJE2ToIxJiquRwMRWSwiu0Rkj4jc00GZT4vIdhHZJiJ/iGc8CW3Hs0TCIYoqGqhMHsnhtMlMH5nNlOHZXkdmjOlD4nb/oYj4gYeAK4FiYJ2IPKuq22PKTAS+A8xX1SoRsXaMeKjcB6UfUlbbTGNrmC1DFpES8LNk5kivIzPG9DHxrCmcB+xR1X2q2go8DlzfpswXgYdUtQpAVY/GMZ7EpArb/kxLKMLh6iaK06ZSlVLAZVOGkpMe8Do6Y0wfE8+kUAAcipkudufFmgRMEpG/ish7IrK4vQ2JyJdEZL2IrC8vL49TuAPU4Q1QfZCDFY0E1cf2nEsZlp3C/LMGex2ZMaYPimdSaO+md20znQRMBBYCtwG/FJGTnqBS1V+o6lxVnTtkiPXe2WXhIOx4lqrGIJWNrezJnEtjUg43nFuA32fPJBhjThbPpFAMjI6ZHgWUtFPmGVUNqup+YBdOkjA9Yd8bhBurOFjRQIsvnY+yLmDO2EEUDs7wOjJjTB8Vz6SwDpgoIuNEJBm4FXi2TZm/AIsARGQwTnPSvjjGlDiaa2H3akpqmmkORdiRfTGBlHQWn20d3hljOha3pKCqIeAu4GVgB/CEqm4TkftFZKlb7GWgQkS2A68D31LVinjFlFB2vUhTcyNHapqoS8rnQMZMFp89nMwU6/DOGNOxuB4hVHUlsLLNvHtjXivwdffH9JTaEvTguxQdaySisCV3EaPzM5lXOMjryIwxfdwpawoisiLm9bK4R2POnCps+wsV9S3UNgc5mjqO8rTxXG8d3hljuqCz5qNzYl7/XTwDMT3k6A5CR3dyqLIRELbkLOKiCfmMzE3zOjJjTD/QWVJoewup6csiEdj+DMVVTbSGIxRlnINkD+eKqcO8jswY0090dk1hlIj8FOeZg+Ovo1T1b+MWmem+g+9QX1HM0dpmwpLMjuz5fHLGCFIDfq8jM8b0E50lhW/FvF4fz0DMGQo2oTtf5EBFIwrsyjqfMSOGMaMgx+vIjDH9yCmTgqr+trcCMWdo92qOVlRQ3xKiyZ9NUc553G0Xl40x3dTpcwoiskxENohIg/tH2dWTAAAVcUlEQVSzXkQ+1xvBmS5qqKB1z+sUVzUCsC1nAZdMHsHgzBSPAzPG9DenrCm4B/+v4TxHsAHn2sJs4AERQVUfiX+IplM7n+PQsTpCEaUqeQRNg2eyYLL1EWWM6b7Oagp/A9yoqq+rao2qVqvqa8Cn3GXGa5X7qd27lmP1LQBsybmMpbMKbDQ1Y8xp6ezIka2qRW1nuvNsyC6vqRLe+meKKpxmo8NpkykYP41Jw7I8DswY0191lhSaTnOZ6Q0lGyk7sJOmYJiI+NmTv4hPzBzhdVTGmH6ss1tSp4rI5nbmCzA+DvGYrgoHadr8Fw5XNwOwN3MOF82YTE6ajaZmjDl9nSWFc4BhnDiCGsBYTh4bwfSm/W9y6HAxEVVafWnUFizkogn5XkdljOnnOms++g+gVlUPxP4Aje4y44WWOio2vUBVYxCAHdnzuW7OBHw2mpox5gx1lhQKVfWk5iNVXQ8UxiUi06ng9hc4dLQSgLqkfAZPX8SY/HSPozLGDASdJYXUUyyzbje9UFtK6ZbXaAlFANg75HIWzxjpcVDGmIGis6SwTkS+2HamiHwB+CA+IZlTqdvwFEeqnRu/ylMKmTvvItKTbTQ1Y0zP6Oxo8jXgzyLyGT5OAnOBZODGeAZmTqZl2yn+aKPbn7lQVXgNnxib53FUxpiBpLMO8cqAi0RkEXC2O/sF96lm05siEUrf+yO1zc7F5YMZM7jygtnW4Z0xpkd1qd1BVV8HXo9zLOYUWva9w5Hi/QCEJZncWTcwPOdUl3yMMab7rIOc/iDYzMF3nyQYdhqOigdfxKUz7dlBY0zPs6TQDxzb9AJVVc4tqE3+LKZdfD0pSTaamjGm51lS6OMiDZWUbHgxOlh2/bjFTB9lTy4bY+LDkkIft+/dP9PU4nSLXZcynIsuvdouLhtj4saSQh/WVF1O9a63otOZs24kz0ZTM8bEkSWFPmzn208RDocBaMwcy5zZ53sckTFmoLOk0EeVlx2mdf970emR53+KgF1cNsbEmSWFPmrnmj+BOv0bRfImMGnauR5HZIxJBJYU+qA9RQcIlDq9iggwfv5NdnHZGNMrLCn0MeGIsvevf0JwagmpwyczbNzZnaxljDE9w5JCH/PBjo/IqfgQAL9PGH/xTR5HZIxJJJYU+pDG1hAl656N1hJyx0wnc+QUj6MyxiQSSwp9yJpNOxheuxWA1CQfhRd80uOIjDGJJq5JQUQWi8guEdkjIvecotxNIqIiMjee8fRlZbXN1G9ZGa0lDB0/k6ShEz2OyhiTaOKWFETEDzwEXANMA24TkWntlMsC/hZ4P16x9HWqyqvrtzG6YRsA2akBhs+zMYyMMb0vnjWF84A9qrpPVVuBx4Hr2yn3T8CPgeY4xtKn7SqrI3nfakARYOTEc5B86xrbGNP74pkUCoBDMdPF7rwoEZkFjFbV50+1IRH5koisF5H15eXlPR+ph0LhCG+s38roxu0ADMlKIeecJR5HZYxJVPFMCu09baXRhSI+4D+Ab3S2IVX9harOVdW5Q4YM6cEQvffevkoGH3kTUPw+YeTEWZBntQRjjDfimRSKgdEx06OAkpjpLJxxn98QkSLgAuDZRLrYXN8S4r0tOxjduAOAgtw0UqZd63FUxphEFs+ksA6YKCLjRCQZuBV49vhCVa1R1cGqWqiqhcB7wFJVXR/HmPqUV7aXUVj5NqCkBvwMnXAu5I3zOixjTAKLW1JQ1RBwF/AysAN4QlW3icj9IrI0XvvtL0prmti+e3e0ljAmLx3/5MUeR2WMSXRJ8dy4qq4EVraZd28HZRfGM5a+RFV5YXMpk2veAZSctAC5Y2dYLcEY4zl7otkDO0rrOFpygFFNOxGcWoJMtmsJxhjvWVLoZaFwhJVbSplc+y6gDM1OIX3UDBg01uvQjDHGkkJve2dvBa3VJYxq2kmSTyjITYdJdi3BGNM3WFLoRXXNQV7beZQptc61hILcNAIjzrZagjGmz7Ck0ItWby8juekoBU27SAv4GZqdCnbHkTGmD7Gk0EtKqptYf6CKKbV/BZQxeen4hp8NuWO8Ds0YY6IsKfSC47egZrYeo6BpF7lpAXLTAzDpaq9DM8aYE1hS6AXbSmrZd6yBqbVvO7eg5qfDMKslGGP6HksKcRZ0b0HNbj3KyKaPGJadSlrAb3ccGWP6JEsKcfb2nmNUNQaZUveOewtqmltLGN35ysYY08ssKcRRbXOQN3eVR2sJowalk+QXmHyN16EZY0y7LCnE0aptZbSEIkype4f0ZD9Ds1Jg+AzIGeV1aMYY0y5LCnFSXNXIBweqyGktY2TTR07/RoJdSzDG9GmWFOJAVXl+cykAU+reYVB6gJy0AAyfabUEY0yfZkkhDrYcruFARSM5rWUUNO9mdF66s8BqCcaYPs6SQg8LhiO8uPUIAFNr//rxLagjzoGcAo+jM8aYU7Ok0MPe2l1OdWOQnNYjjA7uZWRumrNgoj29bIzp+ywp9KCaJucWVICpte9QkJtOkk+slmCM6TcsKfSgl7cdoTWs5LYeYXxkv3MLKsAkey7BGNM/WFLoIYcqG9l4sBqAKbV//fgW1BHnQvYIb4MzxpgusqTQA2JvQc1tPcI03yHnFlTE7jgyxvQrlhR6wKZD1RysbARget1fP74FdaTVEowx/YslhTPUEgrz0jbnFtTc1lLOST5MasCH1RKMMf2RJYUz9OaucmqbQgDManyXEcdvQR05C7KGexiZMcZ0nyWFM1DZ0Mpbu48BMKi1hFmppc4tqIiNqmaM6ZcsKZyBF7aUEoooABcG1zI4070F1WoJxph+ypLCadpztI7tJbUADGo5zKy0I84tqHYtwRjTj1lSOA3hiPLch84tqKhytW8tmSlJznTBbMga5l1wxhhzBiwpnIb391VwtK4FgEnNm5ma4nRtgfislmCM6dcsKXRTfUuIV3YcBSA1VMuVspZkv/s2TrgMMod6GJ0xxpwZSwrdtHr7EZqCYVDlkqZXGZnpLsgYarUEY0y/Z0mhG0qqm1hXVAXA6MZtzEo9gk/cW1DPvQ38AW8DNMaYM2RJoYtUlec+LEEVUsINXBp8m9w0NwkUXgx5470N0BhjeoAlhS7aXFxDUYXTv9G5NauZkCvOLahpeTB1ibfBGWNMD4lrUhCRxSKyS0T2iMg97Sz/uohsF5HNIvKqiIyNZzynqyUUjg6xOaLpI2YHDjpDbAKccyskpXgYnTHG9Jy4JQUR8QMPAdcA04DbRGRam2IbgbmqOhN4CvhxvOI5E2/uKqemKUgg0sS8ulc+HmJz9AUwZLK3wRljTA+KZ03hPGCPqu5T1VbgceD62AKq+rqqNrqT7wGj4hjPaYnt32hG9eucla1O/0YpWTDt+k7WNsaY/iWeSaEAOBQzXezO68gXgBfbWyAiXxKR9SKyvry8vAdD7NxKt3+joc37mBbe+XH/RjM+DcnpvRqLMcbEWzyTgrQzT9stKHI7MBd4oL3lqvoLVZ2rqnOHDBnSgyGe2p6j9WwrqSUp0sKsqlUfD7E5chaMmNlrcRhjTG9JiuO2i4HRMdOjgJK2hUTkCuC7wAJVbYljPN0SiSjPb3bCnV6zhtFpLWSlZkAgA87+lMfRGWNMfMSzprAOmCgi40QkGbgVeDa2gIjMAv4bWKqqR+MYS7e9t7+CstoW8lsOcVbTJkYNci8un/1J53qCMcYMQHFLCqoaAu4CXgZ2AE+o6jYRuV9ElrrFHgAygSdFZJOIPNvB5npVQ0uIV7YfxachZle9xMicVFKSfDB0OhTM8To8Y4yJm3g2H6GqK4GVbebdG/P6inju/3St3l5GUzDM9Nq/kk8tw3OyISkVZt6MO2iCMcYMSPZEcxulNU2sLaokt/UIE+vWMiY/3enfaNr1kDbI6/CMMSauLCnEON6/kURCzK56kdy0JKd/o/yJMOZCr8Mzxpi4s6QQY8vhGvYfa2RS3fvkBMsZk5+O+ANOVxbWbGSMSQCWFFytoQgrtxwhK3iMyXXvMiw71enfaMonIGOw1+EZY0yvsKTgWvNRObWNLcyuepFkn1KQmwaDCmHcAq9DM8aYXmNJAahqaGXN7nIm1H/AoNZSRg9KJykQgHNuA5+9RcaYxGFHPGDl1lKSWyqZVvsWmSlJTv9GE6+GrOFeh2aMMb0q4ZPC3vJ6thbXMKvqJXwacvo3yimAsy73OjRjjOl1CZ0UIhHnFtTChg8Z3HKIwZkpZKUlu81Gfq/DM8aYXpfQSeH9/ZXUVJZzds0b+H3i9G804TLIHd35ysYYMwAlbFJobA2xetsRZlWvIklbGZGTSkrOcJi02OvQjDHGMwmbFFZvL2Nw7RaGNe8jNcnH8Jw05yE1f8Dr0IwxxjMJmRRKa5rYtOcQM6tfA2BMXgb+cZdA/gSPIzPGGG8lXFJQVZ7/sJQZVa8QiDSRkxYgd/AwmLrE69CMMcZzCZcUth6upenQRgqadiHA2Lx0ZOYtkJTidWjGGOO5hEoKraEIqz7cz7lVqwGc/o0mXARDp3gcmTHG9A0JlRTe2l3OmNJVpEQaCPiEkcOGwrQbvA7LGGP6jIRJCtWNrWz/8H3GNG4BYFReOoFzb4HkdI8jM8aYviNhksLLHx5gRsXLAGQk+xk86QIYMdPjqIwxpm9JiKSwr7we3f4caeFaAEYPG4Jvxqc8jsoYY/qehEgKNcU7mdC4EYD8jGRy5t0CKVkeR2WMMX1PktcB9IZZOfU0FeRSXNVIweS5UDDH65CMMaZPSoikwPiFpOWNZ+K2P8NsG2/ZGGM6khhJASB3DMz/O6+jMMaYPi0hrikYY4zpGksKxhhjoiwpGGOMibKkYIwxJsqSgjHGmChLCsYYY6IsKRhjjIkSVfU6hm4RkXLgwGmuPhg41oPh9CaL3RsWe+/rr3FD3459rKoO6axQv0sKZ0JE1qvqXK/jOB0Wuzcs9t7XX+OG/h37cdZ8ZIwxJsqSgjHGmKhESwq/8DqAM2Cxe8Ni7339NW7o37EDCXZNwRhjzKklWk3BGGPMKVhSMMYYE5UwSUFEFovILhHZIyL3eB1PV4nIaBF5XUR2iMg2EelXg0KIiF9ENorI817H0h0ikisiT4nITve9v9DrmLpKRP7e/V/ZKiKPiUiq1zF1RER+LSJHRWRrzLw8EVktIrvd34O8jLEjHcT+gPs/s1lE/iwiuV7GeDoSIimIiB94CLgGmAbcJiLTvI2qy0LAN1R1KnAB8L/7UewAfwfs8DqI0/CfwEuqOgU4h37yN4hIAfC3wFxVPRvwA7d6G9UprQAWt5l3D/Cqqk4EXnWn+6IVnBz7auBsVZ0JfAR8p7eDOlMJkRSA84A9qrpPVVuBx4HrPY6pS1S1VFU3uK/rcA5OBd5G1TUiMgr4BPBLr2PpDhHJBi4FfgWgqq2qWu1tVN2SBKSJSBKQDpR4HE+HVHUNUNlm9vXAb93XvwVu6NWguqi92FV1laqG3Mn3gFG9HtgZSpSkUAAcipkupp8cWGOJSCEwC3jf20i67CfAt4GI14F003igHPiN2/T1SxHJ8DqorlDVw8D/BQ4CpUCNqq7yNqpuG6aqpeCcFAFDPY7ndN0BvOh1EN2VKElB2pnXr+7FFZFM4E/A11S11ut4OiMi1wFHVfUDr2M5DUnAbODnqjoLaKDvNmGcwG1/vx4YB4wEMkTkdm+jSjwi8l2cpt/fex1LdyVKUigGRsdMj6IPV6nbEpEATkL4vao+7XU8XTQfWCoiRTjNdZeJyKPehtRlxUCxqh6vkT2FkyT6gyuA/aparqpB4GngIo9j6q4yERkB4P4+6nE83SIiy4DrgM9oP3wQLFGSwjpgooiME5FknAtvz3ocU5eIiOC0be9Q1Qe9jqerVPU7qjpKVQtx3u/XVLVfnLGq6hHgkIhMdmddDmz3MKTuOAhcICLp7v/O5fSTi+QxngWWua+XAc94GEu3iMhi4B+Apara6HU8pyMhkoJ74ecu4GWcL8gTqrrN26i6bD7wWZwz7U3uz7VeB5UA7gZ+LyKbgXOBf/E4ni5xazdPARuALTjf8T7b9YKIPAa8C0wWkWIR+QLwI+BKEdkNXOlO9zkdxP5fQBaw2v2uPuxpkKfBurkwxhgTlRA1BWOMMV1jScEYY0yUJQVjjDFRlhSMMcZEWVIwxhgTZUnB9BsioiLy7zHT3xSR+3po2ytE5Kae2FYn+7nZ7XX19Tjuo1f+FjMwWVIw/UkL8EkRGex1ILHcXni76gvA36jqonjFY8yZsKRg+pMQzoNYf992QduzYxGpd38vFJE3ReQJEflIRH4kIp8RkbUiskVEJsRs5goRecstd527vt/tI3+d20f+l2O2+7qI/AHnIbG28dzmbn+riPybO+9e4GLgYRF5oE15n4j8zB0H4XkRWXn87xGRy92O+ba4ffinHN+eG9dWEfmF+wRz2zh+JCLb3dj/b/febpOILCmY/uYh4DMiktONdc7BGddhBs7T4ZNU9TycLr3vjilXCCzA6e77YXdwmi/g9DQ6D5gHfFFExrnlzwO+q6onjG8hIiOBfwMuw3kaep6I3KCq9wPrcfrE+VabGD/p7n8GcCdwobutVJx++29R1Rk4nfV91V3nv1R1njtuQhpOfzuxceQBNwLT3f79/7mrb5hJXJYUTL/i9hD7CM5AMl21zh2XogXYCxzvSnoLzoH4uCdUNaKqu4F9wBTgKuBzIrIJp8vyfGCiW36tqu5vZ3/zgDfcTumO95R5aScxXgw86e7/CHD8msNknA7uPnKnfxuzrUUi8r6IbMFJQNPbbLMWaAZ+KSKfBPplXzymd1lSMP3RT3DO4GPHOAjh/j+7zSjJMctaYl5HYqYjOGfex7Xt80Vxul2/W1XPdX/GxYxP0NBBfO111d6ZjtZpd75bg/gZcJNbg/gf4IRhN92EdB5OD7s3AC+dRlwmwVhSMP2OqlYCT+AkhuOKgDnu6+uBwGls+ma3bX8CzkA7u3A6Ufyq2305IjKpCwPuvA8sEJHB7kXo24A3O1nnbeBT7v6HAQvd+TuBQhE5y53+rLut4wngmDvWxkl3G7nzc1R1JfA1nKYsY04pqfMixvRJ/47T8+1x/wM8IyJrccb17egs/lR24RxwhwFfUdVmEfklThPTBrcGUk4nw0OqaqmIfAenCUiAlaraWffPf8Lp5norzti+7+Ncy2gWkc8DT4ozvOY64GFVbRGR/8FpAity57eVhfOepLpxnHSB3pi2rJdUY/oIEclU1XoRyQfWAvPd6wvG9BqrKRjTdzwvIrk410P+yRKC8YLVFIwxxkTZhWZjjDFRlhSMMcZEWVIwxhgTZUnBGGNMlCUFY4wxUf8fIvT0/b91EM8AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_prior_pred, label='prior pred')\n", "plot_cdf(sample_prior_pred_pm, label='prior pred pymc')\n", "decorate_cdf_goals()\n", "\n", "plt.savefig('zigzag11.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looks good." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Now with PyMC\n", "\n", "Finally, we are ready to use PyMC for actual inference. We just have to make one small change.\n", "\n", "Instead of generating `goals`, we'll mark goals as `observed` and provide the observed data, `3`.\n", "\n", "And instead of called `sample_prior_predictive`, we'll call `sample`, which is understood to sample from the posterior distribution of `mu`." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Auto-assigning NUTS sampler...\n", "Initializing NUTS using jitter+adapt_diag...\n", "Multiprocess sampling (4 chains in 4 jobs)\n", "NUTS: [mu]\n", "Sampling 4 chains: 100%|██████████| 12000/12000 [00:03<00:00, 3506.74draws/s]\n", "The acceptance probability does not match the target. It is 0.6927188582727735, but should be close to 0.8. Try to increase the number of tuning steps.\n" ] } ], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " mu = pm.Gamma('mu', alpha, beta)\n", " goals = pm.Poisson('goals', mu, observed=3)\n", " trace = pm.sample(1000, tune=2000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With `goals` fixed, the only unknown is `mu`, so `trace` contains a sample drawn from the posterior distribution of `mu`. We can plot the posterior using a function provided by PyMC:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pm.plot_posterior(trace)\n", "decorate_pdf_rate()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can extract a sample from the posterior of `mu`" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.0131639332686024" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post_pm = trace['mu']\n", "np.mean(sample_post_pm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And compare it to the sample we drew from the grid approximation:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEWCAYAAACJ0YulAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvOIA7rQAAIABJREFUeJzt3Xl8HNWV6PHf6W5JrV3W4gXv+4JtbCMwi8F2WMLiQICQQIYthBBISMgjmQx5Wchk8iYzk8lkYELIkAQcGBIGCDhOIGEz4BAMxmBsvO+y5U2bLWuXuvu8P6rU3Za1GrVKLZ3v56OPuqpuVR21pDp97626V1QVY4wxBsDndQDGGGP6D0sKxhhjoiwpGGOMibKkYIwxJsqSgjHGmChLCsYYY6IsKQxSIvILEfluLx1rjIjUiojfXX5dRG7rjWO7x/uziNzcW8frwXl/KCIVInKoj8+7R0Qu7Mtztjn//xWRX3l1fuOtgNcBmN4nInuAYUAICAObgMeAh1U1AqCqd/TgWLep6isdlVHVvUDWR4s6er7vA5NU9Ya441/aG8fuYRyjga8DY1W1rK/P7yVV/WevY2jV3t+DSSyrKQxcn1DVbGAs8C/APwC/7u2TiMhA/WAxFqgcbAmhL3+fA/hvJ7mpqn0NsC9gD3Bhm3VnAhFgpru8FPih+7oQ+BNwFKgC/orzgeFxd58GoBb4JjAOUODzwF5gZdy6gHu814EfAauBauAPQL67bRFQ2l68wCVAM9Dinm9d3PFuc1/7gO8AJUAZTg0o193WGsfNbmwVwLc7eZ9y3f3L3eN9xz3+he7PHHHjWNrB/t8EDgIHgNvcc0/q7NjutonACqDSjfEJIK+z31/ctstwan41wH7gG3HbrgQ+AI4BO4FL3PWnAMvd3+0O4Atx+3wfeAb4H3e/29x1/9Od9xRIB34DHAE2u+9JaSfvuQJfBrYDu9119wP73PO/B5znru/o7yEX5wPOQfc9+CHg9/r/bqB8eR6AfSXgl9rBRcX9p77Tfb2UWFL4EfALIMX9Og+Q9o4Vd5F4DMh0Lwqt6+KTwn5gplvm93EXmUVtLxrx54i/IMVtf51YUrjVvbBNwGmyehZ4vE1sv3TjOg1oAqZ38D49hpOwst19twGf7yjONvteAhwCTgUycBJofFLo7NiTgIuANKAIJ7H+Z1e/P3fbwbiL5hBgnvv6TJwEfBFOYhsJTHO3vQH8HAgCc3AS1QVx73cL8El3v3TaTwrtvqc4tdA33FhGAeu7eN8UeBnIB9LddTcABTjN2V9339dgJ38Py4D/xvnbGorz4eOLXv/fDZQvaz4aXA7g/DO21QKMwGk/b1HVv6r739eJ76tqnao2dLD9cVXdoKp1wHeBT7d2RH9Efwf8h6ruUtVa4FvAdW2aIv5RVRtUdR2wDudCdhw3ls8A31LVGlXdA/wEuLGbcXwaeFRVN6pqPfCP3T22qu5Q1ZdVtUlVy4H/ABZ287wtwAwRyVHVI6r6vrv+88Aj7nEjqrpfVbe4fSMLgH9Q1UZV/QD4VZufc5WqLnP36+j32dF7+mngn91YSoEHuvEz/EhVq1rPpar/o6qVqhpS1Z/gJMup7e0oIsOAS4GvuX9/ZcBPgeu6cV7TDZYUBpeROE0Ibf0Y59P3SyKyS0Tu7cax9vVgewlODaSwW1F27hT3ePHHDuB0rLeKv1uonvY7wQuB1HaONbIHccT/jPGvOz22iAwVkSdFZL+IHMNpuunue3MNThNSiYi8ISJnu+tH4zQZtRdnlarWtBdLO7F3pKP3tLP3oSPHlRGRr4vIZhGpFpGjOM1DHb0fY3H+lg6KyFG3/H/j1BhML7CkMEiIyBk4F4I3225zP81+XVUnAJ8A7hGRC1o3d3DIrmoSo+Nej8H5hFsB1OE0t7TG5cdpQunucQ/gXBjijx0CDnexX1sVbkxtj7W/m/sfxGkuaRX/83Z17B/h/JyzVTUHp/lEunNSVX1XVa/EuQguA55yN+3D6ato6wCQLyLZHcQCXb/nnensfehI9Hwich7OTRCfBoaoah5OM5i0Levah9N8Vaiqee5XjqqeerI/gDmeJYUBTkRyRGQJ8CRO2+yH7ZRZIiKTRERwOvvC7hc4F9sJJ3HqG0RkhohkAD8AnlHVME7belBELheRFJwO2LS4/Q4D40Sko7/N3wH/R0TGi0gW8M/A/6pqqCfBubE8Bfw/EckWkbHAPTif2rvjKeBzIjLd/Rm/14NjZ+N0nB4VkZHA33fnhCKSKiJ/JyK5qtpC7HcFTsfr50TkAhHxichIEZmmqvuAt4AfiUhQRGbjNDU90c2fsytPAd8SkSHuz3JXD/fPxknq5UBARL4H5MRtP+7vQVUPAi8BP3H/tn0iMlFEutv8ZrpgSWHg+qOI1OB8svo2Trv15zooOxl4BedCtQr4uaq+7m77EfAdt6r+jR6c/3GczuxDOB2cXwVQ1WrgSzjt2vtxag6lcfs97X6vFJH3OdEj7rFXAruBRuArPYgr3lfc8+/CqUH91j1+l1T1zzjt56/hNL2tcjc1dePY/wjMw/lE/DxOZ3l33QjscZud7sCpZaCqq3F+vz91j/sGsZrK9TgdxgeA54D7VPXlHpyzMz/A+f3txvkbeobYe9AdLwJ/xvmwUILz+4xvXmrv7+EmnOa5TTh3PT2D0ydmekHrHSbGmI9ARKYDG4C0ntZaBhIRuRO4TlXtk3uSspqCMSdJRK5ym3SGAP8K/HGwJQQRGSEi57rNOFNxbil9zuu4zMmzpGDMyfsiTlv4Tpy2/Tu9DccTqTh3/9TgPJD3B5xnIkySsuYjY4wxUVZTMMYYE5V0A1IVFhbquHHjvA7DGGOSynvvvVehqkVdlUu6pDBu3DjWrFnjdRjGGJNURKSk61LWfGSMMSaOJQVjjDFRlhSMMcZEJV2fQntaWlooLS2lsbHR61BMDwSDQUaNGkVKSorXoRhjXAMiKZSWlpKdnc24ceNwxnQz/Z2qUllZSWlpKePHj/c6HGOMK2HNRyLyiIiUiciGDraLiDwgIjtEZL2IzDvZczU2NlJQUGAJIYmICAUFBVa7M6afSWRNYSnwM5xpCdtzKc7onJOB+cBD7veTYgkh+djvzPQ2Z0pJiKgScb+rgmqEcCRCJKKoRpxtkQiRSCS6jxJx941AxFnnHNMt477GnbYy4BPG5Ke3Fjr+O3r8awCNdFAmft82r93zOV8RZ92Q8RBI7f03z5WwpKCqK0VkXCdFrgQec6d9fFtE8kRkhDteujFmgFBVmkIR6ptC1NXX09hQT3NzA5GWJsLNDWioiXBzIxpqJhxqIRxuJtQSIhJqIRRqIRIOEQ41Ewm1gIaQSBgiIXzua9EQRML4NIxPQ853wvjVXUcIab0g96LUgI8xo/N6/bhdWvxtyErcRHNe9imM5Phx00vddSckBRG5HbgdYMyYMX0SnBeWLVvGlClTmDFjRo/2W758OZs2beLee7szi+ZHc9ttt3HPPfecEOPSpUtZs2YNP/vZzxIeg/FWKByhuqGFI7UNNB89SHNjHc2N9fiOlRKo2U+4pYlwS5Nz0Q81oi3N+CIt+LW5y2MLzkVpQHR2JkoCElw8L9/79toO2h2dT1UfBh4GKC4uHrAj+C1btowlS5b0KCmEQiGuuOIKrrjiih7tEwj0/FcfDof51a9+1eP9TPJpbAlTXtPE4ep6aspLaTlaSuTYQbSuglBTA8FwLTkt5cftEz9dH8Qu8H1NAKdlUmhtoXTWibtBEBG3+bK1gLNNWl/TWtY9jrteiZVLCfghmBM7a9vjdbi+TZnoJINxwbbuJz73tS+27E9c0xF4mxRKOX4+11E4M0MlnT179nDJJZcwf/581q5dy5QpU3jsscfIyMjg1Vdf5Rvf+AahUIgzzjiDhx56iLS0NO69916WL19OIBDg4osv5uqrr2b58uW88cYb/PCHP+T3v/89AF/+8pcpLy8nIyODX/7yl0ybNo1bbrmF/Px81q5dy7x585g1a1b0U3pJSQm33nor5eXlFBUV8eijjzJmzJgT9vnJT34Sjb++vp5bbrmFLVu2MH36dPbs2cODDz5IcXExWVlZ3HPPPbz44ov85Cc/4Tvf+Q7//u//TnFxMY8++ig/+tGPGDFiBFOmTCEtLa2jt8j0U6FwhIraZsqqjnC0vJSaqjJqqysJ1R0hI3yMoqa9ZEQ++s0APhECfsEfSEUCQSQlDfxpTtt4IIgEUhF/GhJIwe9PwZ+SSiCQQkoggD8llZSUFAIpKfj8KYg/4H5Pwef3I/4UxBfAH0gBXwDxp4DPD74A+FLc7/64C7XpjJdJYTlwl4g8idPBXN0b/QnfevaEKYh7zY+untXhtq1bt/LrX/+ac889l1tvvZWf//zn3HXXXdxyyy28+uqrTJkyhZtuuomHHnqIm266ieeee44tW7YgIhw9epS8vDyuuOIKlixZwqc+9SkALrjgAn7xi18wefJk3nnnHb70pS+xYsUKALZt28Yrr7yC3+9n6dKl0TjuuusubrrpJm6++WYeeeQRvvrVr7Js2bIT9on385//nCFDhrB+/Xo2bNjAnDlzotvq6uqYOXMmP/jBD47b5+DBg9x3332899575ObmsnjxYubOnfuR3l+TOKrKsYYQh441cuhYI9WHdpOyfzVSs5+M5irSIvWk4UyWXdjFsZxPyT7SAj4kNQNfSjrhzGFIMJdI3jgCmXmkpaWTFkwnPZhORmYmqalB5xOuz56X7e8SlhRE5HfAIqBQREqB+4AUAFX9BfACcBnO/Lb1dDx/cFIYPXo05557LgA33HADDzzwABdddBHjx49nypQpANx88808+OCD3HXXXQSDQW677TYuv/xylixZcsLxamtreeutt7j22muj65qaYlPfXnvttSdc3AFWrVrFs886U/7eeOONfPOb3+xynzfffJO7774bgJkzZzJ79uzoNr/fzzXXXHPCPu+88w6LFi2iqMgZdPEzn/kM27Zt6+QdMn1JVTl0rJHdFXXsrqhjT0UdgZr9jKtbR0FTKcNClZ3uL0AwxU9Gqp/UYBZaOJG0vBGk548kMzOLQGoGZBZA+pC++YFMn0nk3UfXd7FdgS8n6vx9re3tlSJCRxMYBQIBVq9ezauvvsqTTz7Jz372s2gNoFUkEiEvL48PPvig3WNkZmb2OK6O9ulsoqVgMNhuIml7bOOt1iSws6yO3RW17C6vI6X+EAXNpeS2lLOgcSfBcG27+6YFfATT0vBnDyWYO5SsvEJy8grxZwxx7nLJG2NNL4PIgOvk76yJJ5H27t3LqlWrOPvss/nd737HggULmDZtGnv27GHHjh1MmjSJxx9/nIULF1JbW0t9fT2XXXYZZ511FpMmTQIgOzubmpoaAHJychg/fjxPP/001157LarK+vXrOe200zqN45xzzuHJJ5/kxhtv5IknnmDBggVdxr5gwQKeeuopFi9ezKZNm/jww66b4ObPn8/dd99NZWUlOTk5PP30013GZnpXJKLsrapn44FjbDpYTVVdCxmhaqbUvMN5jbvJCFcfVz7gEzJS/aSn+klPCRA4ZSZZkxaQVjDG+cRvF37DAEwKXpk+fTq/+c1v+OIXv8jkyZO58847CQaDPProo1x77bXRjuY77riDqqoqrrzyShobG1FVfvrTnwJw3XXX8YUvfIEHHniAZ555hieeeII777yTH/7wh7S0tHDdddd1eeF94IEHuPXWW/nxj38c7Wjuype+9CVuvvlmZs+ezdy5c5k9eza5ubmd7jNixAi+//3vc/bZZzNixAjmzZtHOBzudB/z0YXCEXaW17HpYDWbDhyjtilMRugoY+o3MqdhOzktZdGyKX4hO5hCTjCF7GCA9LQ0ZPipMHw2DJ0BqRke/iSmv0q6OZqLi4u17SQ7mzdvZvr06R5F5Nx9tGTJEjZsaHdEj34vHA7T0tJCMBhk586dXHDBBWzbto3U1MTe+gbe/+6SxcHqBt7dc4R1+45S3+w8pDWyfgszq98gLVIHgN8n5KWnOIkgPUAwmI4UTYW8cZA7Egomgd8GHxysROQ9VS3uqpzVFAz19fUsXryYlpYWVJWHHnqoTxKC6VxDc5gP9h3lvZIq9h91bgsNRJqYUvs+E+rWEgzXkuIXhmSnMSQjlZz0AD4RyBkJky50agR++xc3PWN/Mb1g3LhxSVtLAKcvw6Y47T9KKutYtbOSjQeOEYrExsI5pWEbc46+RLavifysVIZk5JCVFnC6AjKHOolg6HRIy7b+AXPSLCkY00+UHWvkLxsPsflgTXRdariesfUbmFj/ASNT6ykamkZOMN255qdlw/iFMOoMSPdgDB4zIFlSMMZj1fUtvLL5MO/tPRIdQDO/aT8Ta99jUmQ3w7ICFIxIJeDPcjamZMC0JTB6vjUPmV5nf1HGeKShOcwb28p4a2clLWEnG6REGjmv4kkmpFYzfEiQzLS4Z0tSMpxEMPkiSO3ecyrG9JQlBWP6mKqyalclr24uo77ZuY1XNMLkmnc4M/IB4wp9xyeD9CEw+eMw8vSEjqNvDFhS6FeSYehs89FU1Dbx+/dK2VNZH12X23yIxQ0vMS2zjtz0NreMzrkBRhVbx7HpM5YU+pH+PnS2OXmqyls7K3lx46FoUxGqnNm8ivP5gPyCVETchCA+mHwxTLzAagamz9mVoRck+9DZS5cu5bnnnqOpqYndu3fz2c9+lvvuu4/vfve7FBYWRgfL+/a3v82wYcOYPXs29913H8OGDeODDz7g6quvZtasWdx///00NDSwbNkyJk6cyOHDh7njjjvYtWsXAA899BDnnHNO3/+CPNZe7SA9Ust1/teYlHkIn7gXfl8AJiyCCYshLcuTWI0ZeEnhj3cn7tifuL/DTck8dDbA6tWr2bBhAxkZGZxxxhlcfvnlfP7zn+fqq6/m7rvvJhKJ8OSTT7J69Wo+/PBD1q1bx+bNm8nPz2fChAncdtttrF69mvvvv5//+q//4j//8z/56le/ysKFC3nuuecIh8PU1rY/INtA1VHtYK5vB5elvk2WNBGdWCVzKJxxG2QP8yxeYwBscPNe0nbo7DfffJOtW7eeMHT2ypUrycnJiQ6d/eyzz5KRceIYNPFDZ8+ZM4cvfvGLHDwYm26is6GzP/vZzwLO0Nlvvvlml/sAXHTRRRQUFJCens7VV1/Nm2++ybhx4ygoKGDt2rW89NJLzJ07l4KCAgDOOOMMRowYQVpaGhMnTuTiiy8GYNasWezZsweAFStWcOeddwLOENxdjac0kBxrbOFXf93Nn9YfjCaEjEgNt4ee4FP+192E4Bp3Hiz8piUE0y8MvJqCR5J56OyO4gdnTualS5dy6NAhbr311uj2+FnWfD5fdNnn8xEKhboV20C1o6yW/313L7VNsQECp6RVcW34+eNrB+KHuTfAyHneBGpMOwZeUuikiSeRknnobICXX36Zqqoq0tPTWbZsGY888ggAV111Fd/73vdoaWnht7/9bY/ekwsuuICHHnqIr33ta4TDYerq6sjJyel6xySlqry2tYxXNpdFH0ITgSuGlnNm1XJ8EvchYegMmPNZ56lkY/oRaz7qJa1DZ8+ePZuqqqoThs6eNWsWPp+PO+64g5qaGpYsWcLs2bNZuHDhcUNn//jHP2bu3Lns3LmTJ554gl//+tecdtppnHrqqfzhD3/oMo4HHniARx99lNmzZ/P4449z//3dS5ILFizgxhtvZM6cOVxzzTUUFzuDKaamprJ48WI+/elPd9j01JH777+f1157jVmzZnH66aezcePGHu2fTGqbQix9aw8vb4olhOw0H18ZtZOzqpbjIy4hnH4LzP+iJQTTL9nQ2b0g2YfOXrp0afTupbYikQjz5s3j6aefZvLkyb1+bq9/d72hpLKO367ey7EGt9lMlTPTSrg0fSPB+rhpxwPpcO7dkDPCm0DNoGZDZ5uPbNOmTSxZsoSrrroqIQlhIHhrZwXPrz9I62Cm/kgLN/peYEqkHKmPKzhkHBTfCsHB09lukpPVFIynkvV3p6qs2OL0H7TKk3o+l/YqQ8OHYwV9KTDpAmdYa5vgxnho0NUUVNUmkk8yyfaBpJWq8pcNh1i5vSK6bnReKp9reY705spYwfyJMO9GZ+wiY5LEgEgKwWCQyspKCgoKLDEkCVWlsrKSYDDodSg9oqr84YMDvLO7KrpuclEmN6WuIFAWlxBOvRomLPQgQmM+mgGRFEaNGkVpaSnl5eVeh2J6IBgMMmrUKK/D6LZIRHnm/VLW7j0aXXfqiGyuT3sT//4PYwUnX2wJwSStAZEUUlJSGD9+vNdhmAEsFI7w5Lv72HjgWHTdvJFZXJP6N3yl78YKnjIXplzqQYTG9I4BkRSMSaTmUIQn3ilh2+HY2E3njEplScsfkbKdsYLDZ8O8m22Ya5PULCkY04lQOMLjb5ewoyyWEBaP9nPRsaeQ+lhHM8NnOQ+lWUIwSc6SgjEdaO1Ujk8IS0Y1ck7VH5DmmljByRfD1MssIZgBwZKCMR14fVs5a0qORJevGnaYM8ueB404K8QPM65w5kAwZoCwpGBMO9aXHuWljc5DaKJhPpGymjOqNkHrGEYpmc4TyoWTvAvSmASwpGBMG3sr63l6TSkAohGWND7P/JTDSOuQ1xkFcNaXIbPAwyiNSQxLCsbEqapr5rFVewhFFFRZWP8yZ2YfxtfaX1AwybnDKDhwhwA3g1tCh84WkUtEZKuI7BCRe9vZPkZEXhORtSKyXkQuS2Q8xnSmoTnM0r/tpq7ZmRzn9LqVLMwsIeB3E8KYc5wagiUEM4AlLCmIiB94ELgUmAFcLyIz2hT7DvCUqs4FrgN+nqh4jOlMKBzhf94uoby2GYAhoQo+nr6ZYIr7LzKyGGZ/Gnw2BYkZ2BL5F34msENVd6lqM/AkcGWbMgq0fuzKBQ4kMB5j2tV66+muijoAUiIN3Jy2guyg27qaMwpOu95uOTWDQiKTwkhgX9xyqbsu3veBG0SkFHgB+Ep7BxKR20VkjYissfGNTG9btasyduupKjemvMYwX2w4C079JPit+80MDolMCu19rGo7VvL1wFJVHQVcBjwuIifEpKoPq2qxqhYXFRUlIFQzWO0sr+X59bHZ0T6We4BJEldhnfFJKLQJhszgkcikUAqMjlsexYnNQ58HngJQ1VVAEChMYEzGRB2pa+a37+yNzpo2O/UAH6t/IdZKNPZcmLjYs/iM8UIik8K7wGQRGS8iqTgdycvblNkLXAAgItNxkoK1D5mEaw45Hcv17p1GU0NbuLrlefytGSEtG6baaKdm8ElYUlDVEHAX8CKwGecuo40i8gMRucIt9nXgCyKyDvgdcIsm63RcJmmoKs++X8qB6kYAsiLHuMa3krSAmxCCeXD2XU5iMGaQSWjvmaq+gNOBHL/ue3GvNwHnJjIGY9paub2CdaXV0eXr8jaT3eB+PkrLdhJClvVdmcHJbro2g8q2wzW8uPFQdPnS3BImNmyIFZj5KUsIZlCzpGAGjYraJp5cvY/WBspZGVUsqH+F6E1x+RNhxGmexWdMf2BJwQwKoXCE376zl4YWp2O5IC3MNb438LUmhIwCKP6cPaBmBj1LCmZQeHHjYQ66HcsBgduCK0hrqnQ2+lLgzNutY9kYLCmYQWBHWQ1v7ohNnXnd0BLy6ktiBWZ9CrKHexCZMf2PJQUzoNU1haJzIwDMyWtkxpHXYgXGLoAxZ3kQmTH9kyUFM2C1Po9wrDEEQHaq8snQnxF1lska7kynaYyJsqRgBqx39xxh08Ga6PINIw7E+hEAZl0LgTQPIjOm/7KkYAak8pomnl8fG2pr4SgYc/DFWIEJi2x+ZWPaYUnBDDihcISn1uyjOezcbjo808dFtX8EjTgF0rJhio1rZEx7LCmYAeeVzWWUHmkAIOATbizahr/ucKzA7M9AStCj6Izp3ywpmAFlV3ktK7fHBtq9dGoO+YdWxQpM/wQMn+VBZMYkB0sKZsAIhSM8t3Z/dBiLSUOzODu0GsJNzopgHoxf5Fl8xiQDSwpmwPjrjgoqapsBSE/x8+mxdciev8YKTFxs02oa0wVLCmZAqK5v4fUtZdHlC2cMJfvAW7ECOSNh3HkeRGZMcrGkYAaEP284GLvbKCfIWaMzoWxjrMCUj4PP71F0xiQPSwom6e0qrz1u0pxPnDYCX+W2WIFAEIbP9iAyY5KPJQWT1CIR5Y/rDkaXZ4/KZUJRFuxbHSs0bKYNiW1MN1lSMEnt7d2VHDrmDImd6hcumzkC6irhcJumI2NMt1hSMEmrtinEK5tincuLpg0lNyMFtr9EdDa1oumQNdSbAI1JQpYUTNJ6edOh2ExqmamcN6kQjpTAvrdjhSYu9ig6Y5KTJQWTlEqP1PPuniPR5SWnjSDg90H8cwlDZ0DRVA+iMyZ5WVIwSUfV6VxufXJ52vBspg3PgfoqOPBBrODki7wJ0JgkZknBJJ339x5lb1U94Ax4d/nsEc6Gvasg0uK8zh0FQ8Z7FKExycuSgkkqTaEwL248FF1eMLmQwqw0aGmAXW/ECk660G5DNeYkWFIwSeWNreXUuNNr5qQHWDS1yNmw753YwHdZw+xhNWNOkiUFkzSO1DXz1+0V0eWPnzqctIAfwi2we2Ws4LjzbEgLY06SJQWTNP6y8RChiNO7PGpIOnNH5zkb9q6CenfuZfHDqDM8itCY5GdJwSSFPRV1rI8b32jJ7BGICNRVwOY/xQrOuMJmVTPmI7CkYPo9VeX5D2PjG502KpexBZmgChuejfUlpOfDmHM8itKYgSGhSUFELhGRrSKyQ0Tu7aDMp0Vkk4hsFJHfJjIek5ze33s0Oudyil/4+KnDnQ1lm+OGxxY4/RYIpHoSozEDRcKmoRIRP/AgcBFQCrwrIstVdVNcmcnAt4BzVfWIiNggNeY4TaEwL8XfgjqpkCGZ7oV/1+uxgqPnw5CxfRucMQNQImsKZwI7VHWXqjYDTwJXtinzBeBBVT0CoKplGBPnja3lHGu9BTUYYGHrLagNR6Bye6zgpAs8iM6YgSeRSWEksC9uudRdF28KMEVE/iYib4vIJe0dSERuF5E1IrKmvLw8QeGa/qbtLagXt96CClDyFmhoYhqyAAAdZ0lEQVTEeV0wyUZCNaaXJDIptPc4qbZZDgCTgUXA9cCvRCTvhJ1UH1bVYlUtLioq6vVATf/U9hbUeWPcP43mOtj5WqzguAUeRGfMwJTIpFAKjI5bHgUcaKfMH1S1RVV3A1txkoQZ5EoqO7gFFWDjc7ExjjKHwvDTPIjQmIEpkUnhXWCyiIwXkVTgOmB5mzLLgMUAIlKI05y0K4ExmSSgqvx5Q6xzeXbrLajgzJdQ+m6s8JRLwGd3VhvTWxL236SqIeAu4EVgM/CUqm4UkR+IyBVusReBShHZBLwG/L2qViYqJpMctpfVUlLpjILq98ElrbegqsLWP8cKFk6BkfM8iNCYgStht6QCqOoLwAtt1n0v7rUC97hfxqCqvLzpcHT5jHH5sVtQK3dC+WZ3i8D0T9hIqMb0Mqt3m35ly6Ga6INqAZ+waKp7V5EqbP5DrODI0yFvjAcRGjOwWVIw/Yaq8kpcLWH+hHxy01OchfKtcHSv89oXgKmXeRChMQOfJQXTb2w8cIwD1Y2AM5zFwilxtx/veyf2evRZkFnQx9EZMzhYUjD9gqryyuZYLeHsCQVkB91awpE9cGBtrPDYs/s2OGMGEUsKpl/4cH81h485o52mBXycF19L2LiM6HOP+ROc+ZeNMQlhScF4LhJRXtkcG/bq7IkFZKW5N8YdKYEju2OFT726j6MzZnCxpGA8t670KOU1cbWEyYXOBlXY8EysYPoQyBvdzhGMMb2l06QgIkvjXt+c8GjMoBOJKCu2xGoJCyYVkpHq1hIOb4zdcSQ+mHeTBxEaM7h0VVOIH1Tm7kQGYgantfuOUFHbDEB6ip9zJxXGNpa8FXs9/nynP8EYk1BdJYW2o5oa02tC4QivxvUlnDe5kPRUd2js+ioo2xQrPNZGQjWmL3Q1zMUoEXkAZxjs1tdRqvrVhEVmBrz39x7lSL0z2mlGqp+zJ8Y9e1DyFtHPJEXTIMuGTDemL3SVFP4+7vWaRAZiBpdIRFm5LTZh0vlTigimuLWEUBPsXRUrPPacPo7OmMGr06Sgqr/pq0DM4LLhQDWVdbG+hPnj8+M2PgvNtc7rYC4Mm+VBhMYMTl3ekioiN4vI+yJS536tERG7DcScNNXjawlnTciP1RIOb4R9b8cKT7nU5kswpg91WlNwL/5fwxna+n2cvoV5wI9FBFV9LPEhmoFmZ3kt+4/Gxjg6J/6Oo20vxl4Pn2VDWhjTx7r6CPYl4CpVfU1Vq1X1qKquAK5xtxnTY29sq4i+Pn3skNjTy/VVcLQkVnDmNX0cmTGmq6SQo6p72q501+UkIiAzsJUeqWdHmdNfIALnTY67q2jL87HXRdOdJ5iNMX2qq6TQcJLbjGnXX7fHagmzR+aS3zqr2oG1sD/uBrfh1rlsjBe6uiV1uoisb2e9APZ4qemRytomPtxfHV0+v3Uk1Kpd8F7cjW45I2H0/D6OzhgDXSeF04BhwL4268cCBxISkRmw/rq9AnWfR5s8NItT8tIh3AJrnyD6oFowD+bfAf6ETh9ujOlAV81HPwWOqWpJ/BdQ724zpltqGlt4r+RIdDlaS9jyJ6h3m5T8aXD2XRC07ipjvNJVUhinqic0H6nqGmBcQiIyA9JbOysJRZzawKgh6UwsyoTGati9MlZo6qU2nIUxHusqKQQ72Zbem4GYgauxJczbuyqjywunFCEiULoGNOKsDObC+IUeRWiMadVVUnhXRL7QdqWIfB54LzEhmYFm9e4qGluci39hViozRuRAcz3s+Wus0KQL7cllY/qBrnrzvgY8JyJ/RywJFAOpwFWJDMwMDKFwhL/tjN2Get7kInxE4J1fQIPbxxBIh5HFHkVojInX1YB4h4FzRGQxMNNd/bz7VLMxXVpXepRjDSEAsoMB5o7Jg52vHv/k8qxPQWqGRxEaY+J1674/VX0NeC3BsZgBRlWPG9LinIkFpGgLbH8pVmjKJTDKagnG9BfWiGsSZvPBGsprmgBIC/iYP74AKrZB2Bkym4wCmPxxDyM0xrRlScEkzMrtseGx54/Pd6baLN8aKzB8lnUuG9PP2H+kSYiSyjpKKusB8Ptwhseu2A4lf4sVyp/oUXTGmI5YUjAJET+JzpzRQ8j1N8OaR2PPJWSPgGGnehSdMaYjCU0KInKJiGwVkR0icm8n5T4lIioi1uM4AJQda2TTwZro8vmTC2HP36ClzlnhT4PiW8Hn9yhCY0xHEpYURMQPPAhcCswArheRGe2Uywa+CryTqFhM34ofHnvGiGyGZgZgT9xwFjOvhqyhHkRmjOlKImsKZwI7VHWXqjYDTwJXtlPun4B/AxoTGIvpI9UNLazd12bgu/LN0OTWHFKzYMQcj6IzxnQlkUlhJMcPuV3qrosSkbnAaFX9U2cHEpHbRWSNiKwpLy/vrKjx2KqdFYTdboOxBRmMLciE/e/HCow5G1I6G1LLGOOlRCYFaWedRjeK+HCG3/56VwdS1YdVtVhVi4uKbBTN/soZ+K4qunz+5CKo3g8H4pKCzahmTL+WyKRQCoyOWx7F8RPzZOMMnfG6iOwBzgKWW2dz8npndxVNIaeaUJSdxvQR2bAvrqto2EwYMtaj6Iwx3ZHIpPAuMFlExotIKnAdsLx1o6pWq2qhqo5T1XHA28AV7lwNJsmEwhHe2hHrYD5/ciHSUg97344VGn++B5EZY3oiYUlBVUPAXcCLwGbgKVXdKCI/EJErEnVe440P9h3lWKMz8F1OeoA5o/Ng+8sQdoa5IGs4FEz2MEJjTHckdCJcVX0BeKHNuu91UHZRImMxiaOqrIy7DfXciYUEWmqPn1XN5kswJinYf6n5yNoOfHfm+Hyn2UjDToG8MTYSqjFJwpKC+UhUlRVbDkeX54/PJygh2P1GrND4RSDt3YxmjOlvLCmYj2TLoRr2H3WeO0zxCwsmF8KeN6G51ikQzIMRp3kYoTGmJywpmJPm1BLKosvzxxeQnep3kkKrSReCP6FdV8aYXmRJwZy0rYdrKD3SADi1hPOnFMK+t6HBfYAtJdN5gtkYkzQsKZiToqq8ujlWSzhzfD7Z0gib/hArNP58qyUYk2QsKZiTsu1w7fG1hMmFsO5JCLnjGgZzYcIiz+IzxpwcSwqmx1SVVzbH7jg6Y1w+OXV74fCGWKGZ19jAd8YkIUsKpse2l8VqCQGfcP7kAtgSN9DtkPEwfLZH0RljPgpLCqZHTqgljM8n9+hmOLLbXSMw61P2XIIxScqSgumR7WW17KuK1RIWTimC/e/FCow9F3JHeRSdMeajsqRguq3tHUfF44aQSx0c3hgrNP48DyIzxvQWSwqm23aU1bK3qh5wagmLpgyFDb+PjXGUOxqyh3sYoTHmo7KkYLpFVXl1S5taQn0JHFofKzTxYx5EZozpTZYUTLfsKKulpNKpJfh9sGhykVNLaFU4BUbO8yg6Y0xvsaRguqSq/GXDoehy8dh8ckv+AjXu7Kq+AMy61qPojDG9yZKC6dLafUc5UB0bCXXx+PQ2Q2OfD1lDPYrOGNObLCmYTrWEI7y0MfZcwoJJheTu/jNEnKk3yRkJ0z7hUXTGmN5mScF06q2dlVQ3tACQleZnYcFRKF0dKzD1Uptm05gBxP6bTYfqm0O8vjV2x9HHpg0jbfeKWIGi6TBspgeRGWMSxZKC6dCKLWU0tkQAKMpK5cy8Y1CxNVZg5tU2nIUxA4wlBdOuqrpm3t5VGV2+eMYw/BuejhUYcZp1LhszAFlSMO16ceMhwk4lgbEFGZza+B4c2x8rMP0KbwIzxiSUJQVzgn1V9awvrY4uXz4lB9n+cqzAhMWQWehBZMaYRLOkYI7T9kG1mSNzGF25EkLOyKhkFsG0yz2KzhiTaJYUzHG2HKphV0UdAD6BS8b5YM+bsQLTrwB/ikfRGWMSzZKCiYpEjq8lzJ9QQEHJX0DdzoW8sTB8lkfRGWP6giUFE/XO7irKapoASAv4uKDoaNy8yzajmjGDgSUFAzgPqr28KTacxcLJ+WRuj5t3edQZkDfGg8iMMX3JkoIB4OVNh2locSbLyc9M4byULbFbUH0p1rlszCCR0KQgIpeIyFYR2SEi97az/R4R2SQi60XkVREZm8h4TPsOHG3gnd1V0eVPTM0msP0vsQKTLoD0PA8iM8b0tYQlBRHxAw8ClwIzgOtFZEabYmuBYlWdDTwD/Fui4jHtU1X+uO4Aqs7ylGFZTD3yOoScobJJyXSGxjbGDAqJrCmcCexQ1V2q2gw8CVwZX0BVX1PVenfxbWBUAuMx7VhfWs0ed0Y1n8AVp1Qj8aOgnvYZSM30KDpjTF9LZFIYCeyLWy5113Xk88Cf29sgIreLyBoRWVNeXt6LIQ5uTaEwL2w4GF1eNNpPwdb/jRUomOSMcWSMGTQSmRTau3dR2y0ocgNQDPy4ve2q+rCqFqtqcVFRUS+GOLi9vrWcYw3OZDl5qREW1fwRWtyKWzAX5t3sYXTGGC8EEnjsUmB03PIo4EDbQiJyIfBtYKGqNiUwHhOnoraJN7dXOAuqXO9fQUqt++sRPxTfCsEc7wI0xngikTWFd4HJIjJeRFKB64Dl8QVEZC7w38AVqlrWzjFMgrzw4UFCEafidq6sY3TLntjGaZfDkHGexGWM8VbCkoKqhoC7gBeBzcBTqrpRRH4gIq3jLv8YyAKeFpEPRGR5B4czvWjroRo2H6wBoKhpL4si78QeVM4cChM/5l1wxhhPJbL5CFV9AXihzbrvxb2+MJHnNycKhSP8ab3TTBSINHFp5A2y0vzOxvyJcNadNpSFMYOYPdE8yLyyuYyK2mZ8GuK8I88yKdN9HiEQhHk32QioxgxylhQGkT0Vdazc7tzSO6XmbWZnVJLid2sFs661p5aNMZYUBovGljBPrdmHKmS3VFAc+oBh2UFn47jzYFSxtwEaY/oFSwqDxPPrD3KkvgWA02tWMKkg1ek6CObBqVd7G5wxpt+wpDAIbDxQzZqSIwAUNO2jOLOCtIAPEOd5BJ/9GRhjHHY1GOBqGlt47n1nCGyfhvh45E0KslKdjafMgSE2MK0xJsaSwgCmqjy3dj91zc48CefUvsy0zFpno/hg6mUeRmeM6Y8sKQxg7+45En1IbXjDdhak74ndbTT1Msga6mF0xpj+yJLCAFVR28QLHzojoIpGuExWkZvuPoMwbCZMsucGjTEnsqQwAIUjytNrSmkKRQA4p/lNJmS5Yw0G0uG06+ypZWNMuywpDDCqyvJ1+9lb5QyBXdi8n0Upm/C3JoEJCyEt28MIjTH9mSWFAeZvOypZvdu5/bSwcS/XtzxLVpo7xFXeWJh8sYfRGWP6O0sKA8jmg8eiM6lltVTyieYXGJGbHitw2vXg83sUnTEmGSR0lFTTdw5WN/C/7zrDWAxv2MHH6v/MxGFBp+sgEITiz0POCK/DNMb0c1ZTGACONbbwm7dKaApFKGjax/nVy5lWFHT6EcQHp98CRVO8DtMYkwSsppDkmkMRHl9VQnVDC7nNh1lQ9RxTh2c6zyMEgnD2XZA3uusDGWMMlhSSmqry9Hv7KD3SQHZLBedWPs20ohQyUv3OHUZnfwWyh3kdpjEmiVhSSFKqykubDrOx9ChTa95m+rE3GVeQSV56CqRkwPw7LSEYY3rMkkISCoUjLF93gLW7DnFW1Z8Y1riTYTlBhuWkgT8Vzrwdckd6HaYxJglZUkgytU0hfvtOCYcPHeT8ymfJaSknLz2FsfkZ7l1Gt0L+eK/DNMYkKUsKSeRgdQOPryohcrSUhRVPkxappzArjXGFGcjExTD1UgikeR2mMSaJWVJIEhv2V/PMe6WkNRxmQcVTpEUaGJWfwYjcDGTO9TD6TK9DNMYMAJYU+jlV5bWtZby8qYwhTftZUPE0qdLCxGHZDMnNdR5KK5zkdZjGmAHCkkI/Vl7TxJ83HGTH/jLmHX2NMfUbCAb8TBmWQ3pGptOhbP0HxpheZEmhHzrW2MKKzWW8u7uSU+q3cEH1awTDteQEU5g0NIuU9Gw4607IHeV1qMaYAcaSQj/S2BJm5bZy/rajgoLarSw89ha5LWUADM8JMjo/A1/2cJh3oyUEY0xCWFLoB0LhCKt3V7FiSxl1zWGGNe5ifuUyAHKCKYzOTycrKxdmXwsj5tgEOcaYhLGk4BFVZXdFHetLq/lwfzX1zWHSQ8c4/dhKRtdvIiPVz+j8DHKDKcgpp8GsT0NaltdhG2MGOEsKfUhVOVDdyPp9R1lXWh0dxG5K3ToKm/aRFaokLeBjVFEmBZlpSCDVeRht6HSvQzfGDBKWFBKssSXMnso6dpXXseXgMY5VVzGk+SBDQ1WcXr+ZHLfPIDXgY3h+BkNz0pwhr0+ZB1Mvg6wij38CY8xgYkmhlzWFwpRU1rOrrIb9B/dTXVVOdnMZQ5oPMaf5AJmhI9GyKT4hPyeNgsw0stICTldB0TSYsMhqB8YYTyQ0KYjIJcD9gB/4lar+S5vtacBjwOlAJfAZVd2TyJg+ilAoTGNTIw2NjdTUNXCsro5jdY3U1NVRV99IfX0NvtpDZDVXMKTlIDND1Sccw+8ThmSkUpCZSk56Cj4Bhs+GUWc4zxykZff9D2aMMa6EJQUR8QMPAhcBpcC7IrJcVTfFFfs8cERVJ4nIdcC/Ap/p9WDqKmDHq6BhiIRBw2w/VE1DUzORSASNOOs1EgKNOK/DITTSgoaa0XAzGg5BJHTCodPcr8IOTi1ARqqf7GAKOekp5GQE8eePg6xhztDWI4utA9kY028ksqZwJrBDVXcBiMiTwJVAfFK4Evi++/oZ4GciIqqqvRpJUw3sfeu4Vc0HjtHQdOJFvjdkpPrJCaaQlZlJztAxpGQVOLWA3FGQOwb81mpnjOmfEnl1Ggnsi1suBeZ3VEZVQyJSDRQAFfGFROR24HaAMWPG9DwSn/+EVSdzq78A+FMQfyqB1FTSUtNITU0jLRgkmJZGejCdYPYQAoUTIXs45IwEf0rPT2SMMR5JZFJo77LbtgbQnTKo6sPAwwDFxcU9r0Wk5zv3+fv8IH7w+UitaCDYDD6/3/0K4Pf5EZ/z2hcIkJqaRmpqKmnBoJMAUlIRn6/HpzfGmGSRyKRQCsTPGD8KONBBmVIRCQC5QFWvR5KWBePOPW7VJJuYzBhjTpDIj73vApNFZLyIpALXAcvblFkO3Oy+/hSwotf7E4wxxnRbwmoKbh/BXcCLOLekPqKqG0XkB8AaVV0O/Bp4XER24NQQrktUPMYYY7qW0NtgVPUF4IU2674X97oRuDaRMRhjjOk+6zU1xhgTZUnBGGNMlCUFY4wxUZYUjDHGREmy3QEqIuVAiUenL6TN09ZJJFljt7j7VrLGDckbe1/FPVZVuxyLP+mSgpdEZI2qFnsdx8lI1tgt7r6VrHFD8sbe3+K25iNjjDFRlhSMMcZEWVLomYe9DuAjSNbYLe6+laxxQ/LG3q/itj4FY4wxUVZTMMYYE2VJwRhjTJQlhW4QkUdEpExENngdS0+IyGgReU1ENovIRhG52+uYukNEgiKyWkTWuXH/o9cx9YSI+EVkrYj8yetYekJE9ojIhyLygYis8Tqe7hKRPBF5RkS2uH/rZ3sdU3eIyFT3vW79OiYiX/M8LutT6JqInA/UAo+p6kyv4+kuERkBjFDV90UkG3gP+KSqbupiV0+JiACZqlorIinAm8Ddqvq2x6F1i4jcAxQDOaq6xOt4uktE9gDFqppUD4CJyG+Av6rqr9y5WzJU9ajXcfWEiPiB/cB8VfXq4VzAagrdoqorScSMcAmmqgdV9X33dQ2wGWde7H5NHbXuYor7lRSfXkRkFHA58CuvYxkMRCQHOB9nbhZUtTnZEoLrAmCn1wkBLCkMGiIyDpgLvONtJN3jNsF8AJQBL6tqUsQN/CfwTSDidSAnQYGXROQ9Ebnd62C6aQJQDjzqNtn9SkQyvQ7qJFwH/M7rIMCSwqAgIlnA74Gvqeoxr+PpDlUNq+ocnLm9zxSRft9sJyJLgDJVfc/rWE7Suao6D7gU+LLbbNrfBYB5wEOqOheoA+71NqSecZu8rgCe9joWsKQw4Llt8r8HnlDVZ72Op6fcpoDXgUs8DqU7zgWucNvmnwQ+JiL/421I3aeqB9zvZcBzwJneRtQtpUBpXE3yGZwkkUwuBd5X1cNeBwKWFAY0t8P218BmVf0Pr+PpLhEpEpE893U6cCGwxduouqaq31LVUao6Dqc5YIWq3uBxWN0iIpnuzQi4zS8XA/3+bjtVPQTsE5Gp7qoLgH59I0U7rqefNB1BgudoHihE5HfAIqBQREqB+1T1195G1S3nAjcCH7rt8wD/1507uz8bAfzGvSPDBzylqkl1e2cSGgY853yOIAD8VlX/4m1I3fYV4Am3GWYX8DmP4+k2EckALgK+6HUsreyWVGOMMVHWfGSMMSbKkoIxxpgoSwrGGGOiLCkYY4yJsqRgjDEmypKC6VMiMkxEfisiu9zhFFaJyFUneaxxfTVyrYgUi8gDfXGuuHPOEZHLTmK/Eb01QquIzBKRpb1xLJMcLCmYPuM+TLcMWKmqE1T1dJyHvEZ5G1nnRCSgqmtU9auJOHYnm+cAPU4KwD3AL08uouOp6ofAKBEZ0xvHM/2fJQXTlz4GNKvqL1pXqGqJqv4XROdReNQd03+tiCx2148Tkb+KyPvu1zmdncT9pLzSHaN+g4ic566/xN1/nYi86q7LF5FlIrJeRN4Wkdnu+u+LyMMi8hLwmIgsav307W57RERed2s8X40793fdcf1fFpHficg32olvqYj8h4i8BvyriJwpIm+5P/Nb7jj7qcAPgM+4P8dn3KeOHxGRd92yV3bwFlwD/MU91y3uz/dHEdktIneJyD3u/m+LSL5b7nURKXZfF7pDdbT6I07yNoOAPdFs+tKpwPudbP8ygKrOEpFpOCN2TsEZKfUiVW0Ukck4QwIUd3KczwIvqur/c5+KzhCRIpxPz+er6u7WiyHwj8BaVf2kiHwMeAznEzrA6cACVW0QkUVtzjENWAxkA1tF5CHgNJwL8lyc/633ceawaM8U4EJVDYs7/LOqhkTkQuCfVfUaEfkezvwGdwGIyD/jDJ1xqzsMyGoReUVV61oPKiLjgSOq2hR3rpluTEFgB/APqjpXRH4K3IQzsmtn1uAMMvdvXZQzA4AlBeMZEXkQWIBTezjDff1fAKq6RURKcC6eJcDPRGQOEHbXdeZd4BFxBgNcpqofuBf1laq62z1+6/wYC3Au5KjqChEpEJFcd9tyVW3o4BzPuxfeJhEpwxkmYgHwh9Z9ROSPncT4tKqG3de5OMN6TMYZvjqlg30uxhlwr7X2EQTG4MyT0WoEzlDS8V5z59OoEZFqnE/+AB8CszuJsVUZcEo3ypkBwJKC6UsbcS/AAKr6ZREpxPkkCiAd7Pd/gMM4n8R9QGNnJ1HVleIM+3w58LiI/Bg4SvsT9bR3ztZyde1saxX/STyM87/UUfztiT/2P+FcuK8SZ96L1zvYR4BrVHVrJ8dtwEkWHcUaiVuOELsGhIg1J7fdP+ge1wwC1qdg+tIKICgid8aty4h7vRL4OwC32WgMsBXnk/RBVY3gDPDn7+wkIjIWZ16DX+KMEjsPWAUsdJtXiGs+ij/nIqDiI8w58SbwCbdvJAsnKXVHLs5UjAC3xK2vwWmeavUi8BW3wx4RmdvOsbYB43oQc6s9OM1lAJ9qs20KSTBiqukdlhRMn1Fn9MVP4lycd4vIauA3wD+4RX4O+EXkQ+B/gVvcJpqfAzeLyNs4F6jOPsGDM6LtByKyFqdmcr+qlgO3A8+KyDr3+ADfB4pFZD3wL8DNH+HnexdYDqwDnsWpAVV3Y9d/A34kIn/j+IT3GjCjtaMZp0aRAqwX51bcf2onhjpgp4hM6mH4/w7cKSJvAYVtti0Gnu/h8UySslFSjelFIpKlqrXiDIm8Eri9dZ7sPozhKuB0Vf1OLxwrDXgDp8M99JGDM/2e9SkY07seFpEZOO3wv+nrhACgqs+JSEEvHW4McK8lhMHDagrGGGOirE/BGGNMlCUFY4wxUZYUjDHGRFlSMMYYE2VJwRhjTNT/B2rVjOLvES6kAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_post, label='posterior grid')\n", "plot_cdf(sample_post_pm, label='posterior pymc')\n", "decorate_cdf_rates()\n", "\n", "plt.savefig('zigzag12.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, it looks pretty good.\n", "\n", "To sample from the posterior predictive distribution, we can use `sample_posterior_predictive`:" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 1000/1000 [00:00<00:00, 2746.40it/s]\n" ] } ], "source": [ "with model:\n", " post_pred = pm.sample_posterior_predictive(trace, samples=1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like:" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(1000,)" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post_pred_pm = post_pred['goals']\n", "sample_post_pred_pm.shape" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.092" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post_pred_pm = post_pred['goals']\n", "np.mean(sample_post_pred_pm)" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "image/png": "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VyAU5pk1pagCqnwi9A6Dk9xmo+SBMPFTnsZnTF+xdetWbr31VtavX09GRgYPPPAA9fX1zJs3j3/84x9s2LCBYDDIgw8+SEVFBc899xybNm1i/fr13HHHHZx77rlcccUV3HPPPaxbt47Ro0dz66238sc//pHVq1dz77338o1vfKN5f9u2beONN9444eAOcNttt3HTTTexfv16rr/+er797W93uA7AihUrePzxx1m3bh1PP/00q1atav67brrpJtauXUtqaip33XUXb7zxBmvWrKGoqIjf/OY31NfX85WvfIUXX3yRxYsXc+DAgVZfowceeIABAwawfv16fvKTn7B69ermeTU1NUyePJnly5cza9as5un79+/nzjvv5N133+X1118/rea1zrCk4HpryyEOVTkXVBc2buUjCaU0n8Sfdh3EdX9GNqY/GjFiBOeddx4AN9xwA0uWLGHr1q0UFhYybtw4AG6++WbeeecdMjIySEpK4pZbbuHZZ58lJSXlpO1VV1fz3nvvcfXVVzN9+nS++tWvsn///ub5V199NX6//6T1li5dyhe+4Fwve+ONN7JkyZIO1wG45JJLGDRoEMnJyVx11VXN640cOZJzznFuorVs2TI2b97Meeedx/Tp03nkkUfYtWsXW7ZsobCwkLFjxyIi3HDDDa3uY8mSJVx77bUATJ48malTpzbP8/v9fPaznz1pneXLl3PhhReSk5NDQkIC11xzTavb7iprPgL2Ha3jnW1Ov96EUC1zfe+RGO/my/xzIWech9EZc3raauKJtpZdIkUE1VaHPSMuLo4VK1bw5ptv8uSTT3Lffffx1ltvnbBMOBwmKyuLdevWtbqN1NTUU46rvXVai7/lOqrKJZdcwhNPPHHCsuvWretUl9C2Xg9wrkhuK2H1RHfjmK8UQmHlmdWlhN33aHbwbXKT3WajpCyYdGXbKxtjTrJ7926WLl0KwBNPPMGsWbOYMGECJSUlbN++HYDHHnuMCy64gOrqao4dO8Zll13G7373u+YDf3p6OlVVzr1LMjIyKCws5OmnnwacA+r777/fYRznnnsuTz75JACPP/74CU0x7Xn99depqKigrq6O559/vrnqiXTOOefw7rvvNv89tbW1bNu2jQkTJrBz506Ki4ub//7WzJo1i6eeegqAzZs3s2FDx+d/zj77bBYtWkR5eTmBQKD59ehu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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_post_pred, label='posterior pred grid')\n", "plot_cdf(sample_post_pred_pm, label='posterior pred pm')\n", "decorate_cdf_goals()\n", "\n", "plt.savefig('zigzag13.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looks pretty good!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Two teams\n", "\n", "We can extend the model to estimate different values of `mu` for the two teams." ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Auto-assigning NUTS sampler...\n", "Initializing NUTS using jitter+adapt_diag...\n", "Multiprocess sampling (4 chains in 4 jobs)\n", "NUTS: [mu_ANA, mu_BOS]\n", "Sampling 4 chains: 100%|██████████| 12000/12000 [00:03<00:00, 3790.51draws/s]\n" ] } ], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " mu_BOS = pm.Gamma('mu_BOS', alpha, beta)\n", " mu_ANA = pm.Gamma('mu_ANA', alpha, beta)\n", " goals_BOS = pm.Poisson('goals_BOS', mu_BOS, observed=3)\n", " goals_ANA = pm.Poisson('goals_ANA', mu_ANA, observed=1)\n", " trace = pm.sample(1000, tune=2000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use `traceplot` to review the results and do some visual diagnostics." ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "pm.traceplot(trace);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the posterior distribitions for `mu_BOS` and `mu_ANA`." ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "mu_BOS = trace['mu_BOS']\n", "plot_cdf(mu_BOS, label='mu_BOS posterior')\n", "\n", "mu_ANA = trace['mu_ANA']\n", "plot_cdf(mu_ANA, label='mu_ANA posterior')\n", "\n", "decorate_cdf_rates()\n", "np.mean(mu_BOS), np.mean(mu_ANA)\n", "\n", "plt.savefig('zigzag14.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On the basis of one game here's the probability that Boston is the better team." ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.66725" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(mu_BOS > mu_ANA)" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(mu_BOS == mu_ANA)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Predictions\n", "\n", "Even if Boston is the better team, that doesn't mean they'll win the next game.\n", "\n", "We can use `sample_posterior_predictive` to generate predictions." ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 1000/1000 [00:00<00:00, 1386.94it/s]\n" ] } ], "source": [ "with model:\n", " post_pred = pm.sample_posterior_predictive(trace, samples=1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the posterior predictive distributions of goals scored." ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "goals_BOS = post_pred['goals_BOS'].flatten()\n", "goals_ANA = post_pred['goals_ANA'].flatten()\n", "\n", "plot_cdf(goals_BOS, label='BOS')\n", "plot_cdf(goals_ANA, label='ANA')\n", "decorate_cdf_goals()\n", "\n", "plt.savefig('zigzag15.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the chance that Boston wins the next game." ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.513" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "win = np.mean(goals_BOS > goals_ANA)\n", "win" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The chance that they lose." ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.335" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lose = np.mean(goals_ANA > goals_BOS)\n", "lose" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the chance of a tie." ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.152" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tie = np.mean(goals_BOS == goals_ANA)\n", "tie" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Overtime!\n", "\n", "In the event of a tie, the teams play a five-minute overtime period during which the team that scores first wins.\n", "\n", "In a Poisson process with rate parameter `mu`, the time until the next event is exponential with parameter `lam = 1/mu`.\n", "\n", "So we can take a sample from the posterior distributions of `mu`:" ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([2.94596135, 2.56428703, 2.02257676, ..., 3.16156756, 3.00181319,\n", " 2.37807074])" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mu_ANA = trace['mu_ANA']\n", "mu_BOS = trace['mu_BOS']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And generate time to score,`tts`, for each team:" ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.4452535794803446" ] }, "execution_count": 62, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tts_ANA = np.random.exponential(1/mu_ANA)\n", "np.mean(tts_ANA)" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.35965728049629286" ] }, "execution_count": 63, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tts_BOS = np.random.exponential(1/mu_BOS)\n", "np.mean(tts_BOS)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the chance that Boston wins in overtime." ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5475" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "win_ot = np.mean(tts_BOS < tts_ANA)\n", "win_ot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since `tts` is continuous, ties are unlikely." ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.59622" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "total_win = win + tie * win_ot\n", "total_win" ] } ], "metadata": { "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.6.8" } }, "nbformat": 4, "nbformat_minor": 2 } ================================================ FILE: zigzag3.ipynb ================================================ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bayesian Zig Zag\n", "\n", "Developing probabilistic models using grid methods and MCMC.\n", "\n", "Thanks to Chris Fonnesback for his help with this notebook, and to Colin Carroll, who added features to pymc3 to support some of these examples.\n", "\n", "Copyright 2018 Allen Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "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\n", " !pip install pymc3>=3.8" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "\n", "import numpy as np\n", "import pymc3 as pm\n", "\n", "import warnings\n", "warnings.filterwarnings(\"ignore\", category=UserWarning)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simulating hockey\n", "\n", "I'll model hockey as a Poisson process, where each team has some long-term average scoring rate, $\\lambda$, in goals per game.\n", "\n", "For the first example, I'll assume that $\\lambda$ is somehow known to be 2.4. Since regulation play (as opposed to overtime) is 60 minutes, we can compute the goal scoring rate per minute." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.04" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lam_per_game = 2.4\n", "min_per_game = 60\n", "lam_per_min = lam_per_game / min_per_game\n", "lam_per_min" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we assume that a goal is equally likely during any minute of the game, and we ignore the possibility of scoring more than one goal in the same minute, we can simulate a game by generating one random value each minute." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def simulate_game(p, n=60):\n", " goals = np.random.choice([0, 1], n, p=[1-p, p])\n", " return np.sum(goals)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And simulate 10 games." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "size = 10\n", "sample = [simulate_game(lam_per_min) for i in range(size)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we simulate 1000 games, we can see what the distribution looks like. The average of this sample should be close to `lam_per_game`." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.35, 2.4)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "size = 1000\n", "sample_sim = [simulate_game(lam_per_min) for i in range(size)]\n", "np.mean(sample_sim), lam_per_game" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## PMFs\n", "\n", "To visualize distributions, I'll start with a probability mass function (PMF).\n", "\n", "I'll use the `Pmf` object from `empiricaldist`, which is a subtype of a Pandas `Series`.\n", "\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "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", "
probs
00.116
10.218
20.228
30.207
40.142
50.055
60.029
70.003
80.001
90.001
\n", "
" ], "text/plain": [ "0 0.116\n", "1 0.218\n", "2 0.228\n", "3 0.207\n", "4 0.142\n", "5 0.055\n", "6 0.029\n", "7 0.003\n", "8 0.001\n", "9 0.001\n", "dtype: float64" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from empiricaldist import Pmf\n", "\n", "pmf_sim = Pmf.from_seq(sample_sim)\n", "pmf_sim" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the distribution looks like." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def set_colors():\n", " \"\"\"Set the color cycle for goals\"\"\"\n", " plt.gca().set_prop_cycle(color=['#2ca02c', '#9467bd',])" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def decorate_goals(ylabel='PMF'):\n", " \"\"\"Decorate the axes.\"\"\"\n", " plt.xlabel('Number of goals')\n", " plt.ylabel(ylabel)\n", " plt.title('Distribution of goals scored')\n", " plt.legend()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "set_colors()\n", "pmf_sim.bar(label='simulation')\n", "decorate_goals()\n", "\n", "plt.savefig('zigzag1.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Poisson process\n", "\n", "For large values of `n`, the process we just simulated converges to the Poisson distribution with parameter `mu = n * p`, which is also `mu = lam_per_game`.\n", "\n", "We can use NumPy to generate a sample from a Poisson distribution." ] }, { "cell_type": "code", "execution_count": 104, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.377" ] }, "execution_count": 104, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = 60\n", "p = lam_per_min\n", "mu = n * p\n", "sample_poisson = np.random.poisson(mu, size)\n", "np.mean(sample_poisson)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And confirm that the results are similar to what we got from the model." ] }, { "cell_type": "code", "execution_count": 112, "metadata": {}, "outputs": [], "source": [ "from empiricaldist import Pmf\n", "\n", "def plot_pmf(sample, **options):\n", " \"\"\"Compute and plot the PMF of a sample.\"\"\"\n", " Pmf.from_seq(sample).bar(**options)" ] }, { "cell_type": "code", "execution_count": 113, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEWCAYAAAB8LwAVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAeT0lEQVR4nO3de5hVZd3/8fcHRFE8peAhQAFFQzkHg/4MEDGFMjVT01DDRKPCQ5ZFJzOfDvhkXppYc6EZpqY/8UiKp0ezR38WB8sToHIIZcIUMTFRlIHv74+1hjbDPcweZM0MM5/XdXGx91rrvtd37w37s9e99r6XIgIzM7Pa2jR1AWZm1jw5IMzMLMkBYWZmSQ4IMzNLckCYmVmSA8LMzJIcEPahSaqU9IMt1Nc+kt6R1Da//5ikcVui77y/+yV9cUv114D9/ljSG5L+2cj7XSLpyMbcZxG29L8DK882TV2ANW+SlgB7AtXAWmAe8DtgSkSsA4iI8Q3oa1xE/E9d20TEK8COH67q9fu7BNg/Ik4r6X/0lui7gXV0Bb4B7BsRrzf2/s02l48grByfiYidgH2BScC3gd9s6Z1IaqkfWPYFVjgcMi34dW5xHBBWtohYGRHTgc8DX5TUG0DSVEk/zm93lHSvpLckvSnpcUltJN0I7AP8IR9C+pakbpJC0lmSXgEeLVlW+iayn6RZklZKukfSbvm+DpdUVVpjzZCKpFHAd4HP5/t7Jl+/fqgir+v7kl6W9Lqk30naJV9XU8cXJb2SDw99r67nRtIuefvleX/fz/s/EngY+Ghex9Q62n9L0quSlkkal+97/031na/bT9KjklbkNd4sadc69lEhaY6ktyW9JumKOrZLvob5uq6S7sxrWSFpcgOey/Wvc778S5LmS/qXpAcl7VtSwyclvZC/5pMB1fXcW3EcENZgETELqAKGJlZ/I1/XiWxo6rtZkzgdeIXsaGTHiPjvkjbDgV7A0XXs8gzgS8BHyYa6fllGjQ8APwX+b76/fonNxuZ/RgA9yIa2Jtfa5hPAgcBI4GJJverY5dXALnk/w/Oaz8yH00YDy/I6xtZumIfZhcCRwP55+3r7rmkO/IzsuekFdAUuqaPGq4CrImJnYD/gtjq2S76Gys4L3Qu8DHQDOgO35m3GUv9zuf51lnR83u8J+X4eB27Jn4+OwB3A94GOwCLgsDpqtQI5IGxzLQN2SyxfA+xNNt6+JiIej/on/LokIlZFxHt1rL8xIp6PiFXAD4CT8zerD2sMcEVELI6Id4DvAKfUOnr5UUS8FxHPAM8AGwVNXsvnge9ExL8jYgnwC+D0Mus4GfhtRMyNiHeBH5Xbd0QsjIiHI+L9iFgOXMHGAVNjDbC/pI4R8U5E/GUT26VewwqyILoof71WR8QTeZtynsvS1/nLwM8iYn5EVJOFef/8KOJTwLyIuD0i1gBXAo16ct8yDgjbXJ2BNxPLfw4sBB6StFjSxDL6WtqA9S8D7cg+WX5YH837K+17G7JPzTVK35jeJX0CvSOwbaKvzg2oo/Qxlt7eZN+S9pB0q6R/SHobuIm6n5uzgAOAFyTNlnRMHdvV9Rp2BV7O39BTj6G+57L0ce0LXJUPY71F9m9J+ePa4PnIw6m+fyNWAAeENZikwWT/kZ+ovS7/lPuNiOgBfAa4UNLImtV1dFnfEUbXktv7kH3CfQNYBexQUldbsuGKcvtdRvZGVdp3NfBaPe1qeyOvqXZf/yiz/atAl5L7pY+3vr5/RvY4++ZDR6dRx3h9RCyIiFOBPYDLgNsldUhsV9druBTYR+mTzOU8l6Wvx1LgyxGxa8mf7SPiyfz5WP8cSFKt58QaiQPCyiZp5/xT563ATRHxXGKbYyTtn/+nfpvsq7Fr89WvkY1PN9Rpkg6StANwKXB7RKwFXgLaS/q0pHZkY9bblbR7DehWc4I14Rbg65K6S9qR/5yzSH1CrlNey23ATyTtlA+TXEj2ab4ctwFnSuqVP8aLG9D3TsA7wFuSOgMX1bUTSadJ6pR/PfmtfPHaxHZ1vYazyN68J0nqIKm9pJpzAw19LiuB70g6ON/nLpJOytfdBxws6YQ8jM4D9qrrcVlxHBBWjj9I+jfZp77vkY1zn1nHtj2B/yF70/oz8KuIeCxf9zPg+/mwwjcbsP8bgalkwz3tyd4wiIiVwFeB68g+Ua8iO7laY1r+9wpJf030e33e9/8CfwdWA+c2oK5S5+b7X0x2ZPX7vP96RcT9ZCfe/0g2tPPnfNX7ZfT9I2AgsJLsjfXOTexqFDBX0jtkJ6xPiYjVie2Sr2EeVp8hO5H+Ctlz/fm8TYOey4i4i+wo5tZ8aOx5spP5RMQbwElkX6lekdfz/zbxuKwg8gWDzJqX/JtSzwPbNfRoxmxL8hGEWTMg6bOStpX0EbJP1n9wOFhTc0CYNQ9fBpaTfed/LfCVpi3HzENMZmZWBx9BmJlZUouaNKtjx47RrVu3pi7DzGyr8dRTT70REZ1S61pUQHTr1o05c+Y0dRlmZlsNSS/Xtc5DTGZmluSAMDOzJAeEmZklFXoOIp/n/iqgLXBdREyqtX4M2dXJIPtZ/1fyaZVrLk/5b7LvhFdHxKAiazWz+q1Zs4aqqipWr07N0GHNWfv27enSpQvt2rUru01hAZHPrHkN8EmyOVtmS5oeEfNKNvs7MDwi/iVpNDAFGFKyfkQ+L4uZNQNVVVXstNNOdOvWjWwuP9saRAQrVqygqqqK7t27l92uyCGmCmBhfgGRD8hmAD2udIOIeDIi/pXf/QsbTnlsZs3M6tWr2X333R0OWxlJ7L777g0+8isyIDqz4UU+qtj0BVTOAu4vuR9kFyx5StI5dTWSdI6y6+zOWb58+Ycq2Mzq53DYOm3O61bkOYhUNcl5PSSNIAuIT5QsPiwilknaA3hY0gsR8b8bdRgxhWxoikGDBnneEDOzLaTIgKhiw6tAdSG76tQGJPUlm89/dESsqFkeEcvyv1+XdBfZkNVGAWFmTWfCIxO2aH+TR06ud5u2bdvSp08fqqur6dWrFzfccAM77LBDctvp06czb948Jk4s58q3W5/HHnuMyy+/nHvvvbeQ/osMiNlAT0ndyS7mcgrwhdINJO1DdoGT0yPipZLlHYA2EfHv/PZRZFcSsy1sS/8HTynnP71ZubbffnuefvppAMaMGUNlZSUXXnhhcttjjz2WY489thGra1kKOweRz2U/AXgQmA/cFhFzJY2XND7f7GJgd+BXkp6WVDNPxp7AE5KeIbvM4X0R8UBRtZrZ1mno0KEsXLiQN998k+OPP56+fftyyCGH8OyzzwIwdepUJkzIPgRNmzaN3r17069fP4YNGwbA3LlzqaiooH///vTt25cFCxYAcMUVV9C7d2969+7NlVdeCcCSJUvo1asXZ599NgcffDBHHXUU77333kY1pfazZMkShg4dysCBAxk4cCBPPvkkkB0BDB8+nJNPPpkDDjiAiRMncvPNN1NRUUGfPn1YtGgRAGPHjmX8+PEMHTqUAw44IHnEsGrVKr70pS8xePBgBgwYwD333POhn99CfwcRETOAGbWWVZbcHgeMS7RbDPQrsjYz27pVV1dz//33M2rUKH74wx8yYMAA7r77bh599FHOOOOM9UcZNS699FIefPBBOnfuzFtvvQVAZWUl559/PmPGjOGDDz5g7dq1PPXUU/z2t79l5syZRARDhgxh+PDhfOQjH2HBggXccsstXHvttZx88snccccdnHbaafXuZ4899uDhhx+mffv2LFiwgFNPPXX9vHHPPPMM8+fPZ7fddqNHjx6MGzeOWbNmcdVVV3H11VdvEFB/+tOfWLRoESNGjGDhwoUb7PcnP/kJRxxxBNdffz1vvfUWFRUVHHnkkXTo0GGzn2P/ktrMtirvvfce/fv3Z9CgQeyzzz6cddZZPPHEE5x++ukAHHHEEaxYsYKVK1du0O6www5j7NixXHvttaxduxaAQw89lJ/+9KdcdtllvPzyy2y//fY88cQTfPazn6VDhw7suOOOnHDCCTz++OMAdO/enf79+wPw8Y9/nCVLlmxUX2o/a9as4eyzz6ZPnz6cdNJJzJv3n5+DDR48mL333pvtttuO/fbbj6OOOgqAPn36bND/ySefTJs2bejZsyc9evTghRde2GC/Dz30EJMmTaJ///4cfvjhrF69mldeeWXzn2ha2GyuZtbylZ6DqJG68Fntr3VWVlYyc+ZM7rvvPvr378/TTz/NF77wBYYMGcJ9993H0UcfzXXXXZfsq8Z22223/nbbtm2TQ0yp/Vx99dXsueeePPPMM6xbt4727dsn+2zTps36+23atKG6+j9Xna39eGrfjwjuuOMODjzwwDrrbygfQZjZVm/YsGHcfPPNQDau37FjR3beeecNtlm0aBFDhgzh0ksvpWPHjixdupTFixfTo0cPzjvvPI499lieffZZhg0bxt133827777LqlWruOuuuxg6dGjZtaT2s3LlSvbee2/atGnDjTfeuP7IoiGmTZvGunXrWLRoEYsXL94oCI4++miuvvrq9QH3t7/9rcH7qM1HEGa22ZrLN9QuueQSzjzzTPr27csOO+zADTfcsNE2F110EQsWLCAiGDlyJP369WPSpEncdNNNtGvXjr322ouLL76Y3XbbjbFjx1JRUQHAuHHjGDBgQHI4KSW1n69+9at87nOfY9q0aYwYMWKzzgsceOCBDB8+nNdee43KysoNjkIAfvCDH3DBBRfQt29fIoJu3bp96K+/tqhrUg8aNCh8waCG8ddcrSHmz59Pr169mrqMVmfs2LEc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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "set_colors()\n", "plot_pmf(sample_poisson, label='Poisson sample', alpha=0.7)\n", "decorate_goals()\n", "\n", "plt.savefig('zigzag2.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But plotting PMFs is a bad way to compare distributions. It's better to use the cumulative distribution function (CDF)." ] }, { "cell_type": "code", "execution_count": 114, "metadata": {}, "outputs": [], "source": [ "from empiricaldist import Cdf\n", "\n", "def plot_cdf(sample, **options):\n", " \"\"\"Compute and plot the CDF of a sample.\"\"\"\n", " Cdf.from_seq(sample).plot(**options)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Comparing CDFs makes it clearer that the results from the simulation are consistent with the Poisson model." ] }, { "cell_type": "code", "execution_count": 116, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "set_colors()\n", "plot_cdf(sample_poisson, color='gray', label='Poisson')\n", "plot_cdf(sample_sim, label='simulation')\n", "decorate_goals('CDF')\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Warming up PyMC\n", "\n", "Soon we will want to use `pymc3` to do inference, which is really what it's for. But just to get warmed up, I will use it to generate a sample from a Poisson distribution." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " goals = pm.Poisson('goals', mu)\n", " trace = pm.sample_prior_predictive(1000)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1000" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(trace['goals'])" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.419" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_pymc = trace['goals']\n", "np.mean(sample_pymc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This example is like using a cannon to kill a fly. But it help us learn to use the cannon." ] }, { "cell_type": "code", "execution_count": 119, "metadata": {}, "outputs": [ { "data": { "image/png": "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jjzyyE/1ONrVZH3WdFHVrfhOhhTfhVlb8MEHHzBkyBAgO4KYNGkSw4cP56677gJg3333ZcWKFbz11ltrtdtrr72YMGECY8eOZcyYMQB85Stf4Wc/+xk1NTWMGTOGvn378sQTT3DYYYex2WabATBmzBgef/xxRo8eTe/evdf0vfvuu7No0aJP/XgcEGZmzaT0HESt1EXZ6n7ltLKykqeeeor777+fIUOGMGfOHL7zne8wfPhw7r//fg488EBuuOGG5L5qbbzxxmtuV1RUNMsQk+diMjMr0IgRI7jtttsAeOyxx+jWrRtbbLHFWtv89a9/Zfjw4Vx88cV069aNxYsXs3DhQvr06cMpp5zC6NGjefbZZxkxYgT33HMP77//Pu+99x533303e++9d2G1+wjCzNqltvLtuYsuuoiJEycyaNAgNt10U2666aZ625x11lm89NJLRAT77bcfgwcP5tJLL+XWW2+lU6dObLvttlx44YVsvfXWTJgwgWHDhgEwefJkdt1112YZTkppV9ekHjp0aPiCQU1z3fV3FN7HSceOTS5/+t6Fhfc97Jt9Cu/D2obnn3+efv36tXYZbVrqOZI0u6HJUD3EZGZmSQ4IMzNLckCYmVmSA8LMzJIcEGZmluSAMDOzJP8Owszapeb+GnU5X5luynTfixYtonfv3px//vn85Cc/AWD58uVst912HH/88Vx77bUA3Hzzzfz85z8nIogIjjnmGM4888zme2Dr4IBoA/x7ALP2oSnTfQP06dOH++67b01AzJgxgwEDBqxZ/8ADD3DVVVfx8MMPs/3227Ny5UpuueWWQh9DKQ8xmZkVoHa67wsuuICrr756zfLzzjuPa665BsgCpV+/ftT+wPc3v/kNY8f+84ell1xyCZdffjnbb789AF26dOHYY49tscfggDAza2a1033vsssuTJo0ac30GqtXr2b69OmMHz9+zbbjxo1j+vTp1NTUUFFRsSYMAObOncvuu+/e4vXX8hCTmVkzSU333blzZ7p27cqf/vQnXnvtNXbddVe6du3KO++8A8CoUaO44IIL2GabbTj88MNbsfr6HBBtQNXS4uePGobPQZgVLTXdN2ST6k2bNo2lS5dyzDHHrLWuc+fO7L777lxxxRXMmzePe++9d826AQMGMHv2bPbdd9+iS0/yEJOZWcEOO+wwHnzwQaqqqjjwwAPr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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "set_colors()\n", "plot_pmf(sample_poisson, label='Poisson', alpha=0.5)\n", "plot_pmf(sample_pymc, label='PyMC', alpha=0.5)\n", "decorate_goals('CDF')\n", "\n", "plt.savefig('zigzag3a.png', dpi=150)" ] }, { "cell_type": "code", "execution_count": 120, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "set_colors()\n", "plot_cdf(sample_poisson, label='Poisson')\n", "plot_cdf(sample_pymc, label='PyMC')\n", "decorate_goals('CDF')\n", "\n", "plt.savefig('zigzag3b.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Evaluating the Poisson distribution\n", "\n", "One of the nice things about the Poisson distribution is that we can compute its PMF TBLlytically, and SciPy provides an implementation." ] }, { "cell_type": "code", "execution_count": 121, "metadata": {}, "outputs": [ { "data": { "image/png": "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eQ/CbCsg6VhJO0p6F9kn6585HKzaHBBmW4cvAGvJrvl/C/hidcsx8yEmMzNrg/cgzMwsqUsNmlVbWxuDBg2qdhlmZtuMBQsWrIuIvql5XSogBg0axPz586tdhpnZNkPSM23N8yEmMzNLckCYmVmSA8LMzJK61DkIM9u6vfnmmzQ1NfHaa6kRPqxIPXr0oH///nTv3r3sNg4IM+s0TU1N9O7dm0GDBpGNBWidISJYv349TU1NDB48uOx2PsRkZp3mtddeY4899nA4dDJJ7LHHHhXvuTkgzKxTORyqY3NedweEmZkl+RyEmVVN3cy6Du2vcfJG97DaSE1NDXV1dTQ3NzN06FBmzpzJzjvvnFx29uzZPPnkk1x4YTl3zu0Y06ZNY8aMGfTt25fm5mauuOIKxo8fz7Rp07jssstYtmwZ++67LwDXXHMN5513HvPmzaO+vp5BgwbRu3dvamqyW7Zff/31fPjDH97sWhwQ24mO/o9Yqpz/lGZbi549e7Jw4UIATjzxRBoaGjjvvPOSy44fP57x48d3YnWZc889l/PPP5+lS5dy6KGHsmbNGgDq6uqYNWsWl1xyCQB33HEHw4YN26DtQw89RG1tR9yy3YeYzGw7duihh7J8+XKef/55Jk6cyIgRIzjooINYtGgRADfddBNnnnkmALfffjvDhw9n5MiRjB07FoAlS5YwevRoRo0axYgRI1i2bBkAV199NcOHD2f48OFce+21AKxcuZKhQ4fy+c9/nv32248jjzySV199dZP1DR06lG7durFu3ToAJk6cyL333gvAihUr2HXXXenbNzmMUodwQJjZdqm5uZn777+furo6vva1r7H//vuzaNEirrjiCk4++eSNlr/88st58MEHeeKJJ5g9ezYADQ0NnHPOOSxcuJD58+fTv39/FixYwA9/+EPmzp3LY489xowZM/j9738PwLJlyzjjjDNYsmQJu+22G3feeecma5w7dy477LDDOyHQp08fBgwYwOLFi7n11ls5/vjjN2ozbtw4Ro0axZgxY7b0JXJAmNn25dVXX2XUqFHU19czcOBATjvtNB599FFOOukkAA4//HDWr1/PCy+8sEG7Qw45hFNOOYUZM2bw1ltvAXDwwQdzxRVXcNVVV/HMM8/Qs2dPHn30UY499lh69erFLrvswnHHHccjjzwCwODBgxk1ahQAH/rQh1i5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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from scipy.stats import poisson\n", "\n", "xs = np.arange(11)\n", "mu = 2.4\n", "\n", "ps = poisson.pmf(xs, mu)\n", "set_colors()\n", "plt.bar(xs, ps, label='Poisson PMF')\n", "decorate_goals()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the probability of scoring 4 goals in a game if the long-term rate is 2.4 goals per game." ] }, { "cell_type": "code", "execution_count": 122, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.1254084986272838" ] }, "execution_count": 122, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = 4\n", "poisson.pmf(data, mu)" ] }, { "cell_type": "code", "execution_count": 123, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.00000000e+00, 1.81555589e-05, 2.50026149e-04, 1.08944747e-03,\n", " 2.96358283e-03, 6.22748873e-03, 1.11145981e-02, 1.77229800e-02,\n", " 2.60231799e-02, 3.58778394e-02, 4.70665182e-02, 5.93114635e-02,\n", " 7.23017337e-02, 8.57142371e-02, 9.92310359e-02, 1.12552785e-01,\n", " 1.25408499e-01, 1.37562022e-01, 1.48815687e-01, 1.59011643e-01,\n", " 1.68031356e-01, 1.75793720e-01, 1.82252178e-01, 1.87391193e-01,\n", " 1.91222339e-01, 1.93780255e-01, 1.95118616e-01, 1.95306276e-01,\n", " 1.94423652e-01, 1.92559429e-01, 1.89807621e-01, 1.86264988e-01,\n", " 1.82028837e-01, 1.77195165e-01, 1.71857150e-01, 1.66103943e-01,\n", " 1.60019753e-01, 1.53683172e-01, 1.47166728e-01, 1.40536620e-01,\n", " 1.33852618e-01, 1.27168093e-01, 1.20530156e-01, 1.13979883e-01,\n", " 1.07552602e-01, 1.01278229e-01, 9.51816428e-02, 8.92830728e-02,\n", " 8.35984979e-02, 7.81400478e-02, 7.29163965e-02, 6.79331437e-02,\n", " 6.31931800e-02, 5.86970320e-02, 5.44431858e-02, 5.04283870e-02,\n", " 4.66479169e-02, 4.30958446e-02, 3.97652554e-02, 3.66484555e-02,\n", " 3.37371552e-02, 3.10226309e-02, 2.84958667e-02, 2.61476786e-02,\n", " 2.39688206e-02, 2.19500757e-02, 2.00823331e-02, 1.83566515e-02,\n", " 1.67643118e-02, 1.52968592e-02, 1.39461360e-02, 1.27043063e-02,\n", " 1.15638747e-02, 1.05176971e-02, 9.55898817e-03, 8.68132323e-03,\n", " 7.87863661e-03, 7.14521711e-03, 6.47570069e-03, 5.86506121e-03,\n", " 5.30859947e-03, 4.80193100e-03, 4.34097292e-03, 3.92193024e-03,\n", " 3.54128163e-03, 3.19576513e-03, 2.88236372e-03, 2.59829116e-03,\n", " 2.34097794e-03, 2.10805767e-03, 1.89735382e-03, 1.70686702e-03,\n", " 1.53476276e-03, 1.37935980e-03, 1.23911899e-03, 1.11263277e-03,\n", " 9.98615235e-04, 8.95892745e-04, 8.03395164e-04, 7.20147598e-04,\n", " 6.45262707e-04])" ] }, "execution_count": 123, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mus = np.linspace(0, 15, num=101)\n", "likelihood = poisson.pmf(4, mus)\n", "likelihood" ] }, { "cell_type": "code", "execution_count": 124, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(mus, likelihood)\n", "plt.xlabel('Goals per game (mu)')\n", "plt.ylabel('Likelihood');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bayesian inference with grid approximation\n", "\n", "Ok, it's finally time to do some inference! The function we just wrote computes the likelihood of the data, given a hypothetical value of `mu`:\n", "\n", "$\\mathrm{Prob}~(x ~|~ \\mu)$\n", "\n", "But what we really want is the distribution of `mu`, given the data:\n", "\n", "$\\mathrm{Prob}~(\\mu ~|~ x)$\n", "\n", "If only there were some theorem that relates these probabilities!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll start with a uniform prior just to keep things simple. We'll choose a better prior later." ] }, { "cell_type": "code", "execution_count": 125, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "101" ] }, "execution_count": 125, "metadata": {}, "output_type": "execute_result" } ], "source": [ "uniform_prior = Pmf(1, mus)\n", "uniform_prior.normalize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Initially `uniform_prior` represents the prior distribution of `mu`." ] }, { "cell_type": "code", "execution_count": 126, "metadata": {}, "outputs": [], "source": [ "def decorate_rate(ylabel='PDF'):\n", " \"\"\"Decorate the axes.\"\"\"\n", " plt.xlabel('Goals per game (mu)')\n", " plt.ylabel(ylabel)\n", " plt.title('Distribution of goal scoring rate')\n", " \n", " handles, labels = plt.gca().get_legend_handles_labels()\n", " if len(labels):\n", " plt.legend()" ] }, { "cell_type": "code", "execution_count": 127, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "uniform_prior.plot(label='prior')\n", "decorate_rate()\n", "\n", "plt.savefig('zigzag4.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can update it with the data and plot the posterior." ] }, { "cell_type": "code", "execution_count": 128, "metadata": {}, "outputs": [], "source": [ "data = 4\n", "likelihood = poisson.pmf(data, mus)" ] }, { "cell_type": "code", "execution_count": 129, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.06595319262654087" ] }, "execution_count": 129, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior1 = uniform_prior * likelihood\n", "posterior1.normalize()" ] }, { "cell_type": "code", "execution_count": 130, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "posterior1.plot(label='posterior')\n", "decorate_rate()\n", "\n", "plt.savefig('zigzag5.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With a uniform prior, the posterior is the likelihood function, and the MAP is the value of `mu` that maximizes likelihood, which is the observed number of goals, 4.\n", "\n", "This result is probably not reasonable, because the prior was not reasonable." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## A better prior\n", "\n", "To construct a better prior, I'll use a Gamma distribution with parameters chosen to be consistent with previous playoff games." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use `make_gamma_dist` to construct a prior suite with the given parameters." ] }, { "cell_type": "code", "execution_count": 131, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import gamma\n", "\n", "def make_gamma_dist(xs, alpha, beta):\n", " \"\"\"Makes a Pmf based on a gamma distribution.\n", " \n", " xs: places to evaluate the PDF\n", " alpha, beta: parameters of the distribution\n", " \n", " returns: Suite\n", " \"\"\"\n", " ps = gamma(a=alpha, scale=1/beta).pdf(xs)\n", " pmf = Pmf(ps, xs)\n", " pmf.normalize()\n", " return pmf" ] }, { "cell_type": "code", "execution_count": 102, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(4.4, 1.8)" ] }, "execution_count": 102, "metadata": {}, "output_type": "execute_result" } ], "source": [ "alpha = 4.4\n", "beta = 1.8\n", "\n", "alpha, beta" ] }, { "cell_type": "code", "execution_count": 132, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.4441837515202747, 1.1644330431484435)" ] }, "execution_count": 132, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mus = np.linspace(0, 10, num=101)\n", "gamma_prior = make_gamma_dist(mus, alpha, beta)\n", "gamma_prior.mean(), gamma_prior.std()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like." ] }, { "cell_type": "code", "execution_count": 133, "metadata": {}, "outputs": [ { "data": { "image/png": "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n20/wJ+uGs1lY7MClkuJj2HODRP43vPL+c2bazlYVcP3zz+pnaM1ncmv31jD2l3lQd3n8D4p/PLik5tdn5+fz8svv8yyZcuoq6tj7NixjBs3DoDLLruMm266CYCf//znPP7443znO85IwwcOHOCdd95h7ty5XHzxxXz44Yc89thjjB8/nuXLl5Obm8uhQ4c466yz+P3vf8+0adP4+c9/zoIFC1i7di0zZszgkksuoWfPnixYsID4+Hg2bdrE9OnTA/ant2HDBh5//HEmTZrEDTfcwEMPPcQPf+iMxhwfH8+iRYsAeOuttwDnbrWZM2fy9ttvM2TIEK6//npmz57NHXfc8aVtToRdcXQSz+cXsnjrfu6eNrLZpNEoPiaKv1w7livHZfHAOwUsWFvSTlEa0z4WLVrE1KlTSUhIIDk5mYsvvvjoutWrV3P66aczcuRInnnmGdasWXN03cUXX4yIMHLkSHr16sXIkSPx+XycfPLJbNu2DYDY2FimTJkCwMiRIznzzDOJiYlh5MiRR8vU1tZy0003MXLkSK688krWrl0bMM7s7GwmTZoEwHXXXfeFD/2rr776S+U3bNhA//79GTJkCAAzZsxg4cKFx9zmeNgVRyew/1ANv39rPRP6d+fKvGMnjUZRPuG300awtricH720gre+ewa9u8aHOFLTGR3ryiBUjjWA3cyZM3nttdcYPXo0Tz75JO+9997RdXFxcQD4fL6j043zdXXOCMAxMTFHb2/1L+df5v7776dXr16sWLGChoYG4uMD/281vU3Wfz4xMbFN59XcNsfDrjg6gd//az2V1XX89tIRbbpfOy46iv+bPoaaugbueH4Z9Q02WqTpGCZPnswbb7xBdXU1lZWV/POf/zy6rqKigoyMDGpra3nmmWdCcvyDBw+SkZGBz+fj6aefpr6+PmC5HTt28PHHHwPw7LPPMnny5GPud+jQoWzbto2CggIAnn76ac4888zgBo8ljg7vs+37eT6/kBtP78+QXslt3n5AehK/vuRkPtmyn9nvFYQgQmPa3/jx47nkkksYPXo0l112GXl5eXTt2hVwGs1POeUUzjvvPIYOHRqS4996663MmTOHiRMnsnHjxmavBIYNG8acOXMYNWoU+/fv55Zbjj1EfXx8PH/729+48sorj1ajzZo1K+jxd4oxx/Py8rQzDuSkqlzylw/ZW3mE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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "gamma_prior.plot(label='gamma prior')\n", "decorate_rate()\n", "\n", "plt.savefig('zigzag6.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can update this prior using the observed data." ] }, { "cell_type": "code", "execution_count": 134, "metadata": {}, "outputs": [], "source": [ "data = 4\n", "likelihood = poisson.pmf(data, mus)" ] }, { "cell_type": "code", "execution_count": 135, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.10917679489111866" ] }, "execution_count": 135, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior2 = gamma_prior * likelihood\n", "posterior2.normalize()" ] }, { "cell_type": "code", "execution_count": 136, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "gamma_prior.plot(color='gray', label='prior')\n", "posterior2.plot(label='posterior')\n", "decorate_rate()\n", "\n", "plt.savefig('zigzag7.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Back to PyMC\n", "\n", "Previously we used PyMC to draw a sample from a Poisson distribution with known `mu`.\n", "\n", "Now we'll use it to draw a sample from a gamma distribution of `mu`, with known `alpha` and `beta`.\n", "\n", "And then use that value of `mu` to draw a sample from a Poisson distribution.\n", "\n", "Here are the parameters we used to create the gamma prior:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "4.8 2\n" ] } ], "source": [ "print(alpha, beta)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the PyMC model looks like:" ] }, { "cell_type": "code", "execution_count": 142, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " mu = pm.Gamma('mu', alpha, beta)\n", " goals = pm.Poisson('goals', mu)\n", " trace = pm.sample_prior_predictive(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The distribution of `mu` from this model is the prior. Let's see what it looks like:" ] }, { "cell_type": "code", "execution_count": 143, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.445926077198612" ] }, "execution_count": 143, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_prior_pymc = trace['mu']\n", "np.mean(sample_prior_pymc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And compare it to a sample from the gamma prior." ] }, { "cell_type": "code", "execution_count": 144, "metadata": {}, "outputs": [], "source": [ "sample_prior_gamma = gamma_prior.sample(1000, replace=True)" ] }, { "cell_type": "code", "execution_count": 145, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_prior_gamma, label='prior gamma')\n", "plot_cdf(sample_prior_pymc, label='prior pymc')\n", "decorate_rate('CDF')\n", "\n", "plt.savefig('zigzag10.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It looks pretty good." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Prior predictive\n", "\n", "The distributions of `goals` from this model is the prior predictive." ] }, { "cell_type": "code", "execution_count": 146, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.43" ] }, "execution_count": 146, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_prior_pred_pymc = trace['goals']\n", "np.mean(sample_prior_pred_pymc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And let's compare it to a prior predictive distribution estimated by sampling." ] }, { "cell_type": "code", "execution_count": 147, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.492" ] }, "execution_count": 147, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_prior_pred = np.random.poisson(sample_prior_gamma)\n", "np.mean(sample_prior_pred)" ] }, { "cell_type": "code", "execution_count": 148, "metadata": {}, "outputs": [], "source": [ "def plot_goals(sample, pos='left', **options):\n", " options['align'] = 'edge'\n", " if pos == 'left':\n", " options['width'] = -0.45\n", " else:\n", " options['width'] = 0.45\n", " \n", " cdf = Cdf.from_seq(sample)\n", " plt.plot(cdf.qs, cdf.ps, **options)" ] }, { "cell_type": "code", "execution_count": 150, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "set_colors()\n", "plot_cdf(sample_prior_pred, label='prior pred grid')\n", "plot_cdf(sample_prior_pred_pymc, label='prior pred PyMC')\n", "decorate_goals('CDF')\n", "\n", "plt.savefig('zigzag11.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looks good." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## When do we get to inference?\n", "\n", "Finally, we are ready to use PyMC for actual inference. We just have to make one small change.\n", "\n", "Instead of generating `goals`, we'll mark goals as `observed` and provide the observed data, `4`.\n", "\n", "And instead of called `sample_prior_predictive`, we'll call `sample`, which is understood to sample from the posterior distribution of `mu`." ] }, { "cell_type": "code", "execution_count": 151, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Auto-assigning NUTS sampler...\n", "Initializing NUTS using jitter+adapt_diag...\n", "Multiprocess sampling (2 chains in 2 jobs)\n", "NUTS: [mu]\n", "Sampling 2 chains, 0 divergences: 100%|██████████| 2000/2000 [00:00<00:00, 2301.77draws/s]\n", "The acceptance probability does not match the target. It is 0.8821095734410509, but should be close to 0.8. Try to increase the number of tuning steps.\n" ] } ], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " mu = pm.Gamma('mu', alpha, beta)\n", " goals = pm.Poisson('goals', mu, observed=4)\n", " trace = pm.sample(500)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With `goals` fixed, the only unknown is `mu`, so `trace` contains a sample drawn from the posterior distribution of `mu`. We can plot the posterior using a function provided by PyMC:" ] }, { "cell_type": "code", "execution_count": 152, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1000" ] }, "execution_count": 152, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(trace['mu'])" ] }, { "cell_type": "code", "execution_count": 153, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "with model:\n", " pm.plot_posterior(trace)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can extract a sample of `mu` from the trace." ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.9224513318372063" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post_pymc = trace['mu']\n", "np.mean(sample_post_pymc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And compare it to the sample we drew from the grid approximation:" ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.9052" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post = posterior2.sample(1000, replace=True)\n", "sample_post.mean()" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_post, label='posterior grid')\n", "plot_cdf(sample_post_pymc, label='posterior pymc')\n", "decorate_rate()\n", "\n", "plt.savefig('zigzag12.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Again, it looks pretty good." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Posterior predictive\n", "\n", "To sample from the posterior predictive distribution, we can use `sample_posterior_predictive`:" ] }, { "cell_type": "code", "execution_count": 52, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 1000/1000 [00:00<00:00, 2524.62it/s]\n" ] } ], "source": [ "with model:\n", " post_pred = pm.sample_posterior_predictive(trace, samples=1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like:" ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.95" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post_pred_pymc = post_pred['goals']\n", "np.mean(sample_post_pred_pymc)" ] }, { "cell_type": "code", "execution_count": 54, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.888" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post_pred = poisson(sample_post).rvs()\n", "sample_post_pred.mean()" ] }, { "cell_type": "code", "execution_count": 55, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "set_colors()\n", "plot_cdf(sample_post_pred, label='posterior pred grid')\n", "plot_cdf(sample_post_pred_pymc, label='posterior pred pm')\n", "decorate_goals()\n", "\n", "plt.savefig('zigzag13.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looks pretty good!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Two teams\n", "\n", "We can extend the model to estimate different values of `mu` for the two teams." ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Auto-assigning NUTS sampler...\n", "Initializing NUTS using jitter+adapt_diag...\n", "Multiprocess sampling (2 chains in 2 jobs)\n", "NUTS: [mu_TBL, mu_BOS]\n", "Sampling 2 chains, 0 divergences: 100%|██████████| 2000/2000 [00:00<00:00, 2169.16draws/s]\n", "The acceptance probability does not match the target. It is 0.8810527302399683, but should be close to 0.8. Try to increase the number of tuning steps.\n" ] } ], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " mu_BOS = pm.Gamma('mu_BOS', alpha, beta)\n", " mu_TBL = pm.Gamma('mu_TBL', alpha, beta)\n", " goals_BOS = pm.Poisson('goals_BOS', mu_BOS, observed=3)\n", " goals_TBL = pm.Poisson('goals_TBL', mu_TBL, observed=2)\n", " trace = pm.sample(500)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use `traceplot` to review the results and do some visual diagnostics." ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "image/png": "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aBEhQggdeYP4dc/zfutej+d+xS/D+iZRPyPAE8AXhBBXkaVhHxdC/Md7O6T7C8/zFv2/V4HfJir9CLgOXN+Qif7vyIDtXoxjesO/p4DFezCO73VWhBDjAP7fq/73o/l9G25x743m8zvghvt0NJd3x63u69E8vodEAVoEAEIIgewFOeN53i/e6/HcbwghhoUQWf/rGPBJ4Ow9HdR9gOd5P+d53pTneduQTcJ/6Hnej97jYd03CCESQohU8DXwaSBSkQU8z1sG5oUQe/1vfQI4fQ+G8jKwWwixXQhhII/j37kH4/he53eAH/e//nHgSxu+/yNCCFMIsR3YDbx0D8Z3X3Kbe280n3fJbe7T0VzeBbe5r0fz+B6i3esBvJcIIf4z8DFgSAhxHfiHnuf9u3s7qvuGJ4A/B7zl128D/H3P837/3g3pvmIc+A++MpEC/IbneZGkfMTbMQr8tlyDoQH/yfO8L9/bId1X/BXg1/3A6DLw59/rAXieZwsh/jLwFUAF/r3neafe63F8L7HVvRT4x8BvCCF+EpgD/hSA53mnhBC/gQy+beBnPM9z7snA70+2vPcSzec7Ycv7tBDieaK5fDeIjsn3EOF5UZloRERERERERERERETE/UBU4hgREREREREREREREXGfEAVoERERERERERERERER9wlRgBYREREREREREREREXGfEAVoERERERERERERERER9wlRgBYREREREREREREREXGfEAVoERERERERERERERER9wlRgBYREREREREREREREXGfEAVoERERERERERERERER9wn/f9cqrR6PTeaTAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "with model:\n", " pm.traceplot(trace);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the posterior distribitions for `mu_BOS` and `mu_TBL`." ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "mu_TBL = trace['mu_TBL']\n", "plot_cdf(mu_TBL, label='mu_TBL posterior')\n", "\n", "mu_BOS = trace['mu_BOS']\n", "plot_cdf(mu_BOS, label='mu_BOS posterior')\n", "\n", "decorate_rate('CDF')\n", "np.mean(mu_BOS), np.mean(mu_TBL)\n", "\n", "plt.savefig('zigzag14.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On the basis of one game here's the probability that Boston is the better team." ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.617" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(mu_BOS > mu_TBL)" ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(mu_BOS == mu_TBL)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Predictions\n", "\n", "Even if Boston is the better team, that doesn't mean they'll win the next game.\n", "\n", "We can use `sample_posterior_predictive` to generate predictions." ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 1000/1000 [00:00<00:00, 1443.61it/s]\n" ] } ], "source": [ "with model:\n", " post_pred = pm.sample_posterior_predictive(trace, samples=1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the posterior predictive distributions of goals scored." ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "goals_BOS = post_pred['goals_BOS'].flatten()\n", "goals_TBL = post_pred['goals_TBL'].flatten()" ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "set_colors()\n", "plot_cdf(goals_TBL, label='TBL')\n", "plot_cdf(goals_BOS, label='BOS')\n", "decorate_goals('CDF')\n", "\n", "plt.savefig('zigzag15.png', dpi=150)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the chance that Boston wins the next game." ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.475" ] }, "execution_count": 64, "metadata": {}, "output_type": "execute_result" } ], "source": [ "win = np.mean(goals_BOS > goals_TBL)\n", "win" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The chance that they lose." ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.338" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lose = np.mean(goals_TBL > goals_BOS)\n", "lose" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the chance of a tie." ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.187" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tie = np.mean(goals_BOS == goals_TBL)\n", "tie" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Going hierarchical\n", "\n", "So far, all of this is based on a gamma prior. To choose the parameters of the prior, I used data from previous Stanley Cup finals and computed a maximum likelihood estimate (MLE). But that's not correct, because\n", "\n", "1. It assumes that the observed goal counts are the long-term goal-scoring rates.\n", "2. It treats `alpha` and `beta` as known values rather than parameters to estimate.\n", "\n", "In other words, I have ignored two important sources of uncertainty. As a result, my predictions are almost certainly too confident.\n", "\n", "The solution is a hierarchical model, where `alpha` and `beta` are the parameters that control `mu` and `mu` is the parameter that controls `goals`. Then we can use observed `goals` to update the distributions of all three unknown parameters.\n", "\n", "Of course, now we need a prior distribution for `alpha` and `beta`. A common choice is the half Cauchy distribution (see [Gelman](http://www.stat.columbia.edu/~gelman/research/published/taumain.pdf)), but on advice of counsel, I'm going with exponential." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a PyMC model that generates `alpha` and `beta` from an exponential distribution." ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " alpha = pm.Exponential('alpha', lam=1)\n", " beta = pm.Exponential('beta', lam=1)\n", " trace = pm.sample_prior_predictive(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the distributions of `alpha` and `beta` look like." ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9842304166724799" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sample_prior_alpha = trace['alpha']\n", "plot_cdf(sample_prior_alpha, label='alpha prior')\n", "sample_prior_beta = trace['beta']\n", "plot_cdf(sample_prior_beta, label='beta prior')\n", "\n", "plt.xscale('log')\n", "plt.xlabel('Parameter of a gamma distribution')\n", "plt.ylabel('CDF')\n", "np.mean(sample_prior_alpha)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we have `alpha` and `beta`, we can generate `mu`." ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " alpha = pm.Exponential('alpha', lam=1)\n", " beta = pm.Exponential('beta', lam=1)\n", " mu = pm.Gamma('mu', alpha, beta)\n", " trace = pm.sample_prior_predictive(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the prior distribution of `mu` looks like." ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "12.976167851569219" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sample_prior_mu = trace['mu']\n", "plot_cdf(sample_prior_mu, label='mu prior hierarchical')\n", "decorate_rate('CDF')\n", "np.mean(sample_prior_mu)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In effect, the model is saying \"I have never seen a hockey game before. As far as I know, it could be soccer, could be basketball, could be pinball.\"\n", "\n", "If we zoom in on the range 0 to 10, we can compare the prior implied by the hierarchical model with the gamma prior I hand picked." ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_cdf(sample_prior_mu, label='mu prior hierarchical')\n", "plot_cdf(sample_prior_gamma, label='mu prior gamma', color='gray')\n", "plt.xlim(0, 10)\n", "decorate_rate('CDF')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Obviously, they are very different. They agree that the most likely values are less than 10, but the hierarchical model admits the possibility that `mu` could be orders of magnitude bigger.\n", "\n", "Strange as it sounds, that's probably what we want in a non-committal prior.\n", "\n", "Ok, last step of the forward process, let's generate some goals." ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " alpha = pm.Exponential('alpha', lam=1)\n", " beta = pm.Exponential('beta', lam=1)\n", " mu = pm.Gamma('mu', alpha, beta)\n", " goals = pm.Poisson('goals', mu)\n", " trace = pm.sample_prior_predictive(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the prior predictive distribution of goals." ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [], "source": [ "sample_prior_goals = trace['goals']" ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5.944" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "set_colors()\n", "plot_cdf(sample_prior_goals, label='goals prior')\n", "decorate_goals('CDF')\n", "np.mean(sample_prior_goals)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To see whether that distribution is right, I ran samples using SciPy." ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [], "source": [ "import scipy.stats as st\n", "\n", "def forward_hierarchical(size=1):\n", " alpha = st.expon().rvs(size=size)\n", " beta = st.expon().rvs(size=size)\n", " mu = st.gamma(a=alpha, scale=1/beta).rvs(size=size)\n", " goals = st.poisson(mu).rvs(size=size)\n", " return goals[0]\n", "\n", "sample_prior_goals_st = [forward_hierarchical() for i in range(1000)];" ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "6.937" ] }, "execution_count": 76, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "set_colors()\n", "plot_cdf(sample_prior_goals, label='goals prior')\n", "plot_cdf(sample_prior_goals_st, label='goals prior scipy')\n", "decorate_goals('CDF')\n", "plt.xlim(0, 50)\n", "plt.legend(loc='lower right')\n", "np.mean(sample_prior_goals_st)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Hierarchical inference\n", "\n", "Once we have the forward process working, we only need a small change to run the reverse process." ] }, { "cell_type": "code", "execution_count": 77, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Auto-assigning NUTS sampler...\n", "Initializing NUTS using jitter+adapt_diag...\n", "Multiprocess sampling (2 chains in 2 jobs)\n", "NUTS: [mu, beta, alpha]\n", "Sampling 2 chains, 1 divergences: 100%|██████████| 3000/3000 [00:02<00:00, 1444.74draws/s]\n", "There was 1 divergence after tuning. Increase `target_accept` or reparameterize.\n" ] } ], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " alpha = pm.Exponential('alpha', lam=1)\n", " beta = pm.Exponential('beta', lam=1)\n", " mu = pm.Gamma('mu', alpha, beta)\n", " goals = pm.Poisson('goals', mu, observed=[3, 3])\n", " trace = pm.sample(1000)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the posterior distribution of `mu`. The posterior mean is close to the observed value, which is what we expect with a weakly informative prior." ] }, { "cell_type": "code", "execution_count": 78, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.865235353825642" ] }, "execution_count": 78, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sample_post_mu = trace['mu']\n", "plot_cdf(sample_post_mu, label='mu posterior')\n", "decorate_rate('CDF')\n", "np.mean(sample_post_mu)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Two teams\n", "\n", "We can extend the model to estimate different values of `mu` for the two teams." ] }, { "cell_type": "code", "execution_count": 79, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Auto-assigning NUTS sampler...\n", "Initializing NUTS using jitter+adapt_diag...\n", "Multiprocess sampling (2 chains in 2 jobs)\n", "NUTS: [mu_TBL, mu_BOS, beta, alpha]\n", "Sampling 2 chains, 0 divergences: 100%|██████████| 3000/3000 [00:03<00:00, 861.25draws/s]\n" ] } ], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " alpha = pm.Exponential('alpha', lam=1)\n", " beta = pm.Exponential('beta', lam=1)\n", " mu_BOS = pm.Gamma('mu_BOS', alpha, beta)\n", " mu_TBL = pm.Gamma('mu_TBL', alpha, beta)\n", " goals_BOS = pm.Poisson('goals_BOS', mu_BOS, observed=[3, 3])\n", " goals_TBL = pm.Poisson('goals_TBL', mu_TBL, observed=[2, 3])\n", " trace = pm.sample(1000, nuts_kwargs=dict(target_accept=0.95))" ] }, { "cell_type": "code", "execution_count": 80, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "with model:\n", " pm.traceplot(trace)" ] }, { "cell_type": "code", "execution_count": 81, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "with model:\n", " pm.plot_posterior(trace['mu_BOS'])" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "with model:\n", " pm.plot_posterior(trace['mu_TBL'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the posterior distribitions for `mu_TBL` and `mu_BOS`." ] }, { "cell_type": "code", "execution_count": 83, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.5273712319352972, 2.857168894779832)" ] }, "execution_count": 83, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sample_post_mu_TBL = trace['mu_TBL']\n", "plot_cdf(sample_post_mu_TBL, label='mu_TBL posterior')\n", "\n", "sample_post_mu_BOS = trace['mu_BOS']\n", "plot_cdf(sample_post_mu_BOS, label='mu_BOS posterior')\n", "\n", "decorate_rate('CDF')\n", "np.mean(sample_post_mu_TBL), np.mean(sample_post_mu_BOS)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On the basis of one game (and never having seen a previous game), here's the probability that Boston is the better team." ] }, { "cell_type": "code", "execution_count": 84, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.603" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(sample_post_mu_BOS > sample_post_mu_TBL)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## More background\n", "\n", "But let's take advantage of more information. Here are the results from the seven most recent Stanley Cup finals, ignoring games that went into overtime." ] }, { "cell_type": "code", "execution_count": 85, "metadata": {}, "outputs": [], "source": [ "data = dict(BOS13 = [2, 1, 2],\n", " CHI13 = [0, 3, 3],\n", " NYR14 = [0, 2],\n", " LAK14 = [3, 1],\n", " TBL15 = [1, 4, 3, 1, 1, 0],\n", " CHI15 = [2, 3, 2, 2, 2, 2],\n", " SJS16 = [2, 1, 4, 1],\n", " PIT16 = [3, 3, 2, 3],\n", " NSH17 = [3, 1, 5, 4, 0, 0],\n", " PIT17 = [5, 4, 1, 1, 6, 2],\n", " VGK18 = [6, 2, 1, 2, 3],\n", " WSH18 = [4, 3, 3, 6, 4],\n", " BOS19 = [2, 7, 2, 1, 5, 1],\n", " STL19 = [2, 2, 4, 2, 1, 4],\n", " BOS20 = [3, 2],\n", " TBL20 = [2, 3],\n", " )" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's how we can get the data into the model." ] }, { "cell_type": "code", "execution_count": 86, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Auto-assigning NUTS sampler...\n", "Initializing NUTS using jitter+adapt_diag...\n", "Multiprocess sampling (2 chains in 2 jobs)\n", "NUTS: [mu_TBL20, mu_BOS20, mu_STL19, mu_BOS19, mu_WSH18, mu_VGK18, mu_PIT17, mu_NSH17, mu_PIT16, mu_SJS16, mu_CHI15, mu_TBL15, mu_LAK14, mu_NYR14, mu_CHI13, mu_BOS13, beta, alpha]\n", "Sampling 2 chains, 0 divergences: 100%|██████████| 3000/3000 [00:13<00:00, 224.03draws/s]\n" ] } ], "source": [ "model = pm.Model()\n", "\n", "with model:\n", " alpha = pm.Exponential('alpha', lam=1)\n", " beta = pm.Exponential('beta', lam=1)\n", " \n", " mu = dict()\n", " goals = dict()\n", " for name, observed in data.items():\n", " mu[name] = pm.Gamma('mu_'+name, alpha, beta)\n", " goals[name] = pm.Poisson(name, mu[name], observed=observed)\n", " \n", " trace = pm.sample(500, nuts_kwargs=dict(target_accept=0.95))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the posterior means." ] }, { "cell_type": "code", "execution_count": 90, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.479121501369579" ] }, "execution_count": 90, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post_mu_BOS = trace['mu_BOS20']\n", "np.mean(sample_post_mu_BOS)" ] }, { "cell_type": "code", "execution_count": 91, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.4738678038205064" ] }, "execution_count": 91, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample_post_mu_TBL = trace['mu_TBL20']\n", "np.mean(sample_post_mu_TBL)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "They are lower with the background information than without, and closer together. Here's the updated chance that Boston is the better team." ] }, { "cell_type": "code", "execution_count": 92, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.4935" ] }, "execution_count": 92, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(sample_post_mu_BOS > sample_post_mu_TBL)" ] }, { "cell_type": "code", "execution_count": 93, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plot_cdf(trace['alpha'], label='alpha')\n", "plot_cdf(trace['beta'], label='beta')\n", "\n", "plt.xlabel('Parameter of a gamma distribution')\n", "plt.ylabel('CDF')\n", "plt.legend();" ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "4.360177013060098" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(trace['alpha'])" ] }, { "cell_type": "code", "execution_count": 95, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.7947170342792527" ] }, "execution_count": 95, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(trace['beta'])" ] }, { "cell_type": "code", "execution_count": 96, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.475142954843771" ] }, "execution_count": 96, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(trace['alpha'] / trace['beta'])" ] }, { "cell_type": "code", "execution_count": 97, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1.6342667744048895" ] }, "execution_count": 97, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(trace['alpha'] / trace['beta']**2)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.7.9" } }, "nbformat": 4, "nbformat_minor": 4 }