{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "You can order print and ebook versions of *Think Bayes 2e* from\n", "[Bookshop.org](https://bookshop.org/a/98697/9781492089469) and\n", "[Amazon](https://amzn.to/334eqGo)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Minimum, Maximum, and Mixture" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:30.749769Z", "iopub.status.busy": "2021-04-16T19:35:30.748995Z", "iopub.status.idle": "2021-04-16T19:35:30.752221Z", "shell.execute_reply": "2021-04-16T19:35:30.751509Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# install empiricaldist if necessary\n", "\n", "try:\n", " import empiricaldist\n", "except ImportError:\n", " !pip install empiricaldist\n", " import empiricaldist" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:30.756174Z", "iopub.status.busy": "2021-04-16T19:35:30.755765Z", "iopub.status.idle": "2021-04-16T19:35:30.757511Z", "shell.execute_reply": "2021-04-16T19:35:30.757889Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "# Get utils.py\n", "\n", "from os.path import basename, exists\n", "\n", "def download(url):\n", " filename = basename(url)\n", " if not exists(filename):\n", " from urllib.request import urlretrieve\n", " local, _ = urlretrieve(url, filename)\n", " print('Downloaded ' + local)\n", " \n", "download('https://github.com/AllenDowney/ThinkBayes2/raw/master/soln/utils.py')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:30.760611Z", "iopub.status.busy": "2021-04-16T19:35:30.760188Z", "iopub.status.idle": "2021-04-16T19:35:31.437686Z", "shell.execute_reply": "2021-04-16T19:35:31.438042Z" }, "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "from utils import set_pyplot_params\n", "set_pyplot_params()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the previous chapter we computed distributions of sums.\n", "In this chapter, we'll compute distributions of minimums and maximums, and use them to solve both forward and inverse problems.\n", "\n", "Then we'll look at distributions that are mixtures of other distributions, which will turn out to be particularly useful for making predictions.\n", "\n", "But we'll start with a powerful tool for working with distributions, the cumulative distribution function." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cumulative Distribution Functions\n", "\n", "So far we have been using probability mass functions to represent distributions.\n", "A useful alternative is the **cumulative distribution function**, or CDF.\n", "\n", "As an example, I'll use the posterior distribution from the Euro problem, which we computed in <<_BayesianEstimation>>.\n", "\n", "Here's the uniform prior we started with." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.442337Z", "iopub.status.busy": "2021-04-16T19:35:31.441797Z", "iopub.status.idle": "2021-04-16T19:35:31.443480Z", "shell.execute_reply": "2021-04-16T19:35:31.443832Z" } }, "outputs": [], "source": [ "import numpy as np\n", "from empiricaldist import Pmf\n", "\n", "hypos = np.linspace(0, 1, 101)\n", "pmf = Pmf(1, hypos)\n", "data = 140, 250" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's the update." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.447686Z", "iopub.status.busy": "2021-04-16T19:35:31.447185Z", "iopub.status.idle": "2021-04-16T19:35:31.449283Z", "shell.execute_reply": "2021-04-16T19:35:31.448866Z" } }, "outputs": [], "source": [ "from scipy.stats import binom\n", "\n", "def update_binomial(pmf, data):\n", " \"\"\"Update pmf using the binomial distribution.\"\"\"\n", " k, n = data\n", " xs = pmf.qs\n", " likelihood = binom.pmf(k, n, xs)\n", " pmf *= likelihood\n", " pmf.normalize()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.454274Z", "iopub.status.busy": "2021-04-16T19:35:31.453576Z", "iopub.status.idle": "2021-04-16T19:35:31.459248Z", "shell.execute_reply": "2021-04-16T19:35:31.458812Z" } }, "outputs": [], "source": [ "update_binomial(pmf, data)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The CDF is the cumulative sum of the PMF, so we can compute it like this:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.462631Z", "iopub.status.busy": "2021-04-16T19:35:31.462163Z", "iopub.status.idle": "2021-04-16T19:35:31.463845Z", "shell.execute_reply": "2021-04-16T19:35:31.464199Z" } }, "outputs": [], "source": [ "cumulative = pmf.cumsum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like, along with the PMF." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.467579Z", "iopub.status.busy": "2021-04-16T19:35:31.467137Z", "iopub.status.idle": "2021-04-16T19:35:31.469147Z", "shell.execute_reply": "2021-04-16T19:35:31.468672Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "from utils import decorate\n", "\n", "def decorate_euro(title):\n", " decorate(xlabel='Proportion of heads (x)',\n", " ylabel='Probability',\n", " title=title)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.474021Z", "iopub.status.busy": "2021-04-16T19:35:31.472944Z", "iopub.status.idle": "2021-04-16T19:35:31.677455Z", "shell.execute_reply": "2021-04-16T19:35:31.677848Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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ejq8vb071VFQUNBhXlhfX1+8/fbbiI+Px5o1azBhwgT5vqCgIBQUFPT62oiUYBfzwRKZS61WIz09vcv72g5Jii66LXR1WxtJknp9jLnnCLtaT/spt5ydneV/q9Vqs8/jtl9Hd7pbt8lkQkpKCnx8fDq0/9///V+4uroiPT0darUaV111FRobG+Hg0P3XzuLFi3Httdfiyy+/xNq1a7F48WI88cQTHdq4urqiqampw20nTpxAQECAPNB9m4aGBri6uvb62oiUwD1YIgt5e3tDq9Vi7969AIB///vfuPLKK+Hm5gag9fxiYWEhhBDYuXMnpk2b1utjLuXm5ibv3bY3btw4FBUVydO2bd26FTNnzrSo/hkzZmDr1q0AgNTUVFRVVVnci7e9OXPmyOdAASA9PR1CCFRXVyMoKAhqtRpHjx7FiRMnAAAREREoKCjAqVOnALROEt4mMzMTWq0Wa9euxWOPPYYff/yx0/ONHz++wx73qVOn8Oabb+LEiRP4/vvv8fXXX8v3nT17Vt5TJrI27sES9cGOHTvwwAMP4H/+53/g4+ODd999V75v5syZeOCBB3D+/HnExcVhzZo1vT7mUo888giuvvpqaDQafPnll/Ltzs7O2LVrF9auXYvm5mZoNBokJSVZVPvmzZtx3333YevWrXB2dsb7778PR0dHC7dAx/U9/PDDiI6Ohslkglarxb59+7B+/XosXLgQn376KSIjIzF58mT5NWzbtg133XUXfH195fleAeBf//oX/vnPf8LJyQkuLi74xz/+0en55s6dK9/e1NSEZcuW4a233kJgYCB27tyJ+fPn48cff4S/vz8OHDiAl156qc+vjehy8DIdon60fft2HDp0CO+8846tSxnS7rnnHmzYsAFXX311t21ycnKwatUqJCcnW7Eyov/DQ8RENOhs2rQJZWVlPbbJy8vD5s2brVQRUWfcgyUiIlIA92CJiIgUwIAlIiJSAAOWiIhIAQxYIiIiBTBgiYiIFMCAJSIiUsD/B3zLHY8Rsy00AAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cumulative.plot(label='CDF')\n", "pmf.plot(label='PMF')\n", "decorate_euro(title='Posterior distribution for the Euro problem')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The range of the CDF is always from 0 to 1, in contrast with the PMF, where the maximum can be any probability.\n", "\n", "The result from `cumsum` is a Pandas `Series`, so we can use the bracket operator to select an element:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.681378Z", "iopub.status.busy": "2021-04-16T19:35:31.680792Z", "iopub.status.idle": "2021-04-16T19:35:31.684176Z", "shell.execute_reply": "2021-04-16T19:35:31.683818Z" } }, "outputs": [ { "data": { "text/plain": [ "0.9638303193984253" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cumulative[0.61]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is about 0.96, which means that the total probability of all quantities less than or equal to 0.61 is 96%.\n", "\n", "To go the other way --- to look up a probability and get the corresponding quantile --- we can use interpolation:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.688718Z", "iopub.status.busy": "2021-04-16T19:35:31.688069Z", "iopub.status.idle": "2021-04-16T19:35:31.691063Z", "shell.execute_reply": "2021-04-16T19:35:31.690624Z" } }, "outputs": [ { "data": { "text/plain": [ "array(0.60890171)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy.interpolate import interp1d\n", "\n", "ps = cumulative.values\n", "qs = cumulative.index\n", "\n", "interp = interp1d(ps, qs)\n", "interp(0.96)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is about 0.61, so that confirms that the 96th percentile of this distribution is 0.61.\n", "\n", "`empiricaldist` provides a class called `Cdf` that represents a cumulative distribution function.\n", "Given a `Pmf`, you can compute a `Cdf` like this:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.694831Z", "iopub.status.busy": "2021-04-16T19:35:31.694113Z", "iopub.status.idle": "2021-04-16T19:35:31.696012Z", "shell.execute_reply": "2021-04-16T19:35:31.696439Z" } }, "outputs": [], "source": [ "cdf = pmf.make_cdf()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`make_cdf` uses `np.cumsum` to compute the cumulative sum of the probabilities.\n", "\n", "You can use brackets to select an element from a `Cdf`:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.700286Z", "iopub.status.busy": "2021-04-16T19:35:31.699659Z", "iopub.status.idle": "2021-04-16T19:35:31.702626Z", "shell.execute_reply": "2021-04-16T19:35:31.703050Z" } }, "outputs": [ { "data": { "text/plain": [ "0.9638303193984253" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cdf[0.61]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But if you look up a quantity that's not in the distribution, you get a `KeyError`.\n" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.707236Z", "iopub.status.busy": "2021-04-16T19:35:31.706612Z", "iopub.status.idle": "2021-04-16T19:35:31.709290Z", "shell.execute_reply": "2021-04-16T19:35:31.709801Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "KeyError(0.615)\n" ] } ], "source": [ "try:\n", " cdf[0.615]\n", "except KeyError as e:\n", " print(repr(e))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To avoid this problem, you can call a `Cdf` as a function, using parentheses.\n", "If the argument does not appear in the `Cdf`, it interpolates between quantities." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.714823Z", "iopub.status.busy": "2021-04-16T19:35:31.714082Z", "iopub.status.idle": "2021-04-16T19:35:31.718078Z", "shell.execute_reply": "2021-04-16T19:35:31.717545Z" } }, "outputs": [ { "data": { "text/plain": [ "array(0.96383032)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cdf(0.615)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Going the other way, you can use `quantile` to look up a cumulative probability and get the corresponding quantity:\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.722903Z", "iopub.status.busy": "2021-04-16T19:35:31.722203Z", "iopub.status.idle": "2021-04-16T19:35:31.725892Z", "shell.execute_reply": "2021-04-16T19:35:31.725379Z" } }, "outputs": [ { "data": { "text/plain": [ "array(0.61)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cdf.quantile(0.9638303)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`Cdf` also provides `credible_interval`, which computes a credible interval that contains the given probability:\n" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.730655Z", "iopub.status.busy": "2021-04-16T19:35:31.730044Z", "iopub.status.idle": "2021-04-16T19:35:31.733376Z", "shell.execute_reply": "2021-04-16T19:35:31.733908Z" } }, "outputs": [ { "data": { "text/plain": [ "array([0.51, 0.61])" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cdf.credible_interval(0.9)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "CDFs and PMFs are equivalent in the sense that they contain the\n", "same information about the distribution, and you can always convert\n", "from one to the other.\n", "Given a `Cdf`, you can get the equivalent `Pmf` like this:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.738651Z", "iopub.status.busy": "2021-04-16T19:35:31.738024Z", "iopub.status.idle": "2021-04-16T19:35:31.740320Z", "shell.execute_reply": "2021-04-16T19:35:31.740851Z" } }, "outputs": [], "source": [ "pmf = cdf.make_pmf()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`make_pmf` uses `np.diff` to compute differences between consecutive cumulative probabilities.\n", "\n", "One reason `Cdf` objects are useful is that they compute quantiles efficiently.\n", "Another is that they make it easy to compute the distribution of a maximum or minimum, as we'll see in the next section." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Best Three of Four\n", "\n", "In *Dungeons & Dragons*, each character has six attributes: strength, intelligence, wisdom, dexterity, constitution, and charisma.\n", "\n", "To generate a new character, players roll four 6-sided dice for each attribute and add up the best three.\n", "For example, if I roll for strength and get 1, 2, 3, 4 on the dice, my character's strength would be the sum of 2, 3, and 4, which is 9.\n", "\n", "As an exercise, let's figure out the distribution of these attributes.\n", "Then, for each character, we'll figure out the distribution of their best attribute.\n", "\n", "I'll import two functions from the previous chapter: `make_die`, which makes a `Pmf` that represents the outcome of rolling a die, and `add_dist_seq`, which takes a sequence of `Pmf` objects and computes the distribution of their sum.\n", "\n", "Here's a `Pmf` that represents a six-sided die and a sequence with three references to it." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.746067Z", "iopub.status.busy": "2021-04-16T19:35:31.745270Z", "iopub.status.idle": "2021-04-16T19:35:31.748598Z", "shell.execute_reply": "2021-04-16T19:35:31.747789Z" } }, "outputs": [], "source": [ "from utils import make_die\n", "\n", "die = make_die(6)\n", "dice = [die] * 3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's the distribution of the sum of three dice." ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.755067Z", "iopub.status.busy": "2021-04-16T19:35:31.753615Z", "iopub.status.idle": "2021-04-16T19:35:31.757421Z", "shell.execute_reply": "2021-04-16T19:35:31.757933Z" } }, "outputs": [], "source": [ "from utils import add_dist_seq\n", "\n", "pmf_3d6 = add_dist_seq(dice)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.762372Z", "iopub.status.busy": "2021-04-16T19:35:31.761881Z", "iopub.status.idle": "2021-04-16T19:35:31.764211Z", "shell.execute_reply": "2021-04-16T19:35:31.763786Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "def decorate_dice(title=''):\n", " decorate(xlabel='Outcome',\n", " ylabel='PMF',\n", " title=title)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.799186Z", "iopub.status.busy": "2021-04-16T19:35:31.784859Z", "iopub.status.idle": "2021-04-16T19:35:31.931262Z", "shell.execute_reply": "2021-04-16T19:35:31.930892Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAAFgCAYAAAAYQGiBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAAuJAAALiQE3ycutAABH20lEQVR4nO3de1xUdf4/8Ncw3O8XEZDhPoIMyEURRVHB+72VNC3TEjJz3fa77pZa627X31Zuu+3WummWWV4yLdO85B28IQKCNxAVEHAAbwhykdvMnN8fJpupCMhw5vJ6Ph48HgJnZl4zwrw4c8583hJBEAQQERFRpzIROwAREZEhYsESERFpAQuWiIhIC1iwREREWsCCJSIi0gIWLBERkRawYImIiLSABUtG7fDhw5DJZFq7vri4OPzrX//qtOsvKSmBra0tbt261WnX2R5vvfUWunfvDltbW1RUVHTZ7a5btw4DBw5s+dzX1xdbtmzpstsn6ggWLBmsuLg4WFhYwM7ODg4ODggNDcWf/vQnXL9+vWWbwYMHQ6lUPvK6UlJS4Ojo+Mjt2np9bSWRSHDy5MmWz729vVFbWwsHB4dOu422UiqVeOedd5CRkYHa2lq4uLi06/IPegxXr16NiIiIR152xowZSE1NbdftPUxRUREkEgmqqqo65fqIHoYFSwbtgw8+QE1NDaqqqrBx40aUlpaib9++uHr1aqfflkql6vTr1CVFRUWwtbWFj49Pl96uoT+uZLhYsGQUJBIJFAoF1q5dCwcHB/zzn/8EcP9e1bp169CzZ0/Y2dnB09MT77zzDioqKjB27FjcunULtra2sLW1xeHDh1v2vt544w24u7tj2rRpD9xLKy0tRVxcHOzs7BATE4Nz587dk+uXe6j/+te/EBcXBwCIjo4GAAwcOBC2trb429/+dt/eV3NzM1577TV4e3vD1dUV06ZNu2cPXSKRYPny5QgNDYW9vT0mTZrU6svLmZmZGDRoEBwdHaFQKPDNN98AALZs2YKRI0e2PAbDhg174OUXLlwIHx8f2NnZQaFQYNOmTQDw0MfwpZdewpkzZ1q+VlJSgjfffBMTJkzAvHnz4OzsjEWLFj1wTzcnJwd9+vSBvb09Ro8ejbKyMgAP3kP9wx/+gOeff/6ex1Umk8HW1hbr1q0DAGRlZSE+Ph7Ozs6Qy+VYuXJly+WzsrIwYMAA2Nvbo1u3bpg4ceJDH0OiFgKRgRo6dKjw0Ucf3ff1P//5z0J0dLQgCIKQnJwsODg4CIIgCLW1tYKpqalw8OBBQRAEobKyUkhPT79vu7u+/PJLQSqVCm+//bbQ2Ngo1NXV3bfd0KFDBScnJyE1NVVobGwUXn/9daFnz55Cc3OzIAiCAEDIzs5u2f6jjz4Shg4d2vL5r79/6dIlAYBQWVkpCIIgvPXWW0JoaKhQXFws1NTUCNOmTRNGjhx5z+Xj4uKEK1euCJWVlUJkZKTwxhtvPPDxqqysFFxcXISPP/5YaGpqElJSUgQbGxvhyJEjD30Mfm3t2rXC1atXBZVKJXzzzTeChYWFUFhY2OpjGB4efs/X3njjDUEqlQpffvml0NzcLNTV1d23nY+Pj+Dr6yucO3dOqKurE2bNmiXExcU98DESBEH4v//7P+G555576PfLy8sFZ2dn4dtvvxVUKpVw5swZwcPDQ9i3b58gCIIQExMjvPvuu4JarRYaGhpafkaIWsM9WDI6np6euHnz5gO/Z2ZmhnPnzqG6uhqOjo7o169fq9fl4OCAP//5zzA3N4e1tfUDt5k+fTpiYmJgbm6ON998E1evXkVaWtpj3w8AWLNmDZYsWQJvb2/Y2trin//8J/bu3duyNwcAixYtgpubGxwdHfHkk0/ixIkTD7yuHTt2wNXVFS+//DLMzMwwdOhQPPPMM/jqq6/anGfGjBno3r07pFIppk+fjl69enXo2GloaCief/55mJqaPvRxnTdvHnr16gVra2ssXboUKSkpHT7+vWbNGgwZMgRPPfUUpFIpQkNDMXv2bKxfvx7AnZ+L4uJilJWVwcLCAkOGDOnQ7ZBxYcGS0SktLYWzs/N9X7exscG2bduwdetWeHl5ITY2FsnJya1el6enJ0xMWv81+uUxSzMzM3h4eKC0tLRj4X9FqVTC19e35fMePXrAwsLinqJxd3dv+beNjQ1qamradF0A4O/v367S+uijjxASEgIHBwc4Ojri7NmzuHHjRpsvf5e3t/cjt/nl4+rm5gYLC4sOP65FRUXYuXMnHB0dWz4+/vhjlJeXAwBWrVqFhoYG9O3bF7169cJ//vOfDt0OGRdTsQMQdSWVSoWtW7di3LhxD/z+8OHDMXz4cDQ3N+O///0vJk+ejJs3bz60RB9VrgBQXFzc8u/m5maUl5fD09MTwJ3Cu337dsv37z6h3yWRSFq9bplMhqKiIvTv3x8AcOXKFTQ2NnborUd3r+uXLl261ObrOnLkCN58800cOHAAkZGRMDExQUREBISfJ2I+6LHqrMf12rVraGxshKenJywtLQEAt2/fbjkeXl5eDisrq4det5eXFyZPnowNGzY88LYCAgLw9ddfQxAEHD16FCNGjEBMTAz69u37yJxkvLgHS0YjLy8Pzz33HG7duoU//vGP933/6tWr+OGHH1BTUwNTU1PY29tDKpUCuLOHVFNTc88JRG317bff4vjx42hqasLbb78NV1dXDBgwAADQp08frFmzBiqVCidPnsSaNWvuuaybmxsKCgoeet3PPvss/va3v+Hy5cuora3FH//4R4wYMQI9evRod85x48bh2rVr+O9//wuVSoXDhw9j/fr1mDVrVpsuX11dDVNTU7i6ukKj0WDVqlU4e/bsPffl14+hm5sbysvLUV9f3+68K1aswPnz51FfX49FixZhyJAhkMlk6NatG7y9vfHVV19Bo9EgOTkZO3fubLmcq6srTExM7nlcZ86ciQMHDuD7779Hc3MzmpubcfLkSWRkZAAAvv76a1y9ehUSiQROTk4wMTGBqSn3T6h1LFgyaIsWLWp5H2xCQgLc3d2RmZkJNze3+7bVaDT497//DS8vLzg4OGDZsmX47rvvYGJigqCgICQlJSE4OBiOjo44cuRImzMkJiZi0aJFcHZ2xt69e7Fly5aWJ+dPPvkEx44dg6OjIxYtWoTnnnvunsu+8847+P3vfw8nJye8//779133a6+9htGjRyMmJga+vr5obm7G2rVr2/ko3eHk5ISffvoJa9euhYuLC1588UV8+umniI2NbdPlx4wZgyeffBK9e/dGjx49kJOTg0GDBrV8/0GP4bBhwzBgwAB4enrC0dERJSUlbc6bmJiIp59+Gm5ubigtLW05Gxi485Lul19+CQcHB6xYsQLTp09v+Z6VlRXeeOMNjB07Fo6Ojli/fj08PT2xe/durFixAh4eHnBzc8P8+fNRXV0NANi3bx/Cw8Nha2uLSZMm4e9//zvCw8PbnJWMk0S4+/oNERERdRruwRIREWkBC5aIiEgLWLBERERawIIlIiLSAoM7z9ze3r5Tx48RERE9jFKpbDnb/NcMrmBlMhlyc3PFjkFEREZAoVA89Ht8iZiIiEgLWLBERERa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P8bYsWNx/Phx+Pn5ISYmBocOHcLQoUORmJiIf//73wgNDUVRURHi4+NRWFh4z+ABImPBgiXSc4IgtKvA0tLSMGDAgJb1lm1tbQEAKSkpmDFjBiwtLQHcGd5w4MCBloJNSEgAAEREREAul8Pf3x8AEBYWhkuXLqFv3744evQonn322Zbbam5uxrVr17Qya5NI17FgifREaGgoLl68iOrq6nv2YjMzM5GUlIQtW7ZAo9EAuDNA+mEetjrqg77+y+K2sLAAAJiYmLT8++7nKpUKgiDAysqqZU+ZyNjxGCyRnvD398eECROwYMECqNVqAMCXX36J0tJSPP300/Dz88OJEycAAN9//33L5ezt7VFTU9PyeUxMDNLS0nDu3DkAQG1tLRobGxEfH4+1a9eisbERDQ0NWL9+PeLj49ucz87ODiEhIVi1alXL17Kzsx/rPhPpMxYskR5ZuXIlTExMIJfLIZfLsWHDBuzatQuWlpZ46623sHjxYgwePBi1tbUtl7k7szc8PByzZ89Gt27dsGbNGsycORPh4eEYNmwYampqMGnSJIwcORJ9+/ZF3759MWHChJaXh9tq3bp1+OGHHxAWFgaFQoFPPvmksx8CIr3BaTpERERawD1YIiIiLWDBEhERaQELloiISAtYsERERFrAgiUiItICFiwREZEWsGCJiIi0gAVLRESkBf8f9vl7M8nuhEoAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pmf_3d6.plot()\n", "decorate_dice('Distribution of attributes')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we roll four dice and add up the best three, computing the distribution of the sum is a bit more complicated.\n", "I'll estimate the distribution by simulating 10,000 rolls.\n", "\n", "First I'll create an array of random values from 1 to 6, with 10,000 rows and 4 columns:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.934466Z", "iopub.status.busy": "2021-04-16T19:35:31.934017Z", "iopub.status.idle": "2021-04-16T19:35:31.936034Z", "shell.execute_reply": "2021-04-16T19:35:31.936379Z" } }, "outputs": [], "source": [ "n = 10000\n", "a = np.random.randint(1, 7, size=(n, 4))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To find the best three outcomes in each row, I'll use `sort` with `axis=1`, which sorts the rows in ascending order." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.939312Z", "iopub.status.busy": "2021-04-16T19:35:31.938870Z", "iopub.status.idle": "2021-04-16T19:35:31.940846Z", "shell.execute_reply": "2021-04-16T19:35:31.941280Z" } }, "outputs": [], "source": [ "a.sort(axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, I'll select the last three columns and add them up." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.944292Z", "iopub.status.busy": "2021-04-16T19:35:31.943874Z", "iopub.status.idle": "2021-04-16T19:35:31.945874Z", "shell.execute_reply": "2021-04-16T19:35:31.946275Z" } }, "outputs": [], "source": [ "t = a[:, 1:].sum(axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now `t` is an array with a single column and 10,000 rows.\n", "We can compute the PMF of the values in `t` like this:" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.950862Z", "iopub.status.busy": "2021-04-16T19:35:31.949475Z", "iopub.status.idle": "2021-04-16T19:35:31.953994Z", "shell.execute_reply": "2021-04-16T19:35:31.953526Z" } }, "outputs": [], "source": [ "pmf_best3 = Pmf.from_seq(t)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following figure shows the distribution of the sum of three dice, `pmf_3d6`, and the distribution of the best three out of four, `pmf_best3`." ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:31.997678Z", "iopub.status.busy": "2021-04-16T19:35:31.996921Z", "iopub.status.idle": "2021-04-16T19:35:32.130553Z", "shell.execute_reply": "2021-04-16T19:35:32.130960Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pmf_3d6.plot(label='sum of 3 dice')\n", "pmf_best3.plot(label='best 3 of 4', ls='--')\n", "\n", "decorate_dice('Distribution of attributes')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you might expect, choosing the best three out of four tends to yield higher values.\n", "\n", "Next we'll find the distribution for the maximum of six attributes, each the sum of the best three of four dice." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Maximum\n", "\n", "To compute the distribution of a maximum or minimum, we can make good use of the cumulative distribution function.\n", "First, I'll compute the `Cdf` of the best three of four distribution:" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.134886Z", "iopub.status.busy": "2021-04-16T19:35:32.134220Z", "iopub.status.idle": "2021-04-16T19:35:32.135956Z", "shell.execute_reply": "2021-04-16T19:35:32.136306Z" } }, "outputs": [], "source": [ "cdf_best3 = pmf_best3.make_cdf()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Recall that `Cdf(x)` is the sum of probabilities for quantities less than or equal to `x`.\n", "Equivalently, it is the probability that a random value chosen from the distribution is less than or equal to `x`.\n", "\n", "Now suppose I draw 6 values from this distribution.\n", "The probability that all 6 of them are less than or equal to `x` is `Cdf(x)` raised to the 6th power, which we can compute like this:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.141260Z", "iopub.status.busy": "2021-04-16T19:35:32.140745Z", "iopub.status.idle": "2021-04-16T19:35:32.143280Z", "shell.execute_reply": "2021-04-16T19:35:32.143621Z" }, "tags": [ "hide-output" ] }, "outputs": [ { "data": { "text/plain": [ "3 4.665600e-20\n", "4 3.518744e-15\n", "5 4.398047e-12\n", "6 7.290000e-10\n", "7 3.846421e-08\n", "8 1.595711e-06\n", "9 3.830329e-05\n", "10 4.576324e-04\n", "11 3.540453e-03\n", "12 1.870058e-02\n", "13 7.240710e-02\n", "14 2.035974e-01\n", "15 4.288633e-01\n", "16 6.754654e-01\n", "17 8.951025e-01\n", "18 1.000000e+00\n", "Name: , dtype: float64" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cdf_best3**6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If all 6 values are less than or equal to `x`, that means that their maximum is less than or equal to `x`.\n", "So the result is the CDF of their maximum.\n", "We can convert it to a `Cdf` object, like this:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.147141Z", "iopub.status.busy": "2021-04-16T19:35:32.146607Z", "iopub.status.idle": "2021-04-16T19:35:32.148575Z", "shell.execute_reply": "2021-04-16T19:35:32.148928Z" } }, "outputs": [], "source": [ "from empiricaldist import Cdf\n", "\n", "cdf_max6 = Cdf(cdf_best3**6)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "And compute the equivalent `Pmf` like this:" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.152335Z", "iopub.status.busy": "2021-04-16T19:35:32.151777Z", "iopub.status.idle": "2021-04-16T19:35:32.153560Z", "shell.execute_reply": "2021-04-16T19:35:32.154071Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "pmf_max6 = cdf_max6.make_pmf()" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "The following figure shows the result." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.174609Z", "iopub.status.busy": "2021-04-16T19:35:32.169559Z", "iopub.status.idle": "2021-04-16T19:35:32.328490Z", "shell.execute_reply": "2021-04-16T19:35:32.328844Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pmf_max6.plot(label='max of 6 attributes')\n", "\n", "decorate_dice('Distribution of attributes')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "Most characters have at least one attribute greater than 12; almost 10% of them have an 18." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following figure shows the CDFs for the three distributions we have computed." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.376448Z", "iopub.status.busy": "2021-04-16T19:35:32.371540Z", "iopub.status.idle": "2021-04-16T19:35:32.535663Z", "shell.execute_reply": "2021-04-16T19:35:32.536011Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAAFgCAYAAAAYQGiBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAAuJAAALiQE3ycutAABtXklEQVR4nO3deVxU9f7H8deZGVaRVQVkERU3QHHBBXfNMpcWzdIyLSVbru377fYrW273tq9Wplk3lzLLyspyyV0TwV1xV1QQEBEEZJ2Z7+8PdNJEBHU8M/B5Ph4+4jBnznmfaZjPfM/5nu9XU0ophBBCCHFFGfQOIIQQQtRGUmCFEEIIO5ACK4QQQtiBFFghhBDCDqTACiGEEHYgBVYIIYSwAymwQgghhB1IgRV1yqpVqwgNDbXb9vr27ct77713xbZ/+PBhvLy8OHny5BXbZk289NJLNGrUCC8vL3Jycq7afmfNmkX37t1tyxEREfz4449Xbf9CXAlSYEWt0bdvX9zc3Khfvz4+Pj7ExMTwxBNPkJ2dbVunV69epKWlXXRby5cvx9fX96LrVXd71aVpGps3b7Yth4eHU1hYiI+PzxXbR3WlpaXxyiuvkJSURGFhIQEBATV6fmWv4Zdffkn79u0v+tzRo0ezdu3aGu3vQlJTU9E0jby8vCuyPSGqSwqsqFVef/11CgoKyMvL49tvvyU9PZ1OnTqRlZV1xfdlNpuv+DYdSWpqKl5eXjRp0uSq7re2v66i7pACK2olTdOIiopi5syZ+Pj48M477wDnt6pmzZpFixYtqF+/PiEhIbzyyivk5OQwaNAgTp48iZeXF15eXqxatcrW+nrxxRcJCgpi5MiRlbbS0tPT6du3L/Xr1yc+Pp6dO3eek+vsFup7771H3759AejSpQsA3bt3x8vLi9dee+281ld5eTn//Oc/CQ8Pp2HDhowcOfKcFrqmaXz66afExMTg7e3NjTfeWOXp5eTkZHr06IGvry9RUVF8/fXXAPz4449ce+21ttegf//+lT7/6aefpkmTJtSvX5+oqCjmzp0LcMHX8P7772fbtm223x0+fJhJkyYxdOhQHnjgAfz9/XnmmWcqbenu2LGDjh074u3tzcCBAzl69ChQeQv10Ucf5e677z7ndQ0NDcXLy4tZs2YBsHHjRvr164e/vz+RkZFMnTrV9vyNGzfSrVs3vL29adCgATfccMMFX0MhLkgJUUv06dNHvfvuu+f9/l//+pfq0qWLUkqpZcuWKR8fH6WUUoWFhcpkMqkVK1YopZTKzc1V69evP2+9M7744gtlNBrVyy+/rEpLS9WpU6fOW69Pnz7Kz89PrV27VpWWlqrnnntOtWjRQpWXlyullALUpk2bbOu/++67qk+fPrblvz9+8OBBBajc3FyllFIvvfSSiomJUYcOHVIFBQVq5MiR6tprrz3n+X379lWZmZkqNzdXdejQQb344ouVvl65ubkqICBAffDBB6qsrEwtX75c1atXT61evfqCr8HfzZw5U2VlZSmz2ay+/vpr5ebmpg4cOFDlaxgbG3vO71588UVlNBrVF198ocrLy9WpU6fOW69JkyYqIiJC7dy5U506dUqNHTtW9e3bt9LXSCmlHnnkEXXXXXdd8PGMjAzl7++v5syZo8xms9q2bZsKDg5WS5YsUUopFR8fr1599VVlsVhUSUmJ7T0iRE1IC1bUeiEhIZw4caLSx1xcXNi5cyf5+fn4+vrSuXPnKrfl4+PDv/71L1xdXfH09Kx0nVGjRhEfH4+rqyuTJk0iKyuLdevWXfZxAMyYMYPnn3+e8PBwvLy8eOedd1i8eLGtNQfwzDPPEBgYiK+vL7fccgsbNmyodFu//vorDRs25KGHHsLFxYU+ffpwxx138L///a/aeUaPHk2jRo0wGo2MGjWK1q1bX9K105iYGO6++25MJtMFX9cHHniA1q1b4+npyRtvvMHy5csv+fr3jBkz6N27N7fddhtGo5GYmBjGjRvH7NmzgYr3xaFDhzh69Chubm707t37kvYj6jYpsKLWS09Px9/f/7zf16tXj59//pmffvqJsLAwevbsybJly6rcVkhICAZD1X82Z1+zdHFxITg4mPT09EsL/zdpaWlERETYlhs3boybm9s5hSYoKMj2c7169SgoKKjWtgCaNWtWo6L17rvvEh0djY+PD76+vmzfvp3jx49X+/lnhIeHX3Sds1/XwMBA3NzcLvl1TU1NZcGCBfj6+tr+ffDBB2RkZAAwffp0SkpK6NSpE61bt+ajjz66pP2Ius2kdwAh7MlsNvPTTz8xePDgSh+/5ppruOaaaygvL+fjjz9m2LBhnDhx4oJF9GLFFeDQoUO2n8vLy8nIyCAkJASoKHhFRUW2x898oJ+haVqV2w4NDSU1NZWuXbsCkJmZSWlp6SXdenRmW2c7ePBgtbe1evVqJk2axNKlS+nQoQMGg4H27dujTs+AWdlrdaVe12PHjlFaWkpISAju7u4AFBUV2a6HZ2Rk4OHhccFth4WFMWzYML755ptK99W8eXO++uorlFKsWbOGAQMGEB8fT6dOnS6aU4gzpAUraq1du3Zx1113cfLkSR5//PHzHs/KyuKHH36goKAAk8mEt7c3RqMRqGghFRQUnNOBqLrmzJlDYmIiZWVlvPzyyzRs2JBu3boB0LFjR2bMmIHZbGbz5s3MmDHjnOcGBgayf//+C277zjvv5LXXXuPIkSMUFhby+OOPM2DAABo3blzjnIMHD+bYsWN8/PHHmM1mVq1axezZsxk7dmy1np+fn4/JZKJhw4ZYrVamT5/O9u3bzzmWv7+GgYGBZGRkUFxcXOO8U6ZMYffu3RQXF/PMM8/Qu3dvQkNDadCgAeHh4fzvf//DarWybNkyFixYYHtew4YNMRgM57yuY8aMYenSpXz//feUl5dTXl7O5s2bSUpKAuCrr74iKysLTdPw8/PDYDBgMkl7RNSMFFhRqzzzzDO2+2CHDx9OUFAQycnJBAYGnreu1Wrl/fffJywsDB8fHyZPnsx3332HwWCgVatWJCQk0KZNG3x9fVm9enW1M4wfP55nnnkGf39/Fi9ezI8//mj7cP7www/5888/8fX15ZlnnuGuu+4657mvvPIKDz/8MH5+fvz3v/89b9v//Oc/GThwIPHx8URERFBeXs7MmTNr+CpV8PPz47fffmPmzJkEBARw77338sknn9CzZ89qPf/666/nlltuoW3btjRu3JgdO3bQo0cP2+OVvYb9+/enW7duhISE4Ovry+HDh6udd/z48dx+++0EBgaSnp5u6w0MFad0v/jiC3x8fJgyZQqjRo2yPebh4cGLL77IoEGD8PX1Zfbs2YSEhLBw4UKmTJlCcHAwgYGBTJw4kfz8fACWLFlCbGwsXl5e3Hjjjbz55pvExsZWO6sQAJo6cz5HCCGEEFeMtGCFEEIIO5ACK4QQQtiBFFghhBDCDqTACiGEEHbgtP3Ovb29r+i0Y0IIIURNpaWl2Xqf/53TFtjQ0FBSUlL0jiGEEKIOi4qKuuBjcopYCCGEsAMpsEIIIYQdOO0p4qrI2BniQi421q8QQlwptarAWq1Wjhw5cs5g6kKczdPTk7CwsGoNLi+EEJejVhXY7OxsNE2jZcuW8gEqzmO1WklPTyc7O7vSsYmFEOJKqlUF9uTJkzRp0sQ2I4oQZzMajQQGBnLo0CEpsEIIu6s1zTylFBaLBRcXF72jCAfm4uKCxWKR6/RCCLurNQX2DOnEIqoi7w8hxNVi1wL70EMPERoaWuVExcuWLSMqKorIyEjGjx+P2Wy2Z6Q64Z///CdRUVHnTZx96tQpunTpQmxsLDExMdx3333Ver0nTZrEq6++CsALL7xwzmTWQgghKmfXAjty5Eg2bNhwwcctFgsJCQnMnTuXffv2UVhYyIwZM+wZqU54//33SUpK4quvvjrn9x4eHixdupQtW7awbds2cnJyzpm0ujpefvllBg8efCXjCiFErWTXAtuzZ88qO5MkJSURGhpKdHQ0AAkJCcybN8+ekeyuqKiIYcOG0a5dO2JiYvjXv/4FwN13383MmTNt60VGRpKamgpAREQEzz33HL169aJVq1YkJyczevRo2rRpw6hRoyq9Xnjy5ElGjhxJ27ZtiY2N5eeffwZg4MCBFBcX06NHDz744INznmMwGPDy8gKgvLyc4uLiSo9BKcVjjz1Gq1at6Nu3L/v27bM9dvZxHD9+3JahXbt2tt9v3bqV/v3706lTJ3r06MG2bdsu5aUUQohLopSiuLScE/nFpB8v4MDRXHYcOMamrbtJXr2arfuPXZUcuvYiTktLIywszLYcHh5OWlpapetOnjyZyZMn25Zzc3Or3PbkH5I5cqzyAZgvR1gjbyYOi7vg4wsXLsTf358ffvgBuHjOM/z8/Fi1ahUffPABgwYNIjExkaZNmxIfH8/KlSvp06fPOeu/9NJLNG7cmDlz5pCamkr37t2Jj49n4cKFmEwmNm/efMF9xcXFsW/fPgYOHMjo0aPPe/ynn35iw4YNbN++naKiIjp27Ejr1q3PW++RRx4hJiaGOXPmAJCTk0N5eTn33nsv33//PSEhISQmJnLPPfeQmJhYrddBCFE3mS1Wjp8sorjUTEmZmeJSM8VlZkptP5dTWmax/VxSZqG0zExR6d9/NlNWbgGgscqiuUojkBM0JJfj2ilOGAwcb/oU7Zo3svsx6X6bztmdTqrq2Tlx4kQmTpxoW65qgGU9tWvXjieffJKnnnqKAQMGMGDAgGo9b/jw4QC0b9+eyMhImjVrZtvewYMHzyuwy5cvt51Oj4iIoEuXLqxfv75ap2+Tk5MpKSnh3nvvZe7cudx+++3nPL5ixQpGjRqFi4sLPj4+3HjjjZVuZ+HChXzyySe25YCAALZv386OHTsYMmSI7fcnTpyoxisghKjtzBYr2XlFZOQUnvWvgIycQrLzirBWo3e/hoabqxEPNxc8XE14uihCDfkEup8gwDUHX0suO5uPxt3NlYicE4RlHsHi6U95/Y4sLc7iuKbx3MA2V+FodS6wYWFhHD582LaclpZ2xaagq6qVaU/Nmzdn48aNLFq0iGnTpvHBBx/w66+/YjKZsFqttvVKS0vPeZ6bmxtQcRr3zM9nlivriFTZl5Ga9JB1d3dn9OjRfPjhh+cV2JrcwvL3fSqlaN68eZUtaCFE7WWxWMk++fciWvHvWF7ROZ+DGhoNfT0JDvCiQ4sgggK88HJ3wc3VhLurCQ83Ex6uJtxO/+yuSnEpO4kxIBwA89qvsOz/E9TpbWoGNJ9guvZvhubhgyptAtqdaK6eAPxfeQn5pacI9Aq4Kq+FrgU2Li6O9PR0UlJSiIqKYvr06baWnLNKS0vD39+fW2+9lR49ehAbGwtA06ZN2bBhA2PHjiUxMZH09PTL2k+/fv2YNm0a7777Lqmpqaxfv55p06ZV+ZysrCzc3Nzw9fXFYrHwww8/EBMTc956ffv25Z133mHChAkUFRUxf/58xo0bd956AwcO5L333uP//u//gIqWauvWrSkoKGDJkiUMGDAApRRbtmyhffv2l3W8QgjHYbUqjl+giGblncJiObeINvD1IDjAi9jIQIIDvGz/Av3qYTJeuCuQNW0b1qxU1IkjqNwjqFMnsLh5YbjtLTRNQwtogtHoiuYfVvHPJwjN5PrXvt28yCvOJ2nvWgZExuPh4o6Hi7tdX5uz2bXA3nffffz6669YLBZCQ0MZMmQIEyZMsN3qYTQamTp1KiNGjKCsrIzevXszZswYe0ayu23btvHss8+iaRpKKT788EMAJkyYwM0330xcXBzdu3cnIiLisvbz4osvcu+999K2bVsMBgNTpkyhQYMGVT4nLS2NhIQErFYrVquV+Ph4W3E820033cSKFSto27YtERER9O3bt9Ltvf/++/zjH/8gJiYGo9HI008/zejRo/nxxx95+OGHeeKJJygvL2f48OFSYIVwUgVFpWzZd4x96SdsRTQz9/wiGuDjQZC/F9FNG55TRIP86+FiuvjoeupkJpZ9a8Doiqn9DQBYtv6K9fhBNA9vNL8wDE27oPmHgVKgaRhb9bnIVuG33atYun8d0YGRNPa2/3XXs2nKSYe0iYqKOmfCdaUUu3btonXr1jKYgLggeZ8IUTWlFKmZJ9mwJ4ONezLZc/gEiooyEeDtQXBAfYL86/1VRBvUJ8ivHq4ulzZErTX7AJYdC7Ee3gIoDEGtcLnu8YrH8jLQ3DzRPHwu+XjMVgupuelEnj6tfKX9vRadTfdOTkIIIfR1qriMLfuPsXFPJpv3ZZFbUHELX6BfPQZ1a06HFkFERTTA3fXKlgzzmv9h2b8WjC4YW/XBGHUtWv2/zsQZfIMvbbtWC8v2J9K/eVdMBqPdiuvFSIEVQog6RinF4ax8NuzJYNPeLHYdzsFqtWI0GoiJaMjNPVvSoWUQjQO8ruiZHmW1YD2yBUN4h4prqMGtMdbzw9i6H5p7/Su2n/VHtjJ78y94u3vRNazdFdtuTUmBFUKIOqC4tJytp1upm/ZmkpNf0Upt6OvJtXFN6dAikLbNGl3xViqAMpdh3bcGy47FqFM5uPT7B1pYLMZmXa/4vgDiw9vj5VqPtkEt7LL96pICK4QQtZBSirTsAjbuyWTjnkx2Hj6OxVLRSm0T3oAh8S3o2DKI0Ib17dYfQZUVYdm1DOvOpajSQjTvIEzd70JrHG2X/SUe3kJs4za4m1xpF9zSLvuoCSmwQghRS5SUmdl+MPt0Uc0gO68IAP/6HvRr34QOLYNo16wRnu72ndZTKVVRtIvzsWz+GUODCEzdx6KFtrNbMT+Sl8mniXMY1KoXt7UbZJd91JQUWCGEcGIZOYVs2F3R43dH6nHMFgsGTaN1kwZc17kZnVoGEx7ofVV6zVvzMrDuWARu9TDFjUDzCcLlxhcr7k+18/7DfIN4uPsYogKb23U/NSEF1g5MJtMVmXZv+fLlGAwGevfufd5jp06dol+/fpSWlmKxWOjRoweTJ0+ucmrAv/v+++95/vnncXNzY/369bi6up63zuuvv86zzz7LkSNHLjrK1vLly3n11VdZsmQJ8+fPZ/PmzbzwwgvVziOEqL59aSf4bsUuknYdBcDXy51e7cLo2DKI2OaNqOdx/t+zvVizD2DZ9jvWtC2gGTBGdrc9dqk9gatrd/ZBAr0C8PXwpkPI1RkCsbqkwDqw5cuXYzKZKi2wZ6ae8/LyQinFrbfeyqxZs7jrrruqvf1p06bxzjvvMGhQ5adT9u3bx9KlSwkPr3kX9xtvvPGCYxgLIS6NUoqU1ON8t2InW/cfw8VkZHC3SPp3jCAiyEeXe7vNa76sGK7Q6IKxVT+M0deiXaWhCEvKS/lo7SzCfIN5uk/CVdlnTdh1urq67P/+7/9o164dHTt2tE3XZrVa+de//kWXLl1o27Ytzz33HFD5FHe7d+/m008/ZfLkybRv357vvvvunO1Xd+o5qJgkPSYmhpiYGF5++WUA/vWvf7Fq1Soefvjh8yZmh4o/5AcffJD33nuvyj/amTNn0qJFCzp37mybMg/gyy+/5J577jnnuGNiYoiNjeWRRx4BKoZWHDVqlG0S+L8foxCiglKKDbsz+Ne05bwwfQV7jpxgWK9WfPrEIBKGtKdpsO9VK67KasFyeJNtzHItqBXGdkNwveU/mLqOumrFFcDdxY1/xN/OXZ1uvmr7rIla3YItX/Df836n+TbG1L2ioJiT5qCyD563junaR9Fc3LEcTMK6849zHnMZ/OxF92uxWAgJCWHr1q388ssvjBs3juTkZL788kuUUqxfvx6LxcJNN93Eb7/9RklJyXlT3Pn5+XH//fdjMpl4/vnnL7ivi009N3/+fJYsWUJycjIAvXv3pkuXLvz73/9mzZo1vPrqq/Ts2fO8502bNo0uXbrQps2FT7lkZmby9NNPs2HDBoKCgrjtttsqXe/zzz9n06ZNbNiwATc3N3JycgB49NFHGTduHAMHDiQ3N5fOnTvTv39//P39L/ziClGHWK2KdSnpfL9iF6mZeXh5uDKyfxSDu0XidRVPAUMlt9r0n4gW2g5j8/irmgMgpyiP4vISQn2CaNPIca65/p20YO3kzJjKQ4cO5cCBA5w6dYoFCxYwd+5c2rdvT6dOndi9ezd79+6lXbt2LF++nKeeeoqFCxfi7e1d7f0kJyeTmZmJm5sbc+fOPe/x5cuXM3r0aNzd3XF3d+eOO+5g6dKlVW4zIyODqVOn2iaLv5DExER69uxJcHAwmqZx5513VrrewoULeeCBB2yzBAUEVHzD/e2333jmmWdo3749/fr1o7y8nAMHDlTnsIWo1cwWK8s2pvLoh4t4e8468gpLGDuwHVOeHMxt/aKuanFVSmHZuZTy7/+Jef03YHKtuNUmWJ8pQ5VSfLpuDm+v/JIyS7kuGaqrVrdgL9baNHUeWeXjxqadMTbtfMXyKKV48803ufnmm897rLIp7qqrplPPXexU0saNGzl8+DCtWrUCKiYJiI+PZ8GCBbRt27bKbVfmQutZrVaWL1+Or69vtbYjRG1XVm5h6cZUfly9m+y8Ihr6enLvDR3o1yHiksf6vVwqLx1z8lw0/zBc7HyrTXVomsZdnW4ip+gkrkb73m50uaQFaydnJkP/5ZdfaNasGfXq1WPQoEF88sknlJSUABUtxczMTNLS0nBxceHWW2/l/fffZ/369QB4e3tTUFBQ6fazsrLIy8sDqHLquX79+jFz5kxKS0spKSlh9uzZ9OvXr8rsQ4YMITMzk9TUVFJTUwkNDeXPP/88p7gCdOvWjdWrV5ORkYFSipkzZ1a6veuvv55PPvnENgfumVPEgwYN4p133rGtt3nz5hrNRStEbVFSZuan1Xv4x7u/M/WXTbiajDw0vDMfPXo9A7s016W4qoLjABj8QnG57nFcBj2LISxWt+JabjFzIOcIAKE+QcQGt9IlR03U6hasXoxGIydOnKBLly6YzWa+/PJLABISEkhLSyMuLg5N06hXrx5ffvklBw8erHSKu5tvvplbbrmFP/74g+eee+6cuXKrO/XcjTfeSHJyMp06dUIpxciRI7n++uuvyHEGBQXxxhtv0KdPHwIDA+nduzeJiYnnrZeQkMDBgwfp0KEDrq6u9O3bl/fee48PPviAhx9+mLZt22K1WgkLC2PBggUyy42oMwqLy1iwbh+//rmPwuIyIoJ8GT84lm5RIRgM+vwdqPJSLElzsBxIxGXIcxj8QjAE6jvkIMC3W39n+YFEXrnuEYLqVz01p6OQ6epEnSLvE+EI8gpL+GXtXn5L3E9JmZlW4QGM6NOGDi0CdX1fWrMPYF49HVWQjbFFL4xxt6K5uOmW52x5xfkkpW3n2hbdL77yVSTT1QkhhAM4frKIn1bvYXHyQcrNFto1b8SIPm2Iimiga2FVVguWbb9h2formosHLv3+gSEsVrc8ZzuUe5Qmfo3x9fB2uOJ6MVJghRDCzo4eL+CHVbtZseUwFouVLq0bc0uf1kSGOsgtaUphTduKIbh1RQ9hT1+9EwHw56HNfLb+Wx7uPsbhRmmqDimwQghhJ4cyT/L9yl2s3ZYGQI92oQzv3ZomgT46J6u4XKKObEELiUYzuuAy4GFwredQl046NG7DkNZ9iQ6K1DvKJZECK4QQV1hJmZnpC7bwx4aDGI0G+neKYFivVgQHeOkdDQBVegpz4mysqcmYOt2CMfo6NDfHyAaQWZBNoFcD3F3cGNH2Or3jXDIpsEIIcQUdOJrLu9+u52hOAf06RDDqmiga+HjqHcvGmrkb8+ovUEW5GNtcg6FVX70jneNIXiavLv2EoW36cUObvnrHuSxSYIUQ4gpQSjF/zV5mLdmOu4uJJ0d1Iz666hmorjbz5p8rOjJ5eOMy4BEMjfUZjakqjb0b0r95N+LDHaOT1eWQAiuEEJcpt6CED79PYsv+LKIiGvLIiM4O1Wo9Q3P3whAei6nbGDR3xzklDGCxWjAajBgNRkbGOsaE6ZdLRnKqhdasWUNMTAwdOnQgNTX1vMdfe+01WrVqRXR0NOPHj6/RtpcvX87KlStty5s3b2b+/PlVPmfw4MEcO3YMgIiICNLS0mq0zx9//JGtW7fW6DlCXC3JuzN4fPJith04xu0DonlpXG+HKa5KKSy7V2DN2guAoVVfTH3ud7jiCjBv+2L+s+wzhx9fuCakBVsLzZw5k4kTJ/LAAw+c99js2bNZv34927Ztw9XVlczMzBpt++9z1G7evJnVq1dXOverUgqlFAsWLLi0Azntxx9/ZMCAAbRr1+6ytiPElVRWbmHGom0sWLePRr71+OeE7rQMu3pTtV2MKinAvParittvmnTEENjCoXoI/52Xmye+Ht4OP75wjSgn1aZNm3OWrVarSklJUVar1fa7V5Z8rBbuXm1b/nDNLPX15l9ty7M2/awmr51tW/5t10r16h+f2pbXHdqsXlnyscotOqmUUmp39sFqZTMajeqFF15QXbt2VR06dFBbtmxRN9xwg4qMjFSPP/64bb0HH3xQxcXFqZiYGDV69GhVUlKilFLqtttuU2+//bZSSqlly5aptm3bquLi4vP28/HHH6vo6GgVExOjHnzwQVVeXq4++ugj5efnp8LDw9U111xz3nO6du2qNm/efNFjqCzbrl27VGBgoAoKClKxsbHqq6++UmFhYcrf31/Fxsaq999/Xy1btkz16NFD3XXXXapDhw7qwIEDqkmTJurIkSNKKaWaNGmi/vnPf6r27durNm3aqKVLlyqllPriiy9UQkKCbf8JCQnqiy++UEuXLrUdT2xsrFqzZo0qKipS9913n+rcubOKiYlRH374oVJKqaysLNWvXz8VGxuroqKi1OTJk887rsreJ0LU1KGsk+rRDxep4c/PVe9+m6hOFZfpHekclrRtqnTOE6rkf/ep8o0/KKu5XO9Itdbfa9HZpAVrBxaLhZiYGF566SUef/xxbrnlFhITE6lXrx4tWrTgoYceIiIigkmTJtmmbnv44Yf58ssvue+++/j000/p0qULcXFx3HvvvcydOxd3d/dz9rFlyxbefvttkpKS8PHxYfjw4UybNo2JEyeSlJTEgAEDKp0+bvfu3fz2229MmDABFxcXXnnlFfr373/eehfK9vc5ai0WC6tXr2batGlARQs3KSmJqVOnXnAuWavVyqZNm9iyZQs33HAD+/btu+Br2a9fP2688cZzjueFF16gQ4cOfPrpp5SUlNCjRw/69+/PwoUL6devn21M5tzc3Cr/PwlRU0opFq4/wJe/b8Vo0Hj4ls70ad9E71jnsOxZiXndLLR6AbgMfBJDoGPfQ6qUIqcojwb1/PSOcsXV6gL7/DXnniJ9sPsd5yzf0X7oOcvXt+rF9a162Za7hsfS9ayebC0bRFRrv5qmMWzYMADat29PRkaGbRLx1q1bk5qaSkREBD/99JNtdp2TJ09itVoB8PPz47PPPqN///785z//ITb2/N50K1asYNiwYfj5Vbwp7777bmbPns39999fZTaz2UxeXh7r169n69atDBw4kD179lC/fv1z1rtQturo0KFDlRO1jx1bMeF9bGwsAQEB7N27t9rbBliwYAHFxcV88sknAOTn57N79266dOnCuHHjKCsrY+DAgZVOJC/Epco/VcrHP24gaddRIkP8efTWLg5zX+vZDKHtMLY8grHjMDRXx7gWXJWtGbt5f80MHuk51ilmyKmJWl1g9WIwGDCZTLafz0w0fmbZbDaTmprKpEmT2LBhAw0bNuTDDz9ky5YttvW2bNlCgwYNSE9Pr3Qf6hLmeQUICwtj9OjRALRr146wsDD2799P+/btbetcLNvFeHnV7ENH0zRMJtM5RfzM1HaVUUoxa9asczKfsWbNGn7//XcmTZpEq1atmDx5co2yCFGZbQeO8f53SeQVlHBL79bc1j8Kk9Ex+ogqpbCmLEYVZGPqNhrN0xdTt9F6x6q2IO+GXBMZT6uGTfWOcsU5xjukDiooKMDDwwM/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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "cdf_3d6 = pmf_3d6.make_cdf()\n", "cdf_3d6.plot(label='sum of 3 dice')\n", "\n", "cdf_best3 = pmf_best3.make_cdf()\n", "cdf_best3.plot(label='best 3 of 4 dice', ls='--')\n", "\n", "cdf_max6.plot(label='max of 6 attributes', ls=':')\n", "\n", "decorate_dice('Distribution of attributes')\n", "plt.ylabel('CDF');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`Cdf` provides `max_dist`, which does the same computation, so we can also compute the `Cdf` of the maximum like this:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.539561Z", "iopub.status.busy": "2021-04-16T19:35:32.539069Z", "iopub.status.idle": "2021-04-16T19:35:32.541075Z", "shell.execute_reply": "2021-04-16T19:35:32.540695Z" } }, "outputs": [], "source": [ "cdf_max_dist6 = cdf_best3.max_dist(6)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "And we can confirm that the differences are small." ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.544620Z", "iopub.status.busy": "2021-04-16T19:35:32.544171Z", "iopub.status.idle": "2021-04-16T19:35:32.546496Z", "shell.execute_reply": "2021-04-16T19:35:32.546875Z" }, "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.allclose(cdf_max_dist6, cdf_max6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the next section we'll find the distribution of the minimum.\n", "The process is similar, but a little more complicated.\n", "See if you can figure it out before you go on." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Minimum\n", "\n", "In the previous section we computed the distribution of a character's best attribute.\n", "Now let's compute the distribution of the worst.\n", "\n", "To compute the distribution of the minimum, we'll use the **complementary CDF**, which we can compute like this:" ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.550107Z", "iopub.status.busy": "2021-04-16T19:35:32.549668Z", "iopub.status.idle": "2021-04-16T19:35:32.551795Z", "shell.execute_reply": "2021-04-16T19:35:32.552222Z" } }, "outputs": [], "source": [ "prob_gt = 1 - cdf_best3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As the variable name suggests, the complementary CDF is the probability that a value from the distribution is greater than `x`.\n", "If we draw 6 values from the distribution, the probability that all 6 exceed `x` is:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.556052Z", "iopub.status.busy": "2021-04-16T19:35:32.555455Z", "iopub.status.idle": "2021-04-16T19:35:32.557352Z", "shell.execute_reply": "2021-04-16T19:35:32.557778Z" } }, "outputs": [], "source": [ "prob_gt6 = prob_gt**6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If all 6 exceed `x`, that means their minimum exceeds `x`, so `prob_gt6` is the complementary CDF of the minimum.\n", "And that means we can compute the CDF of the minimum like this:" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.561848Z", "iopub.status.busy": "2021-04-16T19:35:32.561049Z", "iopub.status.idle": "2021-04-16T19:35:32.562922Z", "shell.execute_reply": "2021-04-16T19:35:32.563376Z" } }, "outputs": [], "source": [ "prob_le6 = 1 - prob_gt6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is a Pandas `Series` that represents the CDF of the minimum of six attributes. We can put those values in a `Cdf` object like this:" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.566892Z", "iopub.status.busy": "2021-04-16T19:35:32.566369Z", "iopub.status.idle": "2021-04-16T19:35:32.568328Z", "shell.execute_reply": "2021-04-16T19:35:32.568768Z" } }, "outputs": [], "source": [ "cdf_min6 = Cdf(prob_le6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what it looks like, along with the distribution of the maximum." ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.613126Z", "iopub.status.busy": "2021-04-16T19:35:32.604907Z", "iopub.status.idle": "2021-04-16T19:35:32.762095Z", "shell.execute_reply": "2021-04-16T19:35:32.761655Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAdgAAAFgCAYAAAAYQGiBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/GU6VOAAAACXBIWXMAAAuJAAALiQE3ycutAABUTElEQVR4nO3deVhUZf8G8HuYYd9BRGBAQBTZxAX3fc/cUinT3Emr18qWt93Usqws6/dWZqappaJlqZn7hoqaCooKgigqy4ALINvIPnN+f5iTJCIihzMz3J/r8pIzc+ac+8AwX57nnPM8MkEQBBAREVG9MpE6ABERkTFigSUiIhIBCywREZEIWGCJiIhEwAJLREQkAhZYIiIiEbDAEhERiYAFlmotPT0dNjY2KCgoqNX6Q4YMwXfffSdyKv3h4OCAAwcOSB0D0dHRUCqVUseos4sXL6Jjx46wtbXF66+//lCvtbGxQXx8vEjJ6mbBggUYN26cblkmk+H06dPSBaIGwwJL6NOnD2QyGfbu3Vvl8c8//xwymQyvvPIKAMDLywtqtRr29va12u6OHTvwn//8p77j0gP07NkTKpVK6hh1tnDhQrRp0wZFRUVYtGjRQ71WrVYjJCSk3jOtWrUKbdu2rfLYvHnz8MQTTzzwte+++y7WrVtXLzkOHDgABweHetkWiY8FlgAA/v7+WLlyZZXHVq1ahdatW0uUiBqrK1euiFIkpVBZWSl1BJIQCywBAJ5++mns2LFD1/17/PhxCIKAzp0769ZJTU2FTCZDfn4+AGDKlCmYPn06nn76adja2sLf379KF2mfPn3wf//3fwD++ct7yZIl8PDwgKOjI/7v//4PSUlJ6Ny5M+zs7PDEE0/g1q1bVda/2xNPPIF58+bVaXvVmTBhAtzd3WFnZ4cOHTogKipK99ydFsv8+fPRtGlTuLq66o4FALRaLd5//324urrC3d0dixcvrvH7O2/ePAwfPhzPP/887O3t4ePjg6ioKGzatAl+fn5wdHTEe++9p1s/PT0dAwcOhIuLCxwdHTF06FCkpqYCuP2h3bVrV8yePVu3/syZM9G/f39otdp7vnd9+vTBW2+9hf79+8Pa2hpdunRBZmYm5s2bBxcXFyiVSmzatKnanxsAnD59GjKZrM7b+7eKigq888478PLygouLC8aOHYvs7GwAQKdOnRAVFYW33noLNjY29/SqAMCpU6fQpUsX2NnZoUmTJhg+fLjuubu7X5988klMmDBB99znn3+OoKAglJSUVJvrfu+HuLg4PP/884iPj4eNjQ1sbGzw888/Y8GCBdi6davuMeD270RERASeeuop2NnZYcmSJdW2dA8ePAh/f384ODhg7Nixut+7mt73ubm5GDJkCAoKCnT7jI6OBgDs3bsXnTp1goODA4KCgrBlyxbd6/fs2YM2bdrA1tYWrq6ueOGFF+77s6F6JlCj17t3b+Grr74Sxo0bJyxZskQQBEGYMWOGsHDhQmHy5MnCrFmzBEEQhCtXrggAhLy8PEEQBGHy5MmCjY2NsG/fPqGyslKYP3++0Lx583u2KwiCEBUVJZiYmAivv/66UFZWJuzevVuQy+XCY489JqSmpgp5eXlCYGCgsGjRIt369vb2VXKOHDlSmDt3bp22V50VK1YI+fn5Qnl5ubBw4ULByclJKCwsFARBEFauXCkoFAph4cKFQnl5uRAVFSXI5XIhJSVFEARB+PHHHwWlUikkJSUJt27dEqZMmSKYmJgIUVFR1e5r7ty5gqmpqbBhwwahsrJSeO+99wR3d3dh0qRJglqtFhISEgQzMzPh5MmTuu/19u3bhZKSEqGgoEAIDw8XBgwYoNve5cuXBUdHRyEqKkrYvHmz4OLiImRmZlb7vevdu7fg4eEhxMfHCyUlJUK/fv0EHx8f4csvvxQqKiqEH374QXB2dhbKy8vv+bkJgiDExcUJd39UPOz2/u2DDz4QgoODhbS0NKGoqEgYO3asMHDgwCrbv3v//9a1a1fho48+EjQajVBaWiocPHhQ9xwAIS4uThAEQcjLyxO8vLyEn376SYiJiRHs7OyEs2fP3ne7D3o/hIaGVll/7ty5wsiRI6s8NnnyZMHS0lLYuXOnoNFohFu3bt2zHgChQ4cOQmZmppCXlycMHDhQmDJliiAItXvf//v5M2fOCA4ODsK+ffsEjUYjREdHC3Z2dsL58+cFQRAENzc34eeffxYEQRDUarVw5MiR+34PqH6xBUs6U6dOxcqVK1FSUoLff/8dEydOfOBrhg4din79+kEul2Pq1KlIS0tDbm7ufdf/8MMPYWZmhoEDB8LJyQkjR45E8+bN4eDggKFDh+LUqVMPlflRtjd16lTY29vD1NQUb7zxBrRaLc6ePat73tnZGW+88QZMTU3Rp08f+Pj46FpHa9euxUsvvYTWrVvDysoKn376KbRabY1Z27dvj/DwcMjlcowfPx5ZWVl45513YG1tjaCgIISGhuryent7Y8iQIbCwsICdnR3ee+89HDp0SLcPHx8fLF68GBMmTEBERARWrFgBd3f3++57woQJCA4OhoWFBcaMGYOSkhK8+uqrUCgUeOaZZ5Cbm4u0tLTaftsfaXurV6/G7Nmz4eXlBRsbG3z55ZfYs2cPsrKyarVvU1NTpKWlISsrC+bm5ujVq1e16zk4OGDt2rWYNWsWnnrqKSxYsKDGrucHvR9qa9CgQRg8eDBMTExgZWVV7Tpvvvkm3N3d4eDggPnz5yMyMvKB75/7Wbp0KaZMmYJ+/frBxMQEPXr0wLBhw/Drr78CuP39SklJQXZ2NqytrdGtW7c67YceHgss6fTv3x/Xrl3D/Pnz0bVrVzRr1uyBr7l7HWtrawBAUVFRteva2tpW+cCxsrKq8norKyuo1epa532U7Wm1Wrz33nto2bIl7Ozs4ODggIKCAuTk5FR7bHeO786xZWVloXnz5rrnXF1dYW5uXmPef2er7rE7ebOzszF+/Hh4enrCzs4OvXr1Qnl5eZXv7ejRo6HRaODu7o5hw4Y91L5dXV3vyfIw3/tH2Z5KpYK3t7du2d3dHebm5rW+MGvFihUoLS1Fhw4d0Lp1a3z77bf3Xbd79+7w9fVFYWEhnn322fuuV5v3Q215eXk9cJ273zvNmzdHeXm5rpv8YaWmpuL777+Hg4OD7t8ff/yh+4Nl06ZNSEhIgL+/P9q1a6crvCQ+FljSMTExwaRJk/Dpp59i6tSpkmaxsbFBSUkJhLtmU7x69Wq9bT8yMhKRkZHYtm0bCgoKkJ+fD3t7+yr7q4m7u3uVFtqNGzdQVlZWb/neeecdFBcX49SpUygsLMShQ4cAoEq+119/HYGBgSgrK8M333xTb/u2sbFBcXGxbrk+v+8AoFQqdeeTAeDatWsoKyur9a1FLVq0wM8//4xr165h+fLl+O9//4uTJ09Wu+6iRYtQVlaGgIAAvPvuu/fd5oPeDyYm935UVvdYTY/f7e73Tnp6OszMzODi4vLA93112/b09MSsWbOQn5+v+6dWq7FkyRIAt3tOfv/9d+Tk5OD999/H+PHjcf369QdmpEfHAktVvPrqq9i9e3eVC0ek0KpVK5iamiIyMhIajQbr169HXFxcvW2/sLAQZmZmaNKkCcrLy/Hhhx+isLCw1q8fN24cFi9ejOTkZJSUlOCdd96p1Qfrw+SzsrKCg4MDcnNz8cEHH1R5fsuWLfj111+xZs0arFu3DrNnz65Td2Z12rdvj40bN6KgoAA3btzAwoUL62W7d0yYMAELFixARkYG1Go1XnvtNQwYMKDGLu67/fzzz7h+/TpkMhkcHR1hYmIChUJxz3onT57E/PnzsW7dOkRGRuKnn37Crl27qt3mg94Prq6uuHr1apULpFxdXZGWlgaNRvOQ34HbF1xlZWUhPz8fc+bMwdNPPw0TE5MHvu9dXV1RVFRUpbX73HPPYeXKlYiKioJGo0FZWRn++usvJCUloby8HKtXr0ZeXh5MTEx0F1BV9/2i+scCS1U4OTlhwIABMDU1lTSHnZ0dli1bhrfffhvOzs44fPgwBg8eXG/bnzx5MoKCgtC8eXP4+vrC0tISnp6etX79tGnTMGHCBPTs2RO+vr5o164dbG1t6y3fBx98gJSUFDg6OqJ79+4YMmSI7rmsrCzdeVc3Nze0b98e8+bNw7hx4+57hezDePXVV+Hm5gZPT0/069cPY8eOfeRt3u2dd97B4MGD0bVrV3h7e6OiogJr1qyp9ev37t2L0NBQ2NjYYMSIEfj8888RGhpaZR21Wo1x48bh448/RkhICDw9PfHDDz9g8uTJuHHjxj3bfND7oV+/fujSpQs8PDzg4OCA9PR0PPnkk7ormR/23tQJEyagb9++aN68OWxtbfG///0PwIPf9/7+/oiIiEBAQAAcHBxw+PBhtGvXTvdHlouLCzw8PPD+++/relQiIyPh5+cHW1tbvPTSS4iMjISzs/ND5aW6kQm17RMjIiKiWmMLloiISAQssERERCJggSUiIhIBCywREZEIDPZabTs7O4OekouIiAyfSqW67y1+BltglUolEhMTpY5BRESNWGBg4H2fYxcxERGRCFhgiYiIRGCwXcQ14dgZhunuOUeJiAydURVYrVaLjIyMKgOVk+GwsrKCp6dnvY7pS0QkFaMqsNnZ2ZDJZGjVqhU/pA2MVqtFZmYmsrOzq0x9RkRkqIyqwBYUFKB58+aQy+VSR6GHJJfLdbOTsMASkTEwmmaeIAjQaDSSzwJDdWdqagqNRsNz6ERkFIymwN7BC2UMF392RGRMRC2wL730EpRKZY2T+0ZFRSEwMBB+fn6YNm0aKisrxYykVx5//PFq56a8W2xsLJ5//vkGSvTwjhw5guDgYLRr1w6pqan3PL9gwQL4+/sjKCgI06ZNa/iAREQSEbXAjh07FidPnrzv8xqNBhEREdiwYQNSUlKgVquxevVqMSPple3bt6Np06Y1rhMWFobvv/++gRI9vDVr1mDmzJmIi4uDt7d3leciIyNx4sQJxMfH49y5c1iwYIE0IYmIJCDqRU49evSo8fmYmBgolUoEBQUBACIiIvDtt99i6tSpYsYSnUKhwHvvvYddu3ahvLwcq1atwuzZs5GUlIQRI0Zg0aJFAABvb28cPnwYSqUS3t7emDx5MrZv346CggKsWrUK3bp1w4EDB/DRRx9h7969OHDgAN599134+PggLi4OISEheOWVV/DWW28hIyMDn332GZ566qkqrwGAjz76CJWVlZg3bx7mzZuHS5cuIScnB0lJSXj55Zdha2uLH374Abdu3cLvv/+OgICAe45pyZIlWLx4MWQyGfr06YOvvvoKS5cuxS+//ILt27fj999/1+3vjq+//hpLly6FmZkZAKBZs2Yif+eJ6s/t6zq00FRqodUI0N71taZSC42m5sc1lRpoNcI92/zn63t2eN/nqn0dr1WoM1snK/iFiv95JOlVxCqVCp6enrplLy8vqFSqatddvHgxFi9erFvOy8urcdu/f30M19Pz6yXn3Vy9HDDm5S41rqPRaBAcHIwPPvgAr732GsaMGYPjx4/D2toaLVu2xEsvvXRPaw+4fR9oTEwMNmzYgLlz52LPnj33rHP27FlERkbCy8sLnTt3xpdffomoqCgkJydj6NCheOqppx54DElJSTh8+DCKiorQokULzJkzBzExMfjuu++wcOFCrFy5ssr6Z86cwaJFixATEwN7e3uMHj0ay5cvx8yZMxETE4MBAwZgwoQJ9+wnOTkZO3bswPTp02Fqaor58+ejX79+D8xHVB8qKzUoulmC/OxiFOTc+vv/218XZBejvLRSVxDvLqJ3CqVWq5X6EKie5VvmodS0FL38Ohh/gQWqXthS09WjM2fOxMyZM3XLNQ2wLDWZTIZRo0YBANq2bYurV6/CyckJANC6dWukpqZWW2DDw8MBAJ06dcI777xT7bbbtWune21ISAg6d+4MuVyOwMBAXL16tVYfCkOGDIGFhQUsLCzQ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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cdf_min6.plot(color='C4', label='minimum of 6')\n", "cdf_max6.plot(color='C2', label='maximum of 6', ls=':')\n", "decorate_dice('Minimum and maximum of six attributes')\n", "plt.ylabel('CDF');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`Cdf` provides `min_dist`, which does the same computation, so we can also compute the `Cdf` of the minimum like this:" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.766536Z", "iopub.status.busy": "2021-04-16T19:35:32.766111Z", "iopub.status.idle": "2021-04-16T19:35:32.767892Z", "shell.execute_reply": "2021-04-16T19:35:32.768318Z" } }, "outputs": [], "source": [ "cdf_min_dist6 = cdf_best3.min_dist(6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we can confirm that the differences are small." ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.772657Z", "iopub.status.busy": "2021-04-16T19:35:32.772097Z", "iopub.status.idle": "2021-04-16T19:35:32.774638Z", "shell.execute_reply": "2021-04-16T19:35:32.775069Z" } }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.allclose(cdf_min_dist6, cdf_min6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the exercises at the end of this chapter, you'll use distributions of the minimum and maximum to do Bayesian inference.\n", "But first we'll see what happens when we mix distributions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Mixture\n", "\n", "In this section I'll show how we can compute a distribution which is a mixture of other distributions.\n", "I'll explain what that means with some simple examples;\n", "then, more usefully, we'll see how these mixtures are used to make predictions.\n", "\n", "Here's another example inspired by *Dungeons & Dragons*:\n", "\n", "* Suppose your character is armed with a dagger in one hand and a short sword in the other.\n", "\n", "* During each round, you attack a monster with one of your two weapons, chosen at random.\n", "\n", "* The dagger causes one 4-sided die of damage; the short sword causes one 6-sided die of damage.\n", "\n", "What is the distribution of damage you inflict in each round?\n", "\n", "To answer this question, I'll make a `Pmf` to represent the 4-sided and 6-sided dice:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.779457Z", "iopub.status.busy": "2021-04-16T19:35:32.778936Z", "iopub.status.idle": "2021-04-16T19:35:32.781650Z", "shell.execute_reply": "2021-04-16T19:35:32.781084Z" } }, "outputs": [], "source": [ "d4 = make_die(4)\n", "d6 = make_die(6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's compute the probability you inflict 1 point of damage.\n", "\n", "* If you attacked with the dagger, it's 1/4.\n", "\n", "* If you attacked with the short sword, it's 1/6.\n", "\n", "Because the probability of choosing either weapon is 1/2, the total probability is the average:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.786557Z", "iopub.status.busy": "2021-04-16T19:35:32.785642Z", "iopub.status.idle": "2021-04-16T19:35:32.788922Z", "shell.execute_reply": "2021-04-16T19:35:32.789450Z" } }, "outputs": [ { "data": { "text/plain": [ "0.20833333333333331" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prob_1 = (d4(1) + d6(1)) / 2\n", "prob_1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the outcomes 2, 3, and 4, the probability is the same, but for 5 and 6 it's different, because those outcomes are impossible with the 4-sided die." ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.794121Z", "iopub.status.busy": "2021-04-16T19:35:32.793553Z", "iopub.status.idle": "2021-04-16T19:35:32.796490Z", "shell.execute_reply": "2021-04-16T19:35:32.796042Z" } }, "outputs": [ { "data": { "text/plain": [ "0.08333333333333333" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prob_6 = (d4(6) + d6(6)) / 2\n", "prob_6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To compute the distribution of the mixture, we could loop through the possible outcomes and compute their probabilities.\n", "\n", "But we can do the same computation using the `+` operator:" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.802178Z", "iopub.status.busy": "2021-04-16T19:35:32.801710Z", "iopub.status.idle": "2021-04-16T19:35:32.803562Z", "shell.execute_reply": "2021-04-16T19:35:32.803939Z" } }, "outputs": [], "source": [ "mix1 = (d4 + d6) / 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the mixture of these distributions looks like." ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.828505Z", "iopub.status.busy": "2021-04-16T19:35:32.820367Z", "iopub.status.idle": "2021-04-16T19:35:32.966618Z", "shell.execute_reply": "2021-04-16T19:35:32.966177Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mix1.bar(alpha=0.7)\n", "decorate_dice('Mixture of one 4-sided and one 6-sided die')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now suppose you are fighting three monsters:\n", "\n", "* One has a club, which causes one 4-sided die of damage.\n", "\n", "* One has a mace, which causes one 6-sided die.\n", "\n", "* And one has a quarterstaff, which also causes one 6-sided die. \n", "\n", "Because the melee is disorganized, you are attacked by one of these monsters each round, chosen at random.\n", "To find the distribution of the damage they inflict, we can compute a weighted average of the distributions, like this:" ] }, { "cell_type": "code", "execution_count": 48, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.971304Z", "iopub.status.busy": "2021-04-16T19:35:32.970806Z", "iopub.status.idle": "2021-04-16T19:35:32.972845Z", "shell.execute_reply": "2021-04-16T19:35:32.972416Z" } }, "outputs": [], "source": [ "mix2 = (d4 + 2*d6) / 3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This distribution is a mixture of one 4-sided die and two 6-sided dice.\n", "Here's what it looks like." ] }, { "cell_type": "code", "execution_count": 49, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:32.995932Z", "iopub.status.busy": "2021-04-16T19:35:32.995150Z", "iopub.status.idle": "2021-04-16T19:35:33.117724Z", "shell.execute_reply": "2021-04-16T19:35:33.117207Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mix2.bar(alpha=0.7)\n", "decorate_dice('Mixture of one 4-sided and two 6-sided die')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section we used the `+` operator, which adds the probabilities in the distributions, not to be confused with `Pmf.add_dist`, which computes the distribution of the sum of the distributions.\n", "\n", "To demonstrate the difference, I'll use `Pmf.add_dist` to compute the distribution of the total damage done per round, which is the sum of the two mixtures:" ] }, { "cell_type": "code", "execution_count": 50, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.122025Z", "iopub.status.busy": "2021-04-16T19:35:33.121481Z", "iopub.status.idle": "2021-04-16T19:35:33.123747Z", "shell.execute_reply": "2021-04-16T19:35:33.123236Z" } }, "outputs": [], "source": [ "total_damage = Pmf.add_dist(mix1, mix2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it looks like." ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.139228Z", "iopub.status.busy": "2021-04-16T19:35:33.136581Z", "iopub.status.idle": "2021-04-16T19:35:33.278941Z", "shell.execute_reply": "2021-04-16T19:35:33.279427Z" } }, "outputs": [ { "data": { "image/png": "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Xy+//HKtl12d0aNHq3///tq+fbv279+vRx55xFleZGSkSkpKtGfPHqd/QUGBMx0VFaUGDRqoqKhIe/fudX5KSkpqFa51qW3btsrLy6t23m+PkfRL7bfddluluv1+v5577jlJVY/Dr7f7aH57T7CgoMDZD506dVLXrl312muvae7cuUpOTq5xWUVFRSorK6t2Wb/9nTx8+LCKioqO+jt5vH67/UfW//TTT2vjxo1as2aN9u/f79Ty69/D39bwezVFRUWpZcuWlY7Hvn37nP8INm7cWI8//ri2bt2qjz/+WB988MFJ+4gWqiJgUSdGjhypVatWaenSpQoEAlq8eLFWr16tUaNGSfrlDPPIG0ykX94cU1JSoubNm+uss87Shg0btGDBglqvb/To0UpPT9fWrVt16NAh3XvvvZX+OO3fv19NmjRRaGiovv32Wz355JMntH379+9XWFiYzjnnHH355ZdOwEi//NH77//+b02bNk2HDh3S119/rRdeeMGZ36pVK1199dW65ZZbnBDetWtXpTdRnSxjxozRJ598oueff16lpaX6+eefnTczRURE6MCBA/rhhx+c/ikpKZozZ46ysrIUCARUWlqqjz/+WF9++aWkX47DY4895vznYcaMGb9bw8qVK/XOO++ovLxcGRkZ+u677zR06FBnvtfr1dNPP62PPvpIY8eOrXFZBw8e1IMPPqjDhw9rw4YNmj9/vsaMGSNJGjt2rGbOnKnc3FyVlpYqLS1Nbdq0Uc+ePZ3t/eabb45tB1ZjxowZ2rt3r4qKivToo48669+/f7/OPvtshYeHy+/3a9q0ab+7rIiICH333XeV3kD3az169FB0dLTS0tJ04MABGWO0c+dOvfvuu5Kkt99+W9u2bVNFRYVCQ0N1xhlnqGFDLlTWFwIWdcLtdmvx4sW6//77FR4erhkzZmjJkiXOZdEbbrhBhYWFCg8PV5cuXdSkSROlp6frpptuUmhoqB5++GGNHDmy1utLTk7W2LFj1adPH3Xo0EHdu3dXkyZNnPl///vf9fbbbys0NFRXXXWVrrnmmhPavlmzZumpp55y3nF65D8ORyxYsEDbt29XRESERo0apbFjx1a6ZD137lyFhYWpR48eCg0NVZ8+fbRx48YTqul4uFwurVixQgsWLFBERITatWvnvPO3U6dO8nq96ty5s8LCwrRmzRp1795dr7zyitLS0tSiRQu1adNG9913n3O1IC0tTR6PR3FxcerWrVuld7sezXXXXaeMjAyFhYXp2Wef1dKlSxUeHu7Mv/baa7Vz504NGjRILVq0qHFZcXFxKi8vV+vWrZWYmKiHH35Y/fv3lySNGzdOkydP1rBhw9SqVSt9+umneuutt5zAmTZtmmbOnKnw8PBafU74aK666ip169ZNcXFx6tWrlxOkd9xxh4KDgxUREaG4uDhdcsklv7us+Ph4XXzxxWrTpo3CwsKqXBEIDg7WW2+9pcLCQnXu3FlNmzbV0KFDnasSeXl5GjRokJo0aaKYmBhdcskluvnmm49723BigsyJXDcDUK1HHnlEK1eudD6qhGNz3nnn6ZlnntGVV15Z36UcVX5+vtq3b6/i4uI/1QM6UHucwQJ1YNOmTfrqq69kjNHGjRs1c+ZMjRgxor7LOi0tXLhQ5eXllS4bA6cjLs4DdeCHH37QxIkT9f3336tFixbyer3yer31XdZpp3Pnzvrpp580b948BQcH13c5wAnhEjEAABZwiRgAAAsIWAAALPjD3YMNDQ11PkgOAIBNPp9P+/fvr3beHy5gXS6XcnNz67sMAMCfQExMzFHncYkYAAALCFgAACwgYAEAsICABQDAAgIWAAALCFgAACwgYAEAsICABQDAAgIWAAALCFgAACwgYAEAsICABQDAAqsP+8/KylJqaqoOHz6syy67TC+88IIaNqy8ysmTJ2vJkiXatWuXysvLK81bv369br31Vh08eFCS9P777ysyMtJmyTiNXHPfayd1fa8/mHhS1wfg9GbtDDYQCMjr9WrRokXKy8uT3+9XZmZmlX4jR47Uxo0bq7x+4MABjRs3TvPmzdMXX3yhdevWKTw83Fa5AADUKWtnsNnZ2XK5XIqNjZUkeb1ezZw5UxMmTKjUr3fv3tWOnz9/voYOHarOnTtLkpo2bWqrVOCEcTYN4LesncH6fD5FRUU57ejoaPl8vlqP37p1q0pLSzVgwAB1795daWlpMsbYKBUAgDpn9R5sUFCQM32s4VhWVqZVq1Zp9erVCgkJ0ZVXXqnMzEyNGzeuUr/09HSlp6c77eLi4hMrGjjNcTYNnBqsncFGRUWpoKDAaft8PrlcrlqPj46O1uDBg9W8eXM1atRIw4cP16ZNm6r0S01NVW5urvPDfVoAwKnAWsB6PB4VFhYqNzdXkjR79mwlJCTUenxCQoLWrFmjkpISVVRUaOXKlc79XAAATnXWAjY4OFgZGRlKTEyU2+1WSEiIkpKSlJOToyFDhjj9UlJS5HK5FAgE5HK5lJKSIklyu90aN26cLrzwQnXp0kUtW7ZUcnKyrXIBAKhTVu/BxsfHO2ewR3g8Hi1btsxpz5o166jjU1NTlZqaaq0+AABs4UlOAABYQMACAGABAQsAgAUELAAAFhCwAABYQMACAGABAQsAgAUELAAAFhCwAABYQMACAGABAQsAgAUELAAAFhCwAABYQMACAGABAQsAgAUELAAAFhCwAABYQMACAGABAQsAgAUELAAAFhCwAABYQMACAGABAQsAgAUELAAAFhCwAABYYDVgs7KyFBMTI7fbreTkZJWXl1fpM3nyZLlcLjVs2LDaZezdu1eRkZG64YYbbJYKAECdshawgUBAXq9XixYtUl5envx+vzIzM6v0GzlypDZu3HjU5UydOlUDBgywVSYAAFZYC9js7Gy5XC7FxsZKkrxerxYvXlylX+/evRUREVHtMrKyslRaWkrAAgBOO9YC1ufzKSoqymlHR0fL5/PVevyhQ4d0zz336KmnnrJRHgAAVlV/47OOBAUFOdPGmGMaO336dKWkpKhFixY19ktPT1d6errTLi4uPrYiAQCwwFrARkVFqaCgwGn7fD65XK5aj1+3bp1effVVzZgxQ36/X6WlpTLG6KWXXqrULzU1VampqU47JibmxIsHAOAEWQtYj8ejwsJC5ebmKiYmRrNnz1ZCQkKtx69evdqZnjt3rtasWaMXX3zRRqkAANQ5a/dgg4ODlZGRocTERLndboWEhCgpKUk5OTkaMmSI0y8lJUUul0uBQEAul0spKSm2SgIA4KSxeg82Pj5eubm5lV7zeDxatmyZ0541a9bvLmf8+PEaP358XZcHAIA1PMkJAAALCFgAACwgYAEAsICABQDAAgIWAAALCFgAACwgYAEAsICABQDAAgIWAAALCFgAACwgYAEAsICABQDAAgIWAAALCFgAACwgYAEAsICABQDAAgIWAAALCFgAACwgYAEAsICABQDAAgIWAAALCFgAACwgYAEAsICABQDAAgIWAAALrAZsVlaWYmJi5Ha7lZycrPLy8ip9Jk+eLJfLpYYNG1Z6ff78+eratau6dOmiHj16aNWqVTZLBQCgTjX8/S7HJxAIyOv16q233lJsbKyuvfZaZWZmasKECZX6jRw5UmlpaWrTpk2l19u3b6+srCw1a9ZMX3zxhQYMGKCioiI1aMBJd3265r7XTur6Xn8w8aSuDwDqirW0ys7OlsvlUmxsrCTJ6/Vq8eLFVfr17t1bERERVV6/9NJL1axZM0lSTEyMSkpK5Pf7bZULAECdshawPp9PUVFRTjs6Olo+n++4lrVgwQLFxsYqNDS0rsoDAMAqa5eIJSkoKMiZNsYc1zI2bdqktLQ0LV++vNr56enpSk9Pd9rFxcXHtR4AAOqStYCNiopSQUGB0/b5fHK5XMe0jG3btmnEiBFauHChzj///Gr7pKamKjU11WnHxMQcX8EA6hT36/FnZ+0SscfjUWFhoXJzcyVJs2fPVkJCQq3H+3w+DR06VM8//7x69eplq0wAAKywFrDBwcHKyMhQYmKi3G63QkJClJSUpJycHA0ZMsTpl5KSIpfLpUAgIJfLpZSUFEnSAw88oN27d+uuu+5St27d1K1bN+Xn59sqFwCAOmX1Hmx8fLxzBnuEx+PRsmXLnPasWbOqHZuRkaGMjAyb5QEAYA0fKgUAwAICFgAACwhYAAAsIGABALCAgAUAwAICFgAACwhYAAAsIGABALCAgAUAwAICFgAACwhYAAAsIGABALCAgAUAwAICFgAACwhYAAAsIGABALCAgAUAwAICFgAACwhYAAAsIGABALCAgAUAwAICFgAACwhYAAAsIGABALCAgAUAwAKrAZuVlaWYmBi53W4lJyervLy8Sp/JkyfL5XKpYcOGVeZNnTpVbrdbHTt21GuvvWazVAAA6pS1gA0EAvJ6vVq0aJHy8vLk9/uVmZlZpd/IkSO1cePGKq8vX75c69ev11dffaWsrCxNmTJFBw4csFUuAAB1ylrAZmdny+VyKTY2VpLk9Xq1ePHiKv169+6tiIiIKq8vXrxY48ePV8OGDdWmTRv17t1by5cvt1UuAAB1ylrA+nw+RUVFOe3o6Gj5fL6TNh4AgPpU9cZnHQoKCnKmjTFWxqenpys9Pd1pFxcXH/N6AACoa9bOYKOiolRQUOC0fT6fXC5XnY9PTU1Vbm6u8xMeHn5ihQMAUAesBazH41FhYaFyc3MlSbNnz1ZCQkKtxyckJGjevHkKBAIqKirSmjVrdPnll9sqFwCAOmUtYIODg5WRkaHExES53W6FhIQoKSlJOTk5GjJkiNMvJSVFLpdLgUBALpdLKSkpkqSBAweqV69e6tSpk/r27aunn35aTZo0sVUuAAB1yuo92Pj4eOcM9giPx6Nly5Y57VmzZh11/BNPPKEnnnjCWn0AANjCk5wAALCAgAUAwAICFgAACwhYAAAsIGABALCAgAUAwAICFgAACwhYAAAsIGABALCAgAUAwAICFgAACwhYAAAsqDFgf/2g/U2bNlkvBgCAP4oaA3bhwoXO9A033GC9GAAA/ihqDFhjTLXTAACgZjV+H+zBgwf18ccfq6KiQj///LM+/vjjSkF76aWXWi8QAIDTUY0BGxkZqWnTplWZlqSgoCCtXLnSbnUAAJymagzYVatWnaQyAAD4Y6kxYNetW1fjYC4RAwBQvRoDtnfv3oqLi9O5555b5U1OXCIGAODoagzYRx99VP/6178UGhqqpKQk/fWvf9WZZ555smoDAOC0VePHdO6++25t3LhR999/v9auXauuXbtq4sSJ2rZt28mqDwCA01KNZ7BHdO/eXeedd546duyotLQ09ezZUx07drRdGwAAp60aA7a8vFzvvPOOMjMzlZeXpxEjRignJ0ft2rU7SeUBAHB6qjFgW7VqpbZt2yopKUlTpkxRUFCQioqKVFRUJIl3EQMAcDQ1BmxcXJyCgoK0dOlSLV26tNK82ryLOCsrS6mpqTp8+LAuu+wyvfDCC2rYsGGt+hhjNGXKFL3//vsyxqhv376aOXOmgoODj3NTAQA4eaw9aCIQCMjr9eqtt95SbGysrr32WmVmZmrChAm16pOVlaXs7Gx99tlnkqR+/frpvffe09ChQ4+7JgAATpYaA3bHjh2688479fXXX6tLly566qmn1Lp161otODs7Wy6XS7GxsZIkr9ermTNnVgrYmvoEBQWppKREhw8fliSVlpYqIiLiuDbyj+Ca+147qet7/cHEk7o+APijqfFjOsnJyerYsaOefPJJNW3aVFOmTKn1gn0+n6Kiopx2dHS0fD5frfv0799f/fv3V+vWrdW6dWv16dNHHo+n1usHAKA+1XgGu2fPHj322GOSpCuuuELdu3c/poUHBQU500f7uruj9cnJyVFBQYG+++47SdLw4cO1aNEijRgxotL49PR0paenO+3i4uJjqhEAABtqPIM944wznOmgoCA1aFBj90qioqJUUFDg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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "total_damage.bar(alpha=0.7)\n", "decorate_dice('Total damage inflicted by both parties')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## General Mixtures\n", "\n", "In the previous section we computed mixtures in an *ad hoc* way.\n", "Now we'll see a more general solution.\n", "In future chapters, we'll use this solution to generate predictions for real-world problems, not just role-playing games.\n", "But if you'll bear with me, we'll continue the previous example for one more section.\n", "\n", "Suppose three more monsters join the combat, each of them with a battle axe that causes one 8-sided die of damage.\n", "Still, only one monster attacks per round, chosen at random, so the damage they inflict is a mixture of:\n", "\n", "* One 4-sided die,\n", "* Two 6-sided dice, and\n", "* Three 8-sided dice.\n", "\n", "I'll use a `Pmf` to represent a randomly chosen monster:" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.286725Z", "iopub.status.busy": "2021-04-16T19:35:33.284730Z", "iopub.status.idle": "2021-04-16T19:35:33.290910Z", "shell.execute_reply": "2021-04-16T19:35:33.290555Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
probs
40.166667
60.333333
80.500000
\n", "
" ], "text/plain": [ "4 0.166667\n", "6 0.333333\n", "8 0.500000\n", "dtype: float64" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hypos = [4,6,8]\n", "counts = [1,2,3]\n", "pmf_dice = Pmf(counts, hypos)\n", "pmf_dice.normalize()\n", "pmf_dice" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This distribution represents the number of sides on the die we'll roll and the probability of rolling each one.\n", "For example, one of the six monsters has a dagger, so the probability is $1/6$ that we roll a 4-sided die.\n", "\n", "Next I'll make a sequence of `Pmf` objects to represent the dice:" ] }, { "cell_type": "code", "execution_count": 53, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.294783Z", "iopub.status.busy": "2021-04-16T19:35:33.294222Z", "iopub.status.idle": "2021-04-16T19:35:33.295894Z", "shell.execute_reply": "2021-04-16T19:35:33.296242Z" } }, "outputs": [], "source": [ "dice = [make_die(sides) for sides in hypos]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To compute the distribution of the mixture, I'll compute the weighted average of the dice, using the probabilities in `pmf_dice` as the weights.\n", "\n", "To express this computation concisely, it is convenient to put the distributions into a Pandas `DataFrame`:" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.300969Z", "iopub.status.busy": "2021-04-16T19:35:33.300520Z", "iopub.status.idle": "2021-04-16T19:35:33.309423Z", "shell.execute_reply": "2021-04-16T19:35:33.309778Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
12345678
00.2500000.2500000.2500000.250000NaNNaNNaNNaN
10.1666670.1666670.1666670.1666670.1666670.166667NaNNaN
20.1250000.1250000.1250000.1250000.1250000.1250000.1250.125
\n", "
" ], "text/plain": [ " 1 2 3 4 5 6 7 8\n", "0 0.250000 0.250000 0.250000 0.250000 NaN NaN NaN NaN\n", "1 0.166667 0.166667 0.166667 0.166667 0.166667 0.166667 NaN NaN\n", "2 0.125000 0.125000 0.125000 0.125000 0.125000 0.125000 0.125 0.125" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "pd.DataFrame(dice)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is a `DataFrame` with one row for each distribution and one column for each possible outcome.\n", "Not all rows are the same length, so Pandas fills the extra spaces with the special value `NaN`, which stands for \"not a number\".\n", "We can use `fillna` to replace the `NaN` values with 0." ] }, { "cell_type": "raw", "metadata": { "execution": { "iopub.execute_input": "2021-04-12T15:01:40.666810Z", "iopub.status.busy": "2021-04-12T15:01:40.666262Z", "iopub.status.idle": "2021-04-12T15:01:40.669604Z", "shell.execute_reply": "2021-04-12T15:01:40.669178Z" } }, "source": [ "pd.DataFrame(dice).fillna(0)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The next step is to multiply each row by the probabilities in `pmf_dice`, which turns out to be easier if we transpose the matrix so the distributions run down the columns rather than across the rows:" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.314949Z", "iopub.status.busy": "2021-04-16T19:35:33.314409Z", "iopub.status.idle": "2021-04-16T19:35:33.316129Z", "shell.execute_reply": "2021-04-16T19:35:33.316499Z" } }, "outputs": [], "source": [ "df = pd.DataFrame(dice).fillna(0).transpose()" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.324161Z", "iopub.status.busy": "2021-04-16T19:35:33.323375Z", "iopub.status.idle": "2021-04-16T19:35:33.326601Z", "shell.execute_reply": "2021-04-16T19:35:33.326987Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
10.250.1666670.125
20.250.1666670.125
30.250.1666670.125
40.250.1666670.125
50.000.1666670.125
60.000.1666670.125
70.000.0000000.125
80.000.0000000.125
\n", "
" ], "text/plain": [ " 0 1 2\n", "1 0.25 0.166667 0.125\n", "2 0.25 0.166667 0.125\n", "3 0.25 0.166667 0.125\n", "4 0.25 0.166667 0.125\n", "5 0.00 0.166667 0.125\n", "6 0.00 0.166667 0.125\n", "7 0.00 0.000000 0.125\n", "8 0.00 0.000000 0.125" ] }, "execution_count": 56, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can multiply by the probabilities in `pmf_dice`:\n" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.330625Z", "iopub.status.busy": "2021-04-16T19:35:33.328502Z", "iopub.status.idle": "2021-04-16T19:35:33.332816Z", "shell.execute_reply": "2021-04-16T19:35:33.332380Z" } }, "outputs": [], "source": [ "df *= pmf_dice.ps" ] }, { "cell_type": "code", "execution_count": 58, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.340823Z", "iopub.status.busy": "2021-04-16T19:35:33.340224Z", "iopub.status.idle": "2021-04-16T19:35:33.343890Z", "shell.execute_reply": "2021-04-16T19:35:33.343386Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
012
10.0416670.0555560.0625
20.0416670.0555560.0625
30.0416670.0555560.0625
40.0416670.0555560.0625
50.0000000.0555560.0625
60.0000000.0555560.0625
70.0000000.0000000.0625
80.0000000.0000000.0625
\n", "
" ], "text/plain": [ " 0 1 2\n", "1 0.041667 0.055556 0.0625\n", "2 0.041667 0.055556 0.0625\n", "3 0.041667 0.055556 0.0625\n", "4 0.041667 0.055556 0.0625\n", "5 0.000000 0.055556 0.0625\n", "6 0.000000 0.055556 0.0625\n", "7 0.000000 0.000000 0.0625\n", "8 0.000000 0.000000 0.0625" ] }, "execution_count": 58, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And add up the weighted distributions:" ] }, { "cell_type": "code", "execution_count": 59, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.349701Z", "iopub.status.busy": "2021-04-16T19:35:33.348913Z", "iopub.status.idle": "2021-04-16T19:35:33.352453Z", "shell.execute_reply": "2021-04-16T19:35:33.351964Z" }, "tags": [ "hide-output" ] }, "outputs": [ { "data": { "text/plain": [ "1 0.159722\n", "2 0.159722\n", "3 0.159722\n", "4 0.159722\n", "5 0.118056\n", "6 0.118056\n", "7 0.062500\n", "8 0.062500\n", "dtype: float64" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.sum(axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The argument `axis=1` means we want to sum across the rows.\n", "The result is a Pandas `Series`.\n", "\n", "Putting it all together, here's a function that makes a weighted mixture of distributions." ] }, { "cell_type": "code", "execution_count": 60, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.356915Z", "iopub.status.busy": "2021-04-16T19:35:33.356141Z", "iopub.status.idle": "2021-04-16T19:35:33.358351Z", "shell.execute_reply": "2021-04-16T19:35:33.358991Z" } }, "outputs": [], "source": [ "def make_mixture(pmf, pmf_seq):\n", " \"\"\"Make a mixture of distributions.\"\"\"\n", " df = pd.DataFrame(pmf_seq).fillna(0).transpose()\n", " df *= np.array(pmf)\n", " total = df.sum(axis=1)\n", " return Pmf(total)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first parameter is a `Pmf` that maps from each hypothesis to a probability.\n", "The second parameter is a sequence of `Pmf` objects, one for each hypothesis.\n", "We can call it like this:" ] }, { "cell_type": "code", "execution_count": 61, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.365638Z", "iopub.status.busy": "2021-04-16T19:35:33.363553Z", "iopub.status.idle": "2021-04-16T19:35:33.367689Z", "shell.execute_reply": "2021-04-16T19:35:33.368168Z" } }, "outputs": [], "source": [ "mix = make_mixture(pmf_dice, dice)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what it looks like." ] }, { "cell_type": "code", "execution_count": 62, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.399930Z", "iopub.status.busy": "2021-04-16T19:35:33.390116Z", "iopub.status.idle": "2021-04-16T19:35:33.566607Z", "shell.execute_reply": "2021-04-16T19:35:33.566961Z" }, "tags": [ "hide-input" ] }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "mix.bar(label='mixture', alpha=0.6)\n", "decorate_dice('Distribution of damage with three different weapons')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section I used Pandas so that `make_mixture` is concise, efficient, and hopefully not too hard to understand.\n", "In the exercises at the end of the chapter, you'll have a chance to practice with mixtures, and we will use `make_mixture` again in the next chapter." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summary\n", "\n", "This chapter introduces the `Cdf` object, which represents the cumulative distribution function (CDF).\n", "\n", "A `Pmf` and the corresponding `Cdf` are equivalent in the sense that they contain the same information, so you can convert from one to the other. \n", "The primary difference between them is performance: some operations are faster and easier with a `Pmf`; others are faster with a `Cdf`.\n", "\n", "In this chapter we used `Cdf` objects to compute distributions of maximums and minimums; these distributions are useful for inference if we are given a maximum or minimum as data.\n", "You will see some examples in the exercises, and in future chapters.\n", "We also computed mixtures of distributions, which we will use in the next chapter to make predictions.\n", "\n", "But first you might want to work on these exercises." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Exercises" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** When you generate a D&D character, instead of rolling dice, you can use the \"standard array\" of attributes, which is 15, 14, 13, 12, 10, and 8.\n", "Do you think you are better off using the standard array or (literally) rolling the dice?\n", "\n", "Compare the distribution of the values in the standard array to the distribution we computed for the best three out of four:\n", "\n", "* Which distribution has higher mean? Use the `mean` method.\n", "\n", "* Which distribution has higher standard deviation? Use the `std` method.\n", "\n", "* The lowest value in the standard array is 8. For each attribute, what is the probability of getting a value less than 8? If you roll the dice six times, what's the probability that at least one of your attributes is less than 8?\n", "\n", "* The highest value in the standard array is 15. For each attribute, what is the probability of getting a value greater than 15? If you roll the dice six times, what's the probability that at least one of your attributes is greater than 15?" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "To get you started, here's a `Cdf` that represents the distribution of attributes in the standard array:" ] }, { "cell_type": "code", "execution_count": 63, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.571476Z", "iopub.status.busy": "2021-04-16T19:35:33.571037Z", "iopub.status.idle": "2021-04-16T19:35:33.573281Z", "shell.execute_reply": "2021-04-16T19:35:33.572815Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "standard = [15,14,13,12,10,8]\n", "cdf_standard = Cdf.from_seq(standard)" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "We can compare it to the distribution of attributes you get by rolling four dice at adding up the best three." ] }, { "cell_type": "code", "execution_count": 64, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.667038Z", "iopub.status.busy": "2021-04-16T19:35:33.649741Z", "iopub.status.idle": "2021-04-16T19:35:33.820988Z", "shell.execute_reply": "2021-04-16T19:35:33.820486Z" }, "tags": [ "hide-cell" ] }, "outputs": [ { "data": { "image/png": "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kCFISkpCUlIS1q9fX1dvD5FT45WciJzY3r17ERMTU+5uMklJSdizZ0+lz5s5cyZ2796NrKwsAMC5c+cwbtw4rF27Fm3btkVRURHMZjO++uorrF271nEJzJ49eyI5ORl33nknAMBisWDjxo2YNWsWBg4ciK1bt6JZs2ZISUnBhg0b0KtXL0yaNAnvvPMO4uPjkZOTgz59+uDIkSNlbj5A5IlYsEQuSAhRowL78ccf0aVLF8c1l/39/QEAGRkZGDNmDHx8fACU3sRh3bp1joIdMWIEACAxMRExMTFo3rw5AKB9+/Y4evQoOnXqhM2bN2Ps2LGO17LZbDhz5oxu99gkchUsWCInFh8fj19++QUFBQVlRrGZmZlITU3FihUroGkagNIbR1emsiuiVvT964vb29sbACDLsuPfvz222+0QQsDX19cxUiai/+I+WCIn1rx5cwwZMgSPPfYYVFUFACxcuBB5eXm477770KxZM/z0008AgH//+9+O5wUGBqKwsNDxOCUlBT/++CP27dsHACgqKkJxcTH69OmDjz/+GMXFxbh27RqWLFmCPn36VDtfQEAA4uLisGDBAsf3du7ceUvrTOQuWLBETm7evHmQZRkxMTGIiYnBp59+im+//RY+Pj546aWX8PTTT6NHjx4oKipyPOe3e/cmJCRg4sSJaNCgAdLS0jBu3DgkJCSgb9++KCwsxNChQ9G/f3906tQJnTp1wpAhQxybh6tr8eLFWL58Odq3b4/Y2Fi8++67tf0WELkk3k2HiIhIBxzBEhER6YAFS0REpAMWLBERkQ5YsERERDpgwRIREemABUtERKQDFiwREZEOWLBEREQ6+H9Usf1lNoNA7AAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "cdf_best3.plot(label='best 3 of 4', color='C1', ls='--')\n", "cdf_standard.step(label='standard set', color='C7')\n", "\n", "decorate_dice('Distribution of attributes')\n", "plt.ylabel('CDF');" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "I plotted `cdf_standard` as a step function to show more clearly that it contains only a few quantities." ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.825146Z", "iopub.status.busy": "2021-04-16T19:35:33.824423Z", "iopub.status.idle": "2021-04-16T19:35:33.827188Z", "shell.execute_reply": "2021-04-16T19:35:33.826753Z" } }, "outputs": [ { "data": { "text/plain": [ "(12.2203, 12.0)" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# Here are the means\n", "cdf_best3.mean(), cdf_standard.mean()" ] }, { "cell_type": "code", "execution_count": 66, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.831439Z", "iopub.status.busy": "2021-04-16T19:35:33.830792Z", "iopub.status.idle": "2021-04-16T19:35:33.833271Z", "shell.execute_reply": "2021-04-16T19:35:33.833623Z" }, "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "(2.8883503786763822, 2.3804761428476167)" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# And the standard deviations\n", "cdf_best3.std(), cdf_standard.std()" ] }, { "cell_type": "code", "execution_count": 67, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.837780Z", "iopub.status.busy": "2021-04-16T19:35:33.837233Z", "iopub.status.idle": "2021-04-16T19:35:33.839569Z", "shell.execute_reply": "2021-04-16T19:35:33.839916Z" } }, "outputs": [ { "data": { "text/plain": [ "0.0581" ] }, "execution_count": 67, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# Here's the probability that a single attribute is less than 8\n", "cdf_best3.lt_dist(8)" ] }, { "cell_type": "code", "execution_count": 68, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.843912Z", "iopub.status.busy": "2021-04-16T19:35:33.843367Z", "iopub.status.idle": "2021-04-16T19:35:33.845820Z", "shell.execute_reply": "2021-04-16T19:35:33.846168Z" } }, "outputs": [ { "data": { "text/plain": [ "0.13160000000000005" ] }, "execution_count": 68, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# And the probability that a single attribute is greater than 15\n", "cdf_best3.gt_dist(15)" ] }, { "cell_type": "code", "execution_count": 69, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.850671Z", "iopub.status.busy": "2021-04-16T19:35:33.850253Z", "iopub.status.idle": "2021-04-16T19:35:33.854102Z", "shell.execute_reply": "2021-04-16T19:35:33.853687Z" } }, "outputs": [ { "data": { "text/plain": [ "(0.3017213214200759, 0.3017213214200759)" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# Here are two ways to compute the probability that at\n", "# least one attribute is less than 8\n", "cdf_min6.lt_dist(8), 1 - (1-cdf_best3.lt_dist(8))**6" ] }, { "cell_type": "code", "execution_count": 70, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.858526Z", "iopub.status.busy": "2021-04-16T19:35:33.858063Z", "iopub.status.idle": "2021-04-16T19:35:33.860312Z", "shell.execute_reply": "2021-04-16T19:35:33.860666Z" } }, "outputs": [ { "data": { "text/plain": [ "(0.5711366944317103, 0.5711366944317103)" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# And two ways to compute the probability that at least\n", "# one attribute is greater than 15\n", "cdf_max6.gt_dist(15), 1 - (1-cdf_best3.gt_dist(15))**6" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** Suppose you are fighting three monsters:\n", "\n", "* One is armed with a short sword that causes one 6-sided die of damage,\n", "\n", "* One is armed with a battle axe that causes one 8-sided die of damage, and\n", "\n", "* One is armed with a bastard sword that causes one 10-sided die of damage.\n", "\n", "One of the monsters, chosen at random, attacks you and does 1 point of damage.\n", "\n", "Which monster do you think it was? Compute the posterior probability that each monster was the attacker.\n", "\n", "If the same monster attacks you again, what is the probability that you suffer 6 points of damage?\n", "\n", "Hint: Compute a posterior distribution as we have done before and pass it as one of the arguments to `make_mixture`." ] }, { "cell_type": "code", "execution_count": 71, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.869825Z", "iopub.status.busy": "2021-04-16T19:35:33.869229Z", "iopub.status.idle": "2021-04-16T19:35:33.871979Z", "shell.execute_reply": "2021-04-16T19:35:33.872359Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
probs
60.425532
80.319149
100.255319
\n", "
" ], "text/plain": [ "6 0.425532\n", "8 0.319149\n", "10 0.255319\n", "dtype: float64" ] }, "execution_count": 71, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# Here's what we believe about the dice after seeing the data\n", "\n", "hypos = [6, 8, 10]\n", "prior = Pmf(1, hypos)\n", "likelihood = 1/prior.qs\n", "posterior = prior * likelihood\n", "posterior.normalize()\n", "posterior" ] }, { "cell_type": "code", "execution_count": 72, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.876419Z", "iopub.status.busy": "2021-04-16T19:35:33.875994Z", "iopub.status.idle": "2021-04-16T19:35:33.877630Z", "shell.execute_reply": "2021-04-16T19:35:33.878036Z" } }, "outputs": [], "source": [ "# Solution\n", "\n", "# Here's a sequence that represents the three dice\n", "\n", "d6 = make_die(6)\n", "d8 = make_die(8)\n", "d10 = make_die(10)\n", "\n", "dice = d6, d8, d10" ] }, { "cell_type": "code", "execution_count": 73, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:33.903730Z", "iopub.status.busy": "2021-04-16T19:35:33.901601Z", "iopub.status.idle": "2021-04-16T19:35:34.009597Z", "shell.execute_reply": "2021-04-16T19:35:34.009942Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "# And here's a mixture of the three dice, weighting\n", "# each one with the probability from the posterior distribution\n", "\n", "mix3 = make_mixture(posterior, dice)\n", "mix3.bar()" ] }, { "cell_type": "code", "execution_count": 74, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:34.013646Z", "iopub.status.busy": "2021-04-16T19:35:34.013169Z", "iopub.status.idle": "2021-04-16T19:35:34.015385Z", "shell.execute_reply": "2021-04-16T19:35:34.015763Z" } }, "outputs": [ { "data": { "text/plain": [ "0.13634751773049647" ] }, "execution_count": 74, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "# From the mixture, we can pull out the probability of\n", "# rolling a 6.\n", "\n", "mix3[6]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** Henri Poincaré was a French mathematician who taught at the Sorbonne around 1900. The following anecdote about him is probably fiction, but it makes an interesting probability problem.\n", "\n", "Supposedly Poincaré suspected that his local bakery was selling loaves of bread that were lighter than the advertised weight of 1 kg, so every day for a year he bought a loaf of bread, brought it home and weighed it. At the end of the year, he plotted the distribution of his measurements and showed that it fit a normal distribution with mean 950 g and standard deviation 50 g. He brought this evidence to the bread police, who gave the baker a warning.\n", "\n", "For the next year, Poincaré continued to weigh his bread every day. At the end of the year, he found that the average weight was 1000 g, just as it should be, but again he complained to the bread police, and this time they fined the baker.\n", "\n", "Why? Because the shape of the new distribution was asymmetric. Unlike the normal distribution, it was skewed to the right, which is consistent with the hypothesis that the baker was still making 950 g loaves, but deliberately giving Poincaré the heavier ones.\n", "\n", "To see whether this anecdote is plausible, let's suppose that when the baker sees Poincaré coming, he hefts `n` loaves of bread and gives Poincaré the heaviest one. How many loaves would the baker have to heft to make the average of the maximum 1000 g?" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "hide-cell" ] }, "source": [ "To get you started, I'll generate a year's worth of data from a normal distribution with the given parameters." ] }, { "cell_type": "code", "execution_count": 75, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:34.019380Z", "iopub.status.busy": "2021-04-16T19:35:34.018836Z", "iopub.status.idle": "2021-04-16T19:35:34.020500Z", "shell.execute_reply": "2021-04-16T19:35:34.020849Z" }, "tags": [ "hide-cell" ] }, "outputs": [], "source": [ "mean = 950\n", "std = 50\n", "\n", "np.random.seed(17)\n", "sample = np.random.normal(mean, std, size=365)" ] }, { "cell_type": "code", "execution_count": 76, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:34.027571Z", "iopub.status.busy": "2021-04-16T19:35:34.024739Z", "iopub.status.idle": "2021-04-16T19:35:34.031491Z", "shell.execute_reply": "2021-04-16T19:35:34.031066Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2 978.4666876067706\n", "3 992.7589004318227\n", "4 1002.0372868686195\n", "5 1008.8226939493089\n" ] } ], "source": [ "# Solution\n", "\n", "# Here's the mean of the maximum of `n` loaves,\n", "# for a range of values of `n`\n", "\n", "cdf = Cdf.from_seq(sample)\n", "\n", "for n in range(2, 6):\n", " cdf_max = cdf.max_dist(n)\n", " print(n, cdf_max.mean())" ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "execution": { "iopub.execute_input": "2021-04-16T19:35:34.071771Z", "iopub.status.busy": "2021-04-16T19:35:34.052696Z", "iopub.status.idle": "2021-04-16T19:35:34.214328Z", "shell.execute_reply": "2021-04-16T19:35:34.213871Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "# It looks like hefting 4 loaves is enough to get the mean over 1000,\n", "# so the story is not entirely implausible.\n", "\n", "# Here's what the distribution of the maximum looks like, compared\n", "# to the actual distribution of weights.\n", "\n", "cdf.plot(label='one loaf')\n", "cdf.max_dist(4).plot(label='maximum of four loaves')\n", "\n", "decorate(xlabel='Weight in grams',\n", " ylabel='CDF')" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-print" ] }, "source": [ "*Think Bayes*, Second Edition\n", "\n", "Copyright 2020 Allen B. Downey\n", "\n", "License: [Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)](https://creativecommons.org/licenses/by-nc-sa/4.0/)" ] } ], "metadata": { "celltoolbar": "Tags", "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.11" } }, "nbformat": 4, "nbformat_minor": 4 }