{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "remove_input" ] }, "outputs": [], "source": [ "path_data = '../../../../data/'\n", "\n", "import numpy as np\n", "import pandas as pd\n", "import math\n", "from scipy import stats\n", "\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "plt.style.use('fivethirtyeight')\n", "\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "colors = pd.read_csv(path_data + 'roulette_wheel.csv', usecols=['Color'])['Color']\n", "\n", "pockets = np.array(['0','00'])\n", "\n", "for i in np.arange(1, 37):\n", " pockets = np.append(pockets, str(i)) \n", "\n", "wheel = pd.DataFrame(\n", " {'Pocket':pockets,\n", " 'Color':colors})" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The Central Limit Theorem ###\n", "Very few of the data histograms that we have seen in this course have been bell shaped. When we have come across a bell shaped distribution, it has almost invariably been an empirical histogram of a statistic based on a random sample.\n", "\n", "The examples below show two very different situations in which an approximate bell shape appears in such histograms." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Net Gain in Roulette ###\n", "In an earlier section, the bell appeared as the rough shape of the total amount of money we would make if we placed the same bet repeatedly on different spins of a roulette wheel. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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", "
PocketColor
00green
100green
21red
32black
43red
54black
65red
76black
87red
98black
\n", "
" ], "text/plain": [ " Pocket Color\n", "0 0 green\n", "1 00 green\n", "2 1 red\n", "3 2 black\n", "4 3 red\n", "5 4 black\n", "6 5 red\n", "7 6 black\n", "8 7 red\n", "9 8 black" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "wheel.head(10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The bet on red pays even money i.e. 1 to 1. We define the function `red_winnings` that returns the net winnings on one \\$1 bet on red. Specifically, the function takes a color as its argument and returns 1 if the color is red. For all other colors it returns -1." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def red_winnings(color):\n", " if color == 'red':\n", " return 1\n", " else:\n", " return -1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The table `red` shows each pocket's winnings on red." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
PocketColorWinnings: Red
00green-1
100green-1
21red1
32black-1
43red1
\n", "
" ], "text/plain": [ " Pocket Color Winnings: Red\n", "0 0 green -1\n", "1 00 green -1\n", "2 1 red 1\n", "3 2 black -1\n", "4 3 red 1" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "red = wheel.copy()\n", "\n", "red['Winnings: Red'] = wheel['Color'].map(red_winnings)\n", "\n", "red.head(5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Your net gain on one bet is one random draw from the `Winnings: Red` column. There is an 18/38 chance making \\\\$1, and a 20/38 chance of making -\\$1. This probability distribution is shown in the histogram below." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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GgQXAABgGgQXAABgGgQXAABgGgQXAABgGoaCS15enqZOnaq1a9e6ux4AAIBSGQou9evX15tvvqmjR4+6ux4AAIBSGb5U1L59ex08eNCdtQAAAJTJcHAZP368FixYoC+++MKd9QAAAJSq1JVzLzVz5kz5+Pho8ODBatGihdq2bStvb2+nPhaLRYsXL67wIgEAACQXgsu+fftksVjUsmVLSdLPP/9crA+/ZQQAANzJcHDZtWuXO+sAAAC4LNZxAQAApuFScCkoKNDixYs1cuRIDRo0SD/88IMkKTs7Wx999JFOnjzpliIBAAAkF4LL2bNnFRkZqeHDh+uTTz7R6tWrlZWVJUlq3Lix/v73v+vdd991W6EAAACGg8vEiRO1b98+LVmyRN9//73sdrujzcvLS3369NHq1asNH/i9995TeHi4WrVqpVatWumuu+5yetTabrcrPj5eQUFBat68uaKiorR3717D+wcAANWP4eDy6aef6oknntCdd95Z4tND/v7+OnLkiOEDt2jRQhMnTtRXX32l1NRU9ejRQw8++KDj8tOMGTOUmJjo+KkBq9Wq/v3769y5c4aPAQAAqhfDwSU7O1t+fn6lttvtdl24cMHwgaOionTXXXfpuuuuU0BAgF5++WU1atRIW7duld1uV1JSkkaPHq1+/fopODhYSUlJysnJ0dKlSw0fAwAAVC+Gg0vr1q21Z8+eUtu/+eYbBQQElKuIgoICLVu2TOfPn1eXLl10+PBh2Ww2RUREOPp4e3srPDxcmzdvLtcxAACA+RlexyUmJkZvvfWW+vTpo3bt2kn6vwXnZs+erZUrV+r111936eC7d+9WZGSk8vLy1LBhQy1cuFAhISGOcGK1Wp36W61WnThxosx9pqenu1SDMXWUn5/nhv1WX4yXa9wzb6svxssVfH+5ivFyjTv+PQYGBpbaZji4PPvss/r222/Vt29fBQQEyGKxaNy4cTp9+rRsNpuioqI0fPhwlwvbsGGDzp49q5SUFMXGxmrlypWO9kvvpbHb7ZddnbesD1teR45kqF69+hW+3+oqPz+P8XKRO+ZtdZWens54uYDvL9fw/eW6yv73aDi41KlTR4sXL9aSJUv08ccfy2Kx6OLFi7r55ps1YMAADRw40OUl/+vWravrrrtOktSxY0d99913eueddzRmzBhJUmZmpuMnBiTp1KlTxc7C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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "unit = 'inch'\n", "\n", "fig, ax = plt.subplots(figsize=(8,5))\n", "\n", "ax.hist(red['Winnings: Red'], bins=np.arange(-1.5, 1.6, 1), \n", " density=True, color='darkblue', alpha=0.8, ec='white', zorder=5)\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Winnings : Red'\n", "\n", "ax.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.title('');\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now suppose you bet many times on red. Your net winnings will be the sum of many draws made at random with replacement from the distribution above.\n", "\n", "It will take a bit of math to list all the possible values of your net winnings along with all of their chances. We won't do that; instead, we will approximate the probability distribution by simulation, as we have done all along in this course. \n", "\n", "The code below simulates your net gain if you bet \\$1 on red on 400 different spins of the roulette wheel. " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "num_bets = 400\n", "repetitions = 10000\n", "\n", "net_gain_red = np.array([])\n", "\n", "for i in np.arange(repetitions):\n", " spins = red.sample(num_bets, replace=True)\n", " new_net_gain_red = spins['Winnings: Red'].sum()\n", " net_gain_red = np.append(net_gain_red, new_net_gain_red)\n", "\n", "\n", "results = pd.DataFrame(\n", " {'Net Gain on Red':net_gain_red}\n", " )" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjwAAAFZCAYAAACc3vXuAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA43UlEQVR4nO3de1hVZd7/8c8WUVI0FAlPmI6iomkqJaR5yBpMe9Sy8FTpGJ7TzDQP9TPzUOSINkrIU8Olaco8UlqRNpqWpalomqemsRjPImCCeEAFhP37o8s9bYHNBvZmw+L9ui7+2Ote617ffV+KH9e6171MGRkZZgEAABhYFVcXAAAA4GwEHgAAYHgEHgAAYHgEHgAAYHgEHgAAYHgEHgAAYHgEHgAAYHgEHgAAYHgEHidKTEx0dQnlGuNjG+NTNMbINsbHNsbHNqOND4EHAAAYHoEHAAAYHoEHAAAYHoEHAAAYHoEHAAAYHoEHAAAYHoEHAAAYHoEHAAAYHoEHAAAYHoEHAAAYHoEHAAAYXlVXFwAAJZWVVVP796c5tM9GjWqqQQMPh/YJwPUIPAAqrAsXsjVv3l6H9hkR0Z3AAxgQt7QAAIDhEXgAAIDhEXgAAIDhEXgAAIDhEXgAAIDhEXgAAIDhEXgAAIDhEXgAAIDhEXgAAIDhGS7wLFmyRI888oj8/PzUvHlzDR48WD///LOrywIAAC5kuMDz/fffKywsTFu2bFF8fLyqVq2qJ598UpcuXXJ1aQAAwEUM9y6tDRs2WH1+//331aRJEyUkJKhPnz4uqgoAALiS4a7w3OnatWvKy8uTl5eXq0sBAAAuYsrIyDC7ughn+stf/qLjx4/r22+/lZubW6H7JSYmlmFVABzh7Fl3vf76Hof2+dZbD8nPL8ehfQJwPn9/f5vthrul9UevvfaaEhIStHnzZpthRyp6oEoiMTHRKf0aBeNjG+NTtLNnT6l6dQ+H9lm7di35+3s7tE9X4c+QbYyPbUYbH8MGnlmzZmnDhg364osv1LRpU1eXAwAAXMiQgWfGjBnasGGDNm7cqJYtW7q6HAAA4GKGCzzTpk3TunXrtGbNGnl5eSk1NVWSVLNmTXl6erq4OgAA4AqGe0orJiZGV69e1YABA9SqVSvLT2RkpKtLAwAALmK4KzwZGRmuLgEAAJQzhrvCAwAAcCcCDwAAMDwCDwAAMDzDzeEBUP4kJ99UUlKmw/vNy+NXGAD78NsCgNMlJWVq2rQdDu932rRODu8TgDFxSwsAABgegQcAABgegQcAABgegQcAABgegQcAABgegQcAABgegQcAABgegQcAABgegQcAABgegQcAABgegQcAABge79ICYOGsl3zeuJHr8D4BoDgIPAAsnPWSz1mzghzeJwAUB7e0AACA4RF4AACA4RF4AACA4RF4AACA4bk08OzatUtDhgxRQECAvLy8tHbtWpv7h4eHy8vLq8Cf3377TZK0c+fOAtt//fXXsvhKAACgHHLpU1qZmZlq06aNhg4dqnHjxhW5/6RJk/TCCy9YbXvhhRdkMpnk4+NjtT0hIUF16tSxfK5Xr55jigYAABWOSwNPSEiIQkJCJEkTJkwocn9PT095enpaPp87d0579uzR+++/n29fHx8feXt7O65YAABQYVXoOTwfffSR7r77bvXv3z9fW8+ePdWqVSv1799fO3Y4fl0RAABQcVTYhQfz8vK0du1aDRkyRNWrV7dsr1+/vpYsWaJOnTopOztb69at04ABA7Rx40Z17dq10P4SExOdUqez+jUKxse2sh6fK1fclZV10+H95uTkOKVfSQ7v98qVq0pMTHdon67E3zHbGB/bKtL4+Pv722yvsIFn69atOnfunIYPH2613d/f3+pLd+7cWWfOnFFkZKTNwFPUQJVEYmKiU/o1CsbHNleMz+XLaape3cPh/bq7uzulX0kO77d27Vry9zfG7XD+jtnG+NhmtPGpsLe0PvzwQwUFBSkgIKDIfQMDA3XixIkyqAoAAJRHFTLwJCcn66uvvsp3dacwR48ela+vr5OrAgAA5ZVLb2ldu3bNcuUlLy9P586d05EjR1SnTh35+flp7ty5OnDggOLj462OW7NmjWrWrKmnnnoqX5/Lly9XkyZNFBAQoOzsbMXFxWnTpk1avXp1mXwnAABQ/rg08Bw8eFD9+vWzfA4PD1d4eLiGDh2q6OhopaSk6OTJk1bHmM1mffTRRwoNDVWNGjXy9ZmTk6PZs2crOTlZHh4eCggIUFxcnOXxdwAAUPm4NPB069ZNGRkZhbZHR0fn22YymXTkyJFCj5k8ebImT57siPIAAIBBVMg5PAAAAMVRYR9LBwBnMJmqaP/+NIf326hRTTVo4JxH8wEUjcADAH9w8eINhYfvdXi/ERHdCTyA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esiyLTc3V7t379aKFSuUkJAgyTjjQ+Cxg7e3t7y9vYvc7/r165KU738Pbm5uysvLkyR17txZ165d0759+yxzDPbt26fMzMwKvTCivWN07733qkGDBkpMTLTafvz4cbVp00aSMcfI3vGZPXu2Jk2aZLWtS5cumj9/vp544glJlXt8pN/n7ISGhspsNuuTTz6Rp6enVbsRx8def1x49cknn7Rs3759u/r37++6wlxoxowZ2rBhgzZu3KiWLVtatd17773y9fXV9u3b1alTJ0nSzZs3tWfPnnxXDY3oiSeeUMeOHa22vfjii2revLleeeUVtWjRwlDjQ+BxoJYtW+pPf/qTpk6dqgULFqhu3brauHGjtm/frtjYWEm/X9l47LHHNGXKFC1dulRms1lTpkxR7969Df/0iPT7pdFJkybpnXfe0X333af27dvr008/1Q8//KC//vWvkir3GDVs2FANGzbMt71x48aW/5lW5vG5evWqBg4cqKtXr2rt2rW6fv265T8aderUUbVq1Sr1+EgsvPpH06ZN07p167RmzRp5eXlZ5qTUrFlTnp6eMplMGj9+vBYvXix/f3+1aNFCERERqlmzpp555hkXV+98Xl5elgnct9WoUUN16tSx/AfUSOND4HEgd3d3ffzxx3rzzTc1ZMgQZWZmqlmzZoqKilKfPn0s+/3973/XjBkzNHDgQElSnz59LP/YVwYTJkxQTk6O/t//+39KT09X69at9cknn1huA0qMUVEq6/gcOnRIP/zwgyQpMDDQqu2Pc3wq6/hIvy+8mp6erkWLFik1NVUBAQFltvBqeRMTEyNJliUdbpsxY4ZmzZolSZo8ebJu3LihV199VRkZGQoMDNSGDRtUq1atMq+3PDLS+LAODwAAMDweSwcAAIZH4AEAAIZH4AEAAIZH4AEAAIZH4AEAAIZH4AEAAIZH4AFQLKdPn5aXl5fWrl1riPMY0fjx463WtQJA4AEqlfj4eHl5eemTTz7J19avXz+bbffee6/MZpbtKql27dpZVrb18vJSw4YN1atXL/3jH/9wdWlApcBKy0AlcvslgXv27LFaGv7WrVs6cOCAqlatWmhbt27dZDKZ1KRJE6WkpMjd3d2ptZbVecpS27Zt9dJLL0mSUlNTtXr1ao0fP15ZWVn6y1/+4triAIMj8ACViI+Pj5o3b649e/ZYbT98+LCuX7+uQYMGFdoWHBws6ff3of3x7eTOUlbnKUv169fX4MGDLZ+HDh2qjh07Kjo6msADOBm3tIBK5qGHHtKxY8eUkZFh2ZaQkKAGDRpo8ODBBbbdPk4qeG5NeHi4vLy8dPz4cU2ZMkXNmjVTo0aNNGLECKWnp1udv127dnr66ad14MABPf7446pfv77atm2r5cuXW+1X2vOYzWZFRESobdu2atCggUJCQrRv3z498cQTljfP3xYTE6MuXbqoYcOGatq0qXr06KEVK1YUOZYpKSn69ddflZOTU+S+BfHx8ZG/v79OnjyZr/YPPvhAXbp0ka+vr5o1a6bRo0crKSkpXx9r1qxRYGCgfH191bVrV/3zn/8sUS2A0RF4gEomODhYeXl52rdvn2VbQkKCgoKC9OCDD0pSvjYPDw917NixyL7DwsJ0/vx5vf766xo+fLg2btyo6dOn59vv9OnTGjJkiIKCgvTWW2+padOmeu211/TNN9/Y9R3sOc/8+fO1YMECtW7dWvPmzVOnTp00aNAgnT9/3mq/1atXa9q0aWrRooXeeustvfbaawoMDLQEPVvmzp2rzp075+vTXrdu3dL58+dVp04dq+2vvPKKZs2apQ4dOig8PFxjxozRtm3b1KdPH6swGhsbq4kTJ+ruu+/Wm2++qd69e2vs2LE6fPhwieoBjIxbWkAlc/tKTUJCgkJCQiRJe/fu1ZQpU1S7dm21bt06X1vHjh1VvXr1Ivtu2bKlPvjgA8tns9msv//971q8eLHuvvtuy/b//Oc/+uyzz9SzZ09J0nPPPaf77rtPq1atUq9evUp9nt9++02RkZEKCQnRunXrZDKZJElt2rTRSy+9pIYNG1qO3bJliwICArR69eoiz1taOTk5SktLk/T7HJ6lS5cqNTVV48aNs+yzd+9erVy5UlFRUXr22Wct2/v166eePXvqgw8+0PTp03Xr1i29+eabat26tb788kvL7b+HH35YAwcOlJ+fn9O/D1CRcIUHqGSaN28uX19fy1yd48eP68KFC5Y5OsHBwfnaunTpYlffYWFhVp+7du2q3NxcnTt3Ll8Nt8OOJFWvXl0PPPCATp065ZDzfPvtt8rJydGoUaMsYUeShg0bZhW8JKlWrVpKSkrSgQMH7Dr3H0VHRysjI0P33nuvXfvv2LFDzZs3V/PmzdWlSxfFxcVp5MiRmjt3rmWfTz/9VJ6engoJCVFaWprlp0GDBmrevLl27NghSfrxxx914cIFjRw50mquU69evdS6detifxfA6LjCA1RCQUFB+uqrr5Sdna2EhATVqFHDsm5LUFCQYmNjLW2SLGGoKHdeVfDy8pIkXbp0yeZ+t/f917/+5ZDznD17VtLvweqPqlatmi+cvPzyy9qxY4ceffRRNW3aVI888oiefPJJ9ejRw65aiqNjx46aM2eOcnNz9fPPPysiIkIXLlxQ1ar//VV8/PhxXbt2Tf7+/gX2cTvA3f6OBe3XokULbmsBdyDwAJVQcHCw4uPjdfDgQSUkJCgwMNDyj25QUJBu3rxpaatSpYo6d+5sV79ubm4Fbr9z/R579yvteezZp3Xr1vrhhx+0bds2ff3119qyZYtWrlypkSNH6t1337WrHnvVrVvXcmXr0UcfVevWrRUaGqr//d//1YsvvihJysvLU926dQudNF2jRg2r7/HHK1i3sV4SkB+3tIBK6PYtqoSEBCUkJFhdwWnatKnq169vaWvbtm2+20Dl3e0rQMePH7fafuvWLZ05cybf/jVr1tSAAQO0bNkyHTlyRKGhoVq5cmWJJyPb689//rN69OihiIgIXbt2TZLUrFkzZWRkKDAwUD179sz3czt8NmnSRJL066+/5uv3zu8NgMADVErt2rWTp6enNm3apMTExHy3rIKCggptqwh69uypqlWrKiYmxupqR2xsrC5fvmy1752Ps1etWlVt27aVJKsnogpS2sfSJWny5Mm6dOmSVq5cKUkaOHCg8vLy9M477+Tb12w2WyY9d+zYUT4+Pvrwww918+ZNyz7ffPONjh07VuJ6AKPilhZQCbm5uemBBx7Qt99+qypVquiBBx6wag8KCtJrr70mSXZPWC5PfHx8NHHiRP3tb3/TM888o8cff1wnTpzQ//3f/6lZs2ZWt4Geeuop+fj4KDg4WPfcc49OnjypDz74QG3atCly8u/cuXP1j3/8Q4cPH7Z74vKdevXqpbZt2yoqKkpjxoxRly5dNHbsWEVFRemnn37SY489pho1auj06dPauHGjnn/+eU2ZMkXu7u564403NGnSJPXt21ehoaG6ePGi/v73vysgIMByxQjA77jCA1RStx9PDwgIyHfL6o9XdSriFR5JeuONN/Taa6/p3//+t2bPnq0DBw4oLi5Od999t9VTTSNHjtSNGzcUHR2tadOmaf369Xr22Wf1+eefq0qVsvkVOXHiRKWkpCg2NlaStHDhQkVHRyszM1Ph4eGaM2eONm/erEcffVT/8z//Yznu+eef17Jly5SRkaE5c+bon//8p95//3116NChTOoGKhJTRkYGs9sAVAq5ublq0aKF+vXrp2XLlrm6HABliCs8AAzpxo0b+batXbtWly5dUvfu3V1QEQBXYg4PAEPasGGDVq1apd69e6tOnTo6ePCg1q5dq/vuu0/9+/d3dXkAyhiBB4AhtW3bVjVq1NDy5ct1+fJl1atXT8OHD9fs2bNVrVo1V5cHoIwxhwcAABgec3gAAIDhEXgAAIDhEXgAAIDhEXgAAIDhEXgAAIDhEXgAAIDh/X8kpxR6eAGsiQAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "unit = 'inch'\n", "\n", "fig, ax = plt.subplots(figsize=(8,5))\n", "\n", "ax.hist(results, bins=np.arange(-80, 50, 6), \n", " density=True, color='darkblue', alpha=0.8, ec='white', zorder=5)\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Winnings : Red'\n", "\n", "ax.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.title('');\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That's a roughly bell shaped histogram, even though the distribution we are drawing from is nowhere near bell shaped.\n", "\n", "**Center.** The distribution is centered near -20 dollars, roughly. To see why, note that your winnings will be \\$1 on about 18/38 of the bets, and -$1 on the remaining 20/38. So your average winnings per dollar bet will be roughly -5.26 cents:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-0.05263157894736842" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "average_per_bet = 1*(18/38) + (-1)*(20/38)\n", "average_per_bet" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So in 400 bets you expect that your net gain will be about -\\$21:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-21.052631578947366" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "400 * average_per_bet" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For confirmation, we can compute the mean of the 10,000 simulated net gains:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "-20.9324" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(results.iloc[:,0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Spread.** Run your eye along the curve starting at the center and notice that the point of inflection is near 0. On a bell shaped curve, the SD is the distance from the center to a point of inflection. The center is roughly -\\$20, which means that the SD of the distribution is around \\$20.\n", "\n", "In the next section we will see where the \\$20 comes from. For now, let's confirm our observation by simply calculating the SD of the 10,000 simulated net gains:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "20.00472519781272" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.std(results.iloc[:,0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Summary.** The net gain in 400 bets is the sum of the 400 amounts won on each individual bet. The probability distribution of that sum is approximately normal, with an average and a SD that we can approximate." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Average Flight Delay ###\n", "The table `united` contains data on departure delays of 13,825 United Airlines domestic flights out of San Francisco airport in the summer of 2015. As we have seen before, the distribution of delays has a long right-hand tail." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "united = pd.read_csv(path_data + 'united_summer2015.csv')" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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qtGjRzdJYQAAALYy/LDNI0eOOLIOAAAAuzEccK64ePGiTp8+rQsXLshqtdZYf/PNN9ulMAAAAFsZDjgXLlzQ3Llz9c4776iioqLGeqvVKovFovz8fLsWCAAA0FCGA86jjz6q7du3a8aMGbr55pvl5+fnwLIAAABsZzjgvP/++5o5c6b+/Oc/O7IeAACARjN8oz8vLy+FhoY6shYAAAC7MBxwxo4dq/fee8+RtQAAANiF4YDz8MMPKycnR/fff78+++wz5eTk6KeffqrxAwAA4GyG5+BERUXJYrHo8OHDSk1NrXU7vkUFAACczXDAeeKJJ+p82CYAAICrMBxw5s+f78g6AAAA7MbwHJx/VVFRofz8fF2+fNne9QAAADRagwLOF198oXHjxik4OFhhYWE6cOCAJCkvL08TJ07U3r17HVIkAABAQxgOOJ9++qlGjx6t48ePa9KkSdWeQxUQEKDi4mK99dZbDdr5gQMHNGnSJPXo0UN+fn7asGFDndufOHFCfn5+NX7ef//9Bu0XAACYm+E5OIsXL1ZoaKg++OADlZSUaP369dXWDx06VJs2bWrQzktKShQREaG4uDjdf//9hselp6erZ8+eVa/9/f0btF8AAGBuhgPOF198oaefflre3t76+eefa6zv0KGDcnNzG7TzmJgYxcTESJIeeOABw+PatWunoKCgBu0LAAA0H4YvUbVo0UItWtS+eW5urlq3bm2XouozZcoUhYWFadSoUdq6dWuT7BMAALgPw2dw+vbtq507d2rmzJk11pWXl2vz5s0aOHCgXYv7LV9fXy1evFiDBw9Wy5YttWPHDk2dOlXr1q1TbGxsreOysrIcWldDFBV5qqys1Obxto4tKrqorKzmcxNGV/qduyp6ZAx9qh89MoY+1a+2HoWHhzf4vQwHnMcee0zjx4/XQw89pAkTJkiScnJy9P777ysxMVHHjx9XUlJSgwtoiICAAD388MNVr/v166f8/HytWrWqzoBjS2McpbAwT61aeds83taxbdu2UXh4gM37dSdZWVku9Tt3RfTIGPpUP3pkDH2qn717ZDjg3HrrrXrllVf0+OOPa+PGjZKkWbNmyWq16tprr1VycrIGDBhgt8KMioqKqvfbVwAAoHkxHHAkafz48Ro9erT27NmjH374QZWVlerSpYuGDx8uX19fR9VYp6NHjzLhGAAAVNOggCNJ11xzje644w677Ly4uFjHjh2TJFVWVur06dM6cuSI/P39FRISokWLFungwYPKyMiQJG3cuFGenp7q3bu3WrRooZ07dyo5OVkLFy60Sz0AAMAcDH+LaseOHXr88cdrXf/4449r586dDdr5oUOHFB0drejoaF26dEkJCQmKjo7WkiVLJP06x+f48ePVxiQmJurWW2/VsGHDlJ6erjVr1ujBBx9s0H4BAIC5GT6D89JLL6lr1661ri8tLdWqVat02223Gd750KFDVVBQUOv6devWVXsdHx+v+Ph4w+8PAACaJ8NncL755hv17du31vV9+vTRt99+a4+aAAAAGsVwwLl8+bIuXbpU6/pLly6prKzMLkUBAAA0huGAExERoYyMDFVWVtZYV1lZqYyMDHXv3t2uxQEAANjCcMC5//77dfDgQcXFxenw4cMqKytTWVmZDh8+rPj4eB08ePCqdzkGAABoaoYnGd999906fvy4EhIS9N5770mSLBaLrFarLBaL5s6dW+fdhAEAAJpKg+6DM2fOHI0fP17btm1Tdna2rFarunTpojFjxqhz584OKhEAAKBhDAWcS5cuaeLEiYqNjdV//Md/VHseFAAAgKsxNAendevW+vLLL1VRUeHoegAAABrN8CTj3/3ud/roo48cWQsAAIBdGA44y5Yt0xdffKFnnnlG2dnZV/26OAAAgCswPMl4wIABslqtSkpKUlJSklq0aCFPT89q21gsFv344492LxIAAKAhDAecP/7xj7JYLI6sBQAAwC4MB5zfPvgSAADAVRmegwMAAOAuGhRwTp48qUceeUR9+/ZVSEiI9u/fL0nKy8vT7NmzdfjwYUfUCAAA0CCGL1F99913uu2221RZWan+/fvr5MmTVffFCQgI0GeffaaysjKtWbPGYcUCAAAYYTjgLFiwQG3atNH7778vDw8PhYWFVVsfExOjv/3tb/auDwAAoMEMX6L66KOPNH36dF1//fVX/TZVSEiIzp49a9fiAAAAbGE44Fy+fFk+Pj61rr9w4YI8PDzsUhQAAEBjGA44ERER2rdv31XXWa1Wbdu2TX379rVXXQAAADYzHHBmzZqlrVu36oUXXlB+fr4kqbKyUv/85z9177336tChQzxlHAAAuATDk4zvvvtunTp1Sn/+85+1dOnSqmWS5OHhoeeff14jR450TJUAAAANYDjg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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "unit = 'inch'\n", "\n", "fig, ax = plt.subplots(figsize=(8,5))\n", "\n", "ax.hist(united['Delay'], bins=np.arange(-20, 300, 10), \n", " density=True, color='darkblue', alpha=0.8, ec='white', zorder=5)\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Delay'\n", "\n", "ax.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.title('');\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mean delay was about 16.6 minutes and the SD was about 39.5 minutes. Notice how large the SD is, compared to the mean. Those large deviations on the right have an effect, even though they are a very small proportion of the data." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(16.658155515370705, 39.48019985160957)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_delay = np.mean(united['Delay'])\n", "sd_delay = np.std(united['Delay'])\n", "\n", "mean_delay, sd_delay" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now suppose we sampled 400 delays at random with replacement. You could sample without replacement if you like, but the results would be very similar to with-replacement sampling. If you sample a few hundred out of 13,825 without replacement, you hardly change the population each time you pull out a value.\n", "\n", "In the sample, what could the average delay be? We expect it to be around 16 or 17, because that's the population average; but it is likely to be somewhat off. Let's see what we get by sampling. We'll work with the table `delay` that only contains the column of delays." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Delay
0257
128
2-3
30
464
......
13820-4
138218
138223
13823-1
13824-2
\n", "

13825 rows × 1 columns

\n", "
" ], "text/plain": [ " Delay\n", "0 257\n", "1 28\n", "2 -3\n", "3 0\n", "4 64\n", "... ...\n", "13820 -4\n", "13821 8\n", "13822 3\n", "13823 -1\n", "13824 -2\n", "\n", "[13825 rows x 1 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "delay = united[['Delay']]\n", "delay" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "17.2125" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(delay['Delay'].sample(400, replace=True))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The sample average varies according to how the sample comes out, so we will simulate the sampling process repeatedly and draw an empirical histogram of the sample average. That will be an approximation to the probability histogram of the sample average." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "sample_size = 400\n", "repetitions = 10000\n", "\n", "means = np.array([])\n", "\n", "for i in np.arange(repetitions):\n", " sample = delay.sample(sample_size, replace=True)\n", " new_mean = np.mean(sample['Delay'])\n", " means = np.append(means, new_mean)\n", "\n", "results = pd.DataFrame(\n", " {'Sample Mean': means})" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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1mOFAgAAOMvhBw/ecccdWrJkiZ577jmtXLlSkjR58mTZbDZdfvnlWrp0qW699VaPFQoAAOAshwOPJA0dOlT9+/fX1q1b9euvv6qsrExt27bVXXfdpaZNm3qqRgAAAJfUKvBI0mWXXaYBAwZ4ohYAAACPcDjwbNy4UVu3btX8+fMrXf7cc8/prrvu0r333uu24gAA1TOZGmjXrhynx7duHayIiCA3VgT4JocDz6JFi3TttddWubywsFALFy4k8ABAHTp1qkAWy06nxycm9ibwoF5w+C6t/fv36+abb65y+U033aSffvrJHTUBAAC4lcOBp7S0VAUFBVUuLygoUFFRkVuKuqhjx44KCQmp8DV8+PBK1z9y5Eil63/++edurQsAAPgXh09pxcbGKjU1VVOnTq3wxOWysjKlpqaqffv2bi1u69atunDhgn36xIkT6tOnj4YMGVLtuLVr1+qGG26wT7do0cKtdQEAAP/i8BGexx57TN9++63i4uK0e/duFRUVqaioSLt379aoUaP07bffatKkSW4t7oorrlB4eLj9a/PmzWrWrFmNgadly5blxjVq1MitdQEAAP/i8BGeBx98UIcOHZLFYtHmzZslSSaTSTabTSaTSdOnT9eIESM8VqjNZtP777+vESNG6LLLLqt23YcffliFhYWKjo7WlClTNHjwYI/VBQAAfF+tnsMTHx+voUOH6pNPPtHhw4dls9nUtm1bDRw4UNdcc42HSvzT1q1bdeTIET388MNVrtO0aVPNmTNH3bt3V8OGDbVx40aNHTtWixcvrjGMWa1Wd5fs0e36uvratxSooqJCp0eXlJR4bbyrny2J3p3kzdrPnTsvq/W00+Ol+vz7Xn9798W+zWZztcsdCjwFBQUaPny4RowYoYceekhPPPGEW4qrjffee0+dOnXSjTfeWOU6oaGh5Wq75ZZbdPr0aS1cuLDGwFPTN8oZVqvVI9v1dfW1b0k6duywGjd2/hbfwMBAr4139bMl0buTvFl78+bNZDaHOj2+Pv++19fe/bVvh67hadKkifbs2VPuAuK69Pvvv2vjxo0aM2ZMrcd27txZBw8e9EBVAADAXzh80fLtt9+ub775xpO1VGnlypVq3LixHnjggVqP3bdvn8LDwz1QFQAA8BcOB5558+bpu+++00svvaTDhw+rrKzMk3XZ2Ww2LVu2TA888ICa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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "unit = 'inch'\n", "\n", "fig, ax = plt.subplots(figsize=(8,5))\n", "\n", "ax.hist(results, bins=np.arange(10, 25, 0.5), \n", " density=True, color='darkblue', alpha=0.8, ec='white', zorder=5)\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Delay'\n", "\n", "ax.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.title('');\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once again, we see a rough bell shape, even though we are drawing from a very skewed distribution. The bell is centered somewhere between 16 ad 17, as we expect." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Central Limit Theorem (*pretty important!*)) ###\n", "\n", "The reason why the bell shape appears in such settings is a remarkable result of probability theory called the **Central Limit Theorem**. \n", "\n", "**The Central Limit Theorem says that the probability distribution of the sum or average of a large random sample drawn with replacement will be roughly normal, *regardless of the distribution of the population from which the sample is drawn*.**\n", "\n", "As we noted when we were studying Chebychev's bounds, results that can be applied to random samples *regardless of the distribution of the population* are very powerful, because in data science we rarely know the distribution of the population.\n", "\n", "The Central Limit Theorem makes it possible to make inferences with very little knowledge about the population, provided we have a large random sample. That is why it is central to the field of statistical inference." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Proportion of Purple Flowers ###\n", "Recall Mendel's probability model for the colors of the flowers of a species of pea plant. The model says that the flower colors of the plants are like draws made at random with replacement from {Purple, Purple, Purple, White}.\n", "\n", "In a large sample of plants, about what proportion will have purple flowers? We would expect the answer to be about 0.75, the proportion purple in the model. And, because proportions are means, the Central Limit Theorem says that the distribution of the sample proportion of purple plants is roughly normal.\n", "\n", "We can confirm this by simulation. Let's simulate the proportion of purple-flowered plants in a sample of 200 plants." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Color
0Purple
1Purple
2Purple
3White
\n", "
" ], "text/plain": [ " Color\n", "0 Purple\n", "1 Purple\n", "2 Purple\n", "3 White" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "colors = np.array(['Purple', 'Purple', 'Purple', 'White'])\n", "\n", "model = pd.DataFrame({'Color':colors})\n", "\n", "model" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "props = np.array([])\n", "\n", "num_plants = 200\n", "repetitions = 10000\n", "\n", "for i in np.arange(repetitions):\n", " sample = model.sample(num_plants, replace=True)\n", " new_prop = np.count_nonzero(sample[sample['Color'] == 'Purple'])/num_plants\n", " props = np.append(props, new_prop)\n", " \n", "results = pd.DataFrame({'Sample Proportion: 200':props})" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkAAAAFzCAYAAADWnLaoAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA6ZUlEQVR4nO3dfVhUdf7/8dc4oRjeEQ2k4l1CeLMmxaZk5XpTmrpGtipqay55t5ptWpqSqbtuKypYWcuiqbne5YZK623tZqKZKWZJmhVR3qSksGDgTYAI8/vDr/PbSdHBncMMnOfjurqu5pwPH99vj2Ovzvmccyz5+fl2AQAAmEgNTxcAAABQ2QhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAlSgzM9PTJVQq+q3e6Ld6o9/qzWz9Xg0BCAAAmA4BCAAAmA4BCAAAmA4BCAAAmA4BCAAAmA4BCAAAmA4BCAAAmA4BCAAAmA4BCAAAmA4BCAAAmA4BCAAAmM5Nni4AANzh5MkiZWWdN2x+X18/w+YGUPkIQACqhays85o48UPD5p8+/S7D5gZQ+bgEBgAATIcABAAATIcABAAATIc1QADgAl9fX+3bl2fY/I0b+6lhQ1/D5gfgjAAEAC44fbpYCQm7DZs/IaEzAQioRFwCAwAApkMAAgAApkMAAgAApkMAAgAApuPRALRr1y4NGjRIrVu3VoMGDbRq1SrHvpKSEs2YMUOdOnVSo0aNFBYWphEjRuj48eNOcxQXF2vSpEm6/fbb1ahRIw0aNEhZWVlOY/Lz8zVq1Cg1bdpUTZs21ahRo5Sfn18ZLQIAAC/k0QB0/vx5tWnTRrNnz1bt2rWd9v3000/6/PPPNXHiRO3YsUNvvfWWsrKy1L9/f128eNExLjY2Vhs3btSSJUu0ZcsWnT17VtHR0SotLXWMGTFihA4cOKA1a9Zo7dq1OnDggEaPHl1pfQIAAO/i0dvge/TooR49ekiSxo4d67Svfv36+uc//+m07ZVXXlFkZKQyMjLUtm1bFRQUaMWKFUpMTFTXrl0lSQsXLlS7du20fft2de/eXRkZGdq6davee+89dezY0TFPr169lJmZqdDQUOMbBQAAXqVKPQfo7NmzkqQGDRpIktLT01VSUqJu3bo5xgQHByssLExpaWnq3r279u7dqzp16jjCjyRFRkbKz89PaWlpBCCgkhj9tvbCwtLrDwKA/1NlAtCFCxf04osv6uGHH1bjxo0lSTk5ObJarQoICHAaa7PZlJOT4xgTEBAgi8Xi2G+xWHTrrbc6xlxNZmamAV0YN6+3ot/qrSL9Hj/uo6lTjXuQ4NSpnVRcXGTY/JIMnf/MmbPKzDxt2Pw3gj/P1Vt17/d6JziqRAC6ePGiRo0apYKCAq1evfq64+12+xWB53pjfs6IM0Nmu+RGv9VbRfstKMhTrVrGPenYx8fH0PklGTp/vXp1FRoacP2BlYQ/z9Wb2fq9Gq+/Df7ixYsaPny4Dh06pPXr1+uWW25x7AsMDFRpaany8pzfz5ObmyubzeYYk5ubK7vd7thvt9uVl5fnGAMAAMzFqwNQSUmJYmJidOjQIW3cuFFBQUFO+8PDw+Xj46PU1FTHtqysLGVkZDjW/HTo0EHnzp3T3r17HWP27t2r8+fPO60LAgAA5uHRS2Dnzp3T4cOHJUllZWU6ceKEDhw4IH9/fzVs2FDDhg3T/v37tXr1alksFmVnZ0uS6tWrp9q1a6t+/foaOnSopk+fLpvNJn9/f02dOlVt27ZVly5dJElhYWF68MEHNWHCBM2fP192u10TJkxQz549TX/6D4D3sFhq8LZ5oBJ5NADt379fffv2dXyOi4tTXFycBg8erClTpmjLli2S5AgzlyUmJurxxx+XJM2aNUtWq1UxMTEqKipS586dtWDBAlmtVsf4RYsWafLkyXrsscckSb169dLcuXMN7g4AXJebW6i4uDTD5udt84AzjwagBx544JpPZHblac2+vr6Kj49XfHx8uWP8/f31xhtv3ECFAACgOvLqNUAAAABGIAABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADTIQABAADT8WgA2rVrlwYNGqTWrVurQYMGWrVqldN+u92uuLg4tWrVSrfddpv69Omjr776ymlMcXGxJk2apNtvv12NGjXSoEGDlJWV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VB988IGHq3Sf8+fP66OPPtJDDz2kTp066Y033lB+fr6nyzLM0qVL9eSTTyosLEyLFi3Spk2btHHjRi1atEitWrXS8OHDtWzZMk+X6Tbvvvuu+vTpo48//ljJycnq1KmT/vWvfzn2X7hwQbt27fJghe7F95fvb3X5/prtu1tRrAEywH8/fCoqKkqhoaFKSEhw7P/Tn/6ktLQ0bdmyxYNVus/lp41+9913WrZsmTZs2KCysjI98sgjGjZsmDp16uTpEt3qrrvu0oQJE/TEE09cdf/y5cv18ssvKz09vXILM8iDDz6ohx56SJMnT5YkLVq0SH/84x+1YMEC9e3bVzk5OWrVqpVOnz7t4Urdg+8v39/q8v0123e3ojgDZLCMjAwNGjTIaVt0dLS+/vprD1XkfpcvF0RGRiopKUlfffWVZs6cqS+//FJ9+vTRPffco9dff93DVbrPyZMnde+995a7PzIyUqdOnarEioyVkZGh6Ohox+eRI0fqb3/7m0aPHq3169d7sDLj8f3l+1uVmfm76woCkEHy8/P1448/qlatWvLx8XHaV7NmTRUVFXmoMve7/KCty+rVq6eRI0dq586d2rp1qyIjIzV37lwPVed+rVq1uuZzQpYuXapWrVpVYkXGqlWrln788UenbVFRUUpKStKYMWP0zjvveKgy4/D95ftbHZjxu1sR3AVmkI4dO0q69H9X+/fvV/v27R37vvrqKzVs2NBTpbndfy8Y/bmIiAhFREQoLi6uEisy1ksvvaTo6Ght3br1igep7dixQz/88IOSk5M9Xabb3Hnnnfrwww+veEN2VFSUysrKNGrUKA9VZhy+v5fw/a3azPjdrQgCkAE2btzo9Pm2225z+vz9999r2LBhlVmSoQYPHixfX99rjvn5I9irsvvvv18ff/yx3nzzTX3yySdKTU2VdOlBar1791ZMTIyaNWvm4SrdJyYmptyFkv369VNZWZmWLl1ayVUZh+/vlfj+Vk1m++5WFIugAQCA6bAGqJJ89tlnWr9+vfbv3+/pUipFde43Ly/P0yVUKvqt3szW72U/XxuTlpam3bt3q7Cw0EMVGcdMvVYEAcgAM2fO1NatWyVJubm5euihh9S9e3eNGDFC3bp1U8+ePR3PGakOzNZvaGiooqKilJKSopKSEk+XYzj6rd7M1u93332niIgItWzZUg899JDy8vL0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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "unit = 'inch'\n", "\n", "fig, ax = plt.subplots(figsize=(8,5))\n", "\n", "ax.hist(results, bins=np.arange(0.65, 0.85, 0.01), \n", " density=True, color='darkblue', alpha=0.8, ec='white', zorder=5)\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Delay'\n", "\n", "ax.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.xticks(rotation=90)\n", "\n", "plt.title('');\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There's that normal curve again, as predicted by the Central Limit Theorem, centered at around 0.75 just as you would expect.\n", "\n", "How would this distribution change if we increased the sample size? Let's run the code again with a sample size of 800, and collect the results of simulations in the same table in which we collected simulations based on a sample size of 200. We will keep the number of `repetitions` the same as before so that the two columns have the same length." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "props2 = np.array([])\n", "\n", "num_plants = 800\n", "\n", "for i in np.arange(repetitions):\n", " sample = model.sample(num_plants, replace=True)\n", " new_prop = np.count_nonzero(sample[sample['Color'] == 'Purple'])/num_plants\n", " props2 = np.append(props2, new_prop)\n", " \n", "results1 = pd.DataFrame({'Sample Proportion: 800':props2})" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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a5defPFF3XfffapTp47+9re/KTY21u72GCtXrlRERISCgoLUqFEj9e/fXydPnrSN79ixQz4+Pvr000913333qWbNmuratatSUlL0xRdfqG3btgoMDFR0dLRdkxQTE6Po6GjNnDlTwcHBCgwM1NChQ5WdnV1kzlarVXPnzlVYWJhq1qypNm3aOHTKlbu7u/z9/VWrVi116dJFgwcP1tatW5Wdna0VK1YoMDBQmzdv1j333COLxaKkpCRlZWVpyJAhqlu3rmrWrKnIyEgdPHjQNue1523cuFEtWrSQv7+/HnzwQR09etTutZcuXarmzZvLYrGoefPmWrZsmd24j4+PFi1apMcff1y1atXSwIED1aNHD0lSw4YN5ePjo5iYGLvv2TW5ubkaN26cgoOD5e/vr06dOmnXrl0F9s3nn3+ujh07KiAgQO3bt9e+fftu+j37o06dOmnBggXq2LGj6tWrp86dO2vkyJFau3atLWbr1q06ePCgFi5cqLCwMEVERGjy5Ml6++23df78eUnSqlWrlJ2drQULFqhJkyaKjIzU8OHD9frrr//pI040MwAAAC7I29tb3t7e2rBhg3JycoqMu3z5suLi4vTFF19o5cqVyszM1FNPPVUgLj4+XvHx8dqyZYuysrL05JNPasaMGZo7d67Wr1+vgwcPKj4+3u45O3fu1A8//KCPPvpIb7/9thISEjRp0qQic5k6daqWL1+uWbNmaffu3RoxYoRGjBihTZs2Fat2T09P5efn6+rVq5KknJwczZo1S3PmzNGePXtUu3ZtxcTE6JtvvtG7776rzz77TFWqVFFUVJRds5Wbm6vp06dr/vz52rx5s/Ly8vTYY4/ZPpivW7dOo0ePVkxMjHbt2qUhQ4Zo5MiR2rhxo10+06dP1wMPPKAvv/zS1gBI0u7du5WUlKRp06YVWsfEiRP14Ycfat68edq+fbuaNGmiqKgonTp1yi5u8uTJmjRpkj7//HPddtttGjRokF3z4OPjU2Df3MyFCxfk4+Nje5yYmKiQkBAFBQXZtnXs2FG5ubm25ikxMVH33HOP3alpHTt2VGpqqn799ddivf41nGYGAADggtzd3TV//nwNHz5cy5Yt05133qlWrVrpoYce0t13322L69evn+3f9erV0+zZsxUeHq6UlBQFBgbaxsaPH682bdpIkgYMGKAxY8Zo27ZtCgsLkyT17dvX7i/50u9rWObPny9vb281adJEL774omJjYzVp0iR5eXnZxV66dEnz58/XmjVrbK9Tr149ffPNN1q8eLE6d+7sUN0///yzlixZohYtWtguKpWXl6cZM2bYcj106JA2btyojz/+WG3btpUkLVy4UM2aNdOqVav0xBNPSJKuXr2qadOmqXXr1raYsLAwff7552rfvr3mzZun6OhoDRo0SJLUqFEj7du3T3PnzlXXrl1tOfXq1cs2pySdOHFCkmSxWOzWzFz//ViyZIleffVVW+1z5szR9u3btXjxYv3zn/+0xY4fP17t2rWTJI0ZM0ZdunTRyZMnbfsvODi4yNcpzPHjx/Xaa6/p+eeft21LT08vcA9HPz8/mc1mpaen22Jq1aplF3PtOenp6Te952RhODIDAADgoiIjI/XTTz/pv//9rzp16qTExER16tRJr7zyii1m37596tu3r+644w4FBQXZLgxw7QP3NU2bNrX9u0aNGoVuO336dIHneHt72x6Hh4fr8uXLOnLkSIFck5KSlJOTo6ioKAUGBtq+lixZUmj89c8NDAxUzZo11apVKwUGBmrRokW2cXd3dzVr1swu3s3NTeHh4bZt1apVU5MmTfTTTz/Ztrm5ualFixa2x3Xq1FFAQIAt5o/3PrzmnnvusZtDkpo3b37D/Atz5MgRXblyxdZISZLZbFZ4eHiB+f+4H2rWrClJdvviq6++sjVcN5Oenq5HHnlEERERGjZsmN1YUYv4/7j9+phrR4i4AAAAGKhKFU+5W782bP58c6Au5wcYNj8AFMXT01MRERGKiIjQ2LFjFRsbq2nTpik2NlZXrlzRI488ovbt22vhwoWyWCzKzMxU165dCyxUr1Spku3f1z6YXr8tPz//T+d57bnvvfeeateubTfm7n7jj7T169fXqlWrbFcz8/DwsBv38PCwW/B/o/Ubxf3QXVj89duuPwrliBs1AddvK2zf/Jk1KmlpaerZs6caN26shQsX2r1OjRo1tGfPHrv4zMxM5eXl2Y6+1KhRw3aU5pqMjAxJKnBUx1E0MwDgALP1jMyZs4x7Ab9ZkolmBkDZCwkJ0dWrV5WTk6PDhw8rMzNTEyZMsJ0CdP2pYn/FgQMHdOnSJduH+a+++kqVK1dW/fr1C83Lw8NDx48f13333Ves16lcubIaNGjgcHxoaKjy8/OVmJhoO83s/PnzOnDggB599FFbXH5+vvbu3Ws7+nL8+HGlpqYqJCTElvPu3bvtTtXbtWuXQkNDb5qv9Pvpb0Vp0KCBKleurF27dtn2TV5enhITExUVFeVwrY46deqUevToodDQUL311lsFGsjw8HDNmjXL7vTDhIQEeXh42E7fCw8P14svvqicnBx5enraYgICAlS3bt0/lRenmQEAALigM2fOqEePHlq5cqV++OEHHT16VP/73//06quv6r777tOtt96qoKAgeXh4aNGiRTp69Kg2bdqkl19+ucRyyMvL0zPPPKODBw8qISFBkydPVv/+/Qs9UlG1alXFxsZqwoQJWr58uQ4fPqz9+/dryZIl+s9//lNiOUm/X0WsW7duGjFihL788kv9+OOPGjRokKpWrarevXvb4tzd3RUXF6fExETt379fMTExCg0NVfv27SVJsbGxWrlypRYtWqRDhw5p4cKFWrVqlZ599tkbvn7t2rVlMpm0adMmZWRk6OLFiwVivLy89OSTT2ry5MnavHmzkpKS9Pzzz+v06dMaOHBgsept2bLlDe/JmJqaqu7du6tGjRqKj49XZmam0tLSlJaWZmu4OnTooMaNG2vIkCH67rvvtG3bNk2cOFFPPPGEbr31VklSVFSUqlSpoqFDh+rAgQNau3at/v3vf2vo0KGcZgYAAFDeBAZ6adasdqX6eo7y8vJSy5Yt9cYbb+jw4cO6fPmyAgICFBUVpdGjR0uSqlevrgULFmjKlClavHixmjZtqpdeesnu0s1/Rdu2bRUaGqoePXooOztbPXr00OTJk4uMHz9+vCwWi+bNm6eRI0eqatWqatasmYYPH14i+fzR66+/rnHjxqlv377Kzc1Vq1attHr1arsrcXl4eGjkyJEaMmSITpw4obvvvlvvvPOO7YP5gw8+qBkzZui1115TXFycateurVdeecVu8X9hatWqpbi4OE2dOlXPPvus+vTpowULFhSIu/a9GjZsmM6dO6c777xTq1evtq2LcVRycrIyMzOLHN+6dasOHTqkQ4cO6Y477rAb++6771S3bl2ZzWatXLlSo0aNUpcuXexumnlNtWrV9OGHH2rUqFGKiIiQj4+Phg0bpmeeeaZY+f6RKSsrq/RvI+qikpOTFRwcXNZplBrqrdjKW72e1q8NvWnm1VtHyf28caeZ5fnNUo7p7psHlpLytn+NRr1A6YuJidGZM2ccuk9MebRixQqNGTNGKSkpZZ2KS+M0MwAAAABOiWYGAAAAgFNizQwAAABKXWFrQJzJY489pscee6ys03B5HJkBAAAA4JRoZgAAAAA4JZoZAAAAAE6JZgYAAACAU6KZAQAAAOCUaGYAAAAAOCUuzQwAAGCQym6pcssrvTvE55sDdTk/oNRez2gxMTE6c+aMVq5cWdaplAt8PwqimQEAADCIW16KzJmjSu8F/WZJJsebmYyMDMXHx2vz5s1KS0tTtWrV1LhxY40YMUIREREGJlp64uPjNX36dEmSm5ubAgIC1KFDB02aNEnVq1cv4+wKt2PHDvXo0UOHDh2Sn5+fbfu0adNktVrLJKdffvlFEydO1O7du3X58mWFhoZq3Lhx6tSpky3m+PHjGjVqlHbs2CFPT09FRUVp6tSpqly5si3mxx9/1OjRo7V37175+vrqH//4h8aMGSOTyfSn8qKZAQAAcFH9+vVTdna25s2bp/r16ysjI0M7d+7UmTNnyjq1EhUcHKz169crLy9P+/fvV2xsrFJTU7V69eoCsfn5+bJarTKbzWWQqXT58uUix6pVq1aKmdiLjo5WvXr19NFHH8nLy0tLlizRo48+qj179qh+/frKy8tTdHS0fH19tWHDBp09e1YxMTGyWq2aOXOmJOn8+fPq1auX2rRpo61btyo5OVnDhg3TLbfcotjY2D+VF2tmAAAAXFBWVpZ27dqlF198Uffdd5/q1Kmjv/3tb4qNjdUjjzxii1u5cqUiIiIUFBSkRo0aqX///jp58qRtfMeOHfLx8dGnn36q++67TzVr1lTXrl2VkpKiL774Qm3btlVgYKCio6PtmqSYmBhFR0dr5syZCg4OVmBgoIYOHars7Owic7ZarZo7d67CwsJUs2ZNtWnTxqFTrtzd3eXv769atWqpS5cuGjx4sLZu3ars7GytWLFCgYGB2rx5s+655x5ZLBYlJSUpKytLQ4YMUd26dVWzZk1FRkbq4MGDtjmvPW/jxo1q0aKF/P399eCDD+ro0aN2r7106VI1b95cFotFzZs317Jly+zGfXx8tGjRIj3++OOqVauWBg4cqB49ekiSGjZsKB8fH8XExNh9z67Jzc3VuHHjFBwcLH9/f3Xq1Em7du0qsG8+//xzdezYUQEBAWrfvr327dt30+/ZH2VmZurQoUMaPny4mjVrpgYNGujFF1/U1atXtX//fknS1q1bdfDgQS1cuFBhYWGKiIjQ5MmT9fbbb+v8+fOSpFWrVik7O1sLFixQkyZNFBkZqeHDh+v111//00ecaGYAAABckLe3t7y9vbVhwwbl5OQUGXf58mXFxcXpiy++0MqVK5WZmamnnnqqQFx8fLzi4+O1ZcsWZWVl6cknn9SMGTM0d+5crV+/XgcPHlR8fLzdc3bu3KkffvhBH330kd5++20lJCRo0qRJReYydepULV++XLNmzdLu3bs1YsQIjRgxQps2bSpW7Z6ensrPz9fVq1clSTk5OZo1a5bmzJmjPXv2qHbt2oqJidE333yjd999V5999pmqVKmiqKgou2YrNzdX06dP1/z587V582bl5eXpscces30wX7dunUaPHq2YmBjt2rVLQ4YM0ciRI7Vx40a7fKZPn64HHnhAX375pa0BkKTdu3crKSlJ06ZNK7SOiRMn6sMPP9S8efO0fft2NWnSRFFRUTp16pRd3OTJkzVp0iR9/vnnuu222zRo0CC75sHHx6fAvvmj2267TSEhIVq5cqUuXryovLw8/ec//5G3t7datWolSUpMTFRISIiCgoJsz+vYsaNyc3NtzVNiYqLuueceValSxS4mNTVVv/76a5GvfyOcZgYAAOCC3N3dNX/+fA0fPlzLli3TnXfeqVatWumhhx7S3XffbYvr16+f7d/16tXT7NmzFR4erpSUFAUGBtrGxo8frzZt2kiSBgwYoDFjxmjbtm0KCwuTJPXt21dr1661y8HNzU3z58+Xt7e3mjRpohdffFGxsbGaNGmSvLy87GIvXbqk+fPna82aNbbXqVevnr755hstXrxYnTt3dqjun3/+WUuWLFGLFi1UtWpVSVJeXp5mzJhhy/XQoUPauHGjPv74Y7Vt21aStHDhQjVr1kyrVq3SE088IUm6evWqpk2bptatW9tiwsLC9Pnnn6t9+/aaN2+eoqOjNWjQIElSo0aNtG/fPs2dO1ddu3a15dSrVy/bnJJ04sQJSZLFYrFbM3P992PJkiV69dVXbbXPmTNH27dv1+LFi/XPf/7TFjt+/Hi1a9dOkjRmzBh16dJFJ0+etO2/4ODgIl9Hkkwmkz788EM9/vjjql27ttzc3OTr66vVq1erZs2akqT09HRZLBa75/n5+clsNis9Pd0WU6tWLbuYa89JT09XvXr1isyhKByZAQAAcFGRkZH66aef9N///ledOnVSYmKiOnXqpFdeecUWs2/fPvXt21d33HGHgoKCbBcGuPaB+5qmTZva/l2jRo1Ct50+fbrAc7y9vW2Pw8PDdfnyZR05cqRArklJScrJyVFUVJQCAwNtX0uWLCk0/vrnBgYGqmbNmmrVqpUCAwO1aNEi27i7u7uaNWtmF+/m5qbw8HDbtmrVqqlJkyb66aefbNvc3NzUokUL2+M6deooICDAFpOUlGQ7cnHNPffcYzeHJDVv3vyG+RfmyJEjunLliq2RkiSz2azw8PAC8/9xP1xrPv64L7766itbw1UYq9WqkSNH6rbbbtPGjRv12WefKTIyUk888YTdKYdFLeL/4/brY64dIeICAAAAACg2T09PRUREKCIiQmPHjlVsbKymTZum2NhYXblyRY888ojat2+vhQsXymKxKDMzU127di2wUL1SpUq2f1/7YHr9tvz8/D+d57Xnvvfee6pdu7bdmLv7jT/S1q9fX6tWrbJdzczDw8Nu3MPDw27B/43WbxT3Q3dh8ddvu/4olCNu1ARcv62wfVOcNSrbt2/XJ598oiNHjsjHx0eSFBYWpoSEBK1YsUKjR49WjRo1tGfPHrvnZWZmKi8vz3b0pUaNGrajNNdkZGRIUoGjOo7iyAwAAABsQkJCdPXqVeXk5Cg5OVmZmZmaMGGC2rZtq9tvv73A0ZW/4sCBA7p06ZLt8VdffaXKlSurfv36hebl4eGh48ePq0GDBnZfderUueHrVK5cWQ0aNFC9evUKNDKFCQ0NVX5+vhITE23bzp8/rwMHDigkJMS2LT8/X3v37rU9Pn78uFJTU20xISEh2r17t93cu3btUmho6E3zlX4//a0oDRo0UOXKle0W/Ofl5dnWrpSk3377TdLvR6L+yM3NzdZkhoeHKykpSSkp//++SgkJCfLw8LCdvhceHq5du3bZrdFKSEhQQECA6tat+6dyo5kBAABwQWfOnFGPHj20cuVK/fDDDzp69Kj+97//6dVXX9V9992nW2+9VUFBQfLw8NCiRYt09OhRbdq0SS+//HKJ5ZCXl6dnnnlGBw8eVEJCgiZPnqz+/fsXeqSiatWqio2N1YQJE7R8+XIdPnxY+/fv15IlS/Sf//ynxHKSfr+KWLdu3TRixAh9+eWX+vHHHzVo0CBVrVpVvXv3tsW5u7srLi5OiYmJ2r9/v2JiYhQaGqr27dtLkmJjY7Vy5UotWrRIhw4d0sKFC7Vq1So9++yzN3z92rVry2QyadOmTcrIyNDFixcLxHh5eenJJ5/U5MmTtXnzZiUlJen555/X6dOnNXDgwGLV27JlS7355ptFjoeHh8vX11fDhg3T999/r19++UUTJkzQ0aNHbet1OnTooMaNG2vIkCH67rvvtG3bNk2cOFFPPPGEbr31VklSVFSUqlSpoqFDh+rAgQNau3at/v3vf2vo0KGcZgYAAFDe5JsDf7+RZWm+noNncnl5eally5Z64403dPjwYV2+fFkBAQGKiorS6NGjJUnVq1fXggULNGXKFC1evFhNmzbVSy+9ZHfp5r+ibdu2Cg0NVY8ePZSdna0ePXpo8uTJRcaPHz9eFotF8+bN08iRI1W1alU1a9ZMw4cPL5F8/uj111/XuHHj1LdvX+Xm5qpVq1ZavXq13ZW4PDw8NHLkSA0ZMkQnTpzQ3XffrXfeecf2wfzBBx/UjBkz9NprrykuLk61a9fWK6+8Yrf4vzC1atVSXFycpk6dqmeffVZ9+vTRggULCsRd+14NGzZM586d05133mm3KN9R147AFcXPz08ffPCB/vWvf6lnz566evWqbr/9dq1YscJ21MVsNmvlypUaNWqUunTpYnfTzGuqVaumDz/8UKNGjVJERIR8fHw0bNgwPfPMM8XK949MWVlZZXMbUReUnJys4ODgsk6j1FBvxVbe6vW0fm3oXbav3jpK7ueN+0CS5zdLOaa7bx5YSsrb/jUa9QKlLyYmRmfOnHHoPjHl0YoVKzRmzBi706pQ+jjNDAAAAIBTopkBAAAA4JRYMwMAAIBSV9gaEGfy2GOP6bHHHivrNFweR2YAAAAAOCWaGQAAAABOiWYGAAAAgFOimQEAAADglGhmAAAAADglmhkAAAAATolmBgAAAIBTopkBAAAA4JRoZgAAAAA4JZoZAAAAAE6JZgYAAACAU6KZAQAAAOCUyqyZmT17tiIiIlS7dm01bNhQ0dHROnDggF2M1WpVfHy8QkNDVbNmTXXv3l0HDx60i8nNzdXo0aPVoEED1apVS3369FFKSopdTFZWlgYNGqQ6deqoTp06GjRokLKysowuEQAAAICByqyZ+eKLL/TUU09p06ZNWrt2rdzd3fXQQw/p7Nmztpi5c+dq/vz5mj59urZu3SqLxaJevXrpwoULtpi4uDitW7dOb731ljZs2KALFy4oOjpaeXl5tpiBAwdq//79WrVqlVavXq39+/dr8ODBpVovAAAAgJLlXlYvvGbNGrvHCxcuVJ06dbR792517dpVVqtVCxYs0HPPPafIyEhJ0oIFCxQcHKzVq1drwIABOnfunJYvX6758+crIiLCNk+zZs20bds2dezYUUlJSdqyZYs++eQTtWrVSpI0Z84cde3aVcnJyQoODi7dwgEAAACUiHKzZubixYvKz8+Xj4+PJOnXX39VWlqaOnToYIupUqWK2rRpoz179kiS9u3bpytXrtjFBAUFKSQkxBaTmJgob29vWyMjSa1bt5aXl5ctBgAAAIDzKbMjM9cbN26cmjVrpvDwcElSWlqaJMlisdjFWSwWpaamSpLS09NlNpvl5+dXICY9Pd0W4+fnJ5PJZBs3mUyqXr26LaYwycnJf72oUpy3vKLeiq081VvP/7yq5OQaNr/5VinXwPmzL5zX0bTy8/2Uytf+LQ3UW7Fw5gXgGspFM/PCCy9o9+7d+uSTT2Q2m+3G/tiESL9fFOD6bde7Pqaw+JvNY8QvQVc7rY16K7byVq+n9ZzMlz0Mm/+qJA9P4+Z3r3qrgm8tP9/P8rZ/jUa9AOCcyvw0s7i4OH3wwQdau3at6tWrZ9vu7+8vSQWOnmRkZNiO1tSoUUN5eXnKzMy8YUxGRoasVqtt3Gq1KjMzs8BRHwAAAADOo0ybmbFjx2r16tVau3atbr/9druxunXryt/fXwkJCbZtOTk52rVrl239S1hYmCpVqmQXk5KSoqSkJFtMeHi4Ll68qMTERFtMYmKiLl26ZLeOBgAAAIBzKbPTzEaNGqWVK1fqnXfekY+Pj22NjJeXl7y9vWUymRQTE6NXXnlFwcHBatSokWbNmiUvLy9FRUVJkqpVq6Z+/fpp4sSJslgs8vX11fjx49W0aVO1b99ekhQSEqJOnTppxIgRmjt3rqxWq0aMGKHOnTtziB0AAABwYmXWzCxevFiSbJddvmbs2LGKi4uTJA0fPlzZ2dkaPXq0srKy1KJFC61Zs0ZVq1a1xb/88ssym80aMGCAcnJy1K5dO73xxht2a28WLVqksWPH6uGHH5Ykde3aVTNmzDC6RAAAAAAGKrNmJisr66YxJpNJcXFxtuamMJ6enpo5c6ZmzpxZZIyvr6/efPPNP5MmAAAAgHKqzC8AAAAAAAB/Bs0MAAAAAKdEMwMAAADAKdHMAAAAAHBKNDMAAAAAnBLNDAAAAACnRDMDAAAAwCnRzAAAAABwSsW6aWZycrLeeecdHT16VGfPnpXVarUbN5lMWrt2bYkmCAAAAACFcbiZ+eCDDzR48GCZzWYFBwfLx8enQMz1zQ0AAAAAGMXhZubll19WkyZN9MEHH8hisRiZEwAAAADclMNrZlJSUvTEE0/QyAAAAAAoFxxuZm6//XZlZmYamQsAAAAAOMzhZmbixIlaunSpfvnlFyPzAQAAAACHFLlmZuTIkQW2WSwWtWnTRu3atVNQUJDMZrPduMlk0qxZs0o+SwAAAAC4TpHNzJIlS4p80meffVbodpoZAAAAAKWlyGbm7NmzpZkHAAAAABSLw2tmAAAAAKA8cbiZ2b17t+bMmVPk+Jw5c5SYmFgiSQEAAADAzTh808zp06fLx8enyPEffvhBX3zxhT744IOSyAsAAAAAbsjhIzP79+9XeHh4keMtW7bUd999VyJJAQAAAMDNONzM/PbbbzKZTDeMuXjx4l9OCAAAAAAc4XAz06hRI3366adFjm/evFkNGjQokaQAAAAA4GYcbmaeeOIJbd26Vc8//7wyMzNt2zMzMzVy5Eht27ZN/fr1MyRJAAAAALiewxcAePrpp/X9999r6dKl+s9//iOLxSKTyaT09HRZrVY9+uijiomJMTJXAAAAALBxuJmRpFdffVW9e/fW2rVrdfToUVmtVtWvX1+RkZH6+9//blSOAAAAAFBAsZoZSbr33nt17733GpELAAAAADjM4TUzAAAAAFCeFOvIzNtvv61ly5bp6NGjOnv2bIFxk8lkd3EAAAAAADCKw83MlClT9O9//1tNmzZV79695ePjY2BaAAAAAHBjDjcz77zzjrp166Z33nnHyHwAAAAAwCEOr5m5dOmSOnXqZGQuAAAAAOAwh5uZ1q1b68cffzQyFwAAAABwmMPNzMyZM7Vp0ya98847slqtRuYEAAAAADfl8JqZvn376vLly3r22Wc1ZswY1apVS2az2S7GZDJp9+7dJZ4kAOdX2S1Vbnkphs1vNmUbNjcAACifHG5mqlevLovFokaNGhmZD4AKyi0vRebMUca9gF+ccXMDAIByyeFm5uOPPzYyDwAAAAAoFofXzAAAAABAeVLkkZnjx49LkmrXrm33+GauxQMAAACAkYpsZu68806ZTCadOnVKlStXtj2+mTNnzpRoggAAAABQmCKbmXnz5slkMqlSpUp2jwEAAACgPCiymXnsscdu+BgAAAAAyhIXAAAAAADglGhmAAAAADglmhkAAAAATqlMm5mdO3eqT58+aty4sXx8fLRixQq78ZiYGPn4+Nh9derUyS4mNzdXo0ePVoMGDVSrVi316dNHKSkpdjFZWVkaNGiQ6tSpozp16mjQoEHKysoyujwAcJjZzSRP69eGfVV2Sy3rEgEAKHFFXgCgNFy6dElNmjRR3759NWTIkEJj2rdvr4ULF9oeV65c2W48Li5OGzZs0FtvvSVfX1+NHz9e0dHR+vzzz2U2myVJAwcO1IkTJ7Rq1SqZTCY9++yzGjx4sFauXGlccQBQHPkZMmfGGze/3yzJFGDc/AAAlAGHmpmcnBzNnTtXLVu2VIcOHUrsxR944AE98MADkqShQ4cWGuPh4SF/f/9Cx86dO6fly5dr/vz5ioiIkCQtXLhQzZo107Zt29SxY0clJSVpy5Yt+uSTT9SqVStJ0pw5c9S1a1clJycrODi4xOoBAAAAUHocOs3M09NTc+bM0YkTJ4zOp4Bdu3apUaNGatGihZ599lmdPn3aNrZv3z5duXLFrsEKCgpSSEiI9uzZI0lKTEyUt7e3rZGRpNatW8vLy8sWAwAAAMD5OHyaWbNmzXT48GEjcymgU6dO6tGjh+rWratjx45p6tSp6tmzp7Zt2yYPDw+lp6fLbDbLz8/P7nkWi0Xp6emSpPT0dPn5+dnd8NNkMql69eq2mMIkJycbUpNR85ZX1FuxFafeev7nVSUn17BczFeuKM/I+W+Vcp04/+wL53U0rXg/n/w8V2wVvV7OvABcg8PNzMSJE9W/f3/dc8896ty5s5E52TzyyCO2fzdt2lRhYWFq1qyZNm3apJ49exb5PKvVWqB5uVnM9Yz4Jehqp7VRb8VW3Ho9redkvuxhXEKVKsnd07j5r0ryMHB+o/N3r3qrgm91fH/x81yxuVq9ACouh5uZV199VT4+Purbt69q1aqlevXqqUqVKnYxJpNJ77//fokneU1AQIBq1aplO0JUo0YN5eXlKTMzU9WrV7fFZWRkqE2bNraYjIwMu+bFarUqMzNTFovFsFwBAAAAGMvhZuann36SyWRSUFCQJOnYsWMFYm50pKMkZGZmKjU11XZBgLCwMFWqVEkJCQnq3bu3JCklJUVJSUm2NTLh4eG6ePGiEhMTbdsSExN16dIlu3U0AAAAAJyLw83M999/X+IvfvHiRdtRlvz8fJ04cUL79++Xr6+vfH19NW3aNPXs2VP+/v46duyYpkyZIovFogcffFCSVK1aNfXr108TJ06UxWKxXZq5adOmat++vSQpJCREnTp10ogRIzR37lxZrVaNGDFCnTt35hA7AAAA4MTK9D4z3377rXr06GF7HB8fr/j4ePXt21ezZ8/WgQMH9N///lfnzp2Tv7+/7r33Xi1dulRVq1a1Pefll1+W2WzWgAEDlJOTo3bt2umNN96w3WNGkhYtWqSxY8fq4YcfliR17dpVM2bMKL1CAQAAAJS4YjUzeXl5+uCDD7R9+3adPn1aEyZM0B133KGsrCwlJCTonnvuUc2aNR2e795771VWVlaR42vWrLnpHJ6enpo5c6ZmzpxZZIyvr6/efPNNh/MCAAAAUP45dJ8Z6fcbVD7wwAMaPHiwPvroI3366afKzMyUJFWtWlXjx4+nYQAAAABQahxuZiZPnqyffvpJq1at0r59+2S1Wm1jZrNZPXr00KeffmpIkgAAAABwPYebmY8//liDBg1Sp06dCr1qWcOGDXX8+PESTQ4AAAAAiuJwM5OVlaX69esXOW61WnX58uUSSQoAAAAAbsbhZqZOnTo6cOBAkeM7d+5Uo0aNSiQpAAAAALgZh5uZ3r176+2339bOnTtt266dbrZw4UKtX79ejz76aMlnCAAAAACFcPjSzCNGjNDXX3+tnj17qlGjRjKZTBo3bpzOnDmjtLQ0de/eXYMHDzYyVwAAAACwcbiZqVSpkt5//32tWrVK//vf/2QymXT16lXdddddevjhh/V///d/hV4YAAAAAACMUKybZkq/n27Wu3dvI3IBAAAAAIcVu5mRpB9++MF2GebatWuradOmHJUBAAAAUKqK1cx88MEHmjRpkk6ePGm7aabJZFKtWrU0adIkjtgAAAAAKDUONzMrVqzQM888o+DgYE2ePFmNGjWS1WrVoUOH9Pbbb2vw4MG6fPmyHnvsMSPzBQAAAABJxWhmZs+erRYtWmj9+vXy9PS0G3v66afVrVs3zZ49m2YGAAAAQKlw+D4zKSkp6t27d4FGRpI8PT0VHR2tkydPlmhyAAAAAFAUh5uZ0NBQpaamFjl+8uRJhYSElEhSAAAAAHAzDjczU6ZM0bJly/Thhx8WGPvggw/09ttv61//+leJJgcAAAAARXF4zcxrr70mPz8/PfXUUxo3bpzq168vk8mkw4cP6/Tp02rYsKFeffVVvfrqq7bnmEwmvf/++4YkDgAAAMC1OdzM/PTTTzKZTAoKCpIk2/oYDw8PBQUFKTc3V0lJSXbP4d4zAAAAAIzicDPz/fffG5kHAAAAABSLw2tmAAAAAKA8cfjIDACUZ3l5VuVeumrY/JWqctosAADlDc0MgAoh72q+Tpy4aNj8dSxWVTJsdgAA8GfQzACAA0wmN/1m4JEfDx+rzIbNDgBAxUQzAwAOyM839shPPf98mhkAAIqJCwAAAAAAcEoONzN33XWXNmzYUOT4J598orvuuqtEkgIAAACAm3G4mTl27JguXbpU5PilS5d0/PjxEkkKAAAAAG6mWGtmTKaiL036yy+/qGrVqn85IQAVU3Z2ntwMXEBv9jJsagAAUE7dsJl599139d5779kez5o1S8uWLSsQl5WVpQMHDqhz584lnyGACiH7t6s6a+AC+toWq2FzAwCA8umGzcylS5eUlpZme3zu3Dnl5+fbxZhMJt1yyy3q37+/xo0bZ0yWAAAAAHCdGzYzTz/9tJ5++mlJ0p133qlp06apW7dupZIYALgaI+9jk39Lnky3GDY9AABlwuE1M/v37zcyDwBwaXn5VkPvY+PrdVW30MwAACqYYt8088KFCzpx4oTOnj0rq7XgOept27YtkcQAAAAA4EYcbmbOnj2rsWPH6sMPP1ReXl6BcavVKpPJpDNnzpRoggAAAABQGIebmREjRmj9+vV6+umn1bZtW/n4+BiYFgAAAADcmMPNzJYtWzR48GC99NJLRuYDAAAAAA5xczSwcuXKatiwoZG5AAAAAIDDHG5mIiMj9emnnxqZCwAAAAA4zOFmJjY2VqdOndKQIUP01Vdf6dSpUzp9+nSBLwAAAAAoDQ6vmWnRooVMJpP27dun999/v8g4rmYGAAAAoDQ43MyMGTNGJpPJyFwAAAAAwGEONzNxcXFG5gEAAAAAxeLwmpk/ysvL05kzZ3T16tWSzgcAAAAAHFKsZmbv3r166KGHVKtWLTVq1Eg7d+6UJGVmZur//u//9PnnnxuSJAAAAABcz+FmJjExUd26ddORI0fUp08fWa1W25ifn58uXryo5cuXG5IkAAAAAFzP4WbmX//6lxo2bKg9e/Zo4sSJBcbvvfdeff311yWaHAAAAAAUxeFmZu/evXr88cfl6elZ6FXNAgMDlZaWVqwX37lzp/r06aPGjRvLx8dHK1assBu3Wq2Kj49XaGioatasqe7du+vgwYN2Mbm5uRo9erQaNGigWrVqqU+fPkpJSbGLycrK0qBBg1SnTh3VqVNHgwYNUlZWVrFyBQAAAFC+ONzMuLm5yc2t6PC0tDRVqVKlWC9+6dIlNWnSRNOmTSv0uXPnztX8+fM1ffp0bd26VRaLRb169dKFCxdsMXFxcVq3bp3eeustbdiwQRcuXFB0dLTy8vJsMQMHDtT+/fu1atUqrV69Wvv379fgwYOLlSsAAACA8sXhZiYsLEyffPJJoWOXL1/WqlWrFB4eXqwXf+CBBzRx4kRFRkYWaJSsVqsWLFig5557TpGRkWrSpIkWLFigixcvavXq1ZKkc+fOafny5ZoyZYoiIiIUFhamhQsX6scff9S2bdskSUlJSdqyZYv+/e9/q1WrVgoPD9ecOXO0adMmJScnFytfAAAAAOWHw83M888/r+3bt+uZZ57R999/L0k6deqUtmzZop49e+rIkSMaOXJkiSX266+/Ki0tTR06dLBtq1Klitq0aaM9e/ZIkvbt26crV67YxQQFBSkkJMQWk5iYKG9vb7Vq1coW07p1a3l5edliAAAAADgfh2+aGRERoYULF2r06NF69913JUkxMTGyWq2qVq2aFi9erJYtW5ZYYtfW31gsFrvtFotFqampkqT09HSZzWb5+fkViElPT7fF+Pn52a3zMZlMql69ui2mMEYdtXG1o0HUW7EVp94a3leUn59vXDJWq7HzS06d/5UrV4r988nPc8VW0esNDg4u6xQAlAKHmxlJioqKUrdu3ZSQkKBDhw4pPz9f9evXV8eOHeXt7W1IgtdfbMBqtRZ6AYIbxRQWf7N5jPglmJyc7FK/XKm3Yituvb9lpN9w3d1fZjIZO7/k1PlXqlSpWPuLn+eKzdXqBVBxFauZkaRbbrlF3bt3NyIXO/7+/pJ+P7ISFBRk256RkWE7WlOjRg3l5eUpMzNT1atXt4tp06aNLSYjI8OuebFarcrMzCxw1AcAAACA83D4z4AbNmzQ6NGjixwfPXp0kRcI+DPq1q0rf39/JSQk2Lbl5ORo165dtvUvYWFhqlSpkl1MSkqKkpKSbDHh4eG6ePGiEhMTbTGJiYm6dOmS3ToaAAAAAM7F4SMzr732mho0aFDkeE5OjubOnasuXbo4/OIXL17U4cOHJf1+LvqJEye0f/9++fr6qnbt2oqJidErr7yi4OBgNWrUSLNmzZKXl5eioqIkSdWqVVO/fv00ceJEWSwW+fr6avz48WratKnat28vSQoJCVGnTp00YsQIzZ07V1arVSNGjFDnzp05xA4AAAA4MYebmQMHDujhhx8ucvyuu+7S+vXri/Xi3377rXr06GF7HB8fr/j4ePXt21cLFizQ8OHDlZ2drdGjRysrK0stWrTQmjVrVLVqVdtzXn75ZZnNZg0YMEA5OTlq166d3njjDZnNZlvMokWLNHbsWFv+Xbt21YwZM4qVKwAAAIDyxeFm5urVq8rOzi5yPDs7W7m5ucV68XvvvVdZWVlFjptMJsXFxSkuLq7IGE9PT82cOVMzZ84sMsbX11dvvvlmsXIDAAAAUL45vGamSZMmWrt2baGXDs3Pz9fatWsVGhpaoskBAAAAQFEcPjIzZMgQDRw4UH379lVcXJwaN24sSTp48KCmTZumb775RgsWLDAsUQDGSk3NUUrKJYfjz5+vpHPnMh2OD6lt7D1gAACA63G4mXnkkUd05MgRxcfH69NPP5X0+2lg1y55PHbsWEVHRxuWKABjpaRc0qhR2x2Oz83NkYeHp8PxH77rd/MgAACAYijWfWZGjRqlqKgorVu3TkePHpXValX9+vXVo0cP1atXz6AUAQAAAKAgh5qZ7Oxs/d///Z+io6P1+OOPKzY21ui8AAAAAOCGHLoAQJUqVfTdd98pLy/P6HwAAAAAwCEOX83s73//u7788ksjcwEAAAAAhznczEyfPl179+7VhAkTdPTo0UIv0QwAAAAApcXhCwC0bNlSVqtV8+fP1/z58+Xm5qZKlSrZxZhMJp08ebLEkwQAAACA6znczPTq1Usmk8nIXAAARjFJX3/t+H2BinsfocBALwUEOH6pbgAASoLDzQw3xAQA55Wbm2fofYRmzWpHMwMAKHUOr5kBAAAAgPKkWDfNPHbsmGbNmqXt27crMzNT7733nv7+978rMzNTL7/8svr166ewsDCDUgVgpPpBWfrXC1aH4/Pz3OVmdjy+WtWr+u3PJAYAAFAEh5uZpKQkdenSRfn5+br77rt17Ngx231n/Pz89NVXXyk3N1fz5s0zLFkAxqnifkoNvKY4HJ+fny83N8cP7rqbX/ozaQEAABTJ4WZm0qRJqlq1qrZs2SKz2axGjRrZjT/wwAP63//+V9L5AQAAAEChHP6z6pdffqmBAweqRo0ahV7VrHbt2kpNTS3R5AAAAACgKA43M1evXpWXl1eR42fPnpXZbC6RpAAAAADgZhxuZpo0aaIdO3YUOma1WrVu3ToW/wMAAAAoNQ43MzExMfroo480Y8YMnTlzRtLvC4B//vlnPfnkk/r2228VGxtrWKIAAAAA8EcOXwDgkUce0fHjx/XSSy9p2rRptm2SZDabNXXqVN1///3GZAkAAAAA1ynWfWaee+45RUVFae3atTp8+LDy8/NVv3599ezZU3Xr1jUqRwAAAAAo4KbNTG5urjZs2KCjR4/qtttuU+fOnTV06NDSyA0AAAAAinTDZiYtLU3dunXTkSNHZLX+fqdvLy8vrVy5Um3bti2VBAEAAACgMDe8AMDUqVN19OhRDR06VCtXrlR8fLw8PDw0ZsyY0soPAAAAAAp1wyMzW7duVd++fTV16lTbtho1amjgwIFKSUlRYGCg4QkCAAAAQGFueGQmLS1NrVq1stvWunVrWa1WnThxwtDEAAAAAOBGbnhkJi8vT56ennbbrj3OyckxLisABaSm5igl5ZJh84fUzjdsbgAAACPc9GpmR48e1TfffGN7fP78eUlScnKyvL29C8S3aNGiBNMDcE1KyiWNGrXdsPk/fNfPsLkBAACMcNNmJj4+XvHx8QW2X38RAKvVKpPJpDNnzpRcdgAAAABQhBs2M/Pnzy+tPAAAAACgWG7YzDz66KOllQcAwImZTG76+utMw+YPDPRSQIDnzQMBAC7lpqeZAQCcX7VqlfWvF6wOx+fnucvN7Hh8Dd/T6vfkj38mNYfMmtWOZgYAUADNDAC4AHdTphp4TXE4Pj8/X25uN7x6v51bPF/9M2kBAPCXOP4/FQAAAACUIzQzAAAAAJwSzQwAAAAAp0QzAwAAAMAp0cwAAAAAcEo0MwAAAACcEs0MAAAAAKdEMwMAAADAKdHMAAAAAHBKNDMAAAAAnBLNDAAAAACnRDMDAAAAwCnRzAAAAABwSuW6mYmPj5ePj4/d1+23324bt1qtio+PV2hoqGrWrKnu3bvr4MGDdnPk5uZq9OjRatCggWrVqqU+ffooJSWltEsBAAAAUMLKdTMjScHBwUpKSrJ9ffnll7axuXPnav78+Zo+fbq2bt0qi8WiXr166cKFC7aYuLg4rVu3Tm+99ZY2bNigCxcuKDo6Wnl5eWVRDgAAAIASUu6bGXd3d/n7+9u+qlevLun3ozILFizQc889p8jISDVp0kQLFizQxYsXtXr1aknSuXPntHz5ck2ZMkUREREKCwvTwoUL9eOPP2rbtm1lWBUAAACAv6rcNzNHjx5V48aNdeedd+rJJ5/U0aNHJUm//vqr0tLS1KFDB1tslSpV1KZNG+3Zs0eStG/fPl25csUuJigoSCEhIbYYAAAAAM7JvawTuJG7775br7/+uoKDg5WRkaGZM2fqgQce0O7du5WWliZJslgsds+xWCxKTU2VJKWnp8tsNsvPz69ATHp6+g1fOzk5uQQrMX7e8op6S87585WUm5tj2Pz5+fnKz88v9nMcZrUWe/5iMXp+FbPe4iqH35/ixOfn5xv683n+/AUlJ58xbH6J31cVTXBwcFmnAKAUlOtm5v7777d7fPfddyssLEzvvvuuWrZsKUkymUx2MVartcC26zkSY8QvweTkZJf65epq9f7ww0nl5HgYNn+lSnny8PA0bH43Nze5uTl+sDY/P79Y8TKZihdfXEbPLzl3/sWcv7j7183NzdCfz1tvrargYL+bB/5Jrvb7ytXqBVBxletm5nre3t4KDQ3V4cOH9eCDD0r6/ehLUFCQLSYjI8N2tKZGjRrKy8tTZmamba3NtZg2bdqUbvKo8NLTL2vKFONOX4yLa2XY3AAAAM6o3K+Z+aOcnBwlJyfL399fdevWlb+/vxISEuzGd+3apVatfv/QFxYWpkqVKtnFpKSkKCkpyRYDAAAAwDmV6yMz//znP9WlSxcFBQXZ1sz89ttv6tu3r0wmk2JiYvTKK68oODhYjRo10qxZs+Tl5aWoqChJUrVq1dSvXz9NnDhRFotFvr6+Gj9+vJo2bar27duXbXEAAAAA/pJy3cycPHlSAwcOtJ0mdvfdd+vTTz9VnTp1JEnDhw9Xdna2Ro8eraysLLVo0UJr1qxR1apVbXO8/PLLMpvNGjBggHJyctSuXTu98cYbMpvNZVUWAAAAgBJQrpuZJUuW3HDcZDIpLi5OcXFxRcZ4enpq5syZmjlzZkmnBwAAAKAMOdWaGQAAAAC4hmYGAAAAgFOimQEAAADglMr1mhkAACTJZHLT119nGja/p6eXYXMDAIxDMwMAKPcyMrIVH2/cTWknTmxu2NwAAONwmhkAAAAAp0QzAwAAAMAp0cwAAAAAcEo0MwAAAACcEs0MAAAAAKdEMwMAAADAKdHMAAAAAHBKNDMAAAAAnBLNDAAAAACnRDMDAAAAwCnRzAAAAABwSu5lnQBQWlJTc5SScsmw+fPzeTsBAACUJj59wWWkpFzSqFHbDZt/1Ki/GTY3AAAACuI0MwAAAABOiWYGAAAAgFOimQEAAADglGhmAAAAADglLgCAcsPoq41lZ+cZNjcAAABKH80Myg2jrzYWF9fKsLlLQ5Pgi/rXC1bD5q9W9ap+M2x2AACAkkczAzgJb89TauA1xbD53c0vGTY3AACAEWhmAAAuz9PTU19/nWnY/IGBXgoI8DRsfgBwVTQzAACXd+ZMrmbN2mXY/LNmtaOZAQADcDUzAAAAAE6JZgYAAACAU+I0MwDAX1atWmVDr7ZXr9FFw+YGADgvmhkAwF/mbso09Gp7t3i+atjcAADnxWlmAAAAAJwSzQwAAAAAp0QzAwAAAMAp0cwAAAAAcEo0MwAAAACcEs0MAAAAAKfEpZkBADCYyeSmr7/ONGz+wEAvBQR4GjY/AJRXNDMAABgsIyNb8fF7DJt/1qx2NDMAXBKnmQEAAABwSjQzAAAAAJwSzQwAAAAAp0QzAwAAAMApcQEAOCw1NUcpKZccjj9/vpLOnXP86j3Z2Xl/Ji0AAAC4KJoZOCwl5ZJGjdrucHxubo48PBy/uk5cXKs/kxYAAABclEs1M4sXL9arr76qtLQ0hYaGKj4+Xm3atCnrtFBBNAvN1r9esBo2f7WqV/WbYbMD5Vu1apUNfX/VaZBt2Nylobj3sSnukXPuYwOgvHKZZmbNmjUaN26cXnnlFbVu3VqLFy9W7969tXv3btWuXbus0ysRxT0NrLg4DezGvD1PqYHXFMPmdze/ZNjcQHnnbso09P3l6flvw+YuDcW9j01xj5xzHxsA5ZXLNDPz58/Xo48+qv79+0uSZs6cqc8++0xLlizRpEmTyji7klHc08CKi9PAAMA1FffIT3Fx5AfAn+USzczly5e1b98+xcbG2m3v0KGD9uwx7o7M1/P2rm3ofwbl7chJcf7qVxqaBF809DQV32r5SjVs9vLHzc3FLoZoMpV1BqXK1favq9Vb3N/PxT3yU1wc+QHwZ5mysrKM+3RXTqSmpqpx48b6+OOP1bZtW9v26dOna9WqVfr666/LMDsAAAAAf4ZL/SnKdN1fVq1Wa4FtAAAAAJyDSzQzfn5+MpvNSk9Pt9uekZEhi8VSRlkBAAAA+CtcopmpXLmywsLClJCQYLc9ISFBrVqxqB0AAABwRi5xAQBJGjZsmAYPHqwWLVqoVatWWrJkiU6dOqUBAwaUdWoAAAAA/gSXaWYefvhhnTlzRjNnzlRaWpoaN26s999/X3Xq1Cnr1AAAAAD8CS5xNTMAAAAAFY/LHJkpbXv37tWCBQu0Z88epaeny2QyyWKxqFWrVho6dKiaN29e1imWmMuXL6ty5cq2x0eOHNHChQt1+PBh+fv766mnnlJYWFjZJWgA9i/7t6Jg/1bc/euK+xaA6+HIjAHWr1+vf/zjH/r73/+ujh07ymKxyGq1KiMjQwkJCfriiy+0dOlSde/evaxTLRG33XabkpKSZLFYtH//fnXp0kX16tVT8+bN9eOPP+rAgQPauHGjWrRoUdaplgj2L/uX/eu8XGn/utq+BeCaaGYMcM899ygqKkojR44sdHz27Nl6//33tXv37lLOzBi+vr76+eefZbFYFB0dLU9PTy1dutR2R+1hw4YpLS1Nq1evLuNMSwb7l/3L/nVerrR/XW3fAnBNLnFp5tJ2+PBh9ezZs8jxHj166MiRI6WYUen54YcfFBMTY/vPUpKGDBmi/fv3l2FWJYv9y/5l/zovV92/rrBvAbgmmhkD1K9fX+vXry9yfP369apXr17pJWQwk8kkk8kkSXJzc5O3t7fdeNWqVXX+/PmySM0Q7F/2L/vXebnS/nW1fQvANXEBAAPExcXpqaee0o4dOxQREaEaNWrIZDIpLS1N27Zt0/bt2/XWW2+VdZolxmq1KiwsTCaTSdnZ2frhhx90xx132MYPHz6sGjVqlGGGJYv9y/5l/zovV9q/rrZvAbgmmhkDREZGKiAgQG+88YYWLlyo9PR0SVKNGjUUHh6ujz/+WOHh4WWcZcmZP3++3eOGDRvaPf7qq6/04IMPlmZKhmL/sn/Zv87Llfavq+1bAK6JCwAAAAAAcEocmQH+gry8PGVmZspkMum2226T2Wwu65QAOIj3LwA4Py4AYIBffvlFVuv/P+C1a9cuPfroo2rdurUiIyP18ccfl2F2JS8oKEixsbH6+uuvyzqVUrNu3Tp17txZAQEBCg0NVUhIiAICAtS5c+cbLi52Vrt379aECRP0yiuv6MSJE3ZjWVlZ6tGjRxllVvJ4/1Z8rvT+daX3LgDXRDNjgPDwcGVkZEiSduzYoe7du+vq1avq1auXvL291a9fP3322WdlnGXJuXTpkr744gvdf//9atOmjd58801lZWWVdVqGWbp0qZ588kmFhIRo0aJFWr9+vdatW6dFixYpNDRUTz31lJYtW1bWaZaYjRs3qnv37vryyy/1/vvvq02bNtq0aZNt/PLly9q5c2cZZliyeP/y/q0o719Xe+8CcE2smTHAH29UFhkZqeDgYM2aNcs2PnnyZO3Zs0cbNmwowyxLzrW7TB86dEjLli3T2rVrlZ+fr549e6p///5q06ZNWadYopo3b64RI0boiSeeKHT87bff1uzZs7Vv377STcwgnTp10v3336+xY8dKkhYtWqQXX3xRb7zxhnr06KH09HSFhobqzJkzZZxpyeD9y/u3orx/Xe29C8A1cWTGYElJSerTp4/dtujoaP30009llFHJu3ZKTuvWrbVgwQIdPHhQU6ZM0YEDB9S9e3e1bNlSr732WhlnWXJSU1N1zz33FDneunVrnTp1qhQzMlZSUpKio6Ntj59++mm9/vrrGjx4sD766KMyzMx4vH95/zozV37vAnAdNDMGycrK0tmzZ+Xh4aFKlSrZjVWuXFk5OTlllFnJu3ZTtmtuvfVWPf3009qxY4e2bNmi1q1ba8aMGWWUXckLDQ294X0oli5dqtDQ0FLMyFgeHh46e/as3bbIyEgtWLBAMTEx+vDDD8soM+Pw/uX9WxG44nsXgOvhamYGadWqlaTf/+r57bff6q677rKNHTx4UAEBAWWVWon742Lp67Vo0UItWrRQfHx8KWZkrKlTpyo6OlpbtmwpcNO9zz//XCdPntT7779f1mmWmDvvvFPbt29X8+bN7bZHRkYqPz9fgwYNKqPMjMP793e8f52bK753AbgemhkDrFu3zu5xzZo17R4fO3ZM/fv3L82UDNW3b195enreMMbb27uUsjHe3//+d3355ZdasmSJvvrqKyUkJEj6/aZ73bp104ABA1S3bt0yzrLkDBgwoMhFwr169VJ+fr6WLl1aylkZh/dvQbx/nZOrvXcBuCYuAAAAAADAKbFmppTs3btXH330kb799tuyTqVUVOR6MzMzyzqFUkW9FZur1XvN9WtJ9uzZo127dik7O7uMMjKOK9UKwPXQzBhgypQp2rJliyQpIyND999/vzp27KiBAweqQ4cO6ty5s+0+FhWBq9UbHBysyMhIrVmzRleuXCnrdAxHvRWbq9V76NAhtWjRQg0bNtT999+vzMxMPfjgg+rSpYu6deum8PBw/fzzz2WdZolwpVoBuC6aGQO899578vf3lyRNmDBBVqtVX3/9tU6fPq29e/fK3d1d48ePL+MsS46r1Wu1WpWXl6enn35aoaGh+uc//6mkpKSyTssw1Eu9FcmECRNUt25dffTRRwoODlZUVJRMJpN+/PFHHTx4ULfffrsmTZpU1mmWCFeqFYDrYs2MAfz9/ZWYmKi6devqzjvv1JtvvqnWrVvbxr/77jv17t27wvxFzNXqvXZTxdzcXC1fvlwrVqzQyZMn1apVK/Xv318PPfTQTRdUOxPqpd6KVG/Dhg310Ucf6Y477tCFCxdUt25dffzxx7Z7z+zbt0+9e/dWcnJyGWf617lSrQBcF0dmDFC3bl0dPHhQkuTmVvBbbDKZKtR9Klyt3muCgoIUFxen77//Xu+99558fX31zDPPKCQkRKNHjy7r9Eoc9VJvRXD58mXb1dm8vLzk5uZmd7W2W2+9tcL8vnKlWgG4LpoZA/zjH//QhAkT9Msvv2jQoEGaMGGCjhw5Ikk6evSoXnjhBXXs2LGMsyw5rlbv9TcZNJlM6ty5s95991398MMPeuaZZ7R58+Yyyq7kUS/1VqR6GzdurGXLlslqtWr58uXy8/PTmjVrbOOrVq1Sw4YNyzDDkuNKtQJwXZxmZpAXXnhBixYtUv369XXs2DFdvnxZ7u7uunr1qu666y6tXLlSNWrUKOs0S4wr1XvttByLxVLWqZQK6q3YXK3ezz77TI899piuXr2qSpUqac2aNYqNjZWXl5fMZrO+++47LV68WL169SrrVP8yV6oVgOuimTFQcnKyNm7cqKNHjyo/P1/+/v5q3bq12rdvX+CvoRWBq9Q7bdo0Pfvss7rlllvKOpVSQb0Vm6vVK0m//vqr9u3bp+bNm6tOnTpKT0/XokWLlJ2drQceeEDt2rUr6xRLjCvVCsA10cwAAAAAcEqsmQEAAADglGhmykBkZKTCwsLKOo1SQ70VG/VWbNRbcblSrQAqLveyTsAV/e1vf1NgYGBZp1FqqLdio96KjXorLleqFUDFxZoZAAAAAE6JIzMGSUlJ0ZIlS7Rnzx6lp6fLZDLJYrGodevWGjBgQIX7axj1Um9FQr3UW1G4Uq0AXBNHZgywa9cu9e7dW/7+/urQoYMsFousVqsyMjKUkJCgtLQ0rVq1Sq1bty7rVEsE9VIv9Tov6q249bpSrQBcF82MAdq3b6/w8HDNmDGj0PGxY8cqMTFRCQkJpZyZMajXHvU6N+q1R73Oy5VqBeC6aGYMULNmTe3YsUPBwcGFjv/8889q166dTp06VcqZGYN67VGvc6Nee9TrvFypVgCui0szG8Df31+7d+8ucnz37t3y9/cvxYyMRb32qNe5Ua896nVerlQrANfFBQAMEBsbq+eff1579+5V+/btVaNGDZlMJqWlpWnbtm169913FR8fX9ZplhjqpV7qdV7UW3HrdaVaAbguTjMzyJo1a/T6669r3759ysvLkySZzWaFhYVp2LBh6tWrVxlnWLKol3orEuql3orClWoF4JpoZgx25coVZWZmSpL8/PxUqVKlMs7IWNRLvRUJ9VJvReFKtQJwLTQzAAAAAJwSFwAAAAAA4JRoZgAAAAA4JZoZAAAAAE6JZgYAAACAU6KZAQAAAOCU/h/Y2/scc/kyTgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "unit = 'inch'\n", "\n", "fig, ax = plt.subplots(figsize=(8,5))\n", "\n", "ax.hist(results, bins=np.arange(0.65, 0.85, 0.01), \n", " density=True, label='Sample Proportion: 200', color='darkblue', alpha=0.8, ec='white', zorder=5)\n", "\n", "ax.hist(results1, bins=np.arange(0.65, 0.85, 0.01), \n", " density=True, label='Sample Proportion: 800', color='gold', alpha=0.8, ec='white', zorder=5)\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = ''\n", "\n", "ax.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "ax.legend(bbox_to_anchor=(1.04,1), loc=\"upper left\", frameon=False)\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.xticks(rotation=90)\n", "\n", "plt.title('');\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Both distributions are approximately normal but one is narrower than the other. The proportions based on a sample size of 800 are more tightly clustered around 0.75 than those from a sample size of 200. Increasing the sample size has decreased the variability in the sample proportion.\n", "\n", "This should not be surprising. We have leaned many times on the intuition that a larger sample size generally reduces the variability of a statistic. However, in the case of a sample average, we can *quantify* the relationship between sample size and variability.\n", "\n", "Exactly how does the sample size affect the variability of a sample average or proportion? That is the question we will examine in the next section." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.12" } }, "nbformat": 4, "nbformat_minor": 1 }