{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# The Alien Blaster problem\n", "\n", "This notebook presents solutions to exercises in Think Bayes.\n", "\n", "Copyright 2016 Allen B. Downey\n", "\n", "MIT License: https://opensource.org/licenses/MIT" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from __future__ import print_function, division\n", "\n", "% matplotlib inline\n", "import warnings\n", "warnings.filterwarnings('ignore')\n", "\n", "import numpy as np\n", "\n", "from thinkbayes2 import Hist, Pmf, Cdf, Suite, Beta\n", "import thinkplot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Part One\n", "\n", "In preparation for an alien invasion, the Earth Defense League has been working on new missiles to shoot down space invaders. Of course, some missile designs are better than others; let's assume that each design has some probability of hitting an alien ship, $x$.\n", "\n", "Based on previous tests, the distribution of $x$ in the population of designs is well-modeled by a beta distribution with parameters $\\alpha=2$ and $\\beta=3$. What is the average missile's probability of shooting down an alien?" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.4" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEACAYAAABcXmojAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xd8leX5+PHPlcneEEYg7D0FAVEhoAi4EKsWrAttoVKt\nVdui7ff7Lf21/Tqq1lpacaL4laIoKkUUEAl7yR4BEmSGvWfIun5/nMOTk5hxkpA8Z1zv1+u8Xud+\nzn2fXOeBnCvP/dxDVBVjjDEGIMLtAIwxxgQOSwrGGGMclhSMMcY4LCkYY4xxWFIwxhjjsKRgjDHG\n4VdSEJGhIrJNRHaIyPhC6rwmIikisl5Eevgcf0dEDovIxnz1u4nIchFZJyKrRKRX2T6KMcaYsio2\nKYhIBDARGAJ0AkaJSPt8dYYBrVS1DTAWeN3n5cnetvm9CPxBVXsAfwD+WqpPYIwx5orx50qhN5Ci\nqntUNROYBgzPV2c4MAVAVVcCNUUkzlteApws4H1zgJre57WAtJKHb4wx5kqK8qNOE2CfT3k/nkRR\nVJ0077HDRbzvk8AcEXkZEKCfH7EYY4wpR27eaH4UeEJVm+FJEO+6GIsxxhj8u1JIA5r5lOP5YVdP\nGtC0mDr5PaiqTwCo6ici8k5BlUTEFmcyxphSUFUpaRt/ksJqoLWIJAAHgZHAqHx1ZgK/AD4Skb7A\nKVX17ToS78NXmogMUNWFInIDsKOwAGzRPo8JEyYwYcIEt8MA4My5iyR/f4g9B46z79BJ9h06yfGT\n57iQnlFomyqVYqhTsyr161QjoXFdWjSpR0KTusTH1UKkZP93A+lcuM3ORS47F7lK+jt1WbFJQVWz\nReQxYC6e7qZ3VDVZRMZ6XtY3VXW2iNwsIqnAeWC0T2BTgUSgrojsxTPiaDIwBvi7iEQC6d6yCVCq\nyvZdh1m5cRcbd6SxJ+0YJU3VF9IzuJCewf7DJ1mXnHsLqka1ynRp24Ru7ZrQo0Mz6tSsemWDN8b4\nzZ8rBVT1a6BdvmNv5Cs/Vkjbews5vhSwuQkBLu3IKRat3sHC1SkcPXm22PoCVK0SS9XKsQBk5+SQ\nlZXD2QvpZGfnFNjmzLmLLF2bytK1qQjQoVUjru/Zhmu6t6R61UpX8NMYY4rjV1IwgSExMbHCflby\nzoN8Pn89323ZU+DrESK0TmhA24Q4mjWuTXxcbRrVr0m1KrFERPxw/IKqcuZcOidOn+fA0dPsSTvO\nrrRj7Nh9mHMXLuXWA7buPMjWnQd5+9Ml9O3Wklv6d6Zt87g8l8MVeS4CnZ2LXHYuyk4Cvb9eRDTQ\nYwwlm3ak8e/Zq9m+69APXqtaOZZ+PVrSs1MCnVo1pkrlmDL/PFVld9pxNmzfz7rkvWxJOVBgt1SL\n+HrcMag7/Xq0LDDpGGPyEpFS3Wi2pGAATzfRlM+XF3hl0LNjAoP6tqNnxwSioyPLNY6TZy6wbN1O\nFq9JIWXPkR+83qRBLe4e0pNrr2plycGYIlhSMKVyKSOTf3+5mi8XbSYnJ7fPPzIyggG92jL8hm7E\nx9V2JbZd+48xe9FmFq9JITMrO89rTRrU4oE7rqFnx2alHmVhTCizpGBKLHnnQSZOXcChY2ecYwIM\n6N2OUTdfTb3a1dwLzsfZ8+nMWriJLxdu4mK+Ia/d2sXz4B39SGhcx6XojAlMlhSM3zIzs/lw1kpm\nJW3M03/fsVUjRo/oR8um9V2LrSjnLlxi1sKNzErKmxwEuGVAV0bdcjWVYqPdC9CYAGJJwfjl6Imz\n/PXduezcd9Q5VrlSDA+P6MfAPu2Coivm9NmLTPtqNfOWbs2T1OrXrs6Ye67nqo7NCm1rTLiwpGCK\ntWH7fl55b16eIaDd2sUzblRiwHQVlcSeA8d5d8ZSNqccyHO8f682/PSu65y5EsaEI0sKplCqyswF\nG/ngi+XOX9YRERE8cHtfbk3sEhRXB4VRVRau3sHkz5blSXb1a1fnl/cPomOrRi5GZ4x7LCmYAuXk\n5DD5s2XMXrTZOVa7RhWefmgwHULoC/P02Yu8+9lSlqxJdY4JMOLGHvx4WC+iosp3KK0xgcaSgvmB\njMws/j5lPis27nKOtW/ZkF+PvonaNaq4GFn5WbpuJ298tIjzF3OvGtq3bMhTD95I3VrB10VmTGlZ\nUjB5XEzP4C9vfEXy9wedY9d0b8UT9w0q9wlobjt+6hwTP0xi4479zrEa1Srz5AM30LVdvIuRGVNx\nLCkYx8X0DP40aXaepSpuHdCVh0ZcE9T3D0pCVfnsm/VMnbXSuY8iwL239mHEjd3D5jyY8GVJwQAF\nJ4T7b+/LHTd0dzEq92xOSeOV97/h9NmLzrH+vdrw6MgBxETbepAmdFlSMKRfyuRPk75k2/e5CWH0\niH7cmtjVxajcd+L0eV5575s8XWltEhrw20eG2N4NJmRZUghzWVnZPPfW16zflrt5zUN39OO2geGd\nEC7LysrmzemLmb9im3Osbq2q/H7sLbZEhglJpU0Kfi0zKSJDRWSbiOwQkfGF1HlNRFJEZL2I9PA5\n/o6IHBaRjQW0eVxEkkVkk4g8X9LgjYeq8vpHiywhFCEqKpJHRw7g4TuvdfaFPX7qPP/198/ZnFLc\nduLGhI9ik4KIRAATgSFAJ2CUiLTPV2cY0EpV2wBjgdd9Xp7sbZv/fROB24AuqtoFeKmUnyHs/fvL\n1SSt2u6U7xrS0xJCAUSEWwZ04b8evcVZI+lCegb/7/Uv88xvMCac+XOl0BtIUdU9qpoJTAOG56sz\nHJgCoKorgZoiEuctLwFOFvC+jwLPq2qWt96x0n2E8DZnyRY+nbfWKQ/q056Rw2yX06J0b9+UP/9y\nuDNXIzs7h79N+YYvF25yOTJj3OdPUmgC7PMp7/ceK6pOWgF18msL9BeRFSKyQETsm6yENqek8fYn\nS5xyz44J/PzH/W24pR9axNfjuSdH5Nkr4t0ZS5k+Zw12D8uEMzfH5EUBtVW1r4hcDXwMtCyo4oQJ\nE5zniYmJtg8rcOTEWV6aPI8c7xdYq6b1eeqhG4mMtN3I/FW/TnX+8qs7+N83v3KG8E6bvZoLFzN4\nYHhfS64mqCQlJZGUlFTm9yl29JGI9AUmqOpQb/kZQFX1BZ86k4AFqvqRt7wNGKCqh73lBOA/qtrV\np81s4AVVXegtpwJ9VPV4vp9vo4/yuZSRye9e/YLdaZ4et5rVK/Pi0z8KypVOA0H6pUxeeHtOnhnQ\ng/t1YOw9dtVlgld5jj5aDbQWkQQRiQFGAjPz1ZkJPOANpC9w6nJCuByf9+Hrc2CQt01bIDp/QjA/\npKr8898LnYQQGRnBbx8eYgmhDCrFRvO7McPo07WFc2zesmQmfbTIupJM2Ck2KahqNvAYMBfYAkxT\n1WQRGSsiY7x1ZgO7vH/tvwGMu9xeRKYCy4C2IrJXREZ7X5oMtBSRTcBUvEnFFG3Okq0sXZs7UuZn\nd11H+5YNXYwoNERHR/L0Q4Pp36uNc+yb5cn8698LLTGYsGKT14LI7rRjjH/lM7K8m9gP7teBn/94\ngMtRhZacnBwmTk1i4eodzrFBfdozbtQA60oyQaVcJ68Z96VfyuTlyfOchNC8ST0evvNal6MKPRER\nETx2byKJvds5x75duY23pi+xKwYTFiwpBIm3P13CgaOnAYiNieaph260Bd3KyeXEMLBPbmKYs3QL\n73++3BKDCXmWFILAkjWpLFiZO2N5zN3X0aRBLRcjCn0iwriRA7iuZ2vn2H+SNjLtq+9cjMqY8mdJ\nIcCdOH2eN6cvdsr9e7XJ07Vhyk9ERAS//Mkg+vqMSvpkzhq++HaDi1EZU74sKQQwVWXStNytJevX\nrs6Yu693OarwEhkZwZMP3shVHZs5x6Z8sTzPlZsxocSSQgBLWrWDNVv3OOVf3JtI5UoxLkYUnqKi\nIvnNwzfRsVUj59i//p3Eqk273QvKmHJiSSFAHTt5jndnLHXKw67vTJe2xS0nZcpLTHQUz/xsKM2b\n1AMgR5WX35vHltQDLkdmzJVlSSEAqSqTPlrIhfQMABrWq8F9t/VxOSpTtXIs//3ozTSsVwPwbNzz\n/Ftfs/fgCZcjM+bKsaQQgJau28m6ZM+iswI8du9AZ/1/465a1avwP+NupVZ1z7LbF9Iz+POkLzl+\n6pzLkRlzZVhSCDDnL15i8oxlTnno9Z3p4NOXbdwXV7cG//Xzm4mN8STq46fO8+dJs7lwMcPlyIwp\nO0sKAWbqrFWcOnsBgNo1qjDqlqtdjsgUpEV8PX77yE1ERHh+hfYePMFf353rzDg3JlhZUgggKXsO\nM2fJFqc8+s5rqVo51sWITFG6t2/KuJG5a09t3LGfN6cvtlnPJqhZUggQ2dk5TPpoMZe/Tnp0aEq/\n7gXuOWQCyMA+7fixz/an81dsY+aCjS5GZEzZWFIIEPOWJTt7JERHRfLTu663VTmDxN1DeuZZcvuD\nL5azYsP3LkZkTOlZUggA5y5c4t+zVznlH910lTPs0QQ+zzpJic6+Fgq8OmU+O/cedTcwY0rBkkIA\nmP71Gs5dyF3KYvigbi5HZEoqOjqS8Y8McZJ5ZlY2z7/9NSdOn3c5MmNKxq+kICJDRWSbiOwQkfGF\n1HlNRFJEZL2I9PA5/o6IHBaRAjtaReRpEckRkTql+wjBbf/hk8xevNkp3z+8ry2JHaRqVKvM78be\nTBXvUiQnTp/nxXfmkJGZ5XJkxviv2KQgIhHARGAI0AkYJSLt89UZBrRS1TbAWOB1n5cne9sW9N7x\nwGBgT0Gvh4P3P19OTk4OAB1aNrKby0GuSYNaPD16sLMhecqeI7w+zbb0NMHDnyuF3kCKqu5R1Uxg\nGjA8X53hwBQAVV0J1BSROG95CXCykPf+G/Cb0gQeCtZu3cvarXsBz8zlR350rd1cDgHd2zflwTv6\nOeVF36XYiCQTNPxJCk2AfT7l/d5jRdVJK6BOHiJyO7BPVTf5EUPIycnJ4YOZK5zywD7taRFfz8WI\nzJV0a2IXBvXJvaD+4IvlbNi+38WIjPGPK53XIlIZ+B2eriPncGH1J0yY4DxPTEwkMTGxvEKrMIvX\npDoLqcXGRHPvrb1djshcSSLC2HuuJ+3IKbbvOoQCL0+ex4u//pGNLDPlIikpiaSkpDK/jxTX1yki\nfYEJqjrUW34GUFV9wafOJGCBqn7kLW8DBqjqYW85AfiPqnb1ljsD3wAX8CSDeDxXF71V9Ui+n6+h\n1h+bmZnN43+ZxtGTZwG4a0hPRt1sy1mEopNnLvCbv37CyTOepUuaNarDc0+OsAUOTbkTEVS1xP3R\n/nQfrQZai0iCiMQAI4GZ+erMBB7wBtIXOHU5IVyOD58rAVXdrKoNVbWlqrbA0yXVI39CCFVzl211\nEkK1KrEMH2hDUENV7RpV+O0jQ4iMzF0j6Z//TrIbzyZgFZsUVDUbeAyYC2wBpqlqsoiMFZEx3jqz\ngV0ikgq8AYy73F5EpgLLgLYisldERhf0Yyii+yiUXEzP4JO5a53yXTf1pEpl200tlLVtHsfYe3K3\nUV22biezksLyVpoJAsV2H7kt1LqPPvrqOz7++jsA6tWuxj9+P9LmJYSJNz9ezJylngUPI0T44+O3\n59ni05grqTy7j8wVcvZ8OjMXbHDKI4ddbQkhjIwe0Y82CQ0A73aek+fZjGcTcCwpVKBZSRtJv5QJ\nQHxcbQZc3aaYFiaUREdH8uvRN1G9aiUATp29wCvvfWN7MJiAYkmhgpw9n86shbn9yHcP6els0GLC\nR73a1XjqwRudG2jJ3x/kw1mrimxjTEWyb6UKMmvhJucqoUmDWvTrYctZhKuu7eK599Y+Tnnmgg2s\n3LjLxYiMyWVJoQKcu3CJL32uEu4Z2suuEsLciBu706tTglOe+OECDh0742JExnjYN1MFmLVwIxfT\nPZu621WCAc/IkMd+MpD6tasDcCE9g7++O9dWVDWus6RQzs5fvMSXPmPS7xpylV0lGACqV63Er0cP\ndia27U47xrszlroclQl39u1Uzr5avIUL3quExvVrct1VrV2OyASS1gkNeOiOa5zyvGXJLFmb6mJE\nJtxZUihHGZlZee4l3DnYrhLMDw27vjPXdG/llF+ftpCDR0+7GJEJZ/YNVY6+XbGdM+cuAlC3VlWu\n72lXCeaHRIRHR/Ynrq5n9dT0S5m8/N48MjNt/oKpeJYUykl2dk6e2cu3JXYjKirSxYhMIKtaOZan\nHrzRub+wa/8xpsxc7nJUJhxZUignyzd8z+HjniGGVSvHMrhfB5cjMoGudUIDHhyee39h9qLNrNq0\n272ATFiypFAOVJXPvlnvlIf172zr5xu/3Ny/M727NHfK/5y6gGMnz7kXkAk7lhTKwYbt+9mddgyA\n6KhIbunf2eWITLAQEcaNSqRuraqAZ+Lj3z+YT05OjsuRmXBhSaEcfDE/917Cjdd0oEa1yi5GY4JN\n9aqV+NUDuesjbd15kOlz1hbZxpgrxZLCFbb34Ak27vBs0C7AbQO7uhuQCUodWzXinmG9nPL0r79j\nS+oBFyMy4cKvpCAiQ0Vkm4jsEJHxhdR5TURSRGS9iPTwOf6OiBwWkY356r8oIsne+p+KSEjsZu47\nL6FP1xbOMENjSuqum65yNuFR4O8fzOfchUvuBmVCXrFJQUQigInAEKATMEpE2uerMwxopaptgLHA\n6z4vT/a2zW8u0ElVuwMpwLOl+gQB5Oz5dBau3uGUb0m0qwRTehERETxx/w1UqxILwPFT53l92kLb\n39mUK3+uFHoDKaq6R1UzgWnA8Hx1hgNTAFR1JVBTROK85SXAyfxvqqrfqOrlu2crgPjSfYTAMXfZ\nVjK9G6a0iK9Hh5YNXY7IBLt6tavx6MgBTnnFhu/5duU2FyMyoc6fpNAE2OdT3u89VlSdtALqFOVh\n4KsS1A84WVnZfLVos1O+LbErIiXeHtWYH+jbrWWeeS5vf7KUtCOnXIzIhDLXNwgWkd8Dmao6tbA6\nEyZMcJ4nJiaSmJhY/oGV0IoNuzh55gIAtapXoZ/PWjbGlNXoEf3YmnqQtCOnyMjM4m/vf8PzT46w\nWfLGkZSURFJSUpnfR4rrnxSRvsAEVR3qLT8DqKq+4FNnErBAVT/ylrcBA1T1sLecAPxHVbvme++H\ngJ8Bg1S1wDtoIqLB0Ic6/uUZpO49AsCPh/XinqG9imlhTMns2n+M8a/MIDvb0+s64obu3Hd7X5ej\nMoFKRFDVEndX+NN9tBpoLSIJIhIDjARm5qszE3jAG0hf4NTlhHA5Pu/DN+ChwG+A2wtLCMEidc8R\nJyFERkYw5NpOLkdkQlGL+Hrcd1vuNp6fz19vw1TNFVdsUlDVbOAxPKOFtgDTVDVZRMaKyBhvndnA\nLhFJBd4Axl1uLyJTgWVAWxHZKyKjvS/9A6gGzBORtSLyryv5wSrSnKVbnefX9mhFzeo2Wc2Uj9sS\nu9K1rWdMxuVhqucvBvXfVCbAFNt95LZA7z46d+ESP/3vKc6oo+eeHEHb5nEuR2VC2fFT53jqhenO\nnIVrr2rNkw/cYAMbTB7l2X1kirBg5XYnITRvUo82CQ1cjsiEurq1qvHzH+cOU126NpXFa1JcjMiE\nEksKZaCqzF26xSkPubaj/bVmKsQ13VsyqE/uHNK3pi/h6ImzLkZkQoUlhTLYtCONA95tEytXiqF/\nrzYuR2TCycN39nOWUbmQnsE/Plxgs51NmVlSKIM5S3KvEhKvbmt7JpgKVblSDL+8b5AzrG9L6gFm\nLthYZBtjimNJoZROnD6fZ1esm67t6F4wJmy1b9mQOwdf5ZQ/nLWSPQeOuxiRCXaWFErp25XbyfFe\nqnds1Yhmjeq4HJEJV/cM7UnLpvUBz97gr06ZT2ZmtstRmWBlSaEUVJX5y5Od8k397CrBuCcqKpIn\n7h9EtHfJi70HTzDtq9UuR2WClSWFUticcoAj3pEeVSvH0qdbC5cjMuEuPq429/ssefHF/PVs3XnQ\nxYhMsLKkUArfrMi9Sujfqw0x0a6vK2gMN/fvnGe28z/+71supme4G5QJOpYUSujchUus2LDLKd94\nTfsiahtTcUSEX9ybSJVKMQAcOXGWd2csczkqE2wsKZTQou92kOWdwdyyaX2aN6nnckTG5KpXuxpj\n7r7eKX+7churN+92LyATdCwplICq8s3y3F2vbuxrVwkm8FzXszX9euTu5/H6tIWcOXfRxYhMMLGk\nUALf7zvmjAGPjorkup6tXY7ImB8SEcbcfT21qlcB4PTZi7zx0SKb7Wz8YkmhBOavyL1KuKZ7S6pW\njnUxGmMKV71qJcaN8tnbeeMuWzTP+MWSgp8yM7Pz/FLdeE2HImob476enRLy7O381vQlHDt5zsWI\nTDDwKymIyFAR2SYiO0RkfCF1XhORFBFZLyI9fI6/IyKHRWRjvvq1RWSuiGwXkTkiUrNsH6V8fbdl\nDxe8w/sa1KlOx1aNXI7ImOI9OPwaGtSpDngWzXt92kLrRjJFKjYpiEgEMBEYAnQCRolI+3x1hgGt\nVLUNMBZ43eflyd62+T0DfKOq7YBvgWdL9QkqyMLVO5zn/a9ua0tkm6BQuVIMj/ssmrd+2z7mLUsu\nso0Jb/5cKfQGUlR1j6pmAtOA4fnqDAemAKjqSqCmiMR5y0uAkwW873Dgfe/z94E7Sh5+xTh99iJr\ntu51yolXt3UxGmNKpmOrRtw2sJtTfu/z5Rw6dsbFiEwg8ycpNAH2+ZT3e48VVSetgDr5NVDVwwCq\neggI2C3LlqxNJScnB4C2zeNoVD+ge7qM+YFRt1xNfFxtAC5lZDLR9l4whQikG80B+z/Ut+vIrhJM\nMIqJjuLxnwwkwtvtmfz9Qf6TZHsvmB/yZ9GeNKCZTzneeyx/nabF1MnvsIjEqephEWkIHCms4oQJ\nE5zniYmJJCYmFh/1FbLv0El27jsKQGRkRJ5JQcYEk9YJDbjzpqv4ZM4aAD6ctYoeHZrRtGFtlyMz\nV0JSUhJJSUllfh8p7hJSRCKB7cANwEFgFTBKVZN96twM/EJVbxGRvsCrqtrX5/XmwH9UtYvPsReA\nE6r6gndEU21VfaaAn69uXub+38wVfDZ/PQB9u7bgN48UdM/cmOCQlZXN+Fc+Y3faMQBaNa3Pc0+O\nIDIykDoNzJUgIqhqiUfEFPs/QVWzgceAucAWYJqqJovIWBEZ460zG9glIqnAG8A4n8CmAsuAtiKy\nV0RGe196ARgsIpcTzvMlDb68qSqLfOYmDOjdzsVojCm7qKhIfnnfQCcJ7Nx31Pmjxxjw40rBbW5e\nKWxJPcD//GMmANWqxPLOnx4gyruRiTHBbMa8dXw4ayXg6RZ98ek7bXHHEFNuVwrhzHcGc78erSwh\nmJAxfFA32iR4BvxlZ+fw9w++dVb/NeHNkkIhsrKyWb7+e6d83VW2+J0JHZGRETx+X94tPKd7b0Cb\n8GZJoRAbtu/n3IVLANStVdWWtTAhp0mDWvzk1j5Oeca8daTuKXQQoAkTlhQKsWRtqvP82h6tbVkL\nE5JuTezi/MGTo8o/PlxARmaWy1EZN1lSKMCljExWbtztlK3ryIQqzxaeA4mNiQZg/+GTTJu92uWo\njJssKRTguy17uZSRCUCj+jVp2dRGZZjQ1bBeDR643ZlWxMxvN7Dt+0MuRmTcZEmhAEt9u46usq4j\nE/qGXNeRrm3jAc96MxOnLnD+MDLhxZJCPucvXsqzIur1tuWmCQMiwrhRA6hcKQaAg0dP8+GsVS5H\nZdxgSSGfVRt3O+O1mzep56wsaUyoq1+nOqNHXOOUv1y4iS2pB1yMyLjBkkI+vnMTrrXF70yYGdSn\nPVd1zF3/cuKHC0i/ZN1I4cSSgo/zFy+xfnvuthC2IqoJNyLCoyMHUMXbjXTkxFne/2K5y1GZimRJ\nwcd3m/eQne3ZTKdFfD0a1qvhckTGVLw6Navy07uuc8pzl25lw/b9LkZkKpIlBR++XUf9uttVgglf\n/Xu1oU/XFk75n1MXcP7iJRcjMhXFkoLXhYsZrNuW23V0TfeWLkZjjLtEhDH3XE+1KrEAHD91nsmf\nLXM5KlMRLCl4rdmyJ8+oI9uH2YS7WtWrMOae/k55wcrtfLdlj4sRmYpgScFr2fqdznO7SjDG49oe\nrfIMuJg0bSFnz6e7GJEpb34lBREZKiLbRGSHd+vMguq8JiIpIrJeRLoX11ZEuonIchFZJyKrRKRX\n2T9O6VxMz2BtsnUdGVOQMXdfT83qlQE4eeYCb3+6xOWITHkqNimISAQwERgCdAJGiUj7fHWGAa1U\ntQ0wFpjkR9sXgT+oag/gD8Bfr8gnKoU1W/Y6XUfNGtWhSYNaboViTMCpXrUSP//xAKe8ZE1qnkEZ\nJrT4c6XQG0hR1T2qmglMA4bnqzMcmAKgqiuBmiISV0zbHOByx30tIK1Mn6QMllvXkTFF6t2lOYk+\ne5S/OX0xp89edDEiU178SQpNgH0+5f3eY/7UKartk8BLIrIXz1XDs/6HfeVkZGbl6zqyoajGFOTh\nO/tRp2ZVAM6cu8ibHy8i0Pd4NyVXXjea/VlW9FHgCVVthidBvFtOsRRpw/b9zqYijevXpGlDW+vI\nmIJUrRzLuFGJTnnFxl159jE3oSHKjzppQDOfcjw/7OpJA5oWUCemiLYPquoTAKr6iYi8U1gAEyZM\ncJ4nJiaSmJjoR9j+Wblxl/Pcd7KOMeaHenRoyuB+HZi3LBmAt6YvoXObJs4VhHFPUlISSUlJZX4f\nKe7yT0Qige3ADcBBYBUwSlWTfercDPxCVW8Rkb7Aq6rat5C2I1V1m4hsAcap6kIRuQF4XlWvLuDn\na3ldomZn5/Dwf73v7MX83JMjaNs8rlx+ljGh4mJ6Bk+9MJ0jJ84CnkTx+7E3274jAUZEUNUS/6MU\n232kqtnAY8BcYAswTVWTRWSsiIzx1pkN7BKRVOANYFwRbbd53/pnwMsisg74MzCmpMGX1bZdh5yE\nULtGFdokNKjoEIwJOpUrxfDYTwY6fcTrkvcxf8W2ItuY4FHslYLbyvNKYfKMZcxauBGAm67tyFif\n2ZvGmKL5/v7ExkTz6rP30KBOdZejMpeV25VCqFJVu59gTBn85LbeNPYuB3MpI5N//N+3NhopBIRt\nUthz4DgBLTQ3AAAXSElEQVRHT3r6RCtXiqFz68YuR2RMcImJjuKX9w9yupG27jzIrKRNrsZkyi5s\nk8LKjbud51d1bEZUVKR7wRgTpNokxHHn4Kuc8oezVrL/8EkXIzJlFbZJYdWm3c5z6zoypvTuGdqT\n5k3qAZCZlc1rH3zrbFZlgk9YJoUjJ86yO+0YAJGREVzVoWkxLYwxhYmKiuSX9w0kMtLzdbJz31E+\nnbfW5ahMaYVlUvhu827nede2Tajs3Y/WGFM6CY3rMnJY7jSj6XPWsnPvURcjMqUVlklhzZa9zvNe\nnZq7F4gxIeSOG7rRrkVDAHJycnjt/751lpAxwSPsksLF9Aw2peSu0tGzU7Miahtj/BUREcHjPxlI\nbEw0APsPn+TD/6xyOSpTUmGXFDZs3+/cBGvWqA71bbKNMVdMo/o1eeiOa5zyrIUb2bTDtVXxTSmE\nXVLw3WP26s7N3QvEmBA1uF8HevgM3pg4dQHnL15yMSJTEmGVFFQ17/2EzgkuRmNMaBIRxo1KpFqV\nWACOnTzHuzOWuRyV8VdYJYWUPUc4c86zW1SNapVtATxjykmdmlUZ47OWWNKq7baFZ5AIq6Swxqfr\nqGenZrbUrzHl6Noerbi+ZxunPOmjhZw4fd7FiIw/wioprN7skxQ6WteRMeXtZ3dfR91ang14zl24\nxL/+nWSL5gW4sEkKx06eY8+B44BnFnP39vEuR2RM6KtaOZbHfzLIKa9L3secJVtdjMgUJ2ySgm/X\nUefWjW0WszEVpEvbJtyW2NUpv/f5Mls0L4D5lRREZKiIbBORHSIyvpA6r4lIioisF5Hu/rQVkcdF\nJFlENonI82X7KEVbuzV31FHPTtZ1ZExFuvfW3jRtVAfwLJr36pT5ZGVluxyVKUixSUFEIoCJwBCg\nEzBKRNrnqzMMaKWqbYCxwKTi2opIInAb0EVVuwAvXaHP9AOZmdlsSjnglK/qaLOYjalIMdFRPPnA\nDc6iebv2H+Ojr75zOSpTEH+uFHoDKaq6R1UzgWnA8Hx1hgNTAFR1JVBTROKKafso8LyqZnnbHSvz\npynE1u8PcikjE4CG9WrQyLtblDGm4iQ0rst9t/Vxyp99s46tOw+6GJEpiD9JoQmwz6e833vMnzpF\ntW0L9BeRFSKyQER6lSTwkljn03VkVwnGuOe2xK50aev5ClDg7x/Mt9nOASaqnN7XnwkAUUBtVe0r\nIlcDHwMtC6o4YcIE53liYiKJiYklCmZdcm5e6tHBkoIxbhERHrt3IE+9MJ3zFy9x7OQ53vh4MU8+\ncIPNGyqjpKQkkpKSyvw+/iSFNMD3mzTeeyx/naYF1Ikpou1+YAaAqq4WkRwRqauqx/MH4JsUSurI\nibPOSIeoqEg6tW5U6vcyxpRdvdrV+PnI/rw8eR4AS9em0rNjMwZc3dblyIJb/j+Y//jHP5bqffzp\nPloNtBaRBBGJAUYCM/PVmQk8ACAifYFTqnq4mLafA4O8bdoC0QUlhLLy7Trq3Lqxs6yvMcY9/bq3\nYlCf3PEqb05fzKFjZ1yMyFxWbFJQ1WzgMWAusAWYpqrJIjJWRMZ468wGdolIKvAGMK6ott63fhdo\nKSKbgKl4k8qVlrfryLbdNCZQPPKja51BH+mXMvn7B/Ntb+cAIIE+5VxEtLQxZmZm8+Dv3nNGHr32\n+5E0aVDrSoZnjCmD1D1HePbVz8nJ8SSDu4b0ZNTNVxfTyvhDRFDVEt+oCekZzck+Q1Hj6tagsQ1F\nNSagtE5okCcJfDpnDVtSDxTRwpS3kE4K+buObHSDMYHnjhu60blNYyB3mOrZ8+nuBhXGQjspbPNJ\nCjY/wZiAFBERwS/vG+RsynP81HlbTdVFIZsUTpw+z76DJwDPqqidWzd2OSJjTGHq1qrGYz8Z6JRX\nbdptq6m6JGSTwoZt+53nHVo2pFKsDUU1JpBd3bk5N/fv7JQnf76M3WnltvqNKUTIJoX123O7jrq1\ns6GoxgSD+2/vSzPvaqpZWdm8PHke6ZcyXY4qvIRkUlBVNm7PnXRtG+oYExxioqN4evRgYqI9iy0c\nOHqaN6cvdjmq8BKSSWF32nHOnLsIQPWqlWgRX8/liIwx/oqPq82Yu693ygtX72DByu0uRhReQjIp\nrPcZddS1XbwNRTUmyAzs0y7PWkhvTl/MvkO2W1tFCMmksGF77k3m7u2s68iYYDTm7uudCacZmVm8\n/N48ZzKqKT8hlxQuZWTm2bijqyUFY4JSpdhofv3wTURHRQKw7+AJ3vpkictRhb6QSwpbdx5yFtWK\nj6tNvdrVXI7IGFNaCY3r8tO7rnPKC1Zut/sL5SzkksIGn/sJ3WzUkTFB74a+7enfq41TfuPjRew5\ncMLFiEJbyCWF9T73E7pZ15ExQU9EGHtPf+LjagOQmZXNS+/O4cLFDJcjC00hlRTyL23RyZa2MCYk\nVIqN/sH8hX/a+kjlIqSSwqYduRPW2jWPs6UtjAkhzRrV4dGR/Z3yig3fMytpk4sRhSa/koKIDBWR\nbSKyQ0TGF1LnNRFJEZH1ItLd37Yi8rR3f+Y6pf8YHht9kkKXtk3K+nbGmADTv1dbhl7XySlPmbmC\nZJ/Rhqbsik0KIhIBTASGAJ2AUSLSPl+dYUArVW0DjAUm+dNWROKBwcCesn4QVWVzSm5S6NrW7icY\nE4oeuqMfbRIaAJCTk8NLk+dx4vR5l6MKHf5cKfQGUlR1j6pmAtOA4fnqDAemAKjqSqCmiMT50fZv\nwG/K+BkAOHTsDMdOngMgNiaa1s3qX4m3NcYEmOjoSH49+iZn/4VTZy/w0uR5ZGVluxxZaPAnKTQB\n9vmU93uP+VOn0LYicjuwT1WvSKeg7/2ETq0bEeWd8GKMCT31alfjqYcGc3kBm+27DvHujGWuxhQq\nosrpfYtcbEhEKgO/w9N1VGybCRMmOM8TExNJTEz8QR27n2BMeOnWLp77bu/LBzNXADBn6RbaJDRg\nYJ92LkfmjqSkJJKSksr8Pv4khTTAdy/LeO+x/HWaFlAnppC2rYDmwAbxrFYXD6wRkd6qeiR/AL5J\noSA/vJ9gScGYcDB8UDdS9x5l+fqdAEz6eBFNG9amtfeeQzjJ/wfzH//4x1K9jz/dR6uB1iKSICIx\nwEhgZr46M4EHAESkL3BKVQ8X1lZVN6tqQ1Vtqaot8HQr9SgoIfhjz4Hjzkbf1atWIqFx3dK8jTEm\nyIgIj92bSFOfjXmef/tru/FcBsUmBVXNBh4D5gJbgGmqmiwiY0VkjLfObGCXiKQCbwDjimpb0I+h\nmC6nomzaccB53rlNE1sq25gwUik2mvGPDKFqZc+N55NnLvDiO3PIzLQbz6UhgT4jUES0uBj/942v\nWLPVM6p17D39uenajhURmjEmgGzYvp8//WsWl78tBvZpxy9GJYbtH4kigqqW+MMH/YzmrKxsNqf6\nXinY0hbGhKNu7eJ58I5+TnnByu0247kUgj4p7Nx31Nl4o26tqjTybsphjAk/tyZ2IbF37uij9z9f\nxndbyjw3NqwEfVLYlJJ7ldClrW29aUw486yoej3tWjQEPDcrX3nvG/YcOO5uYEEk6JPCFt+kYF1H\nxoS9mOgoxj8yhPq1qwOe3Rife/NrTp294HJkwSGok0JWVjbJ3+cuhmVLZRtjAGpWr8yzY4Y5KyUf\nPXmW59/6mozMLJcjC3xBnRRS9x4l07veSVzdGtSvU93liIwxgSKhcR2eevBGZ6x7yp4j/H3KfHJy\nclyNK9AFdVLwHXVkVwnGmPx6dkpg9J3XOuUVG3fx/ucrXIwo8AV1UvC9n2BDUY0xBbllQBduHdDV\nKc9auJEvF9pQ1cIEbVLIfz+hY6tGLkZjjAlkD97Rlz5dWzjlyTOWssy7XpLJK2iTgu/9hAZ1qtv9\nBGNMoSIiInji/kHO5jwKvDplfp6FNI1H0CaFPPcTrOvIGFOM2Jhonv3ZMGeCa3Z2Ds+/PYfdacdc\njiywBG1SyHM/wW4yG2P8ULN6Zf5n3K3UrlEFgIvpGfzp9dkcPn7G5cgCR1AmhaysbLbtOuSUO1pS\nMMb4qUGd6vz3o7dQpVIM4NnO84//nGXLbXsFZVJI3XvUmYTSoE51Gtj9BGNMCSQ0rsszPxvqbNt7\n+PgZ/vjPWZw5d9HlyNwXlEnB7icYY8qqU+vG/Obhm4iI8HwN7j98kv/3+pecv3jJ5cjcFZRJwe4n\nGGOuhF6dEnji/kHOrOdd+4/xlze+4mJ6hqtxucmvpCAiQ0Vkm4jsEJHxhdR5TURSRGS9iHQvrq2I\nvCgiyd76n4pIDX9iyc7OYfvuw07Z7icYY8riuqta8+ioAU55+65D/OWNr0i/lOliVO4pNimISAQw\nERgCdAJGiUj7fHWGAa1UtQ0wFpjkR9u5QCdV7Q6kAM/6E/Cu/cec/RPq1a5m9xOMMWV2Q98OPOyz\nHEby9wf5yxuzwzIx+HOl0BtIUdU9qpoJTAOG56szHJgCoKorgZoiEldUW1X9RlUvr0y1Aoj3J+At\nO3NnMXdoabOYjTFXxi0DuvCQz85tW3ce5H/fDL8rBn+SQhNgn095v/eYP3X8aQvwMPCVH7GQvNOW\ntjDGlI/bBnblgeHXOOUtqQfC7uZzVDm9r9/bn4nI74FMVZ1aWJ0JEyYAoKqsSEmnWn3PGiYdLCkY\nY66w4YO6oap8MNOzmur2XYeY8M9Z/M+jt1C9aiWXoytcUlISSUlJZX4fUdWiK4j0BSao6lBv+RlA\nVfUFnzqTgAWq+pG3vA0YALQoqq2IPAT8DBikqgWmYhHRyzHuO3SSXz33EQDVq1Zi8l8etO03jTHl\nYlbSRiZ/tswpN21Uhz/4zIYOdCKCqpb4C9Kf7qPVQGsRSRCRGGAkMDNfnZnAA95A+gKnVPVwUW1F\nZCjwG+D2whJCflt95id0aNnQEoIxptzcmtiVn/+4v9Ptse/gCX7/6uccPHra1bjKW7FJQVWzgcfw\njBbaAkxT1WQRGSsiY7x1ZgO7RCQVeAMYV1Rb71v/A6gGzBORtSLyr+Ji2eqzVLZ1HRljytvgfh15\n/L5BRHj/AD18/Ay/e/Vzdu496nJk5afY7iO3+XYfjfnDBxw/5Vmf5IWn7qS1dxlcY4wpT6s27eaV\n9+Y5y/XHxkQz/qdD6NbOr0GTrijP7qOAcOTEWSchxMZE0yK+nssRGWPCRe8uzZnwi9uoWjkWgEsZ\nmfx50mzmLdvqcmRXXtAkBd+hqO2axxEZGTShG2NCQPuWDfnLr+6gbq2qAOTk5DDpo0W899kycnJy\nimkdPILmm3Wr76S1Vg1djMQYE66aNqzNc0+OoHmT3J6K/yRt5IW353DhYmislxQ0ScEmrRljAkHd\nWtX4yxPD6d2luXPsuy17eOaVGew7dNK9wK6QoEgKp89eJO3IKQAiIyNo2zzO5YiMMeGsUmw0v31k\nCMMHdXOOpR05xfiXZ7B8/fcuRlZ2QZEUfHdZa9W0PjHR5TUR2xhj/CMiPDD8Gp64fxDR3s16LmVk\n8tLkuUyesYzMzGyXIyydoEgK232SQvsWdj/BGBM4+vdqywtP30lc3dzV/2ct3Mgzf/vM6eEIJkGR\nFLbtyt0/oX1LSwrGmMCS0LguL/76R/TqlOAc2512jF+/+Anzlm0l0OeD+QqKpJC694jz3K4UjDGB\nqFqVWJ752VAevvNaZ+/njMwsJn20iD+9/iVHTpx1OUL/BEVSyM72jAFuVL8mNatXdjkaY4wpmIhw\ny4AuvPDUCJo0qOUc37B9P7967mO+Xrwl4K8agiIpXNbOrhKMMUGgeZN6/PU3P+K2xK7OgnqXMjJ5\n65PFjH95Bjt8thQONEGVFNq3sKGoxpjgEBsTzUMj+vG/T+a9ati57yjP/u0zJk5dwInT512MsGDB\nlRRs+01jTJBp2zyOl357F3cN6encawBYsHI74/7fVD6YuYKz59NdjDCvoFgl9c5fvk7VyrG8/9xD\ntoeCMSZoHTp2hvc+W8bqzbvzHK9cKYZb+ndmWP/O1Kp+ZTbxKe0qqUGTFHp2TOB3Y4e5HY4xxpTZ\n+m37+GDmSnanHctzPCoqkv4923DbwK40a1SnTD+jXJfOFpGhIrJNRHaIyPhC6rwmIikisl5EuhfX\nVkRqi8hcEdkuInNEpGZRMbRrafcTjDGhoXv7prz0mx/x9OjBee43ZGVl8+3KbTz5/Mc888oMvl68\nhXMX/NqY8oopNimISAQwERgCdAJGiUj7fHWGAa1UtQ0wFpjkR9tngG9UtR3wLfBsUXHY/ASuyKbc\nocLORS47F7mC6VyICP26t+LVZ+/hqYcG0ybfpmEpe47w1ieLefi/3ufPk75k9qJNFTLXwZ9FhHoD\nKaq6B0BEpgHDgW0+dYYDUwBUdaWI1BSROKBFEW2HAwO87d8HkvAkih+IiIigdbP6JftkISgpKYnE\nxES3wwgIdi5y2bnIFYznIiIigmt7tKJf95Zs33WY/yRtZPXm3c78rOzsHNYl72Nd8j7e+XQpDepU\np03zONo0a0DLpvWIq1uDurWqXrH7rf4khSbAPp/yfjyJorg6TYppG6eqhwFU9ZCIFLq3Zsv4esTG\nRPsRqjHGBCcRoX3LhrRv2ZCz59NZvCaFpFU72Lkv737QR06c5ciJsyxdm+oci4yMoH7talSKjaFS\nbBSVY0v/fVley42WJmUVesfbuo6MMeGketVK3Ny/Czf378KRE2dZu2Uv323ZzeaUA84+0b6ys3M4\ndOzMlfnhqlrkA+gLfO1TfgYYn6/OJODHPuVtQFxRbYFkPFcLAA2B5EJ+vtrDHvawhz1K/iju+72g\nhz9XCquB1iKSABwERgKj8tWZCfwC+EhE+gKnVPWwiBwrou1M4CHgBeBB4IuCfnhphlQZY4wpnWKT\ngqpmi8hjwFw8o5XeUdVkERnreVnfVNXZInKziKQC54HRRbX1vvULwMci8jCwB7jnin86Y4wxJRLw\nk9eMMcZUnIBZ+6gsE+RCTXHnQkTuFZEN3scSEeniRpzlzZ//E956V4tIpojcWZHxVSQ/fz8SRWSd\niGwWkQUVHWNF8eP3o4aIzPR+T2wSkYdcCLNCiMg7InJYRDYWUadk35uluRFxpR94klMqkABEA+uB\n9vnqDAO+9D7vA6xwO24Xz0VfoKb3+dBQPBf+nAefevOBWcCdbsft4v+JmsAWoIm3XM/tuF08F88C\nz10+D8BxIMrt2MvpfFwHdAc2FvJ6ib83A+VKwZkgp6qZwOVJbr7yTJADLk+QCzXFngtVXaGqp73F\nFXjmg4Qaf/5PADwOfAIcKeC1UOHPubgX+FRV0wBU9RihyZ9zoUB17/PqwHFVzarAGCuMqi4BThZR\npcTfm4GSFAqb/FZUnbQC6oQCf86Fr58CX5VrRO4o9jyISGPgDlV9ndLNjQkW/vyfaAvUEZEFIrJa\nRO6vsOgqlj/nYiLQUUQOABuAJyootkBU4u/N8pq8ZiqAiAzEM9LrOrdjccmrgG+fcignhuJEAVcB\ng4CqwHIRWa6qqUU3C0lDgHWqOkhEWgHzRKSrqp5zO7BgEChJIQ1o5lOO9x7LX6dpMXVCgT/nAhHp\nCrwJDFXVoi4fg5U/56EXME08i77UA4aJSKaqzqygGCuKP+diP3BMVdOBdBFZBHTD0/8eSvw5F6OB\n5wBUdaeI7ALaA99VSISBpcTfm4HSfeRMkBORGDyT3PL/Ys8EHgDwnSBXsWFWiGLPhYg0Az4F7lfV\nnS7EWBGKPQ+q2tL7aIHnvsK4EEwI4N/vxxfAdSISKSJV8NxUTCb0+HMu9gA3Anj7z9sC31dolBVL\nKPwqucTfmwFxpaBlmCAXavw5F8B/A3WAf3n/Ss5U1fyLFAY1P89DniYVHmQF8fP3Y5uIzAE2AtnA\nm6q61cWwy4Wf/y/+DLznM0zzt6p6wqWQy5WITAUSgboishf4AxBDGb43bfKaMcYYR6B0HxljjAkA\nlhSMMcY4LCkYY4xxWFIwxhjjsKRgjDHGYUnBGGOMw5KCMcYYhyUFY4wxjv8Pi4+wbhRJXBwAAAAA\nSUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "prior = Beta(2, 3)\n", "thinkplot.Pdf(prior.MakePmf())\n", "prior.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In its first test, the new Alien Blaster 9000 takes 10 shots and hits 2 targets. Taking into account this data, what is the posterior distribution of $x$ for this missile? What is the value in the posterior with the highest probability, also known as the MAP?" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.3076923076923077" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "posterior = Beta(3, 2)\n", "posterior.Update((2, 8))\n", "posterior.MAP()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now suppose the new ultra-secret Alien Blaster 10K is being tested. In a press conference, an EDF general reports that the new design has been tested twice, taking two shots during each test. The results of the test are confidential, so the general won't say how many targets were hit, but they report: \"The same number of targets were hit in the two tests, so we have reason to think this new design is consistent.\" \n", "\n", "Write a class called `AlienBlaster` that inherits from `Suite` and provides a likelihood function that takes this data -- two shots and a tie -- and computes the likelihood of the data for each hypothetical value of $x$. If you would like a challenge, write a version that works for any number of shots." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from scipy import stats\n", "\n", "class AlienBlaster(Suite):\n", " \n", " def Likelihood(self, data, hypo):\n", " \"\"\"Computes the likeliood of data under hypo.\n", " \n", " data: number of shots they took\n", " hypo: probability of a hit, p\n", " \"\"\"\n", " n = data\n", " x = hypo\n", " \n", " # specific version for n=2 shots\n", " likes = [x**4, (1-x)**4, (2*x*(1-x))**2]\n", "\n", " # general version for any n shots\n", " likes = [stats.binom.pmf(k, n, x)**2 for k in range(n+1)]\n", " \n", " return np.sum(likes)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we start with a uniform prior, we can see what the likelihood function looks like:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pmf = Beta(1, 1).MakePmf()\n", "blaster = AlienBlaster(pmf)\n", "blaster.Update(2)\n", "thinkplot.Pdf(blaster)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A tie is most likely if they are both terrible shots or both very good.\n", "\n", "Is this data good or bad; that is, does it increase or decrease your estimate of $x$ for the Alien Blaster 10K?\n", "\n", "Now let's run it with the specified prior and see what happens when we multiply the convex prior and the concave posterior:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pmf = Beta(2, 3).MakePmf()\n", "blaster = AlienBlaster(pmf)\n", "blaster.Update(2)\n", "thinkplot.Pdf(blaster)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The posterior mean and MAP are lower than in the prior." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0.4, 0.37508201146132331)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior.Mean(), blaster.Mean()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(0.3333333333333333, 0.2)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prior.MAP(), blaster.MAP()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So if we learn that the new design is \"consistent\", it is more likely to be consistently bad (in this case)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Part Two" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose we\n", "have we have a stockpile of 3 Alien Blaster 9000s and 7 Alien\n", "Blaster 10Ks. After extensive testing, we have concluded that\n", "the AB9000 hits the target 30% of the time, precisely, and the\n", "AB10K hits the target 40% of the time.\n", "\n", "If I grab a random weapon from the stockpile and shoot at 10 targets,\n", "what is the probability of hitting exactly 3? Again, you can write a\n", "number, mathematical expression, or Python code." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "0.23054197320000014" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "k = 3\n", "n = 10\n", "x1 = 0.3\n", "x2 = 0.4\n", "\n", "0.3 * stats.binom.pmf(k, n, x1) + 0.7 * stats.binom.pmf(k, n, x2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The answer is a value drawn from the mixture of the two distributions." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Continuing the previous problem, let's estimate the distribution\n", "of `k`, the number of successful shots out of 10. \n", "\n", "1. Write a few lines of Python code to simulate choosing a random weapon and firing it.\n", "\n", "2. Write a loop that simulates the scenario and generates random values of `k` 1000 times. \n", "\n", "3. Store the values of `k` you generate and plot their distribution." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [], "source": [ "def flip(p):\n", " return np.random.random() < p\n", "\n", "def simulate_shots(n, p):\n", " return np.random.binomial(n, p)\n", "\n", "ks = []\n", "for i in range(1000):\n", " if flip(0.3):\n", " k = simulate_shots(n, x1)\n", " else:\n", " k = simulate_shots(n, x2)\n", " ks.append(k)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the distribution looks like." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(1000, 3.71)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pmf = Pmf(ks)\n", "thinkplot.Hist(pmf)\n", "len(ks), np.mean(ks)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mean should be near 3.7. We can run this simulation more efficiently using NumPy. First we generate a sample of `xs`:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Hist({0.29999999999999999: 296, 0.40000000000000002: 704})" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xs = np.random.choice(a=[x1, x2], p=[0.3, 0.7], size=1000)\n", "Hist(xs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Then for each `x` we generate a `k`:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "ks = np.random.binomial(n, xs)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And the results look similar." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "3.6280000000000001" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nGPqS1JD/A1XkJlHB8qz6AAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pmf = Pmf(ks)\n", "thinkplot.Hist(pmf)\n", "np.mean(ks)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One more way to do the same thing is to make a meta-Pmf, which contains the two binomial `Pmf` objects:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Pmf({0: 0.028247524900000005, 1: 0.12106082100000018, 2: 0.23347444049999999, 3: 0.26682793200000016, 4: 0.20012094900000013, 5: 0.10291934520000007, 6: 0.03675690899999999, 7: 0.0090016920000000021, 8: 0.0014467004999999982, 9: 0.00013778100000000015, 10: 5.9048999999999949e-06}) 0.3\n", "Pmf({0: 0.0060466176, 1: 0.040310784000000037, 2: 0.12093235199999994, 3: 0.21499084800000012, 4: 0.2508226560000002, 5: 0.20065812480000034, 6: 0.11147673600000013, 7: 0.04246732800000004, 8: 0.010616832, 9: 0.0015728640000000028, 10: 0.00010485760000000014}) 0.7\n" ] } ], "source": [ "from thinkbayes2 import MakeBinomialPmf\n", "\n", "pmf1 = MakeBinomialPmf(n, x1)\n", "pmf2 = MakeBinomialPmf(n, x2)\n", "\n", "metapmf = Pmf({pmf1:0.3, pmf2:0.7})\n", "metapmf.Print()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's how we can draw samples from the meta-Pmf:" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "ks = [metapmf.Random().Random() for _ in range(1000)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here are the results, one more time:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "3.7309999999999999" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEACAYAAABI5zaHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAADixJREFUeJzt3XGonfV9x/H3J8tkU7uOgghNTNbVLq6CdQ5SN7vtiENT\nB8v+TBwtCJX80WtlwrAUizeQf8YYoyXrapgrOCSW2Yn+YSWW7v4hRY2duromJK2aJjEL2lmHHYUY\nv/vjnJqT60nuc5OTPNfffb/gkvM8z++5z+8+xvd98pxz7k1VIUlqy4q+JyBJmj7jLkkNMu6S1CDj\nLkkNMu6S1CDjLkkN6hT3JBuS7E2yL8ldE7bfkuSF0ceTSa4a2/bKaP1zSZ6Z5uQlSZNlode5J1kB\n7ANuAF4FdgObqmrv2JhrgT1V9WaSDcBsVV072vYS8PtV9cY5+hokSfN0uXJfD+yvqgNVdQx4ENg4\nPqCqnqqqN0eLTwGrxjan43EkSVPSJbqrgINjy4c4Od7zfQ749thyAU8k2Z3ktsVPUZK0WCun+cmS\nXA/cCnxqbPV1VXUkySUMI7+nqp6c5nElSSfrEvfDwJqx5dWjdScZPYm6A9gwfn+9qo6M/nwtycMM\nb/O8J+5J/CE3krRIVZVJ67vcltkNXJ5kbZILgE3Ao+MDkqwBvgV8pqp+PLb+wiQXjx5fBNwIvHia\nSfb6cc899/Q+h6Xy4bnwXHgulv65OJ0Fr9yr6niSGWAXw28G91XVniRbhptrB/Bl4EPA15IEOFZV\n64FLgYdHV+UrgQeqatdCx5QknZ1O99yr6nFg3bx19449vg14z5OlVfUycPVZzlGStEi+RHHMYDDo\newpLhufiBM/FCZ6LE5b6uVjwTUznS5JaKnORpPeDJNRZPKEqSXqfMe6S1CDjLkkNmuo7VKX5Zrbt\n7O3Y2+/e3Nuxpb555S5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg\n4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDTLuktQg4y5JDVrZ9wSk82Fm\n285ejrv97s29HFfyyl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBneKeZEOSvUn2\nJblrwvZbkrww+ngyyVVd95UkTd+CcU+yAtgO3ARcCWxOcsW8YS8Bf1xVnwC2ATsWsa8kacq6XLmv\nB/ZX1YGqOgY8CGwcH1BVT1XVm6PFp4BVXfeVJE1fl7ivAg6OLR/iRLwn+Rzw7TPcV5I0BVP9wWFJ\nrgduBT51JvvPzs6++3gwGDAYDKYyL0lqwdzcHHNzc53Gdon7YWDN2PLq0bqTjJ5E3QFsqKo3FrPv\nL43HXZJ0svkXvVu3bj3l2C63ZXYDlydZm+QCYBPw6PiAJGuAbwGfqaofL2ZfSdL0LXjlXlXHk8wA\nuxh+M7ivqvYk2TLcXDuALwMfAr6WJMCxqlp/qn3P2VcjSQI63nOvqseBdfPW3Tv2+Dbgtq77SpLO\nLd+hKkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDj\nLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1KBOvyBb0tmb2bazt2Nvv3tzb8dWP7xy\nl6QGGXdJapBxl6QGGXdJapBxl6QGGXdJapBxl6QG+Tr3hvX1umpfUy31zyt3SWqQcZekBhl3SWqQ\ncZekBhl3SWqQcZekBnWKe5INSfYm2Zfkrgnb1yX5XpJfJLlz3rZXkryQ5Lkkz0xr4pKkU1vwde5J\nVgDbgRuAV4HdSR6pqr1jw34K3A78xYRP8Q4wqKo3pjBfSVIHXa7c1wP7q+pAVR0DHgQ2jg+oqter\n6vvA2xP2T8fjSJKmpEt0VwEHx5YPjdZ1VcATSXYnuW0xk5MknZnz8eMHrquqI0kuYRj5PVX15Hk4\nriQtW13ifhhYM7a8erSuk6o6MvrztSQPM7zNMzHus7Oz7z4eDAYMBoOuh5Gk5s3NzTE3N9dpbJe4\n7wYuT7IWOAJsAk73k6Hy7oPkQmBFVb2V5CLgRmDrqXYcj7sk6WTzL3q3bj1lTheOe1UdTzID7GJ4\nj/6+qtqTZMtwc+1IcinwLPAB4J0kdwAfBy4BHk5So2M9UFW7zvgrkyR10umee1U9Dqybt+7escdH\ngcsm7PoWcPXZTFCStHi+RFGSGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTc\nJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalB\nxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2SGmTcJalBxl2S\nGmTcJalBneKeZEOSvUn2JblrwvZ1Sb6X5BdJ7lzMvpKk6Vsw7klWANuBm4Argc1Jrpg37KfA7cDf\nnsG+kqQp63Llvh7YX1UHquoY8CCwcXxAVb1eVd8H3l7svpKk6esS91XAwbHlQ6N1XZzNvpKkM+QT\nqpLUoJUdxhwG1owtrx6t62JR+87Ozr77eDAYMBgMOh5GUlcz23b2ctztd2/u5bgtmZubY25urtPY\nLnHfDVyeZC1wBNgEnO6/Us503/G4S5JONv+id+vWraccu2Dcq+p4khlgF8PbOPdV1Z4kW4aba0eS\nS4FngQ8A7yS5A/h4Vb01ad8z/9IkSV10uXKnqh4H1s1bd+/Y46PAZV33lSSdWz6hKkkNMu6S1CDj\nLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkN\nMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S\n1CDjLkkNMu6S1CDjLkkNMu6S1CDjLkkNMu6S1KCVfU+gRTPbdvZ27O13b+7t2JKWDq/cJalBneKe\nZEOSvUn2JbnrFGO+mmR/kueT/N7Y+leSvJDkuSTPTGvikqRTW/C2TJIVwHbgBuBVYHeSR6pq79iY\nTwMfraqPJfkk8I/AtaPN7wCDqnpj6rOXJE3U5cp9PbC/qg5U1THgQWDjvDEbgfsBqupp4INJLh1t\nS8fjSJKmpEt0VwEHx5YPjdadbszhsTEFPJFkd5LbznSikqTuzserZa6rqiNJLmEY+T1V9eSkgbOz\ns+8+HgwGDAaD8zA9SXp/mJubY25urtPYLnE/DKwZW149Wjd/zGWTxlTVkdGfryV5mOFtngXjLkk6\n2fyL3q1bt55ybJfbMruBy5OsTXIBsAl4dN6YR4HPAiS5FvhZVR1NcmGSi0frLwJuBF7s/qVIks7E\nglfuVXU8yQywi+E3g/uqak+SLcPNtaOqHktyc5IfAT8Hbh3tfinwcJIaHeuBqtp1br4USdIvdbrn\nXlWPA+vmrbt33vLMhP1eBq4+mwlKkhbPlyhKUoOMuyQ1yLhLUoOMuyQ1yLhLUoOMuyQ1yLhLUoOM\nuyQ1yF+zJ+m86+tXUS6nX0PplbskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLsk\nNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4S1KDjLskNci4\nS1KDVvY9gWmb2bazl+Nuv3tzL8eVpEm8cpekBhl3SWpQc7dlJKmrlm/jdrpyT7Ihyd4k+5LcdYox\nX02yP8nzSa5ezL6SpOlaMO5JVgDbgZuAK4HNSa6YN+bTwEer6mPAFuDrXfddSg6//MO+p7BkeC5O\n8Fyc4Lk4Yamfiy5X7uuB/VV1oKqOAQ8CG+eN2QjcD1BVTwMfTHJpx32XjKX+H+t88lyc4Lk4wXNx\nwlI/F13ivgo4OLZ8aLSuy5gu+0qSpuxcvVom5+jzSpI6SFWdfkByLTBbVRtGy18Eqqr+ZmzM14F/\nr6pvjpb3An8CfGShfcc+x+knIkl6j6qaeDHd5aWQu4HLk6wFjgCbgPmv43kU+DzwzdE3g59V1dEk\nr3fY97QTlCQt3oJxr6rjSWaAXQxv49xXVXuSbBlurh1V9ViSm5P8CPg5cOvp9j1nX40kCehwW0aS\n9P7jjx/AN1qNS7I6yXeT/FeSHyT5Qt9z6lOSFUn+I8mjfc+lT0k+mORfk+wZ/d34ZN9z6kuSv0ry\nYpL/TPJAkgv6ntMkyz7u77c3Wp0HbwN3VtWVwB8An1/m5+MOYGm/oPn8+ArwWFX9LvAJYFneXk3y\nYeB24Jqquorhre1N/c5qsmUfd95nb7Q616rqv6vq+dHjtxj+T7ws35uQZDVwM/BPfc+lT0l+A/ij\nqvoGQFW9XVX/2/O0+vQrwEVJVgIXAq/2PJ+JjLtvtDqlJL8FXA083e9MevP3wF8Dy/2JqY8Aryf5\nxugW1Y4kv973pPpQVa8Cfwf8BDjM8JWB3+l3VpMZd02U5GLgIeCO0RX8spLkz4Cjo3/FhOX9xryV\nwDXAP1TVNcD/AV/sd0r9SPKbDP9lvxb4MHBxklv6ndVkxn343XfN2PLq0bpla/TPzYeAf6mqR/qe\nT0+uA/48yUvATuD6JPf3PKe+HAIOVtWzo+WHGMZ+OfpT4KWq+p+qOg78G/CHPc9pIuM+9iat0bPe\nmxi+KWs5+2fgh1X1lb4n0peq+lJVramq32b4d+K7VfXZvufVh6o6ChxM8jujVTewfJ9k/glwbZJf\nSxKG52JJPrm87H9Zh2+0OlmS64C/BH6Q5DmG95u/VFWP9zsz9ewLwANJfhV4idEbFZebqnomyUPA\nc8Cx0Z87+p3VZL6JSZIa5G0ZSWqQcZekBhl3SWqQcZekBhl3SWqQcZekBhl3SWqQcZekBv0/7qjQ\n49GPrfwAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "pmf = Pmf(ks)\n", "thinkplot.Hist(pmf)\n", "np.mean(ks)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This result, which we have estimated three ways, is a predictive distribution, based on our uncertainty about `x`.\n", "\n", "We can compute the mixture analtically using `thinkbayes2.MakeMixture`:\n", "\n", "\n", " def MakeMixture(metapmf, label='mix'):\n", " \"\"\"Make a mixture distribution.\n", "\n", " Args:\n", " metapmf: Pmf that maps from Pmfs to probs.\n", " label: string label for the new Pmf.\n", "\n", " Returns: Pmf object.\n", " \"\"\"\n", " mix = Pmf(label=label)\n", " for pmf, p1 in metapmf.Items():\n", " for k, p2 in pmf.Items():\n", " mix[k] += p1 * p2\n", " return mix\n", " \n", "The outer loop iterates through the Pmfs; the inner loop iterates through the items.\n", "\n", "So `p1` is the probability of choosing a particular Pmf; `p2` is the probability of choosing a value from the Pmf.\n", "\n", "In the example, each Pmf is associated with a value of `x` (probability of hitting a target). The inner loop enumerates the values of `k` (number of targets hit after 10 shots)." ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "3.7000000000000028" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from thinkbayes2 import MakeMixture\n", "\n", "mix = MakeMixture(metapmf)\n", "thinkplot.Hist(mix)\n", "mix.Mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise**: Assuming again that the distribution of `x` in the population of designs is well-modeled by a beta distribution with parameters α=2 and β=3, what the distribution if `k` if I choose a random Alien Blaster and fire 10 shots?" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.11" } }, "nbformat": 4, "nbformat_minor": 0 }