{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Think Bayes\n", "\n", "This notebook presents example code and exercise solutions for 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": {}, "outputs": [], "source": [ "# Configure Jupyter so figures appear in the notebook\n", "%matplotlib inline\n", "\n", "# Configure Jupyter to display the assigned value after an assignment\n", "%config InteractiveShell.ast_node_interactivity='last_expr_or_assign'\n", "\n", "# import classes from thinkbayes2\n", "from thinkbayes2 import Pmf, Suite\n", "\n", "import thinkplot as tplt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a problem from Joyce, \"[How probabilities reflect evidence](http://www-personal.umich.edu/~jjoyce/papers/hpre.pdf)\":\n", "\n", ">Four Urns: Jacob and Emily both start out knowing that the urn U was\n", "randomly chosen from a set of four urns {urn0, urn1, urn2, urn3} where urn_i\n", "contains three balls, i of which are blue and 3-i of which are green. Since the\n", "choice of U was random both subjects assign equal credence to the four\n", "hypotheses about its contents: c(U = urn_i) = 1/4. Moreover, both treat these\n", "hypotheses as statements about the objective chance of drawing a blue ball from\n", "U, so that knowledge of U = urn_i ‘screen offs’ any sampling data in the sense\n", "that c(Bnext |E & U = urn_i) = c(Bnext | U = urni), where Bnext says that the next\n", "ball drawn from the urn will be blue and E is a proposition that describes any\n", "prior series of random draws with replacement from U. Finally, Jacob and\n", "Emily regard random drawing with replacement as an exchangeable process,\n", "so that any series of draws that produces m blue balls and n green balls is as\n", "likely as any other such series, irrespective of order. Use BmGn to denote the\n", "generic event in which m blue balls and n green balls are drawn at random and\n", "with replacement form U. Against this backdrop of shared evidence, suppose\n", "Jacob sees five balls drawn at random and with replacement from U and\n", "observes that all are blue, so his evidence is B5G0. Emily, who sees Jacob’s\n", "evidence, looks at fifteen additional draws of which twelve come up blue, so her\n", "evidence is B17G3. What should Emily and Jacob think about Bnext?\n", "\n", "Here's a class that represents a suite of hypotheses about the urns:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "class Urns(Suite):\n", " \n", " def Likelihood(self, data, hypo):\n", " \"\"\"Computes the likelihood of the data under the hypothesis.\n", " \n", " data: 'B' or 'G'\n", " hypo: urn index from 0..3\n", " \"\"\"\n", " prob_blue = hypo / 3\n", " if data == 'B':\n", " return prob_blue\n", " else:\n", " return 1-prob_blue" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's the uniform prior:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAagAAAEYCAYAAAAJeGK1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAFJRJREFUeJzt3X+QXWd93/H3pzK205CCjNRALQuJWDQRP0UWmeCG0MEYQVspbcxEzoTIHWdU2iohZdIZtaQmiE5rYJJQitPYBTUuSTFgMkRN5HocsOmkjG0t2BjLRrEsCN6Rp1YsCiEQO7K//eMewfXNXd2VtWf3kfb9mrmz5zznee796khHnz1nzz4nVYUkSa35G4tdgCRJ4xhQkqQmGVCSpCYZUJKkJhlQkqQmGVCSpCYZUJKkJhlQkqQmGVCSpCadtdgFzJcVK1bUmjVrFrsMSdIEn//85/+sqlZO6nfGBNSaNWuYnp5e7DIkSRMk+dO59PMSnySpSQaUJKlJBpQkqUkGlCSpSQaUJKlJBpQkqUm9BlSSTUkOJDmYZOeY7W9Pcl+Se5J8Osnzh7Y9keTu7rWnzzolSe3p7fegkiwDrgFeD8wA+5Lsqar7hrrdBUxV1beT/HPgvcBPd9u+U1Uv76s+SVLb+jyD2ggcrKpDVfU4cAOwZbhDVd1aVd/uVm8HVvVYjyTpNNLnTBLnAw8Nrc8AF52g/5XATUPr5yaZBo4BV1fVp0YHJNkObAdYvXr1KRe8499/9JTfYyn54K9cPrGP+/TkuE/n36R96v48eXP5dzof+gyojGmrsR2TnwWmgJ8Yal5dVYeTvAD4TJIvVdWDT3mzquuA6wCmpqbGvrck6fTU5yW+GeCCofVVwOHRTkkuAd4BbK6qx463V9Xh7ush4DZgQ4+1SpIa02dA7QPWJVmb5GxgK/CUu/GSbACuZRBOjwy1L09yTre8ArgYGL65QpJ0huvtEl9VHUuyA7gZWAbsrqr9SXYB01W1B3gf8EzgE0kAvlZVm4EfAa5N8iSDEL165O4/SdIZrtfHbVTVXmDvSNtVQ8uXzDLuc8BL+qxNktQ2Z5KQJDXJgJIkNcmAkiQ1yYCSJDXJgJIkNcmAkiQ1yYCSJDXJgJIkNcmAkiQ1yYCSJDXJgJIkNcmAkiQ1yYCSJDXJgJIkNcmAkiQ1yYCSJDXJgJIkNcmAkiQ1yYCSJDXJgJIkNcmAkiQ1yYCSJDXJgJIkNcmAkiQ1yYCSJDXJgJIkNcmAkiQ1yYCSJDXJgJIkNcmAkiQ1yYCSJDXJgJIkNcmAkiQ1yYCSJDXJgJIkNanXgEqyKcmBJAeT7Byz/e1J7ktyT5JPJ3n+0LZtSR7oXtv6rFOS1J7eAirJMuAa4I3AeuDyJOtHut0FTFXVS4Ebgfd2Y88D3glcBGwE3plkeV+1SpLa0+cZ1EbgYFUdqqrHgRuALcMdqurWqvp2t3o7sKpbfgNwS1UdraqvA7cAm3qsVZLUmD4D6nzgoaH1ma5tNlcCN53M2CTbk0wnmT5y5MgplitJakmfAZUxbTW2Y/KzwBTwvpMZW1XXVdVUVU2tXLnyaRcqSWpPnwE1A1wwtL4KODzaKcklwDuAzVX12MmMlSSdufoMqH3AuiRrk5wNbAX2DHdIsgG4lkE4PTK06Wbg0iTLu5sjLu3aJElLxFl9vXFVHUuyg0GwLAN2V9X+JLuA6araw+CS3jOBTyQB+FpVba6qo0nezSDkAHZV1dG+apUktae3gAKoqr3A3pG2q4aWLznB2N3A7v6qkyS1zJkkJElNMqAkSU0yoCRJTTKgJElNMqAkSU0yoCRJTTKgJElNMqAkSU0yoCRJTTKgJElNMqAkSU0yoCRJTTKgJElNMqAkSU0yoCRJTTKgJElNMqAkSU0yoCRJTTKgJElNMqAkSU0yoCRJTTKgJElNMqAkSU0yoCRJTTKgJElNMqAkSU0yoCRJTTKgJElNMqAkSU0yoCRJTTKgJElNMqAkSU0yoCRJTTKgJElNMqAkSU3qNaCSbEpyIMnBJDvHbH9Nki8kOZbkspFtTyS5u3vt6bNOSVJ7zurrjZMsA64BXg/MAPuS7Kmq+4a6fQ24AvjlMW/xnap6eV/1SZLa1ltAARuBg1V1CCDJDcAW4LsBVVVf7bY92WMdkqTTUJ+X+M4HHhpan+na5urcJNNJbk/yk+M6JNne9Zk+cuTIqdQqSWpMnwGVMW11EuNXV9UU8DPA+5P80F97s6rrqmqqqqZWrlz5dOuUJDWoz4CaAS4YWl8FHJ7r4Ko63H09BNwGbJjP4iRJbeszoPYB65KsTXI2sBWY0914SZYnOadbXgFczNDPriRJZ77eAqqqjgE7gJuB+4GPV9X+JLuSbAZI8sokM8CbgWuT7O+G/wgwneSLwK3A1SN3/0mSznB93sVHVe0F9o60XTW0vI/Bpb/RcZ8DXtJnbZKktjmThCSpSQaUJKlJBpQkqUkGlCSpSScMqCS/PbS8rfdqJEnqTDqDetnQ8tv6LESSpGGTAupkpiaSJGneTPo9qFVJPsBgXr3jy99VVb/YW2WSpCVtUkD966Hl6T4LkSRp2AkDqqquX6hCJEkadsKAmvSo9araPL/lSJI0MOkS348xeOjgR4E7GP+MJ0mS5t2kgHou8HrgcgYPDvxD4KNVtf+EoyRJOkUnvM28qp6oqv9VVduAVwEHgduS/MKCVCdJWrImPm6je3DgP2BwFrUG+ADwe/2WJUla6ibdJHE98GLgJuBdVXXvglQlSVryJp1BvQX4C+CFwNuSHJ9ZIkBV1d/qszhJ0tI16fegnO1ckrQoJl3iOxd4K3AhcA+wu6qOLURhkqSlbdIZ0vXAFPAl4E3Ar/VekSRJTP4Z1PqqeglAkg8Dd/ZfkiRJk8+g/ur4gpf2JEkLadIZ1MuSfLNbDvB93bp38UmSejXpLr5lC1WIJEnDvI1cktQkA0qS1CQDSpLUJANKktQkA0qS1CQDSpLUJANKktQkA0qS1CQDSpLUJANKktQkA0qS1KReAyrJpiQHkhxMsnPM9tck+UKSY0kuG9m2LckD3Wtbn3VKktrTW0AlWQZcA7wRWA9cnmT9SLevAVcA/2Nk7HnAO4GLgI3AO5Ms76tWSVJ7+jyD2ggcrKpDVfU4cAOwZbhDVX21qu4BnhwZ+wbglqo6WlVfB24BNvVYqySpMX0G1PnAQ0PrM13bvI1Nsj3JdJLpI0eOPO1CJUnt6TOgMqat5nNsVV1XVVNVNbVy5cqTKk6S1LY+A2oGuGBofRVweAHGSpLOAH0G1D5gXZK1Sc4GtgJ75jj2ZuDSJMu7myMu7dokSUtEbwFVVceAHQyC5X7g41W1P8muJJsBkrwyyQzwZuDaJPu7sUeBdzMIuX3Arq5NkrREnNXnm1fVXmDvSNtVQ8v7GFy+Gzd2N7C7z/okSe1yJglJUpMMKElSkwwoSVKTDChJUpMMKElSkwwoSVKTDChJUpMMKElSkwwoSVKTDChJUpMMKElSkwwoSVKTDChJUpMMKElSkwwoSVKTDChJUpMMKElSkwwoSVKTDChJUpMMKElSkwwoSVKTDChJUpMMKElSkwwoSVKTDChJUpMMKElSkwwoSVKTDChJUpMMKElSkwwoSVKTDChJUpMMKElSkwwoSVKTDChJUpMMKElSk3oNqCSbkhxIcjDJzjHbz0nysW77HUnWdO1rknwnyd3d67f6rFOS1J6z+nrjJMuAa4DXAzPAviR7quq+oW5XAl+vqguTbAXeA/x0t+3Bqnp5X/VJktrW5xnURuBgVR2qqseBG4AtI322ANd3yzcCr0uSHmuSJJ0m+gyo84GHhtZnuraxfarqGPAN4DndtrVJ7kry2SQ/3mOdkqQG9XaJDxh3JlRz7PMwsLqqHk3yo8Cnkryoqr75lMHJdmA7wOrVq+ehZElSK/o8g5oBLhhaXwUcnq1PkrOAZwFHq+qxqnoUoKo+DzwIvHD0A6rquqqaqqqplStX9vBHkCQtlj4Dah+wLsnaJGcDW4E9I332ANu65cuAz1RVJVnZ3WRBkhcA64BDPdYqSWpMb5f4qupYkh3AzcAyYHdV7U+yC5iuqj3Ah4GPJDkIHGUQYgCvAXYlOQY8Aby1qo72VaskqT19/gyKqtoL7B1pu2po+S+BN48Z90ngk33WJklqmzNJSJKaZEBJkppkQEmSmmRASZKaZEBJkppkQEmSmmRASZKaZEBJkppkQEmSmmRASZKaZEBJkppkQEmSmmRASZKaZEBJkppkQEmSmmRASZKaZEBJkppkQEmSmmRASZKaZEBJkppkQEmSmmRASZKaZEBJkppkQEmSmmRASZKaZEBJkppkQEmSmmRASZKaZEBJkppkQEmSmmRASZKaZEBJkppkQEmSmmRASZKaZEBJkppkQEmSmtRrQCXZlORAkoNJdo7Zfk6Sj3Xb70iyZmjbv+naDyR5Q591SpLa01tAJVkGXAO8EVgPXJ5k/Ui3K4GvV9WFwG8A7+nGrge2Ai8CNgG/2b2fJGmJ6PMMaiNwsKoOVdXjwA3AlpE+W4Dru+UbgdclSdd+Q1U9VlVfAQ527ydJWiJSVf28cXIZsKmqfr5bfwtwUVXtGOpzb9dnplt/ELgI+FXg9qr6na79w8BNVXXjyGdsB7Z3q38XOHCSZa4A/uwkxyyG06VOOH1qtc75d7rUap3z72RrfX5VrZzU6aynX89EGdM2moaz9ZnLWKrqOuC6ky+t+/Bkuqqmnu74hXK61AmnT63WOf9Ol1qtc/71VWufl/hmgAuG1lcBh2frk+Qs4FnA0TmOlSSdwfoMqH3AuiRrk5zN4KaHPSN99gDbuuXLgM/U4JrjHmBrd5ffWmAdcGePtUqSGtPbJb6qOpZkB3AzsAzYXVX7k+wCpqtqD/Bh4CNJDjI4c9rajd2f5OPAfcAx4F9W1RM9lPm0Lw8usNOlTjh9arXO+Xe61Gqd86+XWnu7SUKSpFPhTBKSpCYZUJKkJi2pgEpyXpJbkjzQfV0+S78nktzdvUZv7Oizvqc9NdRCmkOdVyQ5MrQPf36R6tyd5JHu9+3GbU+SD3R/jnuSvGKha+zqmFTna5N8Y2h/XrXQNXZ1XJDk1iT3J9mf5G1j+rSyT+dS66Lv1yTnJrkzyRe7Ot81pk8rx/1cap3fY7+qlswLeC+ws1veCbxnln7fWoTalgEPAi8Azga+CKwf6fMvgN/qlrcCH2u0ziuADzbw9/0a4BXAvbNsfxNwE4Pfu3sVcEejdb4W+IMG9ufzgFd0yz8A/MmYv/tW9ulcal30/drtp2d2y88A7gBeNdJn0Y/7k6h1Xo/9JXUGxVOnVroe+MlFrGXUqUwNtZDmUmcTqup/M7g7dDZbgP9eA7cDz07yvIWp7nvmUGcTqurhqvpCt/znwP3A+SPdWtmnc6l10XX76Vvd6jO61+iday0c93OtdV4ttYD6wap6GAb/gIG/PUu/c5NMJ7k9yUKF2PnAQ0PrM/z1A+q7farqGPAN4DkLUt2YGjrj6gT4qe4Sz41JLhizvQVz/bO04Me6Sys3JXnRYhfTXWbawOC76GHN7dMT1AoN7Ncky5LcDTwC3FJVs+7TRTzugTnVCvN47J9xAZXkj5LcO+Z1Mt/lr67BtB0/A7w/yQ/1VO6wU5kaaiHNpYb/CaypqpcCf8T3vvtrTQv7cy6+wGDuspcB/xn41GIWk+SZwCeBX6qqb45uHjNk0fbphFqb2K9V9URVvZzBjDkbk7x4pEsz+3QOtc7rsX/GBVRVXVJVLx7z+n3g/x6/3NB9fWSW9zjcfT0E3Mbgu6++ncrUUAtpYp1V9WhVPdat/lfgRxeotpN1WkypVVXfPH5ppar2As9IsmIxaknyDAb/4f9uVf3emC7N7NNJtba0X7sa/h+D/282jWxq4bh/itlqne9j/4wLqAmGp1baBvz+aIcky5Oc0y2vAC5mMKNF305laqiFNLHOkZ85bGZw/b9Fe4Cf6+48exXwjeOXgFuS5LnHf+aQZCOD4/bRRagjDGZ/ub+qfn2Wbk3s07nU2sJ+TbIyybO75e8DLgG+PNKtheN+TrXO+7Hf950fLb0YXLf9NPBA9/W8rn0K+FC3/GrgSwzuTvsScOUC1vcmBncbPQi8o2vbBWzuls8FPsHg+Vh3Ai9YpP04qc7/COzv9uGtwA8vUp0fBR4G/orBd6FXAm8F3tptD4OHaj7Y/V1PNVrnjqH9eTvw6kWq8+8xuLR0D3B393pTo/t0LrUu+n4FXgrc1dV5L3BV197icT+XWuf12HeqI0lSk5baJT5J0mnCgJIkNcmAkiQ1yYCSJDXJgJIkNcmAkiZIsiYjM40n+dUkv3yK7/u5k+z/2iR/cCqfOfReG5J8qFvenG5W+iQ7kvzT+fgM6VQZUNI86n7Tf06q6tV91jLBv2UwvQ9Vtaeqru7adwO/uGhVSUMMKOkUJbktyX9I8lngbUl+O4NnIn0uyaEkl80y7lvd19d273Fjki8n+d2hGQ42dW1/DPyTobHfn8FzpPYluev4XJNJ3p5kd7f8km4eyr858rk/ALy0qr7YrV+R5IMAVfVt4KvdzArSojKgpPnx7Kr6iar6tW79eQxmM/iHwNWzD/uuDcAvAesZPGvr4iTnMpjP7B8BPw48d6j/OxhMefNK4O8D70vy/cD7gQuT/GPgvwH/rAudYVMMZgKYzXT3edKiMqCkyWabbmW4/WMj2z5VVU9W1X3AD87hM+6sqpmqepLBtDxrgB8GvlJVD9RgypffGep/KbCze/TBbQymw1ndjb8C+Ajw2ar6P2M+63nAkRPU8gjwd+ZQs9SrOV8vl5awR4HlI23nAV8ZWv+Lke2PDS3P5eFyw/2f4HvH5mzhGOCnqurAmG3rgG8xe8h8h0Ggzebcro+0qDyDkiaowSMZHk7yOoAk5zF4zMAf9/zRXwbWDj2P7PKhbTcDvzD0s6oN3ddnAf+JwWPknzPLz7/uBy48wee+kBNfApQWhAElzc3PAb/SXVL7DPCuqnqwzw+sqr8EtgN/2N0k8adDm9/N4JHb93S3wL+7a/8N4Der6k8YzIp+dZKnPDm6qr4MPKu7WWKcixk8bE5aVM5mLi1BSf4V8OdV9aGR9g3A26vqLYtTmfQ9nkFJS9N/4ak/9zpuBfDvFrgWaSzPoCRJTfIMSpLUJANKktQkA0qS1CQDSpLUJANKktSk/w/RsR3q7gDVrQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "prior = Urns([0, 1, 2, 3])\n", "tplt.Hist(prior)\n", "tplt.decorate(xlabel='Urn index (i)', ylabel='PMF')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's Jacob's update after 5 blue marbles." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 0.0\n", "1 0.0036231884057971\n", "2 0.1159420289855072\n", "3 0.8804347826086956\n" ] } ], "source": [ "jacob = prior.Copy()\n", "B5G0 = 'B'*5\n", "\n", "for data in B5G0:\n", " jacob.Update(data)\n", "\n", "jacob.Print()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tplt.Hist(prior, color='gray')\n", "tplt.Hist(jacob)\n", "tplt.decorate(xlabel='Urn index (i)', ylabel='PMF')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's Emily's update after an additional 12 blue and 3 green." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 0.0\n", "1 6.1031431187061336e-05\n", "2 0.9999389685688129\n", "3 0.0\n" ] } ], "source": [ "emily = jacob.Copy()\n", "B12G3 = 'B'*12 + 'G'*3\n", "\n", "for data in B12G3:\n", " emily.Update(data)\n", "\n", "emily.Print()" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1gAAAGoCAYAAABbkkSYAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3X+UpXV9J/j3h+ZHu5FopFtj6DaN2ugQ+eX2Mv6IAzmYpGGTZnblsDCC4I+wnF1CXN3k9KjLJsRMHM1sJo5kGMYQNOOAyJrYq7jsGEDPZIDQKiANMmkJSAWPtB1DhkkIot/9oy6dsqjuKuH71L236/U6p049P7713Hfdhvutdz1PPbdaawEAAOCZO2DcAQAAAPYXChYAAEAnChYAAEAnChYAAEAnChYAAEAnChYAAEAnChYAAEAnChYAAEAnChYAAEAnB447wA9qzZo1bcOGDeOOAUBnX/ziF7/VWls77hw9mKsA9j9LnaemrmBt2LAh27dvH3cMADqrqgfGnaEXcxXA/mep85RLBAEAADpRsAAAADpRsAAAADqZur/BWsh3vvOdzMzM5LHHHht3lGW1evXqrFu3LgcddNC4owAAsJ/xM/bT+xl7vyhYMzMzOfTQQ7Nhw4ZU1bjjLIvWWnbv3p2ZmZkcccQR444DAMB+xs/YT+9n7P3iEsHHHnsshx122Ir5h0+Sqsphhx224n6jAADA8vAz9tOzXxSsJCvqH/5JK/F7BgBg+azEnzef6fe83xQsAACAcdsv/gZrvgvfe1XX433oPWctadyzn/3sPProo10e87zzzsvP/dzP5fTTT+9yPAAAeCbefc1Xuh7vN844etExq1atytFH//24M888M1u3bl3S8R966KFcdNFFufbaa3PTTTflt37rt/LpT3/6aeddqv2yYAEAANPvWc96Vm6//fan9bU/9mM/lmuvvbZzosW5RLCzRx99NCeffHJe+cpX5uijj86nPvWpPfs++tGP5phjjsmxxx6bc845J0nywAMP5OSTT84xxxyTk08+OV//+tf3jP/c5z6X173udTnyyCOXpW0DAMA02LBhQ971rnfl1a9+dTZt2pQvfelL+dmf/dm85CUvyWWXXZYkuf/++/OKV7zi+77ue9/7XjZu3Jhdu3btWX/pS1+ab33rW92yKVidrV69On/4h3+YL33pS7nxxhvzzne+M6217NixI7/xG7+RG264IXfccUd+53d+J0ly4YUX5k1velPuvPPOvPGNb8xFF12051j3339/Pv/5z+czn/lMLrjgAncMBABgRfnbv/3bHHfccXs+Pv7xj+/Zt379+tx888153etel/POOy/XXnttbrnlllx88cV7Pd4BBxyQs88+Ox/72MeSzJ7QOPbYY7NmzZpumV0i2FlrLe9617vyhS98IQcccED+4i/+It/85jdzww035PTTT9/zj/e85z0vSXLzzTfnk5/8ZJLknHPOya/8yq/sOdYZZ5yRAw44IBs3bsyLX/zifPWrX81xxx23/N8UAACMwb4uEdyyZUuS5Oijj86jjz6aQw89NIceemhWr16dv/qrv9rrMd/ylrfktNNOy9vf/vZcccUVefOb39w1szNYnX3sYx/Lrl278sUvfjG33357XvCCF+Sxxx5La21Jt3ycO2b++JV4m0yAIVXVFVX1cFXdtZf9VVUfrKqdVXVnVb1yuTMCsLBDDjkkyexZqSeXn1x/4okn9vp169evzwte8ILccMMNufXWW3PKKad0zaVgdfbII4/k+c9/fg466KDceOONeeCBB5IkJ598cq655prs3r07SfKXf/mXSZLXvOY1ufrqq5PMlrOf/Mmf3HOsT3ziE/ne976Xr33ta7nvvvvyspe9bJm/G4D93pVJNu9j/ylJNo4+zk/yr5chEwADe9vb3pazzz47Z5xxRlatWtX12PvlJYJLva16T0888UQOOeSQvPGNb8zP//zPZ9OmTTnuuOPy8pe/PEnyEz/xE3n3u9+dE088MatWrcrxxx+fK6+8Mh/84Afzlre8JR/4wAeydu3a/P7v//6eY77sZS/LiSeemG9+85u57LLLsnr16mX/vgD2Z621L1TVhn0MOS3JR1trLcktVfXcqnpha+0byxIQYIIs5bbqvT35N1hP2rx5c973vvc94+Nu2bIlb37zm7tfHpjspwVrHHbs2JGXvOQlWbNmTW6++eYFx5x77rk599xzv2/bhg0bcsMNNzxl7JVXXjlETGAfer+H3koxjl9qLaPDkzw4Z31mtO0pBauqzs/sWa686EUvWpZwMIl6v1fSSjKOAjPpvvvd7y64/f7779+zfN555+W88857yr41a9bkrrtmrwA/6aSTctJJJ+0Zc8cdd+TYY4/dczKkJ5cIdnDZZZflrLPOynvf+95xRwGgr4X++LUtNLC1dnlrbVNrbdPatWsHjgXA0/W+970vb3jDG/Kbv/mbgxxfwergggsuyN13352f+ZmfGXcUAPqaSbJ+zvq6JA+NKQsAHWzdujUPPPDA9937oKf9pmDNXh6/sqzE7xlgmW1L8qbR3QRfleQRf38FrCQr8efNZ/o97xd/g7V69ers3r07hx122Iq5lXlrLbt373bjC4BnoKquSnJSkjVVNZPk/0xyUJK01i5Lcl2SU5PsTPI3Sfr/NTTAhPIz9tOzXxSsdevWZWZmJrt27Rp3lGW1evXqrFu3btwxAKZWa22fd+gY3T3wf12mOAATxc/YT89+UbAOOuigHHHEEeOOAQAA+w0/Yz89+83fYAEAAIybggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANDJoAWrqjZX1b1VtbOqti6w/0VVdWNVfbmq7qyqU4fMAwAAMKTBClZVrUpyaZJTkhyV5KyqOmresPckuaa1dnySM5P87lB5AAAAhjbkGawTkuxsrd3XWns8ydVJTps3piX54dHyc5I8NGAeAACAQR044LEPT/LgnPWZJP9w3phfTfL/VdUvJvmhJK8fMA8AAMCghjyDVQtsa/PWz0pyZWttXZJTk/xBVT0lU1WdX1Xbq2r7rl27BogKAADwzA1ZsGaSrJ+zvi5PvQTwrUmuSZLW2s1JVidZM/9ArbXLW2ubWmub1q5dO1BcAACAZ2bIgnVbko1VdURVHZzZm1hsmzfm60lOTpKq+geZLVhOUQEAAFNpsILVWnsiyYVJrk9yT2bvFrijqi6pqi2jYe9M8gtVdUeSq5Kc11qbfxkhAADAVBjyJhdprV2X5Lp52y6es3x3ktcOmQEAAGC5DPpGwwAAACuJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUAANCJggUA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Sa6bt+3ivYw9aTkyATC9nMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoRMECAADoZNCCVVWbq+reqtpZVVsX2P+Oqrq7qu6sqj+uqh8fMg8AAMCQBitYVbUqyaVJTklyVJKzquqoecO+nGRTa+2YJNcmef9QeQAAAIY25BmsE5LsbK3d11p7PMnVSU6bO6C1dmNr7W9Gq7ckWTdgHgAAgEENWbAOT/LgnPWZ0ba9eWuSzy60o6rOr6rtVbV9165dHSMCAAD0M2TBqgW2tQUHVp2dZFOSDyy0v7V2eWttU2tt09q1aztGBAAA6OfAAY89k2T9nPV1SR6aP6iqXp/k3UlObK393YB5AAAABjXkGazbkmysqiOq6uAkZybZNndAVR2f5N8k2dJae3jALAAAAIMbrGC11p5IcmGS65Pck+Sa1tqOqrqkqraMhn0gybOTfKKqbq+qbXs5HAAAwMQb8hLBtNauS3LdvG0Xz1l+/ZCPDwAAsJwGfaNhAACAlUTBAmDFqqrNVXVvVe2sqq0L7H9HVd1dVXdW1R9X1Y+PIycA00PBAmBFqqpVSS5NckqSo5KcVVVHzRv25SSbWmvHJLk2yfuXNyUA00bBAmClOiHJztbafa21x5NcneS0uQNaaze21v5mtHpLZt9yBAD2SsECYKU6PMmDc9ZnRtv25q1JPru3nVV1flVtr6rtu3bt6hQRgGmjYAGwUtUC29qCA6vOTrIps28vsqDW2uWttU2ttU1r167tFBGAaTPobdoBYILNJFk/Z31dkofmD6qq1yd5d5ITW2t/t0zZAJhSzmABsFLdlmRj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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "tplt.preplot(cols=2)\n", "tplt.Hist(jacob, label='Jacob')\n", "tplt.decorate(xlabel='Urn index (i)', ylabel='PMF')\n", "\n", "tplt.subplot(2)\n", "tplt.Hist(emily, label='Emily')\n", "tplt.decorate(xlabel='Urn index (i)', ylabel='PMF')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What should Jacob believe about Bnext?" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 0.0\n", "1 0.0036231884057971\n", "2 0.1159420289855072\n", "3 0.8804347826086956\n" ] }, { "data": { "text/plain": [ "0.9589371980676328" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "total = 0\n", "for i, prob_i in jacob.Items():\n", " print(i, prob_i)\n", " prob_blue = i/3\n", " total += prob_i * prob_blue\n", " \n", "total" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's make it a function:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def prob_b_next(suite):\n", " total = 0\n", " for i, prob_i in suite.Items():\n", " prob_blue = i/3\n", " total += prob_i * prob_blue\n", " \n", " return total" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what Jacob believes." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9589371980676328" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prob_b_next(jacob)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And Emily." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.666646322856271" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "prob_b_next(emily)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose we draw a **blue** marble from the same urn and show it to Jacob and Emily. How much do their beliefs about Bnext change?\n", "\n", "Here's the effect on Jacob." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9589371980676328\n", "0.9722921914357681\n" ] } ], "source": [ "print(prob_b_next(jacob))\n", "jacob.Update('B')\n", "print(prob_b_next(jacob))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And on Emily." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.666646322856271\n", "0.6666564944510563\n" ] } ], "source": [ "print(prob_b_next(emily))\n", "emily.Update('B')\n", "print(prob_b_next(emily))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Suppose we draw a **green** marble from the same urn and show it to Jacob and Emily. How much do their beliefs about Bnext change?" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9722921914357681\n", "0.6565656565656565\n" ] } ], "source": [ "print(prob_b_next(jacob))\n", "jacob.Update('G')\n", "print(prob_b_next(jacob))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.6666564944510563\n", "0.666646322856271\n" ] } ], "source": [ "print(prob_b_next(emily))\n", "emily.Update('G')\n", "print(prob_b_next(emily))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.0" } }, "nbformat": 4, "nbformat_minor": 1 }