{ "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": "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rLCwMEnS3r171b17dx04cECBgYGuKr3MhIeHq1OnTpoxY0aB7cyRdPjwYT3//PP6+uuvFRgYqFWrVql3796SmJ/f+/LLL9W/f3+dOXNGd999d4Wfn8cee0zBwcFavHixZV+7du3Uu3fvCv/i1evXr6tRo0Zat26dunfvLrPZrBYtWmj48OGaPHmyJCkrK0uBgYGaM2dOhVkGceXKFXXp0kWLFi3S22+/rZYtW2rBggWGmx/DXuFxlbCwMH366adKT09XXl6eNm3apLS0NHXp0kWStH//ftWoUcNqAXVYWJiqV69e5i9GdIVffvlF+/fvl5+fn5588kkFBgaqe/fu+uabbyx9KvocXbt2TUOHDtW7775b4JOFFX1+fu/atWuqWrWqqlWrJqliz8+dF69269bNar8rXrxaHl2/fl15eXny9vaWJJ05c0apqalW83XXXXepQ4cOFWq+Xn75ZfXu3dvy79QdRpsfAo+DrVy5UiaTSX/4wx907733asSIEZb76ZJ08eJF+fj4WL0TyGQy6Z577sn3KL0RnT59WpIUGRmp5557Th9//LEefvhh9e3bV8eOHZPEHL3yyit67LHHFB4eXmB7RZ+f38rIyNC8efP04osvWm6JVuT5SUtLU25ubr6g7Ovra/jPbo9p06apVatWat++vaRf11xKqtDztWrVKp08eVKvv/56vjajzY8hn9JytLlz5yoqKspmn88//1ydOnXS3LlzlZaWps8++0x16tTRpk2bNHr0aG3atEmtWrWSlP+liJL7vxjR3jmqUqWKJGnIkCF64YUXJEkPPPCAvv32W61cuVILFy6UZLw5snd+kpKS9MMPP+R7rcLvVdT56dSpk2U7MzNTAwcOVL169TR79myrvkabn+Lixav5vfbaa0pISNDmzZvzrY2rqPOVmJio2bNn65///Kfld3NBjDI/BB47jB49Wv369bPZp2HDhjp16pSWL1+uXbt2WcJNq1attHfvXi1fvlxLlizRvffeq0uXLln9gTGbzUpLS3PrFyPaO0d3/lfQvHlzq7ZmzZrp/PnzkmTIObJ3fmJiYvTTTz+pQYMGVm1DhgxR+/bttXnz5go9P3dcv35dERERkqT169fLy+u/38tjxPmxFy9eLdj06dO1ceNGff7552rcuLFlv5+fn6Rfrwr+9s9XRZmv/fv3Ky0tTQ8//LBlX25urvbs2aMVK1YoISFBknHmh8BjBx8fH/n4+BTZ78aNG5KU738PHh4eysvLkyS1b99e169f1/79+y1rDPbv36/MzEy3fjGivXN03333qV69ekpMTLTaf+LECbVs2VKSMefI3vmZMWNGvi++7dChg+bMmaOnnnpKUsWeH+nXNTsREREym836+OOPVaNGDat2I86PvX774tU+ffpY9u/YsUO9evVyXWEuNHXqVG3cuFHx8fFq1qyZVdt9990nPz8/7dixQ+3atZMk3bx5U3v37s131dCInnrqKbVt29Zq39ixYxUQEKBXXnlFTZs2NdT8EHgcqFmzZvrDH/6gSZMmae7cuapTp47i4+O1Y8cOxcTESPr1ysbjjz+uiRMnatGiRTKbzZo4caKeeOIJwz89Iv16aXT8+PF66623dP/996t169b65JNPdODAAb399tuSKvYc1a9fX/Xr18+3v2HDhpb/mVbk+bl27Zr69u2ra9euad26dbpx44blPxq1a9dWlSpVKvT8SLx49bcmT56s9evXa+3atfL29rasSalevbpq1Kghk8mk0aNH65133lFgYKCaNm2qqKgoVa9eXc8++6yLq3c+b29vywLuO6pVq6batWtb/gNqpPkh8DiQp6enPvroI7355psaMGCAMjMz1aRJEy1dulTdu3e39Pv73/+uqVOnqm/fvpKk7t27W/6xrwjGjBmjW7du6X//93+Vnp6uFi1a6OOPP7bcBpSYo6JU1Pk5cuSIDhw4IEkKCQmxavvtGp+KOj/Sry9eTU9P14IFC5SamqqgoKAye/FqeRMdHS1Jllc63DF16lRNnz5dkjRhwgRlZWXp1VdfVUZGhkJCQrRx40bVrFmzzOstj4w0P7yHBwAAGB6PpQMAAMMj8AAAAMMj8AAAAMMj8AAAAMMj8AAAAMMj8AAAAMMj8AAoljNnzsjb21vr1q0zxHmMaPTo0VbvtQJA4AEqlLi4OHl7e+vjjz/O19azZ0+bbffdd5/MZl7bVVKtWrWyvNnW29tb9evXV7du3fSPf/zD1aUBFQJvWgYqkDtfErh3716rV8Pfvn1bhw4dUuXKlQtt69Spk0wmkxo1aqSUlBR5eno6tdayOk9ZCg4O1ksvvSRJSk1N1erVqzV69GhlZ2frT3/6k2uLAwyOwANUIL6+vgoICNDevXut9n///fe6ceOG+vXrV2hbWFiYpF+/D+23307uLGV1nrJUt25d9e/f37I9cOBAtW3bVsuWLSPwAE7GLS2ggnn44Yf1008/KSMjw7IvISFB9erVU//+/Qtsu3OcVPDamsjISHl7e+vEiROaOHGimjRpogYNGmjw4MFKT0+3On+rVq30zDPP6NChQ3ryySdVt25dBQcH6/3337fqV9rzmM1mRUVFKTg4WPXq1VN4eLj279+vp556yvLN83dER0erQ4cOql+/vho3bqwuXbpoxYoVRc5lSkqKjh8/rlu3bhXZtyC+vr4KDAzUqVOn8tW+fPlydejQQX5+fmrSpImGDx+upKSkfGOsXbtWISEh8vPzU8eOHfXPf/6zRLUARkfgASqYsLAw5eXlaf/+/ZZ9CQkJCg0N1UMPPSRJ+dq8vLzUtm3bIsceOnSoLly4oNdff10vvvii4uPjNWXKlHz9zpw5owEDBig0NFTz5s1T48aN9dprr+mrr76y6zPYc545c+Zo7ty5atGihWbPnq127dqpX79+unDhglW/1atXa/LkyWratKnmzZun1157TSEhIZagZ8usWbPUvn37fGPa6/bt27pw4YJq165ttf+VV17R9OnT1aZNG0VGRmrEiBHatm2bunfvbhVGY2JiNG7cONWqVUtvvvmmnnjiCY0cOVLff/99ieoBjIxbWkAFc+dKTUJCgsLDwyVJ+/bt08SJE3X33XerRYsW+dratm2rqlWrFjl2s2bNtHz5csu22WzW3//+d73zzjuqVauWZf9//vMfffrpp+ratask6fnnn9f999+vVatWqVu3bqU+zy+//KIlS5YoPDxc69evl8lkkiS1bNlSL730kurXr285dsuWLQoKCtLq1auLPG9p3bp1S2lpaZJ+XcOzaNEipaamatSoUZY++/bt08qVK7V06VI999xzlv09e/ZU165dtXz5ck2ZMkW3b9/Wm2++qRYtWuiLL76w3P575JFH1LdvX/n7+zv98wDuhCs8QAUTEBAgPz8/y1qdEydO6OLFi5Y1OmFhYfnaOnToYNfYQ4cOtdru2LGjcnNzdf78+Xw13Ak7klS1alU9+OCDOn36tEPO8/XXX+vWrVsaNmyYJexI0qBBg6yClyTVrFlTSUlJOnTokF3n/q1ly5YpIyND9913n139d+7cqYCAAAUEBKhDhw6KjY3VkCFDNGvWLEufTz75RDVq1FB4eLjS0tIsP/Xq1VNAQIB27twpSfruu+908eJFDRkyxGqtU7du3dSiRYtifxbA6LjCA1RAoaGh+vLLL5WTk6OEhARVq1bN8t6W0NBQxcTEWNokWcJQUX5/VcHb21uSdPnyZZv97vT917/+5ZDznDt3TtKvweq3KleunC+cvPzyy9q5c6cee+wxNW7cWI8++qj69OmjLl262FVLcbRt21YzZ85Ubm6ufvzxR0VFRenixYuqXPm/v4pPnDih69evKzAwsMAx7gS4O5+xoH5NmzblthbwOwQeoAIKCwtTXFycDh8+rISEBIWEhFj+0Q0NDdXNmzctbZUqVVL79u3tGtfDw6PA/b9/f4+9/Up7Hnv6tGjRQgcOHNC2bdu0fft2bdmyRStXrtSQIUP07rvv2lWPverUqWO5svXYY4+pRYsWioiI0N/+9jeNHTtWkpSXl6c6deoUumi6WrVqVp/jt1ew7uB9SUB+3NICKqA7t6gSEhKUkJBgdQWncePGqlu3rqUtODg4322g8u7OFaATJ05Y7b99+7bOnj2br3/16tXVu3dvLV68WEePHlVERIRWrlxZ4sXI9vrjH/+oLl26KCoqStevX5ckNWnSRBkZGQoJCVHXrl3z/dwJn40aNZIkHT9+PN+4v//cAAg8QIXUqlUr1ahRQ5s2bVJiYmK+W1ahoaGFtrmDrl27qnLlyoqOjra62hETE6MrV65Y9f394+yVK1dWcHCwJFk9EVWQ0j6WLkkTJkzQ5cuXtXLlSklS3759lZeXp7feeitfX7PZbFn03LZtW/n6+urDDz/UzZs3LX2++uor/fTTTyWuBzAqbmkBFZCHh4cefPBBff3116pUqZIefPBBq/bQ0FC99tprkmT3guXyxNfXV+PGjdNf//pXPfvss3ryySd18uRJ/d///Z+aNGlidRvo6aeflq+vr8LCwnTvvffq1KlTWr58uVq2bFnk4t9Zs2bpH//4h77//nu7Fy7/Xrdu3RQcHKylS5dqxIgR6tChg0aOHKmlS5fqhx9+0OOPP65q1arpzJkzio+P1wsvvKCJEyfK09NTb7zxhsaPH68ePXooIiJCly5d0t///ncFBQVZrhgB+BVXeIAK6s7j6UFBQfluWf32qo47XuGRpDfeeEOvvfaa/v3vf2vGjBk6dOiQYmNjVatWLaunmoYMGaKsrCwtW7ZMkydP1oYNG/Tcc8/ps88+U6VKZfMrcty4cUpJSVFMTIwkaf78+Vq2bJkyMzMVGRmpmTNnavPmzXrsscf0P//zP5bjXnjhBS1evFgZGRmaOXOm/vnPf+qDDz5QmzZtyqRuwJ2YMjIyWN0GoELIzc1V06ZN1bNnTy1evNjV5QAoQ1zhAWBIWVlZ+fatW7dOly9fVufOnV1QEQBXYg0PAEPauHGjVq1apSeeeEK1a9fW4cOHtW7dOt1///3q1auXq8sDUMYIPAAMKTg4WNWqVdP777+vK1eu6J577tGLL76oGTNmqEqVKq4uD0AZYw0PAAAwPNbwAAAAwyPwAAAAwyPwAAAAwyPwAAAAwyPwAAAAwyPwAAAAw/t/Z9o1ybkWlboAAAAASUVORK5CYII=\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": [ "-21.1334" ] }, "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.0748351036816" ] }, "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": [ "14.115" ] }, "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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Do8n9OnTR3369JEkTZo0qcKyq6++Wp9++mmFeW+99Za6deumffv2qV27dtVuOywsTKGhoW6tFwAA+Ce/eg7P2bNnJUkhISE1rtu7d2+1bt1aAwcO1Ndff+3hygAAgC/z6hGey1FSUqIXX3xR9957ryIjI6tc79prr9XcuXPVqVMnlZSUaMWKFRo0aJDWrVunHj16VDnOarV6omyPbdfX1da+Jdd6P3MmUMXFRU6PLy0tdXq8K2Mv8Fbtro73du9nzpyV1eq/j/Tg97328cW+zWZztcsdCjxFRUWaN2+ebrnlFt15551uKexylJWVafz48Tp9+rSWL19e7bpms7lC0127dtXhw4c1f/78agNPTd8oZ1itVo9s19fV1r4l13s/fTpX9esHOT0+MDDQ6fGujL3AW7W7Ot7bvTdu3Ehms3+eguf3vfb17q99O3RKKygoSG+99ZaOHj3q6XoqKSsr05gxY/TDDz9o9erVatq06WVvo3Pnztq/f78HqgMAAP7A4VNa7du3v+KhobS0VI8++qh++uknrVu3TuHh4U5tZ+/evU6PBQAA/s/hwPPyyy9r1KhRuu2229S3b1+3fHh+fr49RJWXl+vo0aPas2ePmjRpooiICI0aNUqZmZlavny5TCaTcnJyJEmNGze238Y+YcIESdLChQslSe+++66io6PVtm1blZSUKDU1VevXr9fixYvdUjMAAPA/Dgeet99+WyEhIUpISFDz5s113XXXVXp2jslkUmpqqsMfnpmZqQEDBtinLRaLLBaLEhISNH36dG3YsEHSn3dc/beUlBT7k58vPs1WWlqql156SdnZ2QoKClLbtm2Vmppqv/0dAADUPg4Hnp9//lkmk0ktWrSQJB0+fLjSOpf7rq2ePXsqLy+vyuXVLbtg/fr1FaanTJmiKVOmXFYdAADA2BwOPHv37vVkHQAAAB7jVw8eBAAAcMZlBZ7z588rNTVVkydP1rBhw/T9999L+vPU0yeffKJjx455pEgAAABXOBx4Tp8+rT59+mjChAlavXq1Nm3apNzcXElSo0aN9MILL+if//ynxwoFAABwlsOBZ+bMmfr555+1cuVK7dq1Szabzb4sICBAAwYM0KZNmzxSJAAAgCscDjzr16/X+PHjdffdd1/ybqyYmBgdOXLErcUBAAC4g8OBJy8vT61atapyuc1mU0lJiVuKAgAA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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": "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U1Nlt9sdY1arVX379tWnn37q0eJ+++23S+7SslqtKi0tlXThouigoCAlJyc7xgsLC7V9+3Z17NhRkhQWFiYfHx+nORkZGUpLS3PMAQAA5uLyNUDr16/XyJEjdf/99+vUqUsvdGvRooVWrFjh0eJ69uyp1157TU2bNlWrVq20b98+JSQkaNCgQZIunPoaPXq05syZo5CQELVs2VLx8fHy8/PTgAEDJEl169bVkCFDNG3aNNlsNsdt8G3atFHnzp09Wi8AAKgcXA5Aubm5at68eZnjdrtd586d80hRF82ePVt///vf9dxzzyk7O1tBQUEaOnSo4xlAkvTMM8+ooKBA0dHRys3NVfv27ZWUlOR4BpAkzZw5U1arVVFRUSosLFRERITmz5/PM4AAADAplwNQkyZN9O2335Y5vm3bNrVs2dIjRV1Uu3ZtzZo1S7NmzSpzjsViUUxMjGJiYsqc4+vrq7i4OMXFxXm0PgAAUDm5fA3QwIEDtXTpUm3bts2x7eJdVImJifroo4/0+OOPe75CAAAAD3P5CNCECRO0e/duPfTQQ2rZsqUsFosmT56sU6dOKTMzU3369NGoUaOMrBUAAMAjXA5APj4+WrlypVatWqUPPvhAFotF58+fV7t27fTII4/oscce47k6AACgUnD7SdADBw7UwIEDjagFAACgXFzTqzC++eYbHTt2TJLUuHFjtWnThqM/AACg0nArAK1Zs0bTp0/Xzz//7HgQosViUcOGDTV9+nSODAEAgErB5QC0fPlyjRs3TiEhIXrxxRfVsmVL2e12/fjjj1q6dKlGjRqlc+fO6YknnjCyXgAAgP+ZywHolVdeUfv27fXRRx/J19f5DcEjRoxQ79699corrxCAAABAhefyc4AyMjI0cODAS8KPdOFBg5GRkfr55589WhwAAIARXD4C1KpVK504caLM8Z9//lmhoaEeKQrApU6cKFRGRr5h6xcUlBi2NgBUNC4HoBkzZmjo0KFq166d+vfv7zS2Zs0aLV26VEuXLvV4gQAuyMjI18SJnxu2fkxMR8PWBoCKxuUA9MYbbyggIEDDhg3T5MmT1bx5c1ksFh06dEi//PKLWrRooddff12vv/6642csFotWrlxpSOEAAADXyuUA9N1338lisSg4OFiSHNf71KhRQ8HBwSoqKlJaWprTz/BsIAAAUBG5HID2799vZB0AAADlxuW7wAAAAKoKAhAAADAdAhAAADAdAhAAADAdAhAAADAdAhAAADAdlwNQu3bttGHDhjLHP/nkE7Vr184jRQEAABjJ5QB09OhR5eeX/R6i/Px8HTt2zCNFAQAAGMmtU2BXerLzDz/8oNq1a//PBQEAABjtik+Cfuedd/Tuu+86PsfHx2vJkiWXzMvNzdW3336rHj16eL5CAAAAD7tiAMrPz1dmZqbjc15enkpLS53mWCwWXX/99Ro6dKgmT55sTJUAAAAedMUANGLECI0YMUKSdNttt2nWrFnq3bt3uRQGAABgFJdfhrpv3z4j6wAAACg3Lgegi86cOaPjx4/r119/ld1uv2T87rvv9khhAAAARnE5AP3666+aNGmS3n//fZWUlFwybrfbZbFYdOrUKY8WCAAA4GkuB6AJEyboo48+0ogRI3T33XerXr16BpYFAABgHJcD0MaNGzVq1Cj9/e9/N7KeS5w8eVJ//etf9emnn+rs2bNq1qyZ5syZo3vuuUfShSNPs2bN0pIlS5Sbm6v27dsrPj5et9xyi2ONoqIivfDCC1qzZo0KCwsVERGhOXPmqFGjRuXaCwAAqBhcfhBi9erV1aJFCyNruURubq569Oghu92ulStXKiUlRbNnz5bNZnPMmTt3rhISEvTyyy9r06ZNstls6t+/v86cOeOYExMTo3Xr1mnx4sXasGGDzpw5o8jIyMueygMAAFWfywGoX79++vTTT42s5RKvv/66brzxRiUmJqp9+/Zq1qyZ7rvvPoWGhkq6cPRn3rx5Gj9+vPr166fWrVtr3rx5Onv2rFavXi3pwrOLli1bphkzZqhLly4KCwtTYmKiDhw4oM2bN5drPwAAoGJwOQA99dRTOnnypJ588knt2rVLJ0+e1C+//HLJH09av3692rdvr6ioKLVs2VL33HOPFixY4Lj77MiRI8rMzFTXrl0dP1OzZk116tRJKSkpkqTU1FQVFxc7zQkODlZoaKhjDgAAMBeXrwFq3769LBaLUlNTtXLlyjLnefIusMOHD2vx4sUaM2aMxo8fr/3792vSpEmSpJEjRzqeUv3fp8Qufj5x4oQkKSsrS1arVQEBAZfMycrKKvN3p6ene6yP8li3oqJfzzl92kdFRYWGrV9cXOz2+u7Mv5b13WH0+pJ7/bqrIv79uDP/9OkzSk+v3HcB8++rqiUkJOSK4y4HoOeff/6KL0M1QmlpqW6//XZNnz5dktSuXTsdOnRIixYt0siRIx3zfl/XxVvyr+Rqc672F3ct0tPTDVm3oqJfz8rLy1GNGr6Gre/j4+PW+kVFhW7Nd3d9dxm9vqRKXb/R+7dOndoKCQm4+sQKin9fmY/LASgmJsbIOi4rKCjIcb3PRTfffLOOHz/uGJcuHOUJDg52zMnOznYcFQoMDFRJSYlycnJUv359pzmdOnUyugUAAFABuf0kaEkqKSlRXl6e6tSpo+uuu6YlXBIeHq4ffvjBadsPP/ygxo0bS5KaNm2qoKAgJScn64477pAkFRYWavv27ZoxY4YkKSwsTD4+PkpOTtbAgQMlSRkZGUpLS1PHjh0Nqx0AzMRiqabdu3MMW79RIz81aGDsET6Yi1vpZc+ePZoxY4a2b9+u4uJivf/++7rvvvuUk5Oj0aNHa+zYsbrvvvs8VtyYMWPUvXt3xcfH65FHHtG+ffu0YMECTZ06VdKFU1+jR4/WnDlzFBISopYtWyo+Pl5+fn4aMGCAJKlu3boaMmSIpk2bJpvNJn9/f02ZMkVt2rRR586dPVYrAJhZdnaBYmONu7EkPj6CAASPcjkA7dy5Uw899JCCgoI0aNAgLV261DEWEBCgs2fPatmyZR4NQHfccYeWL1+uGTNmKC4uTsHBwfrLX/6i4cOHO+Y888wzKigoUHR0tONBiElJSapdu7ZjzsyZM2W1WhUVFeV4EOL8+fNltVo9VisAAKg8XA5Af/vb39SiRQt99tlnys/PdwpAknTvvfdqxYoVHi+wR48e6tGjR5njFotFMTExV7xGydfXV3FxcYqLi/N4fQAAoPJx+TlAe/bs0R/+8Af5+vpe9u6pRo0aOW5LBwAAqMhcDkDVqlVTtWplT8/MzFTNmjU9UhQAAICRXA5AYWFh+uSTTy47du7cOa1atUodOnTwWGEAAABGcTkAPfvss/r88881btw47d+/X9KFN7Vv3LhRDz30kH766Sc999xzhhUKAADgKS5fBN2lSxclJiYqOjpa77zzjiRp9OjRstvtqlu3rhYtWqQ777zTsEIBAAA8xa3nAA0YMEC9e/dWcnKyfvzxR5WWlqp58+bq1q2batWqZVSNAAAAHuX2Y5yvv/569enTx4haAAAAyoXL1wBt2LBB0dHRZY5HR0eXeZE0AABAReJyAHrjjTf022+/lTleWFiouXPneqQoAAAAI7kcgL799luFhYWVOd6uXTt99913nqgJAADAUC4HoPPnz6ugoKDM8YKCAhUVFXmkKAAAACO5HIBat26tDz/8UKWlpZeMlZaW6sMPP1SrVq08WhwAAIARXA5ATz75pL766isNHjxYqampKioqUlFRkVJTU/X444/rq6++0qhRo4ysFQAAwCNcvg3+0Ucf1U8//aTY2Fh9+umnki68id1ut8tisWjSpEmKjIw0rFAAAABPces5QBMnTtSAAQO0bt06HT58WHa7Xc2bN1ffvn3VrFkzg0oEKoeiIj/t3p1j2PoFBSWGrQ0AZuNSACooKNBjjz2myMhI/eEPf9BTTz1ldF1ApZOVdU4zZqQYtn5MTEfD1gYAs3HpGqCaNWvq66+/VkkJ/wUKAAAqP5cvgr7nnnv05ZdfGlkLAABAuXA5AL388svas2ePpk6dqsOHD1/2dngAAIDKwOWLoO+8807Z7XYlJCQoISFB1apVk4+Pj9Mci8Win3/+2eNFAgAAeJLLAah///6yWCxG1gIAAFAuXA5A8+bNM7IOAACAcuPyNUAAAABVhVsB6OjRo3r66acVFhamxo0b64svvpAk5eTk6LnnnlNqaqoRNQIAAHiUy6fA0tLS1LNnT5WWlur//u//dPToUcdzgQICArRr1y4VFRXpH//4h2HFAgAAeILLAWj69OmqXbu2Nm7cKKvVqpYtWzqNd+/eXR988IGn6wMAAPA4l0+Bffnllxo+fLgCAwMvezdY48aNdeLECY8WBwAAYASXA9D58+fl5+dX5vivv/4qq9XqkaIAAACM5HIAat26tbZu3XrZMbvdrnXr1iksLMxTdQEAABjG5QA0evRorV27VrNnz9apU6ckSaWlpfr+++/15z//WXv37uUt8QAAoFJw+SLoRx99VMeOHdPf//53zZo1y7FNkqxWq1566SU98MADxlQJAADgQW49B2j8+PHau3evXnrpJQ0bNkx/+tOf9OKLL2r37t0aM2aMUTU6zJkzR/Xq1VN0dLRjm91uV2xsrFq1aqUbb7xRffr00cGDB51+rqioSNHR0brpppvUsGFDDRo0SBkZGYbXCwAAKqarHgEqKirShg0bdPjwYd1www3q0aNHuYSd39u1a5eWLFmiNm3aOG2fO3eu4wWtISEhmj17tvr3769du3apdu3a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sDAlJyc7bU9OTlbHjhXrwmEAAGA809wFNnbsWI0aNUrt27dXx44d9eabb+rkyZOKiorydmkAAKCcmSYAPfLIIzp16pTi4uKUmZmpW265RStXrlSTJk28XRoAAChnprgNHgAA4L+Z5ghQeduzZ4/mzZunlJQUZWVlyWKxyGazqWPHjhozZoxuv/12b5foMefOnVP16tUdn3/66SclJibq0KFDCgoK0rBhwxQWFua9Ag3A/mX/VhXs36q7f824b93BESADfPTRR/rTn/6ke+65R926dZPNZpPdbld2draSk5P1xRdf6K233lKfPn28XapH3HDDDUpLS5PNZtO+ffvUs2dPNWvWTLfffrsOHDigb7/9Vh9//LHat2/v7VI9gv3L/mX/Vl5m2r9m27fuIgAZ4K677tKAAQP03HPPXXb8lVde0cqVK7Vjx45yrswY/v7++v7772Wz2RQZGSlfX1+99dZbqlbtwk2GY8eOVWZmplavXu3lSj2D/cv+Zf9WXmbav2bbt+4yxW3w5e3QoUN66KGHyhzv27evfvrpp3KsqPx88803Gj16tOMLJklPPvmk9u3b58WqPIv9y/5l/1ZeZt2/Zti37iIAGaB58+b66KOPyhz/6KOP1KxZs/IryGAWi8XxRO1q1aqpVq1aTuO1a9fW6dOnvVGaIdi/7F/2b+Vlpv1rtn3rLi6CNkBMTIyGDRumrVu3qkuXLgoMDJTFYlFmZqY2b96szz//XIsXL/Z2mR5jt9sVFhYmi8WigoICffPNN7r11lsd44cOHVJgYKAXK/Qs9i/7l/1beZlp/5pt37qLAGSAfv36qUGDBpo/f74SExMdr+AIDAxUhw4dtH79enXo0MHLVXpOQkKC0+cWLVo4fd61a5cefPDB8izJUOxf9i/7t/Iy0/412751FxdBAwAA0+EIEPA/KCkpUU5OjiwWi2644QZZrVZvlwTARXx/zY2LoA3www8/yG7/fwfWtm/frscff1zh4eHq16+f1q9f78XqPC84OFhPPfWUdu/e7e1Sys26devUo0cPNWjQQK1atVJoaKgaNGigHj16XPECy8pqx44dmjp1qubMmaPjx487jeXm5qpv375eqszz+P5WfWb6/prpu+suApABOnTooOzsbEnS1q1b1adPH50/f179+/dXrVq1NGTIEH322WdertJz8vPz9cUXX+iBBx5Qp06dtGDBAuXm5nq7LMO89dZb+vOf/6zQ0FAtXLhQH330kdatW6eFCxeqVatWGjZsmJYsWeLtMj3m448/Vp8+ffTll19q5cqV6tSpk/797387xs+dO6dt27Z5sULP4vvL97eqfH/N9t11F9cAGeC/Hz7Vr18/hYSEKD4+3jH+4osvKiUlRRs2bPBilZ5z8WmjP/74o5YsWaIPP/xQpaWleuihhzR06FB16tTJ2yV61O23364JEyboj3/842XHly5dqldeeUWpqanlW5hB7r//fj3wwAOaNGmSJGnhwoX661//qvnz56tv377KyspSq1atdOrUKS9X6hl8f/n+VpXvr9m+u+7iCJDB0tLSNGjQIKdtkZGR+u6777xUkeddPF0QHh6uefPm6eDBg5oxY4a+/fZb9enTR3feeafeeOMNL1fpOSdOnNBdd91V5nh4eLhOnjxZjhUZKy0tTZGRkY7PI0aM0D//+U+NGjVKa9eu9WJlxuP7y/e3MjPzd9cVBCCD5Obm6tdff1WNGjXk4+PjNFa9enUVFhZ6qTLPu/igrYvq1KmjESNGaOvWrdq4caPCw8M1e/ZsL1Xnea1atbric0LeeusttWrVqhwrMlaNGjX066+/Om3r16+f5s2bp9GjR+v999/3UmXG4fvL97cqMON31x3cBWaQjh07SrrwX1d79+5Vu3btHGMHDx5UgwYNvFWax/33BaO/1759e7Vv316xsbHlWJGxXnrpJUVGRmrjxo2XPEhty5Yt+vnnn7Vy5Upvl+kxt912mz7//PNL3pDdr18/lZaWauTIkV6qzDh8fy/g+1u5mfG76w4CkAHWrVvn9PnGG290+nz06FENHTq0PEsy1ODBg+Xr63vFOb9/BHtlds899+jLL7/Um2++qV27dik5OVnShQep9e7dW1FRUWratKmXq/ScqKioMi+U7N+/v0pLS/XWW2+Vc1XG4ft7Kb6/lZPZvrvu4iJoAABgOlwDVE727NmjtWvXau/evd4upVxU5X5zcnK8XUK5ot+qzWz9XvT7a2NSUlK0fft2FRQUeKki45ipV3cQgAwwY8YMbdy4UZKUnZ2tBx54QN26ddPw4cPVtWtX9ejRw/GckarAbP2GhISoX79+SkpKUnFxsbfLMRz9Vm1m6/fHH39U+/bt1aJFCz3wwAPKycnRgw8+qJ49e6p3797q0KGDvv/+e2+X6RFm6vVaEIAM8O677yooKEiSNHXqVNntdu3evVu//PKL9uzZo+uuu05TpkzxcpWeY7Z+7Xa7SkpKNGLECLVq1UovvPCC0tLSvF2WYeiXfquSqVOnqmnTplq7dq1CQkI0YMAAWSwWHThwQAcPHtTNN9+s6dOne7tMjzBTr9eCa4AMEBQUpJ07d6pp06a67bbbtGDBAoWHhzvGv/76aw0cOLDKJG+z9XvxQXlFRUVatmyZli9frp9//lkdO3bU0KFD9fDDD1/1otLKhH7ptyr126JFC61du1a33nqrzpw5o6ZNm2r9+vWOZwOlpqZq4MCBSk9P93Kl/zsz9XotOAJkgKZNm+rgwYOSpGrVLv0rtlgsVeo5Imbr96Lg4GDFxMRo//79evfdd+Xv769x48YpNDRU0dHR3i7P4+iXfquCc+fOOe5q8/PzU7Vq1ZzucqtTp06V+feVmXq9FgQgA/zpT3/S1KlT9cMPP2jkyJGaOnWqfvrpJ0nS4cOH9Ze//EXdunXzcpWeY7Z+f//gOIvFoh49euidd97RN998o3Hjxuk///mPl6rzPPql36rU7y233KIlS5bIbrdr2bJlCggIUFJSkmN81apVatGihRcr9Bwz9XotOAVmkL/85S9auHChmjdvrqNHj+rcuXO67rrrdP78ebVr104rVqxQYGCgt8v0GDP1+9/vijID+q3azNbvZ599pieeeELnz5+Xj4+PkpKS9NRTT8nPz09Wq1Vff/21Fi1apP79+3u71P+ZmXq9FgQgA6Wnp+vjjz/W4cOHVVpaqqCgIIWHh6tz586X/FdXVWCWfmfNmqWnn35a119/vbdLKRf0W7WZrV9JOnLkiFJTU3X77berSZMmysrK0sKFC1VQUKDu3bsrIiLC2yV6jJl6dRcBCAAAmA7XAAEAANMhAHlBv379FBYW5u0yyg39Vm30W7XRb9Vlpl4vh5ehesEdd9yhRo0aebuMckO/VRv9Vm30W3WZqdfL4RogAABgOhwBMkhGRobefPNNpaSkKCsrSxaLRTabTeHh4YqKiqpyqZt+6bcqoV/6rSrM1Ku7OAJkgO3bt2vgwIEKCgpS165dZbPZZLfblZ2dreTkZGVmZmrVqlVOr4uozOiXfum38qLfqtuvmXq9FgQgA3Tu3FkdOnTQ7NmzLzs+adIk7dy5U8nJyeVcmTHo1xn9Vm7064x+Ky8z9XotCEAGuPHGG7V161aFhIRcdvz7779XRESETp48Wc6VGYN+ndFv5Ua/zui38jJTr9eC2+ANEBQUpB07dpQ5vmPHDgUFBZVjRcaiX2f0W7nRrzP6rbzM1Ou14CJoAzz11FN69tlntWfPHnXu3FmBgYGyWCzKzMzU5s2b9c477yg2NtbbZXoM/dIv/VZe9Ft1+zVTr9eCU2AGSUpK0j//+U+lpqaqpKREkmS1WhUWFqaxY8dWuZfP0S/9ViX0S79VhZl6dRcByGDFxcXKycmRJAUEBMjHx8fLFRmLfum3KqFf+q0qzNSrqwhAAADAdLgIGgAAmA4BCAAAmA4BCIDpHDlyRPXq1dPy5cu9XQoALyEAAaiwli9frnr16jn+BAUFqVWrVnrkkUc0f/58nTlzxtslAqikeA4QgApv8uTJat68uYqLi5WVlaUvvvhCMTExSkhI0Lvvvqtbb73V2yUCqGQIQAAqvG7duunOO+90fH722We1ZcsWDRo0SIMHD9bOnTtVs2ZNL1YIoLLhFBiASum+++5TdHS0jh07ppUrVzq2//jjj/rzn/+sFi1aKDAwUJ06ddLbb7991fWOHj2q5557TnfeeacaNGigJk2aKDIyUgcPHnTMOX36tBo0aKBJkyZd8vO5ubkKDAzUCy+84JkGARiKAASg0oqMjJQkbdq0SZKUlpambt266euvv9bYsWMVGxurxo0ba9y4cfrnP/95xbX27t2rbdu2qW/fvoqNjdXo0aO1d+9e9e7dW5mZmZKkOnXq6MEHH1RSUpLOnz/v9PPvv/++zp0756gJQMXGKTAAlVajRo1Up04d/fTTT5IuXCsUFBSk5ORkXX/99ZKkYcOGKSoqSrGxsRo6dKj8/Pwuu9YDDzygfv36OW2LjIzUXXfdpWXLlmnixImSpMGDB2vVqlXatGmTunfv7pi7cuVKtW7dWm3btjWiVQAexhEgAJVarVq1dPbsWeXm5mrz5s16+OGHVVBQoJycHMef+++/X2fOnNHevXvLXOdiYJKk3377TadOnVLdunXVokULpaamOsY6d+6shg0basWKFY5tR44c0Y4dOzRo0CBDegTgeRwBAlCpnT17VvXr19ePP/4ou92ul19+WS+//PJl52ZnZ5e5TmFhoWbOnKmVK1fq5MmTTmMBAQGO/12tWjU99thjSkxM1JkzZ1S7dm2tXLlSFotFAwYM8ExTAAxHAAJQaWVkZOj06dO66aabVFpaKkkaM2aM06mp/9a6desy15o8ebKWLl2qkSNHKjw8XHXq1FG1atUUExPjWPuiwYMH67XXXtO6dev0+OOPa9WqVYqIiFDDhg091xwAQxGAAFRaF09Dde3aVc2aNZMkXXfddercubPbayUlJWnQoEGaNWuW0/bc3FzdcMMNTttCQ0N1xx13aMWKFWrVqpW+//57TZgw4Zp6AOAdXAMEoFLasmWL4uLi1LRpUz322GOy2WyKiIjQv/71Lx0/fvyS+Vc6/SVJVqtVdrvdadvq1at14sSJy84fPHiwtm7dqrlz58rPz099+/a99mYAlDuOAAGo8D777DMdOnRI58+f1y+//KLPP/9cycnJaty4sd599135+vpKkl555RX16NFDd999t4YOHaoWLVooJydHX3/9tTZt2qRjx46V+Tt69eql9957T7Vr11br1q21f/9+JSUlOY4s/d6AAQM0ZcoUrV27Vo899phq1aplROsADEIAAlDhXTwtVb16dfn7+6t169aKjY3VE088odq1azvmtWzZUps3b9bs2bO1atUqZWdnKyAgQKGhofrb3/521d/h4+Oj999/X2+//bbCwsK0Zs0aTZ069bLz/f391aNHD61bt467v4BKyJKbm2u/+jQAwO8NGzZM27Zt04EDB2S1Wr1dDgA3cA0QAFyDnJwcrV+/Xo899hjhB6iEOAUGAG44fPiwUlJS9M4778hut2v48OHeLgnANSAAAYAbtm3bprFjxyo4OFgJCQlq0qSJt0sCcA24BggAAJgO1wABAADTIQABAADTIQABAADTIQABAADTIQABAADT+f8Az5F3kYBbkpQAAAAASUVORK5CYII=\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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/Pjxatu2rSRp4MCBGjNmjLZu3aqIiAhJUv/+/e3+JV/6Yw1LYmKifHx81KxZM73wwguKi4vTpEmT5O3tbRd77tw5JSYmavXq1bb3adCggb7++mstWrRIXbt2dajun376SYsXL1arVq1szy60WCyaMWOGLdcDBw5ow4YN+uijj9SuXTtJ0oIFC9SiRQutXLlSjz76qCTp4sWLmjZtmtq0aWOLiYiI0GeffaYOHTpo3rx5iomJ0eDBgyVJTZo00d69ezV37lx1797dllPv3r1tc0rSkSNHJElms9luzczlP4/FixfrlVdesdU+Z84cff7551q0aJH++c9/2mLHjx+v9u3bS5LGjBmjbt266ejRo7bzFxoaWuz7XMnhw4f16quv6rnnnrMdy8rKktlstovz8/OTu7u7srKybDF169a1i7n0PVlZWWrQoIHDOVxCMwMADnC3npB7zizj3sBvlmSimQFQtnr16qWuXbtq586dSk5O1qeffqp58+ZpwoQJGjlypCRp7969mj59ur777jvl5uba/kX/yJEjds1M8+bNbf/t7+9/xWO//fab3fs3b95cPj4+tteRkZE6f/68Dh06pJtvvtkuNjU1Vfn5+YqOjrZbLH7hwgWFhIRctc7U1FQFBQXJYrGooKBAd955p22th/RHY9eiRQu7eDc3N0VGRtqO1axZU82aNdOPP/5oO+bm5qZWrVrZXoeEhCgwMFA//vijOnTooNTUVD388MN2udxxxx1Frsy0bNnyqvlfyaFDh3ThwgVbIyVJ7u7uioyMtMtRsj8PderUkST99ttvtvP35ZdfOvy+WVlZ6tOnj6KiojR8+HC7seIW8f/5+OUxl/48sQEAAAAASszLy0tRUVGKiorS2LFjFRcXp2nTpikuLk4XLlxQnz591KFDBy1YsEBms1k5OTnq3r17kYXqVapUsf33pV9MLz9WWFh43Xle+t53331X9erVsxvz8Lj6r7QNGzbUypUrbbuZeXp62o17enraLfi/2vqNkv7SfaX4y49dfhXKEVdrAi4/dqVzcz1rVDIzM9WzZ081bdpUCxYssHsff39/7d692y4+JydHFovFdvXF39/fdpXmkuzsbEkqclXHUayZAQAAgE1YWJguXryo/Px8paWlKScnRxMmTFC7du100003Fbm68lfs27dP5879/3N4vvzyS1WtWlUNGza8Yl6enp46fPiwGjVqZPd1rSszVatWVaNGjdSgQYMijcyVhIeHq7CwUMnJybZjp0+f1r59+xQWFmY7VlhYqD179theHz58WMeOHbPFhIWFadeuXXZz79y5U+Hh4dfMV/rj9rfiNGrUSFWrVrVb8G+xWGxrV0rb8ePHdf/99+umm27Sm2++WaSBjIyMVGpqqjIy/v8xCUlJSfL09LTdvhcZGamdO3fardFKSkpSYGCg6tevf1150cwAAAC4oBMnTqhHjx5asWKFvv/+e6Wnp+t///ufXnnlFd19992qUaOGgoOD5enpqYULFyo9PV0bN27USy+9VGo5WCwWPfXUU9q/f7+SkpI0efJkPfbYY1e8UlG9enXFxcVpwoQJWrZsmQ4ePKiUlBQtXrxY//nPf0otJ+mPXcTuvfdejRgxQl988YV++OEHDR48WNWrV1ffvn1tcR4eHoqPj1dycrJSUlIUGxur8PBwdejQQZIUFxenFStWaOHChTpw4IAWLFiglStX6umnn77q+9erV08mk0kbN25Udna2zp49WyTG29tbjz/+uCZPnqxNmzYpNTVVzz33nH777TcNGjSoRPXefvvteuONN4odP3bsmO677z75+/srISFBOTk5yszMVGZmpq3h6tixo5o2baqhQ4fq22+/1datWzVx4kQ9+uijqlGjhiQpOjpa1apV07Bhw7Rv3z6tWbNG//73vzVs2DBuMwMAAKhogoK8NWtW+zJ9P0d5e3vr9ttv1+uvv66DBw/q/PnzCgwMVHR0tEaPHi1Jql27tubPn68pU6Zo0aJFat68uV588UW7rZv/inbt2ik8PFw9evRQXl6eevToocmTJxcbP378eJnNZs2bN08jR45U9erV1aJFCz3zzDOlks+fvfbaaxo3bpz69++vgoICtW7dWqtWrbLbicvT01MjR47U0KFDdeTIEd122216++23bb+Y33///ZoxY4ZeffVVxcfHq169enr55ZftFv9fSd26dRUfH6+pU6fq6aefVr9+/TR//vwicZd+VsOHD9epU6d0yy23aNWqVbZ1MY66dAWuOFu2bNGBAwd04MCBImuZvv32W9WvX1/u7u5asWKFRo0apW7dutk9NPOSmjVr6oMPPtCoUaMUFRUlX19fDR8+XE899VSJ8v0zU25ubtk/RtRFpaWlKTQ0tLzTKDPUW7lVtHq9rF8Z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OTk6duyYbUOAiIgIValSRUlJSerbt68kKSMjQ6mpqbY1MpGRkTp79qySk5Ntx5KTk3Xu3Dm7dTQAAAAAnIvDzcyPP/4ok8mk4OBgSdKvv/5aJKakt22dPXvWdpWlsLBQR44cUUpKimrVqqVatWpp2rRp6tmzpwICAvTrr79qypQpMpvNuv/++yVJNWvW1IABAzRx4kSZzWbVqlVL48ePV/PmzdWhQwdJUlhYmDp37qwRI0Zo7ty5slqtGjFihLp27cr9wgAAAIATc7iZ+e6770r9zb/55hv16NHD9johIUEJCQnq37+/Zs+erX379um///2vTp06pYCAAN11111asmSJqlevbvuel156Se7u7ho4cKDy8/PVvn17vf7663J3d7fFLFy4UGPHjtWDDz4oSerevXuZb2YAAAAAoHSV63Nm7rrrLuXm5hY7vnr16mvO4eXlpZkzZ2rmzJnFxtSqVUtvvPHG9aQIAAAAoIJyeAMASbJYLHrvvff01FNPKSYmRt9//70kKTc3Vx988IGOHz9uSJIAAAAAcDmHm5lTp06pS5cuGjJkiD788EN98skntl3EqlevrvHjx3P1AwAAAECZcbiZmTx5sn788UetXLlSe/futdvq2N3dXT169NAnn3xiSJIAAAAAcDmHm5mPPvpIgwcPVufOna+4a1njxo11+PDhUk0OAAAAAIrjcDOTm5urhg0bFjtutVp1/vz5UkkKAAAAAK7F4WYmJCRE+/btK3Z8x44datKkSakkBQAAAADX4nAz07dvXy1dulQ7duywHbt0u9mCBQu0bt06PfTQQ6WfIQAAAABcgcPPmRkxYoS++uor9ezZU02aNJHJZNK4ceN04sQJZWZm6r777tOQIUOMzBUAAAAAbBxuZqpUqaL33ntPK1eu1P/+9z+ZTCZdvHhRt956qx588EH9/e9/v+LGAAAAAABgBIebmUv69u2rvn37GpELAAAAADisxM2MJH3//fe2bZjr1aun5s2bc1UGAAAAQJkqUTPz/vvva9KkSTp69KjtoZkmk0l169bVpEmTuGIDoNxYLFYVnLto2PxVqvMPNgAAVDQONzPLly/XU089pdDQUE2ePFlNmjSR1WrVgQMHtHTpUg0ZMkTnz5/Xww8/bGS+AHBFlouFOnLkrGHzh5itqmLY7AAA4Ho43MzMnj1brVq10rp16+Tl5WU3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u7t7eacEwEF8fgHA+bEBgAF+/vlnWa3/f8Fr586deuihh9SmTRv16tVLH330UTlmV/qCg4MVFxenr776qrxTKTNr165V165dFRgYqPDwcIWFhSkwMFBdu3a96uJiZ7Vr1y5NmDBBL7/8so4cOWI3lpubqx49epRTZqWPz2/l50qfX1f67AJwTTQzBoiMjFR2drYkadu2bbrvvvt08eJF9e7dWz4+PhowYIA+/fTTcs6y9Jw7d07bt2/XPffco7Zt2+qNN95Qbm5ueadlmCVLlujxxx9XWFiYFi5cqHXr1mnt2rVauHChwsPD9cQTT+itt94q7zRLzYYNG3Tffffpiy++0Hvvvae2bdtq48aNtvHz589rx44d5Zhh6eLzy+e3snx+Xe2zC8A1sWbGAH9+UFmvXr0UGhqqWbNm2cYnT56s3bt3a/369eWYZem59JTpAwcO6K233tKaNWtUWFionj176rHHHlPbtm3LO8VS1bJlS40YMUKPPvroFceXLl2q2bNna+/evWWbmEE6d+6se+65R2PHjpUkLVy4UC+88IJef/119ejRQ1lZWQoPD9eJEyfKOdPSweeXz29l+fy62mcXgGviyozBUlNT1a9fP7tjMTEx+vHHH8spo9J36ZacNm3aaP78+dq/f7+mTJmiffv26b777tPtt9+uV199tZyzLD3Hjh3THXfcUex4mzZtdPz48TLMyFipqamKiYmxvX7yySf12muvaciQIfrwww/LMTPj8fnl8+vMXPmzC8B10MwYJDc3VydPnpSnp6eqVKliN1a1alXl5+eXU2al79JD2S6pUaOGnnzySW3btk2bN29WmzZtNGPGjHLKrvSFh4df9TkUS5YsUXh4eBlmZCxPT0+dPHnS7livXr00f/58xcbG6oMPPiinzIzD55fPb2Xgip9dAK6H3cwM0rp1a0l//KvnN998o1tvvdU2tn//fgUGBpZXaqXuz4ulL9eqVSu1atVKCQkJZZiRsaZOnaqYmBht3ry5yEP3PvvsMx09elTvvfdeeadZam655RZ9/vnnatmypd3xXr16qbCwUIMHDy6nzIzD5/cPfH6dmyt+dgG4HpoZA6xdu9budZ06dexe//rrr3rsscfKMiVD9e/fX15eXleN8fHxKaNsjHfnnXfqiy++0OLFi/Xll18qKSlJ0h8P3bv33ns1cOBA1a9fv5yzLD0DBw4sdpFw7969VVhYqCVLlpRxVsbh81sUn1/n5GqfXQCuiQ0AAAAAADgl1syUkT179ujDDz/UN998U96plInKXG9OTk55p1CmqLdyc7V6L7l8Lcnu3bu1c+dO5eXllVNGxnGlWgG4HpoZA0yZMkWbN2+WJGVnZ+uee+5Rp06dNGjQIHXs2FFdu3a1PceiMnC1ekNDQ9WrVy+tXr1aFy5cKO90DEe9lZur1XvgwAG1atVKjRs31j333KOcnBzdf//96tatm+69915FRkbqp59+Ku80S4Ur1QrAddHMGODdd99VQECAJGnChAmyWq366quv9Ntvv2nPnj3y8PDQ+PHjyznL0uNq9VqtVlksFj355JMKDw/XP//5T6WmppZ3WoahXuqtTCZMmKD69evrww8/VGhoqKKjo2UymfTDDz9o//79uummmzRp0qTyTrNUuFKtAFwXa2YMEBAQoOTkZNWvX1+33HKL3njjDbVp08Y2/u2336pv376V5l/EXK3eSw9VLCgo0LJly7R8+XIdPXpUrVu31mOPPaYHHnjgmguqnQn1Um9lqrdx48b68MMPdfPNN+vMmTOqX7++PvroI9uzZ/bu3au+ffsqLS2tnDP961ypVgCuiyszBqhfv772798vSXJzK/ojNplMleo5Fa5W7yXBwcGKj4/Xd999p3fffVe1atXSU089pbCwMI0ePbq80yt11Eu9lcH58+dtu7N5e3vLzc3Nbre2GjVqVJq/r1ypVgCui2bGAP/4xz80YcIE/fzzzxo8eLAmTJigQ4cOSZLS09P1/PPPq1OnTuWcZelxtXovf8igyWRS165d9c477+j777/XU089pU2bNpVTdqWPeqm3MtXbtGlTvfXWW7JarVq2bJn8/Py0evVq2/jKlSvVuHHjcsyw9LhSrQBcF7eZGeT555/XwoUL1bBhQ/366686f/68PDw8dPHiRd16661asWKF/P39yzvNUuNK9V66LcdsNpd3KmWCeis3V6v3008/1cMPP6yLFy+qSpUqWr16teLi4uTt7S13d3d9++23WrRokXr37l3eqf5lrlQrANdFM2OgtLQ0bdiwQenp6SosLFRAQIDatGmjDh06FPnX0MrAVeqdNm2ann76ad1www3lnUqZoN7KzdXqlaRffvlFe/fuVcuWLRUSEqKsrCwtXLhQeXl56tKli9q3b1/eKZYaV6oVgGuimQEAAADglFgzAwAAAMAp0cyUg169eikiIqK80ygz1Fu5UW/lRr2VlyvVCqDy8ijvBFzR3/72NwUFBZV3GmWGeis36q3cqLfycqVaAVRerJkBAAAA4JS4MmOQjIwMLV68WLt371ZWVpZMJpPMZrPatGmjgQMHVrp/DaNe6q1MqJd6KwtXqhWAa+LKjAF27typvn37KiAgQB07dpTZbJbValV2draSkpKUmZmplStXqk2bNuWdaqmgXuqlXudFvZW3XleqFYDropkxQIcOHRQZGakZM2ZccXzs2LFKTk5WUlJSGWdmDOq1R73OjXrtUa/zcqVaAbgumhkD1KlTR9u2bVNoaOgVx3/66Se1b99ex48fL+PMjEG99qjXuVGvPep1Xq5UKwDXxdbMBggICNCuXbuKHd+1a5cCAgLKMCNjUa896nVu1GuPep2XK9UKwHWxAYAB4uLi9Nxzz2nPnj3q0KGD/P39ZTKZlJmZqa1bt+qdd95RQkJCeadZaqiXeqnXeVFv5a3XlWoF4Lq4zcwgq1ev1muvvaa9e/fKYrFIktzd3RUREaHhw4erd+/e5Zxh6aJe6q1MqJd6KwtXqhWAa6KZMdiFCxeUk5MjSfLz81OVKlXKOSNjUS/1VibUS72VhSvVCsC10MwAAAAAcEpsAAAAAADAKdHMAAAAAHBKNDMAAAAAnBLNDAAAAACn9H9nkCifv7IQFAAAAABJRU5ErkJggg==\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.8.5" } }, "nbformat": 4, "nbformat_minor": 1 }