{ "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": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEWCAYAAACXGLsWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAHZhJREFUeJzt3X2cVnWd//HXGxxE0oyEtRXQwdtURrxBsmyFVjJaTc2frrjqaqs/t3axNpMUc82sTbKth/nLMlJWS0vM6BG1qCublJYKg0LcqElEMGE1QmriHTef3x/nO3Q5XDPfGZgz1zjzfj4e8/A653zP93yu68LrfZ3vOdc5igjMzMza06/WBZiZWc/nsDAzsyyHhZmZZTkszMwsy2FhZmZZDgszM8tyWNgOk3STpH/vor72lvSipP5pep6kC7ui79TfPZLO66r+OrHdz0l6VtLvu3m7qyRN6M5tlkHS1ZJur3UdfdlOtS7AejZJq4A9gU3AZmA58C1gekRsAYiID3eirwsjYm5bbSJiNbDrjlW9dXtXA/tHxDkV/b+/K/ruZB0jgE8A+0TEH7t7+2ZdwXsW1hEfiIjdgH2AacBlwC1dvRFJvfXLyz7AOgdFoRe/z72aw8I6LCKej4jZwJnAeZJGAUi6VdLn0uMhkn4s6TlJ6yU9KKmfpG8DewM/SsNMn5RULykkXSBpNfCTinmVHyj7SZov6XlJP5T01rSt8ZKaKmtsGXaRNBG4AjgzbW9xWr51WCvVdaWk30r6o6RvSdo9LWup4zxJq9MQ0qfaem0k7Z7Wb079XZn6nwDcD+yV6ri1jfU/KekZSWslXZi2vX97fadl+0n6iaR1qcY7JL2ljW2MldQo6QVJf5D05TbaVX0P07IRkmalWtZJ+monXsut73Oaf4ykX6TtLJY0vqKGkZJ+KunPku4HhrT12lv3cFhYp0XEfKAJ+Jsqiz+Rlg2lGL66olglzgVWU+yl7BoR11WsMw44GHhfG5v8R+CfgL0ohsNu6ECN9wKfB2am7Y2u0uz89PceYF+K4a+vtmrzbuAg4HjgKkkHt7HJ/wfsnvoZl2r+UBpyez+wNtVxfusVU7BdAkwA9k/rZ/tuWR24luK1ORgYAVzdRo1fAb4SEW8G9gPuaqNd1fdQxXGkHwO/BeqBYcCdaZ3zyb+WW99nScOA/wY+B7wVuBT4vqShqe13gIUUIfFZoNuPM9nrOSxse62l+J+8tY3AX1OMz2+MiAcjfwGyqyNiQ0S83Mbyb0fE0ojYAPw78Pfpg2tHnQ18OSJWRsSLwFRgUqu9ms9ExMsRsRhYDGwTOqmWM4GpEfHniFgFfAk4t4N1/D3wXxGxLCJeAj7T0b4jYkVE3B8Rr0ZEM/Bltg2bFhuB/SUNiYgXI+KRdtpVew/HUoTSlPR+vRIRD6V1OvJaVr7P5wBzImJORGyJiPuBRuDvJO0NHA38e3pePwN+1MHX0krisLDtNQxYX2X+F4EVwP9IWinp8g70taYTy38L1NE1wxJ7pf4q+96J4tt0i8qzl16i+sH3IcCAKn0N60Qdlc+x8nG7fUv6K0l3SvqdpBeA22n7tbkAOBB4UtICSSe10a6t93AE8NuI2NTGc8i9lpXPax/gjDQE9Zyk5yj24v469fWn9OWgsj+rIYeFdZqkoyk+rB5qvSx9+/1EROwLfAC4RNLxLYvb6DK35zGi4vHeFN98nwU2AIMq6upPMXTS0X7XUnxoVfa9CfhDZr3Wnk01te7rdx1c/xlgeMV05fPN9X0txfM8LA0vnUMxNLWNiHg6Is4C/gr4AnC3pDdVadfWe7gG2FvVD1B35LWsfD/WUOwxvqXi700RMS29HoNb1bZ3tedk3cdhYR0m6c3p2+idwO0RsaRKm5Mk7S9JwAsUp9tuTov/QDGe3VnnSDpE0iDgGuDuiNgM/AoYKOlESXXAlcDOFev9AahvOThbxXeBj6eDqbvyl2Mc1b45tynVchfwH5J2k7QPxTGIjv4u4C7gQ5IOTs/xqk70vRvwIvBcOg4wpa2NSDpH0tB0yvNzafbmKu3aeg/nU3yQT5P0JkkDJR2bVuvsa3k78AFJ75PUP/U1XtLwiPgtxZDUZyQNkPRuitCyGnJYWEf8SNKfKb4NfopiXPxDbbQ9AJhL8QH2MPC1iJiXll0LXJmGHS7txPa/DdxKMSQ0EPgoFGdnAf8C3EzxTXsDxYHZFt9L/10n6bEq/c5Iff8M+A3wCnBxJ+qqdHHa/kqKPa7vpP6zIuIeioP2D1AM/zycFr3agb4/AxwJPE9xwHhWO5uaCCyT9CLFwe5JEfFKlXZV38MUXB+gOAi/muK1PjOt06nXMiLWAKdQHDxvpvi3NYW/fCb9A/AOiqHOT1P8tsdqSL75kVnPks64Wgrs3Nm9HLOyeM/CrAeQ9ME05DKY4njCjxwU1pM4LMx6hn+mGI75NcXxgY/Uthyz1/MwlJmZZXnPwszMsnrNBb2GDBkS9fX1tS7DzOwNZeHChc9GxNBcu14TFvX19TQ2Nta6DDOzNxRJHfp1vIehzMwsy2FhZmZZDgszM8vqNccszOyNb+PGjTQ1NfHKK9WuQmI7YuDAgQwfPpy6urrtWt9hYWY9RlNTE7vtthv19fUU1zG0rhARrFu3jqamJkaOHLldfXgYysx6jFdeeYU99tjDQdHFJLHHHnvs0B6bw8LMehQHRTl29HV1WJiZWVapxyzSjei/AvQHbk53wapcfglwIcUdtZqBf0o3PkHSZqDl5jqrI+LkMms1s55n6qxt7q+1Q649rWG71rvwwgu55JJLOOSQQ3a4hpYfEA8Z0vadgT//+c9zxRVXbJ1+17vexS9+8Ysd3vaOKC0s0i0ubwTeS3GTlAWSZkfE8opmjwNjIuIlSR8BruMvN1N5OSIOL6s+q72u/iCoZns/HMwq3Xzzzd26vdZhUeuggHKHocYCKyJiZUS8RnErzlMqG0TEAxHxUpp8hNffh9jMrNtt2LCBE088kdGjRzNq1ChmzpzJ+PHjt15OaNddd+Wyyy7jqKOOYsKECcyfP5/x48ez7777Mnv2bABuvfVWJk+evLXPk046iXnz5m2zrVNPPZWjjjqKQw89lOnTpwNw+eWX8/LLL3P44Ydz9tlnb90mFGc1TZkyhVGjRtHQ0MDMmTMBmDdvHuPHj+f000/n7W9/O2effTZdfUXxMsNiGMWtEls0pXltuQC4p2J6oKRGSY9IOrXaCpIuSm0am5ubd7xiM+vz7r33Xvbaay8WL17M0qVLmThx4uuWb9iwgfHjx7Nw4UJ22203rrzySu6//35+8IMfcNVVV7XRa3UzZsxg4cKFNDY2csMNN7Bu3TqmTZvGLrvswqJFi7jjjjte137WrFksWrSIxYsXM3fuXKZMmcIzzzwDwOOPP87111/P8uXLWblyJT//+c937IVopcywqHbovWrUSToHGAN8sWL23hExhuJevNdL2m+bziKmR8SYiBgzdGj2oolmZlkNDQ3MnTuXyy67jAcffJDdd9/9dcsHDBiwNUAaGhoYN24cdXV1NDQ0sGrVqk5t64YbbmD06NEcc8wxrFmzhqeffrrd9g899BBnnXUW/fv3Z88992TcuHEsWLAAgLFjxzJ8+HD69evH4Ycf3ulacso8wN0EjKiYHg6sbd1I0gTgU8C4iGi5QT0RsTb9d6WkecARFHcRMzMrzYEHHsjChQuZM2cOU6dO5YQTTnjd8rq6uq2nofbr14+dd9556+NNm4o74e60005s2bJl6zrVft8wb9485s6dy8MPP8ygQYMYP3589ncQ7Q0ttdQB0L9//621dJUy9ywWAAdIGilpADAJmF3ZQNIRwDeAkyPijxXzB0vaOT0eAhwLVB4YNzMrxdq1axk0aBDnnHMOl156KY899lin+6ivr2fRokVs2bKFNWvWMH/+/G3aPP/88wwePJhBgwbx5JNP8sgjj2xdVldXx8aNG7dZ57jjjmPmzJls3ryZ5uZmfvaznzF27NhO17c9StuziIhNkiYD91GcOjsjIpZJugZojIjZFMNOuwLfS0ndcorswcA3JG2hCLRprc6iMrM+oBZnsy1ZsoQpU6bQr18/6urq+PrXv86ll17aqT6OPfZYRo4cSUNDA6NGjeLII4/cps3EiRO56aabOOywwzjooIM45phjti676KKLOOywwzjyyCNfd9zigx/8IA8//DCjR49GEtdddx1ve9vbePLJJ7f/CXdQr7kH95gxY8I3P3pj8amz1toTTzzBwQcfXOsyeq1qr6+khen4cLv8C24zM8tyWJiZWZbDwsx6lN4yNN7T7Ojr6rAwsx5j4MCBrFu3zoHRxVruZzFw4MDt7sM3PzKzHmP48OE0NTXhKzJ0vZY75W0vh4WZ9Rh1dXXbfSc3K5eHoczMLMthYWZmWQ4LMzPLcliYmVmWw8LMzLIcFmZmluWwMDOzLIeFmZllOSzMzCzLYWFmZlkOCzMzy3JYmJlZlsPCzMyyHBZmZpblsDAzsyzfz6KPmzprSenbuPa0htK3YWbl8p6FmZllOSzMzCzLYWFmZlkOCzMzy3JYmJlZlsPCzMyyHBZmZpblsDAzsyyHhZmZZTkszMwsq9SwkDRR0lOSVki6vMrySyQtl/RLSf8raZ+KZedJejr9nVdmnWZm1r7SwkJSf+BG4P3AIcBZkg5p1exxYExEHAbcDVyX1n0r8GngHcBY4NOSBpdVq5mZta/MPYuxwIqIWBkRrwF3AqdUNoiIByLipTT5CDA8PX4fcH9ErI+IPwH3AxNLrNXMzNpRZlgMA9ZUTDeleW25ALinM+tKukhSo6TG5ubmHSzXzMzaUmZYqMq8qNpQOgcYA3yxM+tGxPSIGBMRY4YOHbrdhZqZWfvKDIsmYETF9HBgbetGkiYAnwJOjohXO7OumZl1jzLDYgFwgKSRkgYAk4DZlQ0kHQF8gyIo/lix6D7gBEmD04HtE9I8MzOrgdLulBcRmyRNpviQ7w/MiIhlkq4BGiNiNsWw067A9yQBrI6IkyNivaTPUgQOwDURsb6sWs3MrH2l3lY1IuYAc1rNu6ri8YR21p0BzCivOjMz6yj/gtvMzLJK3bOwjpk6a0np27j2tIbSt2FmvZf3LMzMLMthYWZmWQ4LMzPLcliYmVmWw8LMzLIcFmZmluWwMDOzLIeFmZllOSzMzCzLYWFmZlkOCzMzy3JYmJlZlsPCzMyyHBZmZpblsDAzsyyHhZmZZTkszMwsy2FhZmZZDgszM8tyWJiZWZbDwszMshwWZmaW5bAwM7Msh4WZmWU5LMzMLMthYWZmWQ4LMzPLcliYmVmWw8LMzLIcFmZmllVqWEiaKOkpSSskXV5l+XGSHpO0SdLprZZtlrQo/c0us04zM2vfTmV1LKk/cCPwXqAJWCBpdkQsr2i2GjgfuLRKFy9HxOFl1WdmZh1XWlgAY4EVEbESQNKdwCnA1rCIiFVp2ZYS6zAzsx1U5jDUMGBNxXRTmtdRAyU1SnpE0qnVGki6KLVpbG5u3pFazcysHWWGharMi06sv3dEjAH+Abhe0n7bdBYxPSLGRMSYoUOHbm+dZmaWUWZYNAEjKqaHA2s7unJErE3/XQnMA47oyuLMzKzjygyLBcABkkZKGgBMAjp0VpOkwZJ2To+HAMdScazDzMy6V2lhERGbgMnAfcATwF0RsUzSNZJOBpB0tKQm4AzgG5KWpdUPBholLQYeAKa1OovKzMy6UZlnQxERc4A5reZdVfF4AcXwVOv1fgE0lFmbmZl1nH/BbWZmWe3uWUi6NSLOT4/Pi4jbuqUqs5JNnbWk9G1ce5p3jq33yO1ZjK54/LEyCzEzs54rFxad+V2EmZn1UrkD3MMl3UDxA7uWx1tFxEdLq8zMzHqMXFhMqXjcWGYhZmbWc7UbFj6gbWZmkD8bqt1fXEfEyV1bjpmZ9US5Yah3Ulw59rvAo1S/OKCZmfVyubB4G8XNi86iuPrrfwPfjYhl7a5lZma9SrunzkbE5oi4NyLOA44BVgDzJF3cLdWZmVmPkL02VLr664kUexf1wA3ArHLLMjOzniR3gPs2YBRwD/CZiFjaLVWZmVmPktuzOBfYABwIfExSyy+6BUREvLnM4szMrGfI/c7CV6U1M7PsMNRA4MPA/sAvgRnppkZmZtaH5PYcbgPGAEuAvwO+VHpFZmbW4+SOWRwSEQ0Akm4B5pdfkpmZ9TS5PYuNLQ88/GRm1nfl9ixGS3ohPRawS5r22VBmZn1I7myo/t1ViJmZ9Vw+NdbMzLIcFmZmluWwMDOzLIeFmZllOSzMzCzLYWFmZlkOCzMzy3JYmJlZlsPCzMyyHBZmZpblsDAzs6xSw0LSRElPSVoh6fIqy4+T9JikTZJOb7XsPElPp7/zyqzTzMzaV1pYSOoP3Ai8HzgEOEvSIa2arQbOB77Tat23Ap8G3gGMBT4taXBZtZqZWfvK3LMYC6yIiJUR8RpwJ3BKZYOIWBURvwS2tFr3fcD9EbE+Iv4E3A9MLLFWMzNrR5lhMQxYUzHdlOZ12bqSLpLUKKmxubl5uws1M7P2lRkWqjIvunLdiJgeEWMiYszQoUM7VZyZmXVcmWHRBIyomB4OrO2Gdc3MrIuVGRYLgAMkjZQ0AJgEzO7guvcBJ0ganA5sn5DmmZlZDZQWFhGxCZhM8SH/BHBXRCyTdI2kkwEkHS2pCTgD+IakZWnd9cBnKQJnAXBNmmdmZjXQ7j24d1REzAHmtJp3VcXjBRRDTNXWnQHMKLM+MzPrGP+C28zMshwWZmaW5bAwM7Msh4WZmWU5LMzMLMthYWZmWQ4LMzPLcliYmVmWw8LMzLIcFmZmluWwMDOzLIeFmZllOSzMzCzLYWFmZlkOCzMzy3JYmJlZVqk3PzKzbU2dtaT0bVx7WkPp27C+xXsWZmaW5bAwM7MsD0MlHhowM2ub9yzMzCzLYWFmZlkOCzMzy3JYmJlZlsPCzMyyHBZmZpblsDAzsyyHhZmZZTkszMwsy2FhZmZZDgszM8tyWJiZWVapYSFpoqSnJK2QdHmV5TtLmpmWPyqpPs2vl/SypEXp76Yy6zQzs/aVdtVZSf2BG4H3Ak3AAkmzI2J5RbMLgD9FxP6SJgFfAM5My34dEYeXVZ+ZmXVcmXsWY4EVEbEyIl4D7gROadXmFOC29Phu4HhJKrEmMzPbDmWGxTBgTcV0U5pXtU1EbAKeB/ZIy0ZKelzSTyX9TbUNSLpIUqOkxubm5q6t3szMtiozLKrtIUQH2zwD7B0RRwCXAN+R9OZtGkZMj4gxETFm6NChO1ywmZlVV2ZYNAEjKqaHA2vbaiNpJ2B3YH1EvBoR6wAiYiHwa+DAEms1M7N2lBkWC4ADJI2UNACYBMxu1WY2cF56fDrwk4gISUPTAXIk7QscAKwssVYzM2tHaWdDRcQmSZOB+4D+wIyIWCbpGqAxImYDtwDflrQCWE8RKADHAddI2gRsBj4cEevLqtXMzNpXWlgARMQcYE6reVdVPH4FOKPKet8Hvl9mbWZm1nH+BbeZmWU5LMzMLMthYWZmWQ4LMzPLcliYmVlWqWdDmVnPMnXWktK3ce1pDaVvw7qf9yzMzCzLYWFmZlkOCzMzy3JYmJlZlsPCzMyyHBZmZpblsDAzsyyHhZmZZTkszMwsy2FhZmZZDgszM8tyWJiZWZbDwszMshwWZmaW5bAwM7Msh4WZmWU5LMzMLMthYWZmWQ4LMzPL8j24zaxb+P7fb2zeszAzsyyHhZmZZTkszMwsy2FhZmZZDgszM8tyWJiZWVapp85Kmgh8BegP3BwR01ot3xn4FnAUsA44MyJWpWVTgQuAzcBHI+K+Mms1MytDbzlluLSwkNQfuBF4L9AELJA0OyKWVzS7APhTROwvaRLwBeBMSYcAk4BDgb2AuZIOjIjNZdVrZr1Xb/nArqUyh6HGAisiYmVEvAbcCZzSqs0pwG3p8d3A8ZKU5t8ZEa9GxG+AFak/MzOrAUVEOR1LpwMTI+LCNH0u8I6ImFzRZmlq05Smfw28A7gaeCQibk/zbwHuiYi7W23jIuCiNHkQ8FQpT6a6IcCz3bi9nsLPu2/pq88b+s5z3ycihuYalXnMQlXmtU6mttp0ZF0iYjowvfOl7ThJjRExphbbriU/776lrz5v6NvPvZoyh6GagBEV08OBtW21kbQTsDuwvoPrmplZNykzLBYAB0gaKWkAxQHr2a3azAbOS49PB34SxbjYbGCSpJ0ljQQOAOaXWKuZmbWjtGGoiNgkaTJwH8WpszMiYpmka4DGiJgN3AJ8W9IKij2KSWndZZLuApYDm4B/7YFnQtVk+KsH8PPuW/rq84a+/dy3UdoBbjMz6z38C24zM8tyWJiZWZbDYjtImijpKUkrJF1e63q6g6QRkh6Q9ISkZZI+VuuaupOk/pIel/TjWtfSXSS9RdLdkp5M7/s7a11Td5D08fRvfKmk70oaWOuaegKHRSdVXMbk/cAhwFnp8iS93SbgExFxMHAM8K995Hm3+BjwRK2L6GZfAe6NiLcDo+kDz1/SMOCjwJiIGEVxcs6k2lbVMzgsOq8jlzHpdSLimYh4LD3+M8UHx7DaVtU9JA0HTgRurnUt3UXSm4HjKM5YJCJei4jnaltVt9kJ2CX99msQ/o0X4LDYHsOANRXTTfSRD80WkuqBI4BHa1tJt7ke+CSwpdaFdKN9gWbgv9Lw282S3lTrosoWEb8D/hNYDTwDPB8R/1PbqnoGh0XndehSJL2VpF2B7wP/FhEv1Lqeskk6CfhjRCysdS3dbCfgSODrEXEEsAHo9cfnJA2mGCkYSXHF6zdJOqe2VfUMDovO67OXIpFURxEUd0TErFrX002OBU6WtIpiyPFvJd1e25K6RRPQFBEte493U4RHbzcB+E1ENEfERmAW8K4a19QjOCw6ryOXMel10qXjbwGeiIgv17qe7hIRUyNieETUU7zXP4mIXv9NMyJ+D6yRdFCadTzFFRV6u9XAMZIGpX/zx9MHDux3RKl3yuuN2rqMSY3L6g7HAucCSyQtSvOuiIg5NazJynUxcEf6UrQS+FCN6yldRDwq6W7gMYozAB/Hl/0AfLkPMzPrAA9DmZlZlsPCzMyyHBZmZpblsDAzsyyHhZmZZTksrFeQFJK+VDF9qaSru6jvWyWd3hV9ZbZzRrq66wMlbqNbnov1Pg4L6y1eBU6TNKTWhVRKVynuqAuAf4mI95RVj9n2clhYb7GJ4sdTH2+9oPW3aUkvpv+Ol/RTSXdJ+pWkaZLOljRf0hJJ+1V0M0HSg6ndSWn9/pK+KGmBpF9K+ueKfh+Q9B1gSZV6zkr9L5X0hTTvKuDdwE2SvtiqfT9JX0v3WPixpDktz0fS8elCf0skzZC0c0t/qa6lkqanXyO3rmOapOWp9v/s3MttfY3DwnqTG4GzJe3eiXVGU9yrooHiF+oHRsRYisuRX1zRrh4YR3Gp8pvSDXEuoLgq6dHA0cD/lTQytR8LfCoiXnfPD0l7AV8A/hY4HDha0qkRcQ3QCJwdEVNa1Xha2n4DcCHwztTXQOBW4MyIaKC4IsNH0jpfjYij0z0ZdgFOalXHW4EPAodGxGHA5zr6glnf5LCwXiNdBfdbFDev6agF6V4drwK/BlouR72E4gO6xV0RsSUinqa49MXbgROAf0yXP3kU2AM4ILWfHxG/qbK9o4F56UJ1m4A7KO4b0Z53A99L2/890HJM4yCKi979Kk3fVtHXeyQ9KmkJRTAd2qrPF4BXgJslnQa8lKnB+jiHhfU211N846+898Im0r/1NBwzoGLZqxWPt1RMb+H1105rfV2coLhc/cURcXj6G1lx74MNbdRX7RL3OW2tU3V+2uP4GnB62uP4JvC6W4OmoBpLcRXhU4F7t6Mu60McFtarRMR64C6KwGixCjgqPT4FqNuOrs9Ixw72o7gx0FMUF5P8SLp0O5IO7MANgh4Fxkkakg5+nwX8NLPOQ8D/SdvfExif5j8J1EvaP02fm/pqCYZn0/1Htjn7Kc3fPV0I8t8ohsTM2uSrzlpv9CVgcsX0N4EfSpoP/C9tf+tvz1MUH8R7Ah+OiFck3UwxVPVY2mNppviW3qaIeEbSVIqhJAFzIuKHmW1/n+JS2UuBX1EEzvOphg8B30u3AF0A3BQRr0r6JsVQ2qo0v7XdKF6TgamObU4MMKvkq86avQFI2jUiXpS0BzAfODYdvzDrFt6zMHtj+LGkt1Acb/msg8K6m/cszMwsywe4zcwsy2FhZmZZDgszM8tyWJiZWZbDwszMsv4/8qxSh+PFILwAAAAASUVORK5CYII=\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": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEWCAYAAACXGLsWAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzsvXl4HNWVsP+eVmvf5d2SbXnDu7CNsdkMBpMECEv4BSYwSTADmQQyJJOFJISZ8BFmfpNtMkwySYZkIAkQZoCQQJyEfCQBBjAQwBhj8Ioky7YsedNm7VKr7/dHVZeq2y11S+rq1nLe5+mnb1Xdqjpd3V2nznLPFWMMiqIoijIYvlQLoCiKoox+VFkoiqIoMVFloSiKosRElYWiKIoSE1UWiqIoSkxUWSiKoigxUWWhhCEi94nI1xJ0rNki0iYiafby/4rIJxJxbPt4fxCRTYk63hDO+88ickJEjiT5vDUicnEyzxlx/jtF5P5UnV9JLf5UC6AkDxGpAaYBAaAP2AU8BPzEGBMEMMbcMoRjfcIY8+eB+hhjDgJ5I5PaOd/dwAJjzMdcx780EcceohyzgC8Cc4wxx5J9/lRijPmXVMsQItrvQfEWtSwmHlcYY/KBOcA3ga8ADyT6JCIyXh9E5gANE01RJPP7HMe/nbGNMUZfE+QF1AAXR6xbCwSB5fbyz4F/ttuTgd8BzUAj8BLWA8bD9j6dQBvwZaAcMMDNwEHgRdc6v328/wW+AbwOtAC/AUrsbRuA2mjyApcAPUCvfb63Xcf7hN32Af8IHACOYVlMhfa2kBybbNlOAP8wyHUqtPc/bh/vH+3jX2x/5qAtx88H2P/LQD1QB3zCPveCwY5tb5sPPAc02DI+AhQN9v25tl2GZSm2AoeB213brgK2AyeBKuASe/1MYLP93VYCf+va527gCeAX9n6fsNf9Ip5rCmQDDwJNwG77mtQOcs0N8HfAe8B+e933gEP2+d8E1tvrB/o9FGI9+NTb1+CfgbRU/+/GyyvlAugriV/2ADcb+89+q93+Of3K4hvAfUC6/VoPSLRjuW4eDwG59s0itM6tLA4Dy+0+v3LdfDZE3kzc53DfqFzb/5d+ZXGTfcObh+X6+jXwcIRs/2XLdTrQDSwZ4Do9hKXI8u199wE3DyRnxL6XAEeAZUAOlmJ1K4vBjr0AeB+QCUzBUrj/Huv7s7fVu26mxcBqu70WSzG/D0vhlQKL7W0vAD8CsoCVWApso+t69wIfsvfLJrqyiHpNsazWF2xZyoAdMa6bAf4ElADZ9rqPAZOw3OVftK9r1iC/h6eAH2P9tqZiPZR8KtX/u/HyUjeUAtYTcEmU9b3ADCz/fK8x5iVj/ysH4W5jTLsxpnOA7Q8bY941xrQDXwP+KhQAHyEfBf7NGFNtjGkDvgpcF+HS+LoxptMY8zbwNtYNLgxblo8AXzXGtBpjaoDvAh+PU46/An5mjNlpjOkAvh7vsY0xlcaYPxljuo0xx4F/Ay6I87y9wFIRKTDGNBljttnrbwZ+ah83aIw5bIzZY8dezgO+YozpMsZsB+6P+JyvGmOesvcb6Psc6Jr+FfAvtiy1wPfj+AzfMMY0hs5ljPmFMabBGBMwxnwXS4kuirajiEwDLgU+Z//+jgH3AtfFcV4lDlRZKGA9bTZGWf8drKf1P4pItYjcEcexDg1h+wEsi2VyXFIOzkz7eO5j+7EC+iHc2UsdRA++TwYyohyrdAhyuD+juz3osUVkqog8KiKHReQklgso3mvzYSxX1AEReUFEzrbXz8JyPUWTs9EY0xpNliiyD8RA13Sw6zAQYX1E5IsisltEWkSkGcvNNND1mIP1W6oXkWa7/4+xLAwlAaiymOCIyJlYN4gtkdvsp98vGmPmAVcAXxCRjaHNAxwyluUxy9WejfVEfAJox3LbhORKw3LFxHvcOqwbhvvYAeBojP0iOWHLFHmsw3HuX4/ldgnh/ryxjv0NrM9ZYYwpwHLDSDwnNca8YYy5Cuvm+BTwuL3pEFYsJJI6oERE8geQBWJf88EY7DoMhHM+EVmPlXzxV0CxMaYIy50mkX1tDmG5wSYbY4rsV4ExZtlwP4ASjiqLCYqIFIjI5cCjWL7fd6L0uVxEFoiIYAUZ++wXWDfhecM49cdEZKmI5AD3AE8YY/qwfPdZIvJBEUnHCvxmuvY7CpSLyEC/2f8BPi8ic0UkD/gX4DFjTGAowtmyPA78/yKSLyJzgC9gPeXHw+PA34jIEvsz3jWEY+djBWybRaQU+FI8JxSRDBH5qIgUGmN66f+uwAr4/o2IbBQRn4iUishiY8wh4BXgGyKSJSIVWC6rR+L8nLF4HPiqiBTbn+W2Ie6fj6XsjwN+EbkLKHBtD/s9GGPqgT8C37V/2z4RmS8i8brxlBiosph4/FZEWrGexP4Byy/+NwP0XQj8GesG9irwI2PM/9rbvgH8o23y3z6E8z+MFUQ/ghVY/SyAMaYF+DSW3/wwlqVR69rvl/Z7g4hs41R+ah/7RWA/0AV8ZghyufmMff5qLIvrv+3jx8QY8wcs//zzWC68V+1N3XEc++vAaqwn6N9jBenj5eNAje2+ugXLKsEY8zrW93uvfdwX6LdsrscKVNcBTwL/xxjzpyGcczDuwfr+9mP9hp6g/xrEwzPAH7AeIg5gfZ9uN1W038MNWG6+XVhZWE9gxdyUBBDKbFEUxQNEZAnwLpA5VCtnPCEitwLXGWP0SX+MopaFoiQYEbnadg0VA98CfjvRFIWIzBCRc2130CKs1NcnUy2XMnxUWShK4vkUlq+9Cit2cGtqxUkJGVjZSK1YAw1/gzWmQxmjqBtKURRFiYlaFoqiKEpMxk3BrsmTJ5vy8vJUi6EoijKmePPNN08YY6bE6jdulEV5eTlbt25NtRiKoihjChE5ELuXuqEURVGUOFBloSiKosRElYWiKIoSk3ETs1CUZNPb20ttbS1dXV2pFkVRYpKVlUVZWRnp6enD2l+VhaIMk9raWvLz8ykvL8eqtagooxNjDA0NDdTW1jJ37txhHUPdUIoyTLq6upg0aZIqCmXUIyJMmjRpRFawKgslaRhjaG1tHVduG1UUylhhpL9VdUMpnhMMBqmvr6e6uprm5mZEhKlTp1JeXs6UKVP0hqsoYwC1LBTPCAQCVFdX89xzz7Ft2zaam5sBy8I4evQor732Gs899xyVlZV0dw9lqgMlUTz11FPs2rVryPtt3ryZb37zmx5IZFFXV8c111wDwPbt23n66aedbXfffTf/+q//6uk5Aa6//noqKiq49957E36u4eD1NY+FWhajkd4uwEB6dqolGRaBQIB9+/Zx4MABAoHwytw+n49gMOgsd3R0sHv3bvbu3UtZWRnLli3D79efZbJ46qmnuPzyy1m6dGnc+wQCAa688kquvPLKIe0zlO915syZPPHEE4ClLLZu3cpll10W9/7DwX3OI0eO8Morr3DgQFyDm4Ghf8ahkIxrHgu1LEYbzYfg2Xvgj1+D43tTLc2QMcawdetWqqqqwhRFZmYmixYt4uKLL+aiiy5i/vz5ZGRkONuDwSAHDx5k27ZtaCXk2NTU1LB48WI2bdpERUUF11xzDR0dHQA8++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/Ly8PPbs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/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+MlPfuIfh7qxhEbp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\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": "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\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+HOGQ95Y55E7AkK51qZvgF44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\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 }