{ "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", "\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "plt.style.use('fivethirtyeight')\n", "\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Confidence Intervals ###\n", "We have developed a method for estimating a parameter by using random sampling and the bootstrap. Our method produces an interval of estimates, to account for chance variability in the random sample. By providing an interval of estimates instead of just one estimate, we give ourselves some wiggle room.\n", "\n", "In the previous example we saw that our process of estimation produced a good interval about 95% of the time, a \"good\" interval being one that contains the parameter. We say that we are *95% confident* that the process results in a good interval. Our interval of estimates is called a *95% confidence interval* for the parameter, and 95% is called the *confidence level* of the interval.\n", "\n", "The situation in the previous example was a bit unusual. Because we happened to know the value of the parameter, we were able to check whether an interval was good or not so good, and this in turn helped us to see that our process of estimation captured the parameter about 95 out of every 100 times we used it.\n", "\n", "But usually, data scientists don't know the value of the parameter. That is the reason they want to estimate it in the first place. In such situations, they provide an interval of estimates for the unknown parameter by using methods like the one we have developed. Because of statistical theory and demonstrations like the one we have seen, data scientists can be confident that their process of generating the interval results in a good interval a known percent of the time." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Confidence Interval for a Population Median: Bootstrap Percentile Method ###\n", "\n", "We will now use the bootstrap method to estimate an unknown population median. The data come from a sample of newborns in a large hospital system; we will treat it as if it were a simple random sample though the sampling was done in multiple stages. [Stat Labs](https://www.stat.berkeley.edu/~statlabs/) by Deborah Nolan and Terry Speed has details about a larger dataset from which this set is drawn. \n", "\n", "The table `baby` contains the following variables for mother-baby pairs: the baby's birth weight in ounces, the number of gestational days, the mother's age in completed years, the mother's height in inches, pregnancy weight in pounds, and whether or not the mother smoked during pregnancy." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "baby = pd.read_csv(path_data + 'baby.csv')" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Birth WeightGestational DaysMaternal AgeMaternal HeightMaternal Pregnancy WeightMaternal Smoker
01202842762100False
11132823364135False
21282792864115True
31082822367125True
4136286256293False
.....................
11691132752760100False
11701282652467120False
11711302913065150True
11721252812165110False
11731172973865129False
\n", "

1174 rows × 6 columns

\n", "
" ], "text/plain": [ " Birth Weight Gestational Days Maternal Age Maternal Height \\\n", "0 120 284 27 62 \n", "1 113 282 33 64 \n", "2 128 279 28 64 \n", "3 108 282 23 67 \n", "4 136 286 25 62 \n", "... ... ... ... ... \n", "1169 113 275 27 60 \n", "1170 128 265 24 67 \n", "1171 130 291 30 65 \n", "1172 125 281 21 65 \n", "1173 117 297 38 65 \n", "\n", " Maternal Pregnancy Weight Maternal Smoker \n", "0 100 False \n", "1 135 False \n", "2 115 True \n", "3 125 True \n", "4 93 False \n", "... ... ... \n", "1169 100 False \n", "1170 120 False \n", "1171 150 True \n", "1172 110 False \n", "1173 129 False \n", "\n", "[1174 rows x 6 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "baby" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Birth weight is an important factor in the health of a newborn infant – smaller babies tend to need more medical care in their first days than larger newborns. It is therefore helpful to have an estimate of birth weight before the baby is born. One way to do this is to examine the relationship between birth weight and the number of gestational days. \n", "\n", "A simple measure of this relationship is the ratio of birth weight to the number of gestational days. The table `ratios` contains the first two columns of `baby`, as well as a column of the ratios. The first entry in that column was calcualted as follows:\n", "\n", "$$\n", "\\frac{120~\\mbox{ounces}}{284~\\mbox{days}} ~\\approx ~ 0.4225~ \\mbox{ounces per day}\n", "$$" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "ratios = baby[['Birth Weight', 'Gestational Days']]\n", "\n", "ratios['Ratio BW/GD'] = baby['Birth Weight']/baby['Gestational Days']" ] }, { "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Birth WeightGestational DaysRatio BW/GD
01202840.422535
11132820.400709
21282790.458781
31082820.382979
41362860.475524
............
11691132750.410909
11701282650.483019
11711302910.446735
11721252810.444840
11731172970.393939
\n", "

1174 rows × 3 columns

\n", "
" ], "text/plain": [ " Birth Weight Gestational Days Ratio BW/GD\n", "0 120 284 0.422535\n", "1 113 282 0.400709\n", "2 128 279 0.458781\n", "3 108 282 0.382979\n", "4 136 286 0.475524\n", "... ... ... ...\n", "1169 113 275 0.410909\n", "1170 128 265 0.483019\n", "1171 130 291 0.446735\n", "1172 125 281 0.444840\n", "1173 117 297 0.393939\n", "\n", "[1174 rows x 3 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ratios" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is a histogram of the ratios." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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MjIy3V1GBbwvXYt+ug69dJ2qehkSElLlc90Wbvz9/RUaGuqw7brrrtOvv/5qH5fOn50JDAy0z8nNzbWfzWnVqpXKysqUl5enli1bOszp3bt3pceurik4LyMjg165SEZGhpo185Gnp9ndpdRIs2YN69x7gPela9FP16GXrnO5vXTbZamoqCj99NNPDtt++ukntWvXTpLUvn17+fv7KzU11T5eUlKinTt3KjIyUpIUHh4uDw8PhzlZWVlKT0+3zwEAAFcXt525mTZtmgYNGqSFCxdq1KhR+vbbb/XKK69o9uzZks5fjpo6daoWLVqkkJAQderUSQsXLlSTJk0UExMjSWrevLkmTJigOXPmyGKxqEWLFpo1a5bCwsLUr18/d700AADgRm4LNzfeeKPeeOMNzZ07V4mJiQoMDNQTTzyhe++91z5n+vTpKi4uVlxcnPLz8xUREaH169fLx8fHPmfevHkym82aNGmSSkpK1LdvXy1btkxmc/06/Q8AAFzDbeFGkgYPHqzBgwdXOm4ymRQfH6/4+PhK53h5eSkxMVGJiYm1USIAAKhn+G4pAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKG4LNwkJCfL19XX4ue666+zjNptNCQkJ6ty5s1q3bq2hQ4fq4MGDDvuwWq2Ki4tTUFCQAgICNGbMGGVlZV3plwIAAOoQt565CQkJUXp6uv1nx44d9rHFixcrKSlJCxYs0NatW2WxWDRy5EgVFRXZ58THx2vTpk1asWKFNm/erKKiIsXGxqqsrMwdLwcAANQBbg03DRs2lL+/v/2nZcuWks6ftUlOTtaMGTMUHR2trl27Kjk5WadPn9a6deskSQUFBVq1apXmzp2r/v37Kzw8XCkpKdq/f7+2bdvmxlcFAADcya3hJjMzU126dNENN9ygP//5z8rMzJQk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SdK4cePcVWK90aJFC/3444+yWCy688471bdvXz3xxBP28aVLl+rdd9/V1q1b3Vhl/eDv76+vvvpK7du31w033KBXXnlFUVFR9vFvvvlGo0ePvqS/kK9GF96bVqtVq1at0htvvKFjx44pMjJSEydO1IgRI+Tl5eXuMuuF4OBgbdiwQddff72KiorUvn17ffDBB7r55pslSWlpaRo9erQyMjJqtF/O3EAnTpzQ9ddfL0kKCgpSo0aN7I8lqUePHnwJqZM+++wzZWdna8eOHYqOjta4ceM0fvx4mUwmDR06VOPGjSPYXIKff/5ZQ4YMcdh211136aeffnJTRfVL+/btdfDgQUlSgwYV/9k3mUwqKSm50mXVe4GBgYqPj9d3332nN998Uy1atNADDzyg0NBQxcXFubu8euHs2bNq2rSpJKlJkyZq0KCB/bEkNWvW7JLem4QbqFmzZiooKLA/7t69u8Obq7S0lLs9Oyk4OFiffPKJfHx8dNttt2nfvn3uLqle279/v9LS0uTl5aWysjKHsfLycpWXl7upsvrlf/7nfzR79mz99NNPuu+++zR79mz98ssvkqTMzEw98cQTGjhwoJurrD9+/++hyWTS4MGDtXr1an3//fd64IEH9PHHH7upuvqlS5cuWrlypWw2m1atWiU/Pz+tX7/ePr527VoFBwfXeL+G+Cg4Lk9oaKi+/fZbhYWFSZK2bNniMH7gwAF17NjRHaXVSx4eHkpISFC/fv00fvx4/eUvfyEcXqJRo0bJZjt/5XzXrl2KiIiwj3377bcKDAx0V2n1yrRp0/Trr7/q5ptvVseOHXXkyBFFRESoYcOGOnfunLp3765XX33V3WXWGxfekxfTunVrxcXFcebGSY899pjGjx+vpUuXysPDQ+vXr9eDDz6orVu3ymw265tvvtHy5ctrvF/W3EDp6elq1KhRpQHm7bffVsOGDXX33Xdf4crqvxMnTui+++7T9u3btXPnTnXu3NndJdUbR44ccXjctGlTXXPNNfbHb775piRp7NixV7Su+iwjI0MffvihMjMzVV5eLn9/f0VFRalfv34E8BqYP3++HnroITVu3NjdpRjC4cOHlZaWph49eujaa69VTk6O/vnPf6q4uFiDBg1S3759a7xPwg0AADAU1twAAABDIdygWtHR0QoPD3d3GYZAL12HXroOvXQt+uk6l9pLFhSjWjfeeKPatm3r7jIMgV66Dr10HXrpWvTTdS61l6y5AQAAhsKZG0iSsrKy9Oqrr2r37t3KycmRyWSSxWJRVFSUJk2axF8hNUAvXYdeug69dC366Tq10UvO3EA7d+7U6NGj5e/vrwEDBshischmsyk3N1epqanKzs7W2rVrHW7Xjoujl65DL12HXroW/XSd2uol4Qbq16+fevXqpRdeeOGi44899pi++uorpaamXuHK6h966Tr00nXopWvRT9eprV4SbqDWrVtr+/btCgkJuej4jz/+qL59++rEiRNXuLL6h166Dr10HXrpWvTTdWqrl3wUHPL399euXbsqHd+1a5f8/f2vYEX1F710HXrpOvTStein69RWL1lQDD344IP629/+pn379qlfv35q1aqVTCaTsrOztW3bNq1evVoJCQnuLrNeoJeuQy9dh166Fv10ndrqJZelIElav369Xn75ZaWlpdm/fdlsNis8PFx//etfNXLkSDdXWH/QS9ehl65DL12LfrpObfSScAMHpaWlysvLkyT5+fnJw8PDzRXVX/TSdeil69BL16KfruPKXhJuAACAobCgGAAAGArhBgAAGArhBsAVtX37dvn6+mr79u3uLgWAQRFugKvcG2+8IV9fX/uPn5+funTpoqlTp+rYsWOXvN/ExES9//77Lqy0ct26dXN4Da1atVJ4eLji4uKUnZ0tSSovL1f79u01atSoCs9/88035evrW+XYpk2bKoxdf/31mjdvnsO2r7/+Wvfdd5+uv/56tWrVSm3bttUtt9yiWbNmKSMjw2Hu1KlTHepu27atunfvrj/96U/asGGDysvLL6ctwFWL+9wAkCQ9/vjj6tixo6xWq/bs2aPVq1dr586d2rlzp7y9vWu8v4ULF2rUqFEaNmyYw/Y+ffroxIkTatSokatKlySFhYXpoYcekiRZrVZ99913WrlypT7//HPt2LFDZrNZvXr10q5du1RWViaz2Wx/7q5du9SwYUPt2bPnomOSdPPNNzscb//+/fr11181ePBg+7YXX3xRzz77rAIDAxUTE6OgoCCdPXtWBw8e1Nq1a7Vs2TJlZmbKx8fH/hwPDw/94x//kCSVlJTo6NGj+vDDDzVx4kTdcssteuONN9S8eXOX9gowOsINAEnSwIEDddNNN0mS/vSnP+maa67R4sWL9dFHH7n0nh0NGjSQl5eXy/Z3QevWrRUbG+uwrXnz5lq4cKG+++47hYeHKyoqSp988on98QW7du3SqFGjtGbNmouOhYSEqGXLlg77/vjjj2WxWHTjjTdKkjZu3Ki5c+dq+PDhWr58uTw9PR3mP//881qyZEmFuhs0aFCh7ieffFIvvfSSnnnmGU2fPl3/+te/LqEjwNWLy1IALqp3796SpF9++cW+7ezZs3r++efVr18/tW/fXq1bt9bAgQO1efNmh+f6+vrKarXaL+n4+vpq6NChkipfc7Nz504NHz5cbdu2VWBgoEaMGKG9e/de1mu4cNv2C/fLuHD25b9v937q1Cn9+OOPGjNmTIVbwV8Y+/1ZG0nasmWLbr/9dplMJknnw0uLFi308ssvVwg2kuTl5aVHH33U4axNVR5++GENGDBAGzZsqHA5C0DVCDcALurIkSOSpBYtWti3FRUV6X//93910003afbs2Zo1a5ZKS0s1fvx4/fvf/7bPS0lJkYeHh26++WalpKQoJSVFM2fOrPRYX375paKjo3X06FHNnDlTDz/8sH766ScNHTrU6YBz4QZgeXl5OnbsmD7++GMtXrxY4eHh6tq1qyQpIiJCnp6eDgFm165dMplMuummmxQZGVlhzGazVQg3p06d0p49e3TnnXdKkg4dOqT09HQNGzbM6fDijNjYWNlsNm3bts1l+wSuBlyWAiBJKiwsVF5enkpKSrR3714tWLBA3t7e9v+BS+fPyOzfv9/hzMSUKVN06623aunSpRo4cKCk8/9Tfuihh9ShQ4cKl1wuZtasWWrSpIk+/fRT++WfsWPHqlevXnryySf10UcfVbuPzz//XMHBwQ7bIiIi9NZbb9nPrnh6eio8PLxCgAkLC5OPj4969eplX/9yYUyquN7m008/VYMGDdS/f39J0g8//CBJ6tKlS4W6Tp48KZvt/+6V2rRp04ue2bmYC/v777NnAKrHmRsAkqS7775bwcHBCgsL08SJE+Xj46O33npLbdq0sc8xm832/zGfPXtWp06dUlFRkfr06aO0tLRLOm52drbS0tI0duxYh3UtAQEBiomJ0e7du5Wfn1/tfnr06KH33ntP7733nt5++23NmTNHP//8s/74xz+quLjYPu/mm2/WiRMnlJmZKel8gImKipIkRUVFVRhr06aNOnTo4HCsLVu2KCoqSs2aNZN0/oyWdD64/F63bt0UHBxs/1m3bp2zrbHv7/Tp004/BwBnbgD8/xYsWKDQ0FAVFBTo9ddf186dOx0+NXTBa6+9ppdfflnp6ekOZyQunB2pqQuXv6677roKY6GhobLZbDp69Kh8fX2r3M8111yjfv362R8PHjxYISEhmjBhgl577TVNmTJFkuxBZufOnWrTpo3S0tI0efJkSVL37t3l7e3tMDZkyBCH45SVlenf//63HnnkEfu2C5eiLhZC3nrrLZWVlSk9PV2PPfZYNd1wdGF/FwtNACpHuAEgSbrxxhvtn5YaNmyYhgwZosmTJ2vPnj32/7muW7dODz30kO666y5Nnz5dFotFDRs21BtvvKG1a9e6vKb/Dk+Xom/fvpKkHTt2OIQbk8mkXbt2qUOHDrJarYqMjJR0fuFxjx49HMZ+f0nqq6++0qlTpxw+At65c2dJ0oEDByrUcOutt0qSmjRpUuP6Dx48KEkKCgqq8XOBqxmXpQBUYDab9fTTT+v48eNKSUmxb1+/fr06dOig1atXa+zYsbr99tsdzpb8N2fP5Fx77bWSpB9//LHCWEZGhkwmk9q1a1fzFyHp3LlzkqQzZ87Yt/n6+qpLly7atWuXdu3apcDAQIf9R0VF2cekiutttmzZoo4dOyokJMS+LSgoSKGhofrggw/sl6hc4e2335bJZLKv7QHgHMINgIu6+eab1atXLyUnJ9vXrFy4TPXfZ1QyMzMveifixo0bO7VWxt/fX+Hh4XrrrbeUl5dn3378+HGtXbtWkZGR1V6SqszHH38s6fydhP9bVFSUfvzxR23evNl+1uaCyMhI+1izZs0UFhZWYZ//fdbmgieeeEKnTp3StGnTZLVaK4zX9CzUSy+9pK1bt2rUqFEVFkoDqBqXpQBU6oEHHtCf/vQn+5qVu+66S5s2bdLYsWN111136dixY1qxYoWCg4P1/fffOzy3R48e+uyzz7R06VIFBASoZcuWuu222y56nOeff14jRozQ7bffrokTJ8pms2nFihUqLS3Vs88+61StJ06c0Ntvvy3p/GLn/fv361//+pf8/Px03333OcyNiorSq6++qj179mj06NEOYxfCzp49e3THHXeoQYP/+xvw6NGjOnDggJ5//vkKx4+Ojtbs2bP13HPPKSIiwn6HYqvVqkOHDmndunXy8PBwWKAtnf9aiAt1W61WHTlyRB9++KH279+vW2+9VX//+9+dev0A/g/hBkClhg0bpqCgIC1dulR//vOfNW7cOOXm5mrFihXatm2bgoKCNG/ePB06dKhCuJk/f77+9re/af78+Tpz5oz69OlTabjp06ePNmzYoHnz5umFF16QyWRSz5497ffUccb+/fvt62oaNGggPz8/DRs2TLNmzVJAQIDD3P++1PT7Mze+vr4KDQ3VDz/8YF98fMGWLVvUtGlT9enT56I1PPLII+rbt69SUlK0du1a/fbbb2rUqJH9I/GTJk2qcBamtLTUXnfjxo3VsmVLhYeH69FHH9Xw4cMdwhUA55jy8/Mvb8UeAFwl7rnnHjVq1Eivv/66u0sBUAXO3ACAk/r06VPhTA+AuoczNwAAwFC4mAsAAAyFcAMAAAyFcAMAAAyFcAMAAAyFcAMAAAyFcAMAAAyFcAMAAAyFcAMAAAzl/wO0X1tQhNnvtgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "unit = ''\n", "\n", "fig, ax = plt.subplots(figsize=(8,6))\n", "\n", "ax.hist(ratios['Ratio BW/GD'], density=True, color='blue', alpha=0.8, ec='white')\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Ratio BW/GD'\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": [ "At first glance the histogram looks quite symmetric, with the density at its maximum over the interval 4 ounces per day to 4.5 ounces per day. But a closer look reveals that some of the ratios were quite large by comparison. The maximum value of the ratios was just over 0.78 ounces per day, almost double the typical value." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Birth WeightGestational DaysRatio BW/GD
2381161480.783784
\n", "
" ], "text/plain": [ " Birth Weight Gestational Days Ratio BW/GD\n", "238 116 148 0.783784" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ratios_1 = ratios.sort_values(by=['Ratio BW/GD'], ascending=False)\n", "\n", "ratios_1.iloc[[0]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The median gives a sense of the typical ratio because it is unaffected by the very large or very small ratios. The median ratio in the sample is about 0.429 ounces per day." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.42907801418439717" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.median(ratios.iloc[:,2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But what was the median in the population? We don't know, so we will estimate it. \n", "\n", "Our method will be exactly the same as in the previous section. We will bootstrap the sample 5,000 times resulting in 5,000 estimates of the median. Our 95% confidence interval will be the \"middle 95%\" of all of our estimates.\n", "\n", "Recall the function `bootstrap_median` defined in the previous section. We will call this function and construct a 95% confidence interval for the median ratio in the population. Remember that the table `ratios` contains the relevant data from our original sample." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "def bootstrap_median(original_sample, label, replications):\n", " \n", " \"\"\"Returns an array of bootstrapped sample medians:\n", " original_sample: table containing the original sample\n", " label: label of column containing the variable\n", " replications: number of bootstrap samples\n", " \"\"\"\n", " just_one_column = original_sample[[label]]\n", " medians = np.array([])\n", " for i in np.arange(replications):\n", " bootstrap_sample = just_one_column.sample(len(just_one_column), replace=True)\n", " resampled_median = np.percentile(bootstrap_sample, 50)\n", " medians = np.append(medians, resampled_median)\n", " \n", " return medians" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# Generate the medians from 5000 bootstrap samples\n", "bstrap_medians = bootstrap_median(ratios, 'Ratio BW/GD', 5000)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.42545455, 0.43272727])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Get the endpoints of the 95% confidence interval\n", "left = np.percentile(bstrap_medians, 2.5, interpolation='nearest')\n", "right = np.percentile(bstrap_medians, 97.5, interpolation='nearest')\n", "\n", "np.array([left, right])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The 95% confidence interval goes from about 0.425 ounces per day to about 0.433 ounces per day. We are estimating the median \"birth weight to gestational days\" ratio in the population is somewhere in the interval 0.425 ounces per day to 0.433 ounces per day.\n", "\n", "The estimate of 0.429 based on the original sample happens to be exactly half-way in between the two ends of the interval, though that need not be true in general.\n", "\n", "To visualize our results, let us draw the empirical histogram of our bootstrapped medians and place the confidence interval on the horizontal axis." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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5XAwHjt2rD788EPNmzdPFy5ckCTl5eXp22+/1bBhw/TVV1/pmWeeKbVCAQAAgNLk8JvvBgwYoDNnzuill17Syy+/bDsmSWazWbNnz9af//zn0qkSAAAAKGUOB2NJmjBhggYOHKht27bp5MmTysvLU7169dSnTx/VqVOntGoEAAAASp1hMLZYLNq+fbtOnTqlO+64Qz169NBTTz1VFrUBAAAAZabIYJycnKwHHnhAP/zwg6xWqySpSpUq2rBhg9q3b18mBQIAAABlocg3382ePVunTp3SU089pQ0bNig6Olpubm6aMmVKWdUHAAAAlIkiZ4z37t2rIUOGaPbs2bZjPj4+GjFihJKSknTXXXeVeoEAAABAWShyxjg5OVmhoaF2x9q2bSur1aqzZ8+WamEAAABAWSoyGOfm5srd3d3u2PXHly5dKr2qAAAAgDJmuCvFqVOn9OWXX9oeZ2ZmSpISExNVtWrVfONbtmxZguUBAAAAZcMwGEdHRys6Ojrf8ZvfgGe1WmUymWyfigcAAADcSooMxosXLy6rOgAAAACnKjIYP/LII2VVBwAAAOBURb75DgAAAPijIBgDAAAAIhgDAAAAkgjGAAAAgCSCMQAAACCJYAwAAABIIhgDAAAAkgjGAAAAgCSCMQAAACCJYAwAAABIIhgDAAAAkgjGAAAAgCSCMQAAACCJYAwAAABIIhgDAAAAkgjGAAAAgCSCMQAAACCJYAwAAABIcvFgHB0dLQ8PD7tfd999t+281WpVdHS0GjZsqDvvvFO9evXSiRMn7J7DYrFo8uTJql+/vvz8/DR48GAlJSXZjUlPT9eoUaMUEBCggIAAjRo1Sunp6WXxEgEAAOAiXDoYS1JQUJASEhJsvw4cOGA7t2jRIi1evFhz587V3r175e3trX79+unixYu2MZGRkfroo4+0atUqbd++XRcvXlR4eLhyc3NtY0aMGKGjR49q06ZN2rx5s44eParRo0eX6esEAACAc5V3dgFGypcvL19f33zHrVarli5dqgkTJqhv376SpKVLlyooKEibN29WRESEMjIytHbtWi1evFidO3eWJC1fvlzNmjVTbGysunbtqoSEBO3Zs0c7duxQaGioJGnhwoUKCwtTYmKigoKCyu7FAgAAwGlcfsb41KlTatSokZo3b65hw4bp1KlTkqQff/xRycnJ6tKli21spUqV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Y7fafZu7ZjEdOXJEI0eOVPPmzXXnnXeqVq1aat68uUaOHKmvvvrK2eW5hB9++EFvvvmmNm3apKysLLtzmZmZevrpp51UmWtr27atvv/+e2eX4RI+/PBDxcfHS5KuXr2qqKgo1a5dW4GBgapdu7b+9re/6erVq84t0gVkZ2dr/PjxateunWbOnClJmjNnju666y75+fnpySefVEZGhpOrdD7u28a4b/8+3Ld/c7vct5kxLoaPP/5YTz75pO6//3517dpV3t7eslqtSklJUUxMjPbt26fVq1erV69ezi7VaQ4dOqQBAwaoatWqunTpkqpVq6Z169YpJCREknT+/Hk1bNhQFy5ccG6hTjR48OACj+/atUvt2rVT1apVJUnvvfdeWZblUlq2bKklS5YoNDRUL7/8slavXq3nnntOd999txITEzV37lwNHTpU06ZNc3apTjV58mTt2rVLgwcP1r/+9S81adJEn332maKiolSuXDnNmTNHXbt21fz5851dqtNw3zbGfdsY921jt8t9m2BcDPfdd58GDhyoZ599tsDzCxYs0MaNG3Xo0KEyrsx19O7dW0FBQVqwYIEsFotmz56td955R5s3b1abNm24wUry9PRUu3btVKdOHbvj7733nsLCwlSjRg1J0pIlS5xRnkvw9fXVF198IX9/f7Vt21bTp09X7969bef//e9/69lnn7XNTvxRNWnSRMuWLVOHDh105swZNW/eXOvWrbOFvJiYGD3zzDP6+uuvnVyp83DfNsZ92xj3bWO3y32bRTHFcPLkSfXp06fQ871799bcuXPLsCLXc/ToUb322muSrn1U5qxZs+Tn56eBAwdq48aNql+/vnMLdAFvvvmmXnjhBQ0dOtRuFmLjxo2aMWOGGjZs6MTqXMMdd9yhc+fOyd/fX2lpafneAFunTh0+kVLX1u7VrVtXkuTv76/y5cvb/R2rX7/+HzrMSNy3HcF92xj3bWO3y32bNcbFUK9ePX388ceFnv/4449t/5P6oypXrpx+/fVXu2Njx45VZGSkBg0apIMHDzqpMtcxcOBA/fOf/9TKlSs1YsQIZWZmOrskl9O7d2+98sorunr1qh544AGtXLlSVutvP9xasWKFmjdv7sQKXYO/v79tpvOLL76QyWTSl19+aTv/5Zdfys/Pz1nluQTu28a4bxvjvm3sdrlvM2NcDJGRkRo+fLg+++wzde7cWT4+PjKZTEpOTlZsbKw+/fRTrVq1ytllOlXDhg11+PBhNWvWzO742LFjlZubq5EjRzqpMtdSt25d7dixQy+++KLuv/9+LV26lI8ev8GMGTPUr18/tW7dWqGhofrggw8UGxurwMBAnTx5Umlpadq6dauzy3S6iIgIjRs3Tu+8846OHTumOXPmaNasWTpx4oTMZrPefvttjRs3ztllOhX3bWPctx3Dfbtot8t9mzXGxRQXF6dly5YpLi7O9iMBHx8ftWnTRmPGjFGbNm2cXKFzrVmzRvv27dOKFSsKPP/6669r5cqVOnr0aBlX5rr27t2rp59+WsnJyTpw4AA/kvt/V69e1bp167R9+3adOnVKeXl58vX1Vdu2bTVs2DDdddddzi7RJWzatElxcXG677771L9/f+3bt08vvfSScnJy1LNnT02ZMuUPv20b9+2icd8uPu7bBbsd7tsEY8AFXLhwQcePH1fLli1VqVIlZ5cDADBw/b597733qnLlys4uByWEYAwAAACIN98V26FDhzRjxgy9+uqrOnv2rN259PR0u61J/qjokTF6ZIweOYY+GXvrrbc0cuRIvfPOO5Ku7SRw7733qmnTppo1a5aTq3MN9MgYPTJ2O/SIYFwM//rXv9SrVy8dOHBAGzduVLt27bRz507b+cuXL2v//v1OrND56JExemSMHjmGPhn7+9//rhkzZujSpUuKjo7W/PnzNXXqVD3yyCMaOnSo3nzzTa1evdrZZToVPTJGj4zdLj1iV4piePXVVzVlyhRNnTpV0rV9DYcNG6Zly5YxK/P/6JExemSMHjmGPhlbu3atXnvtNQ0aNEj/+c9/1LVrVy1YsECPP/64JKlWrVp66623FBER4eRKnYceGaNHxm6XHhGMiyEhIUErV660PR45cqR8fHw0evRo5eXl6b777nNida6BHhmjR8bokWPok7EzZ84oNDRUktSiRQuZzWa1bt3adv7+++/XjBkznFWeS6BHxuiRsdulRwTjYnBzc1NaWprdZvB9+/aVdG2/xxdeeMFJlbkOemSMHhmjR46hT8YqVaqknJwc2+OaNWuqSpUqdmNyc3PLuiyXQo+M0SNjt0uPCMbF0Lx5c3366ae655577I737dtXeXl5GjVqlJMqcx30yBg9MkaPHEOfjAUFBen48eMKDg6WJP33v/+1O5+Y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pgYNGsjHx0ft2rXTunXrHPra6wYNGqQPPvhAV65csR07dOiQTp8+rUGDBhX4NZmZmXr++efVrFkz+fj4qGnTpvrb3/4mi8ViN+7y5ct64YUXdPfdd8vPz099+/a1+3N3XUFrjIv7fThw4IBefPFFBQcH684771S/fv106tSpYvUCgDFmjAGUqczMTNvG77/88oveeustpaamavDgwXbjnn32Wa1evVphYWEaM2aMTpw4oVWrVunLL7/Uzp07bUF68+bNGjlypJo2barp06crMzNTK1asUPfu3RUbG6u6deuqd+/eSkxM1JYtWzRnzhx5eXlJkoKDg5WSkqJ+/frJy8tLf/nLX+Th4aGzZ8/qX//6l7Kzs1WzZk3Nnz9fkydP1oMPPqjevXtLkurVq2dXb0REhAICAjR9+nRdvnxZkvTVV19p//796t27twICAnTu3DmtXr1aDzzwgA4dOiRfX1+753jttdeUl5encePGKT09XcuXL1fv3r114MAB3XHHHYX2NCAgQFarVevXr9fjjz9eZP9jYmKUmJiohx9+WHfddZdOnjyp1atX68iRIzpw4IAqVapkNz4yMlI1a9bU1KlTFR8fr3fffVeVK1fWqVOnVKlSJU2fPl2ffvqpVq5cqfr16+upp56y+/rDhw9r69atGj16tKpWrap33nlHjz76qD788MMCg/x1CQkJ6tGjh7y8vPT000+rRo0a2rVrl8aNG6fMzMx81ynMwIEDNWvWLO3evVsPPPCAJGnTpk1q2LChmjVrlm98Tk6OHnzwQf3444968sknVa9ePR07dkxvvPGGvv32W61fv942dsKECVq/fr369u2rDh066MiRI+rXr59DyzOK+3147rnnVKlSJU2cOFGpqal64403NGrUKO3atcuhPgBwDMEYQJkaMGCA3eMKFSpo4cKF6tWrl+3Y8ePHtXr1aj388MNasWKF7XhQUJAiIyP1j3/8Q48//riuXLmi6dOnKzAwUDt27FCVKlUkXXvjVefOnTVnzhytWLFCTZs2VbNmzbRlyxb16tVLderUsT3nP//5T6WlpWnLli265557bMefe+452+/79OmjyZMnq0mTJgoPDy/wdQUGBmrt2rV2x/785z+rb9++dsfCw8N13333ae3atZo0aZLduV9++UWff/65bQ10hw4d1LdvX73xxhuKiooqtKdDhw7V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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "resampled_medians = pd.DataFrame({'Bootstrap Sample Median':bstrap_medians})\n", "\n", "unit = ''\n", "\n", "fig, ax = plt.subplots(figsize=(10,5))\n", "\n", "ax.hist(resampled_medians, bins=15, density=True, color='blue', alpha=0.8, ec='white', zorder=5)\n", "\n", "ax.plot(np.array([left, right]), np.array([0,0]), color='yellow', lw=8, zorder=10)\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Bootstrap Sample Median'\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": [ "This histogram and interval resembles those we drew in the previous section, with one big difference – there is no red dot showing where the parameter is. We don't know where that dot should be, or whether it is even in the interval.\n", "\n", "We just have an interval of estimates. It is a 95% confidence interval of estimates, because the process that generates it produces a good interval about 95% of the time. That certainly beats guessing at random!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Keep in mind that this interval is an approximate 95% confidence interval. There are many approximations involved in its computation. The approximation is not bad, but it is not exact." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Confidence Interval for a Population Mean: Bootstrap Percentile Method ###\n", "What we have done for medians can be done for means as well. Suppose we want to estimate the average age of the mothers in the population. A natural estimate is the average age of the mothers in the sample. Here is the distribution of their ages, and their average age which was about 27.2 years." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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apTbG09PT1erVq0UHBysTp066YknnlCTJk3cXh4AAFQdluzs7BK/61unTh1ZLBadOHFCISEhqlOnzqVXZrHo1KlTbm1427ZtOnPmjGJiYpSZmannnntOdrtdn3/+uerWrVvqcna73a31w3wOH26i6dPDjI7hsenTgzR7doHRMTzmj7lnz85TVFS60TEA+FBMTEyp00o9UvL1119LkkJCQoq89pabb765yOtOnTopNjZWb731lu69995SlyvrhykPu93u9XVWZRUZr5ycUFmt/nfdUHCwZLW6faazCIfDIavV6uVE7qlIbuPk8fvoAfZfnmG8PGPEeJW6x2rcuHGZr72tZs2aatmypdLS0ny6HQAAYE6muQXruXPnZLfbufAVAIAA5dGx3U8++UTLly9Xenq6Tp8+XezW8xaLRSkpKW6t6/HHH9ctt9yiRo0aFV5T8uuvv3p0oSwAAKg63C4lixcv1vTp03XFFVeoU6dOatWqVYU2fOzYMY0dO1ZZWVmF69y2bZvPTxMBAABzcruULFy4UN27d9fatWsLL36tiGXLllV4HQAAoOpw+5qSrKwsJSQkeKWQAAAA/JHbpSQ2NlaHDh3yZRYAABDA3C4ls2fP1ltvvaXt27f7Mg8AAAhQbl9TkpiYqNq1a2vQoEGKjo5WVFRUsQfoWSwWJSUleT0kAACo+twuJampqbJYLGrUqJEcDod++OGHYvNYLBavhgMAAIHD7VKyf/9+X+YAAAABzjR3dAUAAIHN7SMlhw8fdmu+qKiococBAACBy+1S0q5dO7euGTl16lSFAgEAgMDkdilZsGBBsVJSUFCgn376Se+8847Cw8M1duxYrwcEAACBwe1SMnr06FKnPfDAA+rdu7fOnDnjlVAAACDweOVC15o1a2r06NFatGiRN1YHAAACkNe+fRMcHKzjx497a3UAACDAeKWU7N+/X6+88opatGjhjdUBAIAAVOFv3+Tk5Cg3N1c1a9bUwoULvRoOAAAEDrdLSffu3YuVEovFIpvNpmbNmmnIkCGy2WzezgcAAAKE26Vk8eLFvswBAAACHLeZBwAApkApAQAApkApAQAApkApAQAApkApAQAApuBWKTl37pzmzp2rjz/+2Nd5AABAgHKrlISGhuof//iHjhw54us8AAAgQLl9+qZt27ZKS0vzZRYAABDA3C4lTzzxhFasWKEP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w/gBf9zfG8kX4xUTE1PqtEuWksTERCUmJhZ7/48Xu7pcLlkslsK7vXriscce0+eff66tW7de8vk5Zf0w5WG3272+zsqQkxMqq7XynzXkcDhktVrLtWxwsGS1enRrHFOoSO6KjFdF+ed4XzBsvCrCqLGuyN+v2rWr++W+ryL8dX9vFCPGq8zfooULF/o8wLRp07Ru3Tpt2rRJTZo08fn2AACSxRKkvXtDLz2jyTRs6FRkZL7RMeAjZZaS22+/3acbnzJlitatW6fNmzfr6quv9um2AAD/kZkpJSb635Pd582TIiONTgFfMezY7uTJk7Vq1Sq9+eabstlsysjIkPTbzdlKulYFAABUbW4/JdjbXn31Vf3yyy8aOHCgWrRoUfjn5ZdfNioSAAAwkGFHSrKzs43aNAAAMCHDjpQAAABcjFICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMgVICAABMobrRAQAAcJfFEqS9e0PLtWxubhPl5JRv2Ypo2NCpyMj8St+uP6KUAAD8RmamlJgYVK5lHY4wWa3lW7Yi5s2TIiMrfbN+idM3AADAFCglAADAFCglAADAFCglAADAFCglAADAFCglAADAFCglAADAFCglAADAFAwtJTt37tTIkSPVqlUr2Ww2rVy50sg4AADAQIaWkrNnz6p169aaM2eOwsLCjIwCAAAMZuht5uPi4hQXFydJmjhxopFRAACAwbimBAAAmILfPZDPbrf7xTp9LTe3iRwOY055ORyOci13/nyQHI4CL6fxvYrmLu94VZR/jneQYeNVEUaONb+PnjHi71dubp7s9vRK3643+OLzMSYmptRpfldKyvphysNut3t9nZUhJyfUkKddOhwOWa3Wci0bHCxZrX73V65CuSsyXhXln+N9wbDxqgijxprfR88Y9ftYu3Z1v/ycMeLzkdM3AADAFCglAADAFAw9dnfmzBmlpaVJkpxOp44cOaJvvvlGderUUVRUlJHRAABAJTP0SMlXX32l66+/Xtdff73y8vKUmJio66+/Xs8884yRsQAAgAEMPVLSs2dPZWdnGxkBAACYBNeUAAAAU6CUAAAAU6CUAAAA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cKAkae/evUpLS9Pw4cO1f//+Ysv885//VExMjG666SaFhYUpOTlZf//735Wbm6snnnhCkjR58mRlZ2frxIkTeuaZZ4qt46GHHtKKFSs0YsQIjR07VhkZGVq6dKl2796t7du3FykwOTk5SkhIUHx8vIYMGVLkKaR79uzRe++9pzvvvFN/+ctftGLFCo0fP15t27ZVixYtJEnp6enasGGDBg4cqGbNmiknJ0crVqzQwIEDlZycrNatW5dr7D788EOdPn26MNPNN9+spKQkTZo0qch8+/fvV0JCgurWratHHnlEISEhWr58uWrUqFFsnWvWrNH48ePVs2dPTZ8+XU6nUytXrtSAAQP03nvvqVOnTuXKCgQSSgngx4YNG1ZYImw2m1atWqXo6Ghde+21Jc6/ZcuWIh+oY8eO1X333aclS5ZoypQpslqtuvHGG3XllVcqNzdXI0aMKLL87t279frrr2vhwoVFbp0fHx+vXr16aenSpXr00UcL3z958qTmzJmju+++u1iW1NRU7dy5s7CADBo0SNdcc43efPNNPfXUU5J+u3NpSkqKgoKCCpe744471LlzZ73yyit66aWXyjFqv526adOmTeG2hw4dqjvuuEPfffdd4XvSb88vcjqdev/999W4cWNJ0ujRo9WxY8ci6zt79qwmT56sESNGFLkW584771TXrl01a9Ysbdy4sVxZgUDC6RvAjw0cOFAWi0UbNmzQhQsX9O6772rYsGGlzv97ISkoKFB2draysrLUo0cPnT17Vna7/ZLbW79+vWrWrKm4uDhlZWUV/omMjFR0dHSxbwNVr15dd9xxR4nr6tmzZ5ECEB4erpiYGKWnpxe+Z7VaCwvJ70/wdjqd6tixo1JSUi6ZtyTZ2dn64IMPNGTIkML3brnlFtWqVavIBa8FBQX65JNPdOuttxYWEkmqV69esTFOTk5Wdna2hg8fXmRc8vLy1KtXL+3atUvnz58vV14gkHCkBPBjl19+ueLi4pSUlKQGDRro559/LrOU7Nq1S7NmzdK+ffuKPEtF+u1Uy6UcPHhQZ86cUUxMTInT//ik5CuvvLLUbwFFRUUVe89ms+n06dOFr51Op1588UX961//Knb9xlVXXXXJvCX5/eLgTp06FVln9+7dlZSUpMcff1wWi0U///yz8vLyFB0dXWwdf3zv94flDR48uNTt5uTk6IorrihXZiBQUEoAPzds2DCNGTNGktSxY8cSP0Sl367PGDx4sJo1a6bExEQ1atRIVqtVX3/9tWbOnOnWE0GdTqfq1q2rZcuWlTj9j9dahIWFlbqui0/JXOziBxe+8MILmjVrlkaNGqXHH39cdevWVVBQkObPn68ff/zxknlLsmrVKknSgAEDSpy+a9cudevWrcx1/PHhir+P3aJFi0p9gFnt2rU9jQoEHEoJ4Of69u2r2rVra+fOnZozZ06p823ZskXnzp3TO++8U+R0xB+PQEjFj3j8rmnTpkpOTlbHjh1Vq1atioe/hHXr1qlHjx7F7plS3ju3Hj58WLt27dLYsWPVq1evYtPvv/9+JSUlqVu3bqpfv77CwsIKj4JcLC0trcjrpk2bSpKuuOKKEtcLwD1cUwL4OavVqueff15TpkzR0KFDS53v9yMTF/8r3+FwaOnSpcXmrVGjRomncxISEuR0OkssPy6XS1lZWeX5EUoVFBRU7KjE7t279cUXX5RrfUlJSXK5XJo0aZL69+9f7M/NN9+sd999V/n5+QoKClKvXr30/vvv69ChQ4XryMrKKnbTuj59+ujyyy/XvHnzit03RpIyMzPLlRcINBwpAaqAssrI7/r06aOQkBCNHDlSd9xxh/Lz8/XOO++UeD+TDh06aOPGjZoyZYo6deqkatWqaciQIerWrZsmTJighQsX6ttvv9VNN92kGjVq6KefftLmzZv1l7/8RQ8++KDXfq5bb71Vc+bM0YQJE9StWzcdPHhQ//rXv9SyZUudOXPG4/WtXr1aLVu2LDyyUdL23nnnHX3wwQeKj4/XtGnT9PHHH+vWW2/V3/72NwUHB2v58uVq3LixsrOzC48o1apVSy+++KLuuusu9ejRQ8OGDVNERISOHj2qTz/9VJdddlmp90EB8B+UEiBANG/eXCtXrtSsWbM0c+ZM1atXTyNHjlSPHj2KXaA5fvx4paamKikpSUuXLpXL5Sr8tsrcuXMVGxur1157TYmJiapWrZoaNGigPn36qH///l7N/NBDDykvL0+rV6/Whg0b1KpVKy1btkxr167Vjh07PFpXSkqKUlNTyyxNvXv3VkhIiJKSkhQfH6927dpp3bp1mjFjhubOnavw8HCNGzdOoaGh+uabb4pcxDto0CBFRkZq/vz5WrRokfLy8hQREaFOnTrpr3/9a7nHAAgkluzsbNelZwMA/G7KlClavny5jh49WuoFuwA8xzUlAFCGvLy8Iq8zMzO1atUqdevWjUICeBmnbwCgDO3atdPw4cMVExOj48eP64033tDZs2eL3LkWgHdQSgCgDHFxcdq0aZNOnjyp6tWrKzY2VkuXLlXXrl2NjgZUOVxTAgAATIFrSgAAgClQSgAAgClQSgAAgClQSgAAgClQSgAAgClQSgAAgCn8H5qawVWOToTGAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "unit = ''\n", "\n", "fig, ax = plt.subplots(figsize=(8,5))\n", "\n", "ax.hist(baby['Maternal Age'], density=True, color='blue', 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 = 'Maternal Age'\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": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "27.228279386712096" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.mean(baby['Maternal Age'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What was the average age of the mothers in the population? We don't know the value of this parameter.\n", "\n", "Let's estimate the unknown parameter by the bootstrap method. To do this, we will edit the code for `bootstrap_median` to instead define the function `bootstrap_mean`. The code is the same except that the statistics are means instead of medians, and are collected in an array called `means` instead of `medians`" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "def bootstrap_mean(original_sample, label, replications):\n", " \n", " \"\"\"Returns an array of bootstrapped sample means:\n", " original_sample: table containing the original sample\n", " label: label of column containing the variable\n", " replications: number of bootstrap samples\n", " \"\"\"\n", " \n", " just_one_column = original_sample[[label]]\n", " means = np.array([])\n", " for i in np.arange(replications):\n", " bootstrap_sample = just_one_column.sample(len(just_one_column), replace=True)\n", " resampled_mean = np.mean(bootstrap_sample.iloc[:,0])\n", " means = np.append(means, resampled_mean)\n", " \n", " return means\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([26.88841567, 27.57069847])" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Generate the means from 5000 bootstrap samples\n", "bstrap_means = bootstrap_mean(baby, 'Maternal Age', 5000)\n", "\n", "# Get the endpoints of the 95% confidence interval\n", "left = np.percentile(bstrap_means, 2.5, interpolation='nearest')\n", "right = np.percentile(bstrap_means, 97.5, interpolation='nearest')\n", "\n", "np.array([left, right])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The 95% confidence interval goes from about 26.9 years to about 27.6 years. That is, we are estimating that the average age of the mothers in the population is somewhere in the interval 26.9 years to 27.6 years. \n", "\n", "Notice how close the two ends are to the average of about 27.2 years in the original sample. The sample size is very large – 1,174 mothers – and so the sample averages don't vary much. We will explore this observation further in the next chapter.\n", "\n", "The empirical histogram of the 5,000 bootstrapped means is shown below, along with the 95% confidence interval for the population mean." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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ulUxMTEaOnSofH19S3Tff14fvEOHDi6o7vKcPHlSnTp1UlZWloYMGaJmzZopOztbO3fu1Pvvv6/evXsrMDDQ3WWWOm9vb6WkpGjr1q36z3/+4zAWFxcnb29v5ebmuryO9u3b6+jRo6pQoYLL9wXg8hBoATjl1ltvVevWre2377vvPjVp0kQff/yxSwNtafrrr79UsWLFUtvf0qVLdejQIX366ae65ZZbHMbOnDmj8+fPl1otZUlQUJDKly+vuLg4h0Brs9m0fPlydevWrVQ+HShXrpy8vb1dvh8Al48lBwAuSZUqVVSxYkV5eno6bM/Ly9PLL7+s8PBw+fv7q2nTppo0aZKysrLyPcaaNWt06623KjAwUPXr19ewYcP0+++/28ejo6P17LPPSpJatmxp/6j54hKCxMREDRw4UI0aNdI111yjli1bavTo0Tpz5owOHDigJk2aSPr7PIcX73txjWR0dLR8fX21Z88ejRkzRg0bNlTbtm0lSSkpKXrsscfsywDq1aunyMhI7d6926H+i2ss4+LiNGPGDIWGhiowMFB9+/ZVUlJSsT38888/ZbFY1L59+3xjlSpVUrVq1ey3d+7cqbFjxyosLEwBAQFq1KiRRo4cqUOHDjnc7+ISke+++05PPPGEgoODVa9ePT344IPKzc3VmTNnNGHCBF177bWqV6+eJk6cmC84+/r66tFHH1V8fLzatGmjgIAAtWvXTuvWrSv2OUnSH3/8oREjRqhRo0by9/dXu3bt9N577zl134sGDhyoTz75ROfOnbNv27p1q1JSUjRw4MAC75Odna1p06apRYsW8vf313XXXadnnnlGVqvVYd7Zs2f19NNPq3Hjxqpdu7b69Onj8Hd3UUFraEv6e9i8ebOee+45NWnSRNdcc4369eun5OTkEvUCQPE4QgvAKdnZ2crIyJAkHT9+XO+8844yMjI0ePBgh3mPPfaYFi1apB49emjMmDHavXu33n77bf30009at26dPQB//PHHGjVqlK677jpNnTpV2dnZevPNN9W1a1clJCSoQYMGioiIUFJSkuLj4zVjxgz5+flJkpo0aaL09HT169dPfn5+euSRR+Tr66tDhw7pf//7n86cOaOaNWtq1qxZmjRpknr37q2IiAhJUsOGDR3qHT58uOrVq6epU6fq7NmzkqTt27dr06ZNioiIUL169ZSamqpFixapZ8+e2rp1qwICAhwe4+WXX1ZeXp7Gjx+vzMxMvfHGG4qIiNDmzZtVo0aNQntar1492Ww2LVu2TPfcc0+R/d+4caOSkpI0aNAg1alTR/v379eiRYv0888/a/PmzfLx8XGYHxUVpZo1a2ry5MlKTEzU+++/r4oVKyo5OVk+Pj6aOnWqvvnmGy1cuFDXXnutxo0b53D/bdu2aeXKlRo9erQqV66sxYsXa9iwYfr0008LDOAX7d27V926dZOfn58efPBBVatWTV988YXGjx+v7OzsfPspzIABAzR9+nStX79ePXv2lCQtX75coaGhatGiRb75OTk56t27tw4cOKD77rtPDRs21I4dOzRv3jz9/vvvWrZsmX3uhAkTtGzZMvXp00cdOnTQzz//rH79+jm1jKGkv4cnnnhCPj4+evTRR5WRkaF58+bpgQce0BdffOFUHwA4h0ALwCn9+/d3uO3p6amXXnpJvXr1sm/btWuXFi1apEGDBunNN9+0bw8JCVFUVJQ++OAD3XPPPTp37pymTp2q4OBgrV27VpUqVZL09xeCOnfurBkzZujNN9/UddddpxYtWig+Pl69evVS/fr17Y/5+eef6+TJk4qPj9cNN9xg3/7EE0/Y//+OO+7QpEmT1Lx5c0VGRhb4vIKDg7V06VKHbbfffrv69OnjsC0yMlL/+c9/tHTpUk2cONFh7Pjx4/rhhx/sa3w7dOigPn36aN68eXrqqacK7endd9+t2NhYPfzww3rllVd08803q23bturatas9vF80cuRIPfTQQw7bunfvrh49emj16tUaNGiQw5ifn5/i4+Pt109PSUnRwoULNXDgQPvvZuTIkWrTpo3ee++9fEFz165dWrdundq0aSNJGjZsmG688UY9++yzRYaxKVOmKCAgQBs3brQv3xg5cqSGDx+u6Oho3Xvvvfbfd1Hq1auntm3bKi4uTj179tS5c+f0ySef6MEHHyxw/vz585WUlKSEhAT7kXlJatq0qSZOnKjNmzerXbt2+u2337Rs2TLdddddmjdvnn3ec889p7lz5xZbV0l/DxUrVtRnn32mcuX+/kC0evXqeuKJJ7R79241bdq02P0BcA5LDgA4JSYmRp988ok++eQTvfnmm+rcubMee+wxh7WMFz+Sfvjhhx3uO2LECFWtWtU+npiYqLS0NI0cOdIh3LRs2VKdOnXS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+Phozpw5mj59uipUqKCbb75ZzzzzjENwbN26taZNm6Z3331XDz74oPLy8rR69Wq1b99e27dv18qVK3Xs2DFVqVJF119/vV588UWHL6/FxsYqKipK06ZNk9Vq1ZAhQ4oNtDNnzpSnp6dWrlyp9957T2FhYVqxYoWefPLJAudPmDBBSUlJmjdvnjIzM9WmTRu9+OKLxQak++67TxUrVtTXX3+tL774QllZWapevbpatWql8ePHO5zvdeHChZoyZYoWLVqk8+fPq127dlq1alW+04sZpU2bNurQoYNmzpyp5ORkNWrUSO+9916xlxAODg5WQkKCXnzxRS1fvlzp6eny8/NTkyZNNH36dJfUKv0dfFetWqVXXnlF8fHxWrFihSpVqqQGDRpo7NixDl9UfO211+Tv768PPvhA69evV+vWrfXJJ5/kOzVdQUr79wDAOZbMzExWpgPAJfj2228VERGht99+26kwZBa+vr4aPny4XnrpJXeXAgBOYQ0tAAAATI1ACwAAAFMj0AIAAMDUWEMLAAAAU+MILQAAAEyNQAsAAABTI9ACAADA1Ai0AAAAMDUCLQAAAEyNQAsAAABT+z+BccZetogHQAAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "resampled_means = pd.DataFrame({'Bootstrap Sample Mean':bstrap_means})\n", "\n", "unit = ''\n", "\n", "fig, ax = plt.subplots(figsize=(10,5))\n", "\n", "ax.hist(resampled_means, bins=15, density=True, color='blue', alpha=0.8, ec='white', zorder=5)\n", "\n", "ax.plot(np.array([left, right]), np.array([0,0]), color='yellow', lw=8, zorder=10)\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Bootstrap Sample Median'\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": [ "Once again, the average of the original sample (27.23 years) is close to the center of the interval. That's not very surprising, because each bootstrapped sample is drawn from that same original sample. The averages of the bootstrapped samples are about symmetrically distributed on either side of the average of the sample from which they were drawn." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice also that the empirical histogram of the resampled means has roughly a symmetric bell shape, even though the histogram of the sampled ages was not symmetric at all:" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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Cxaof//+ysjIcD/51Vf/8z//o1OnTrlruvXWW5Wenq4HHnjAY7vdu3crOTlZF198sSZMmKDQ0FDNnz9fdevWLXHMpUuXavTo0erRo4eefPJJOZ1OLVy4UP369dOaNWvUuXPnCtUKBBNCCVCNDR482B0ibDabFi9erJiYGF199dWlbv/JJ594/EEdOXKkHnroIc2ZM0cpKSmyWq266aabdOmllyo/P19Dhw712H/79u169913NXPmTI0YMcK9PCkpST179tTcuXP1+OOPu5cfO3ZMU6dO1f3331+ilr1792rz5s3uADJgwABdeeWVev/99/Xcc89Jktq3b69du3YpJCTEvd8999yja665Rn//+9/1+uuvV6DX/n3pJi4uzt32oEGDdM899+jHH390L5OkF198UU6nU59++qlatGghSRoxYoQSEhI8jnf69GmNHz9eQ4cO9ZiLc++996pLly5KTU3VqlWrKlQrEEy4fANUY/3795fFYtHKlSt17tw5ffTRRxo8eHCZ258PJMXFxcrNzVVOTo66d++u06dPy263X7C9FStWqH79+kpMTFROTo77JzIyUjExMSW+DVS7dm3dc889pR6rR48eHgGgadOmio2NVVZWlnuZ1Wp1B5IzZ87o5MmTcjqdSkhI0K5duy5Yb2lyc3O1bt06DRw40L3stttuU4MGDTwmvBYXF+vzzz/X7bff7g4kktS4ceMSfZyRkaHc3FwNGTLEo18KCwvVs2dPbd26VWfPnq1QvUAw4UwJUI1ddNFFSkxMVHp6uqKionT8+PFyQ8nWrVuVmpqqr7/+WkVFRR7r8vLyLtjevn37VFBQoNjY2FLXWywWj9eXXnppmd8Cio6OLrHMZrPp1KlT7tdOp1Ovvfaa/vGPf5SYv3HZZZddsN7SnJ8c3LlzZ49jduvWTenp6XrqqadksVh0/PhxFRYWKiYmpsQx/rhs3759kqQ777yzzHbz8vJ0ySWXVKhmIFgQSoBqbvDgwbr77rslSQkJCaX+EZX+PT/jzjvv1OWXX660tDQ1b95cVqtV3333naZMmeIx2bUsTqdTF198sebNm1fq+j/OtQgPDy/zWL+/JPN7LpfL/e9XX31VqampGj58uJ566ildfPHFCgkJ0YwZM/Tzzz9fsN7SLF68WJLUr1+/Utdv3bpVXbt2LfcYv69RkrvvZs2apaioqFL3adiwoa+lAkGHUAJUc71791bDhg21efNmTZ06tcztPvnkE505c0aLFi3yuBzxxzMQUskzHue1atVKGRkZSkhIUIMGDSpf/AUsX75c3bt3L3HPlIreufXAgQPaunWrRo4cqZ49e5ZY/7e//U3p6enq2rWrmjRpovDwcPdZkN/LzMz0eN2qVStJ0iWXXFLqcQF4hzklQDVntVr1yiuvKCUlRYMGDSpzu/NnJn7/v3yHw6G5c+eW2LZu3bqlXs5JTk6W0+ksNfy4XC7l5ORU5FcoU0hISImzEtu3b9dXX31VoeOlp6fL5XLpgQceUN++fUv83Hrrrfroo49UVFSkkJAQ9ezZU59++qn279/vPkZOTk6Jm9b16tVLF110kaZPn17ivjGSdOLEiQrVCwQbzpQANUB5YeS8Xr16KTQ0VMOGDdM999yjoqIiLVq0qNT7mXTq1EmrVq1SSkqKOnfurFq1amngwIHq2rWrxowZo5kzZ+qHH37QLbfcorp16+qXX37R6tWr9ec//1mPPPKI336v22+/XVOnTtWYMWPUtWtX7du3T//4xz/Utm1bFRQU+Hy8JUuWqG3btu4zG6W1t2jRIq1bt05JSUmaNGmSNmzYoNtvv11/+ctfVKdOHc2fP18tWrRQbm6u+4xSgwYN9Nprr+m+++5T9+7dNXjwYEVEROjQoUPauHGj6tWrV+Z9UAD8B6EECBKtW7fWwoULlZqaqilTpqhx48YaNmyYunfvXmKC5ujRo7V3716lp6dr7ty5crlc7m+rTJs2TfHx8XrnnXeUlpamWrVqKSoqSr169VLfvn39WvOjjz6qwsJCLVmyRCtXrlS7du00b948LVu2TJs2bfLpWLt27dLevXvLDU0333yzQkNDlZ6erqSkJHXs2FHLly/X008/rWnTpqlp06YaNWqUwsLC9P3333tM4h0wYIAiIyM1Y8YMzZo1S4WFhYqIiFDnzp31X//1XxXuAyCYWHJzc10X3gwAcF5KSormz5+vQ4cOlTlhF4DvmFMCAOUoLCz0eH3ixAktXrxYXbt2JZAAfsblGwAoR8eOHTVkyBDFxsbqyJEjeu+993T69GmPO9cC8A9CCQCUIzExUR9//LGOHTum2rVrKz4+XnPnzlWXLl2MLg2ocZhTAgAATIE5JQAAwBQIJQAAwBQIJQAAwBQIJQAAwBQIJQAAwBQIJQAAwBT+H+BTQ/yLxelaAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "unit = ''\n", "\n", "fig, ax = plt.subplots(figsize=(8,5))\n", "\n", "ax.hist(baby['Maternal Age'], density=True, color='blue', 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 = 'Maternal Age'\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": [ "This is a consequence of the Central Limit Theorem of probability and statistics. In later sections, we will see what the theorem says." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### An 80% Confidence Interval ###\n", "You can use the bootstrapped sample means to construct an interval of any level of confidence. For example, to construct an 80% confidence interval for the mean age in the population, you would take the \"middle 80%\" of the resampled means. So you would want 10% of the distribution in each of the two tails, and hence the endpoints would be the 10th and 90th percentiles of the resampled means." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([27.01022147, 27.44633731])" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "left_80 = np.percentile(bstrap_means, 10, interpolation='nearest')\n", "right_80 = np.percentile(bstrap_means, 90, interpolation='nearest')\n", "np.array([left_80, right_80])" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAArQAAAFqCAYAAADr4skYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAAA870lEQVR4nO3deVxU9f7H8feICLiiiOSCS4igZlJoGpq5lDupuWubmrlkZTdNudpqieRWFtlimZpd08TS8mqaYOWWlZpelyhDXBADBZRgNJnfHz2cXxOLg55hOPp6Ph487p3z/c45n/nEg3l75jvnWDIyMmwCAAAATKqMuwsAAAAArgaBFgAAAKZGoAUAAICpEWgBAABgagRaAAAAmBqBFgAAAKZGoAUAAICpEWgBAABgagRaF0lMTHR3CdcU+mks+mks+mks+mkcemks+mksI/tJoAUAAICpEWgBAABgagRaAAAAmBqBFgAAAKZGoAUAAICpEWgBAABgagRaAAAAmBqBFgAAAKZGoAUAAICpEWgBAABgamXdXQAAXO9SUsrp+PHSd36hdu081ax53t1lAMBlEWgBwM2OHy+jCRM83F1GPrNmSTVrursKALi80ndKAAAAACgGAi0AAABMjSUHAK4brlqrmpVVX5mZ3lf8/Jyc0rfcAADMhEAL4LrhqrWqVquPvLyufL9RUQYWAwDXIZYcAAAAwNQItAAAADA1Ai0AAABMjUALAAAAUyPQAgAAwNQItAAAADA1Ai0AAABMjUALAAAAUyPQAgAAwNQItAAAADA1Ai0AAABMjUALAAAAUyPQAgAAwNQItAAAADA1Ai0AAABMjUALAAAAU3NboJ0zZ446dOigwMBABQUFaeDAgdq/f7/DHJvNpujoaIWGhuqGG25Qjx49dODAAYc5VqtVEydO1I033qhatWpp0KBBOn78eEm+FAAAALiR2wLtt99+qxEjRmj9+vVavXq1ypYtq969e+vMmTP2Oa+99ppiY2MVExOjTZs2yd/fX3369NHZs2ftc6KiorRmzRq99957Wrt2rc6ePauBAwfq4sWL7nhZAAAAKGFl3XXguLg4h8dvv/226tatq+3bt6tbt26y2WyaP3++xo8fr169ekmS5s+fr+DgYH3yyScaNmyYMjMztWTJEsXGxqpDhw72/TRr1kwJCQnq1KlTib8uAAAAlKxSs4b2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AgMDNWLECFmtVo0ePVpNmzZVs2bN1LFjR6WkpLi7TFNZs2aNunTpopo1ayo0NFQhISGqWbOmunTpos8//9zd5ZnO9u3b9cwzz2j27Nk6duyYw1hGRoYiIyPdVNm1o3///jp69Ki7yzAV3ouMxXuR8Vz9XkSgvUqvv/66fHx8JEkvvvii9u3bp5UrV2rfvn1atWqVDh48qBdeeMHNVZrH1KlTdebMGc2YMUMZGRkaMmSI9u7dq//+979at26dJLn97m9msnDhQg0fPlwhISF699139fnnn2vNmjV69913FRoaqhEjRmjRokXuLtM0/vvf/6pHjx7aunWrli9froiICK1fv94+fv78eXuowOVFREQU+PPnn39q6NCh9se4PN6LjMV7kbFK4r2IJQdXKSAgQN9//70CAwMVHh6uWbNmqUOHDvbx7du3a8SIEfrf//7nxirNIyQkRB999JHCw8OVnp6uhg0bKi4uzt7T7du3a9iwYTpw4ICbKzWHW265RU8++aQeeOCBAscXL16sOXPmaPfu3SVbmEnddddduvvuuzVp0iRJ0rvvvqvnn39eb731liIjI3Xq1CmFhobq9OnTbq7UHKpXr6727durRYsW9m02m00zZ87U8OHDVb16dUnS5MmT3VWiafBeZCzei4xVEu9F18SXwtzphhtu0OHDhxUYGKjc3FxVqVLFYdzX11cZGRnuKc6Ezp49a79+sJ+fn8qWLauAgAD7+A033KCsrCx3lWc6KSkpuv322wsdb926tU6ePFmCFZnboUOHtGDBAvvjkSNHqkaNGho1apTy8vKK7DXyW7NmjcaMGaPbbrtNEydOtN8MZ/bs2Xr44YcVGhrq5grNg/ciY/FeZKySeC9iycFVGjBggKZNm6YzZ85o0KBBiomJ0blz5yRJf/zxh2JiYtS6dWs3V2keQUFBWrt2rSRp3bp18vHx0aZNm+zjmzZtUr169dxVnumEhobqvffeK3R84cKFhIZi8PLy0pkzZxy29erVS/Pnz9eYMWO0atUqN1VmTrfffrsSEhK0d+9edevWjXWzV4H3ImPxXmSskngv4gztVXr66ad18OBBhYWF6dZbb9W2bdvUqFEj1axZUydPnlTVqlX12WefubtM03j88cc1evRovfnmm0pNTdW7776ryZMna8eOHfLw8NDatWv18ssvu7tM03jppZc0cOBAbdy4UR06dFCNGjVksViUmpqqzZs368SJE1q+fLm7yzSNm2++WV9//bVuueUWh+29evVSXl6eHnnkETdVZl6+vr5asmSJFixYoLvuukvTpk3jtuVXgPciY/FeZKySeC9iDa1BNm3apLVr1yopKUl5eXkKCAhQ69at1a9fP1WoUMHd5ZnK9u3btXPnTrVu3VotW7bUwYMHNXfuXOXk5Khr164aMmSIu0s0lSNHjuj999/Xzp077beIrlGjhm677TYNGzaMswzFsGbNGm3ZskUzZswocHzlypVauHAhV4+4Qv/73//08MMP6+DBg9q2bRufHlwB3ouMw3uRsVz9XkSgBQCUGufPn9fJkydVq1YtlS3Lh4gAnEOgBQAAgKnxpTAXGz16tO655x53l3HNoJ/Gop/Gop/Gop/GoZfGop/GMqKfBFoXs9lsysvLc3cZ1wz6aSz6aSz6aSz6aRx6aSz6aSwj+smSAwAAAJgaZ2gBAABgagTaq5SYmKgTJ07YH3/55ZcaMGCAIiIi7Ndcg/Pop7EmTpyobdu2ubuMawb9NBb9NA69NBb9NN7y5cv19NNPa8OGDZL+usRcnz591KtXL4c7MF4pAu1VGjlypPbv3y9JWrVqlYYMGaIqVaqoT58+8vX11ZAhQ7h7UDHQT2MtWLBAPXr00G233abY2FidPn3a3SWZGv00Fv00Dr00Fv001ptvvqnHHnvMfq3pDz74QA888IACAwN144036plnnlFsbOxVHYM1tFepVq1a2rZtm+rVq6eOHTuqb9++evTRR+3jixYt0rvvvqtvv/3WjVWaB/00VtWqVbVs2TJ98cUXWrVqlc6fP6+ePXvqgQce0J133unu8kyHfhqLfhqHXhqLfhqrZcuWmjBhggYOHKgdO3YoMjJS06dP18MPPyxJWrp0qebNm6cdO3Zc8TE4Q3uVPD09lZWVJUlKTk7O94verl07HT582B2lmRL9NN6tt96qefPm6eDBg4qJidFvv/2m3r17KywsTHPnzlVqaqq7SzQV+mks+mkcemks+mmcY8eOKSIiQpLUqlUr2Ww2+2NJatu2rY4ePXpVxyDQXqV27dppxYoVkqSwsDB98803DuNff/21atWq5Y7STIl+uk6FChX00EMPadOmTdq8ebM6deqkuXPn6qabbnJ3aaZEP41FP41DL41FP69etWrVlJycLEk6fvy4/vzzTx07dsw+fvToUVWtWvWqjsGSg6v0yy+/qGvXrurYsaNCQ0M1Z84cde/eXSEhIUpMTNSqVav06quvavDgwe4u1RTop7GqVaumQ4cOyd/fv8DxnJwcxcXFaejQoSVcmTnRT2PRT+PQS2PRT2NNnDhRGzdu1MCBA7Vu3TrddNNN+u677/Tiiy+qTJkyev7553XrrbfqjTfeuOJjEGgNcOTIEb300ktat26dzp07J0kqW7asbr31Vj3++OPq0aOHmys0F/ppnKpVq+rnn38u9I8yiod+Got+GodeGot+Gis7O1v//ve/tXPnTrVu3VoxMTF66623NG3aNF24cEFt2rTRwoULr6rfBFoD2Ww2/f7778rLy5Ofn588PT3dXZKp0U8AAK5dubm5unDhgipVqnTV+yLQAgAAwNT4UpgBMjIytH79eu3YsUM2m+O/D7KzsxUTE+OmysyJfhqLfhqLfhqLfhqHXhqLfhrL1f3kDO1VOnDggHr37q20tDTl5eWpefPmWrx4serWrStJOnXqlEJDQ7kos5Pop7Hop7Hop7Hop3HopbHop7FKop+cob1KL7zwglq2bKnk5GQdOHBA9evXV9euXfXrr7+6uzRTop/Gop/Gop/Gop/GoZfGop/GKol+Emiv0vfff68pU6aoQoUKuuGGG/TBBx+od+/e6tmzp3755Rd3l2c69NNY9NNY9NNY9NM49NJY9NNYJdHPsobs5Tp2/vx5WSwWh23Tp0+XzWZTjx49tGDBAjdVZk7001j001j001j00zj00lj001gl0U8C7VVq2LChdu3apdDQUIft0dHRysvL46LLxUQ/jUU/jUU/jUU/jUMvjUU/jVUS/WTJwVXq2bOnVq5cWeBYTEyMBgwYkO/bfCgc/TQW/TQW/TQW/TQOvTQW/TRWSfSTqxwAAADA1DhDCwAAAFMj0AIAAMDUCLQAAJf45ptv5Ovrq2+++cbdpQC4xhFoAVyVpUuXytfX1+EnKChI3bp102effeby42/btk3R0dHKyMgo9nPPnTun6OjoUh240tLSFBUVpZYtW6pmzZq68cYb1a5dO02aNEkpKSnuLq/E9ejRQ76+vrr55psL/BLJoUOH7L+Hc+fOdUOFANyBy3YBMMTkyZPVoEED2Ww2/f777/r444/14IMPasGCBerXr5/Ljrt9+3bFxMRoyJAh8vX1LdZz/37/8DvuuMMF1V2dM2fOqH379srMzNTgwYPVpEkTZWVlad++fVq6dKl69uypmjVrurvMEuft7a3k5GRt375dt99+u8PY8uXL5e3trdzcXDdVB8AdCLQADNGpUye1bNnS/vihhx5SSEiIPvnkE5cG2pL0xx9/qHz58iV2vCVLlujYsWP67LPPdOeddzqMZWdn688//yyxWkqTwMBAlS1bVsuXL3cItDabTStWrFCXLl1K5NMBAKUHSw4AuESlSpVUvnx5eXp6OmzPy8vTq6++qvDwcNWoUUONGzfWxIkTlZmZmW8fa9euVadOnVSzZk3Vq1dPQ4cO1c8//2wfj46O1gsvvCBJat68uf2j5ktLCHbv3q3+/fsrKChIN9xwg5o3b65Ro0YpOztbR44cUUhIiKS/roN46bljxoyx79vX11cHDx7U6NGj1aBBA7Vu3VqSlJycrKeeesq+DKBu3boaOHCgDhw44FD/pTWky5cv1/Tp0xUaGqqaNWuqd+/eSkxMvGwPf/vtN1ksFrVp0ybfWIUKFVSlShX743379mnMmDEKCwtTQECAgoKCNGLECB07dszheZeWiHz77bf697//rYYNG6pu3bp69NFHlZubq+zsbI0fP1433nij6tatqwkTJuQLzr6+vnryyScVFxenVq1aKSAgQBEREVq/fv1lX5Mk/frrrxo+fLiCgoJUo0YNRURE6MMPP3TquZf0799fn376qS5cuGDftn37diUnJ6t///4FPicrK0tTp05Vs2bNVKNGDd100016/vnnZbVa8/WoV69eatSokWrUqKHw8HC9+uqrysvLc5jXo0cPtWzZUr/++qv69u2rWrVqKTg4WC+88EK+uQBcizO0AAyRlZWl9PR0SdLvv/+u999/X+np6Ro0aJDDvKeeekoLFy5Ut27dNHr0aB04cEDvvfeefvjhB61fv94egD/55BONHDlSN910k6ZMmaKsrCy988476ty5sxISElS/fn1FRkYqMTFRcXFxmj59uvz8/CRJISEhSktLU58+feTn56cnnnhCvr6+OnbsmP773/8qOztb1atX18yZMzVx4kT17NlTkZGRkqQGDRo41Dts2DDVrVtXU6ZM0fnz5yVJu3bt0pYtWxQZGam6desqJSVFCxcuVPfu3bV9+3YFBAQ47ONSGBo3bpwyMjL09ttvKzIyUlu3blW1atUK7WndunVls9n00Ucf6YEHHiiy//Hx8UpMTNSAAQNUu3ZtHT58WAsXLtSPP/6orVu3ysfHx2F+VFSUqlevrkmTJmn37t1aunSpypcvr6SkJPn4+GjKlCn6+uuvtWDBAt14440aO3asw/N37NihVatWadSoUapYsaIWLVqkoUOH6rPPPiswgF9y6NAhdenSRX5+fnr00UdVpUoVffnllxo3bpyysrLyHacw/fr107Rp07RhwwZ1795dkrRixQqFhoaqWbNm+ebn5OSoZ8+eOnLkiB566CE1aNBAe/fu1RtvvKGff/5ZH330kX3uu+++q+DgYN11113y8fFRfHy8nn/+eWVlZenZZ5912G9WVpZ69eqlrl27qkePHtq4caPmzp2revXq6aGHHnLqtQC4etxYAcBVWbp0qR599NF82z09PTVz5kyHN/X9+/crIiJCAwYM0DvvvGPfPn/+fEVFRWnevHl64IEHdOHCBd10002qXLmyEhISVKFCBUnSnj171KFDB/Xr18/+/Llz5+qFF17Qnj17VK9ePfs+v/jiCw0dOlTx8fG65ZZbCqw9NTVVISEhmjRpkqKiohzGoqOjFRMTo8jISC1ZssRhrKClB4cPH9btt9+uiRMnasKECZL+OkMbGRkpf39/7dy5077Gd/PmzerVq5f+9a9/5QtIf5eWlqbWrVsrLS1NQUFBatu2rVq3bq3OnTvbw3tRNW3btk3dunXTO++8owEDBkj6//9e7du316pVq+z3V4+MjNS3336r/v37O/y3adWqlTw8PLR161b7tkuvY/369WrVqpUk6fTp07r11lvVqFEjffnllw6vf82aNfY1yn369NGJEycUHx/vUO+wYcO0ceNGHTx40P7fuyA9evTQqVOntHPnTnXr1k0BAQH64IMPdOHCBYWEhOjRRx9Vv3791Lx5cz333HN68sknJUmzZ8/WrFmzlJCQYD8zL0kLFizQhAkTtHbtWkVERBTay8cee0xxcXE6fPiwvLy87LVs2bLF/nt7Sdu2beXp6an4+PhCXwcAY7HkAIAhYmJi9Omnn+rTTz/VO++8ow4dOuipp55yWMt46SPpxx9/3OG5w4cPV+XKle3ju3fvVmpqqkaMGOEQbpo3b6727dvryy+/vOxtEitVqiRJWrduncPH0sU1YsSIfNv+Hnb++OMPnT59WlWqVFFQUJB2796db/6gQYMcvrB25513qnHjxvbgV5jq1asrPj5ew4cP17lz57Ro0SKNGTNGjRo1UlRUlP2M8T9rOnfunE6fPq1GjRqpSpUqBdZ033332cOsJLVo0UI2m03333+/w7zw8HD99ttv+Z5/yy232MOsJFWrVk39+/fXd999V+gVJzIyMpSQkKDevXsrJydH6enp9p+77rpLZ8+e1a5du4rsyd/1799f69atU1ZWljZs2KAzZ84Uul571apVatWqlapXr+5w3Pbt20uSvv76a/vcS728ePGiMjIylJ6errZt2yo7OzvfUhFvb+9896Fv06aNkpKSnH4dAK4eSw4AGOLWW291+FJYv379dOedd+rpp59Wt27dVK5cOSUnJ8tisSg4ONjhuV5eXqpXr56Sk5Mlyf6/jRo1yneckJAQbdq0SVlZWQ5rSP/pjjvuUGRkpGJiYvTmm28qIiJC3bp1U79+/VSxYkWnX1f9+vXzbcvNzdX06dO1fPlynTx50mHsn2dOJSkoKKjAbc5cLiwwMFBz5szRnDlzlJSUpISEBL3xxhuaP3++KlWqpH//+9+S/gqLzz//vD777DOdOXPGYR8FrU+uU6eOw+PKlSsXuj0nJ0dWq9V+ZrKo1yRJR48eLfCKE7/++qtsNptiYmLsV5f4p7S0tAK3F6R3796aNGmS1qxZo40bN6pVq1aqV6+ejhw5UuCx9+3bV2Dd/zzutm3b9OKLL+qHH35w+EeDlL+XtWrVkoeHh8M2X1/ffP8NALgWgRaAS5QpU0Zt27bV/Pnz9euvv6px48ZFzrfZbA5nDIua5wyLxaIlS5bohx9+0Lp165SQkKDx48dr9uzZ+uqrr1SjRg2n9vPPtafSX5coW7x4sR555BG1bt1alStXVpkyZRQVFVXgl4EKel3Ovo6/q1+/vh566CH16tVLYWFh+vjjj+2Bdvjw4dq6davGjRunm2++WZUqVZLFYtHw4cMLrOmfIeySMmUK/uDun/VeyWu6VMfYsWPVuXPnAuc0adKkyH38XbVq1dSpUyd98MEH2rdvn1566aUij92uXTv961//KnC8Vq1akqSkpCT16dNHN954o6Kjo1WnTh15eXlpz549eu655/L1srA+AihZBFoALnPp2/HZ2dmS/v9LTomJibrpppvs886fP6/k5GT7Osu6detKkn7++Wd17NjRYZ+JiYny9fW1n1G8XAgODw9XeHi4pkyZog0bNqh///5avHixJkyY4FSALkhcXJwGDRqkGTNmOGzPyMgo8Etev/zyS75thw8fVmBg4BUdv2rVqmrQoIH9qgoZGRnatGmTJk+erMmTJ9vn5ebmXtENJ5xR2GuSVOjrunS2u2zZsvaP+q/WgAEDNHz4cHl6eqp3796FzmvQoIHOnTt32eOuXbtWubm5WrZsmf33UFKBZ30BlB6soQXgEhcuXFB8fLzKlStnXzpw6axcbGysw9yFCxcqKytLXbp0kST7pafef/995eTk2Oft3btX8fHx6ty5sz2MXlrv+M/glpGRke+MYfPmzR3mFvbcy/Hw8Mi3708++aTQO3ctW7bM4RibN2/WgQMHdPfddxd5nJ07d+rs2bP5ticnJ+vQoUP2pRuXzqr+s6Y333zTZZeP2rVrl7777jv749OnT2vFihVq2bJloTe48Pf3V7t27fTBBx/ku5yYVLzlBpd069ZNkydP1qxZswpc7nHJvffeqx9//FFr167NN5aTk6Nz585J+v8zrn/vpdVqdfiiHIDShzO0AAzx1Vdf2c/Q/f7774qLi9Mvv/yiJ5980n42tWnTpho2bJg9wHbo0EEHDhzQwoULdeutt2rw4MGS/rpCwssvv6yRI0eqS5cuGjhwoP2yXZUrV7Z/zC7JfgWDadOmqW/fvipXrpzatWunFStWaMGCBerZs6caNGignJwcLV26VB4eHurVq5ckqWLFigoODlZcXJwaNmyoatWqqV69emrRokWRr7Vbt25atmyZKlWqpCZNmmjv3r2Ki4srcL2t9FeQ69q1q+677z5lZmbqrbfeUo0aNTRu3Lgij7N8+XJ9/PHH6tGjh8LCwuTj46OkpCQtXbpUVqvVfmWGypUrq23btpo3b54uXLigwMBAbdu27bKXBbsaTZo00cCBA/XII4/YL9t19uzZIq/aIElz5sxRly5d1KZNGz344IMKCgpSenq69uzZo02bNuno0aPFqsPHx8fhrHRhHnvsMX355Ze6//77NWDAAIWHh8tqteqXX37RqlWr7GG8U6dOKleunAYNGqSHHnpI58+f17JlywpdigGgdCDQAjDE3z9+9/b2VnBwsObMmaNhw4Y5zJs9e7bq1aunxYsX68svv5Sfn59GjBihqVOnOtyEoV+/fvLx8dHs2bM1bdo0lStXTm3bttXzzz/vEBxbtmypqVOn6oMPPtCjjz6qvLw8rVmzRm3atNGuXbu0atUqnTp1SpUqVdLNN9+sV155xeHLa7GxsYqKitLUqVNltVo1ePDgywbaGTNmyNPTU6tWrdKHH36osLAwrVy5Us8880yB88ePH6/ExES98cYbysjIUKtWrfTKK68UeUZR+utua+XLl9fmzZv15ZdfKjMzU1WrVlWLFi00btw4h+u9LliwQJMnT9bChQv1559/KiIiQqtXr7aHd6O1atVKd9xxh2bMmKGkpCQFBQXpww8/vOwthBs2bKiEhAS98sorWrFihdLS0uTn56eQkBBNmzbNJbVKfwXf1atX67XXXlNcXJxWrlypChUqqH79+hozZoz9bHfDhg21dOlSvfjii3ruuefk5+enQYMGqW3bturTp4/L6gNwdbgOLQC4yKXrsL733nvq27evu8sxjK+vr4YNG6a5c+e6uxQAkMQaWgAAAJgcgRYAAACmRqAFAACAqbGGFgAAAKbGGVoAAACYGoEWAAAApkagBQAAgKkRaAEAAGBqBFoAAACYGoEWAAAApvZ/Q92A//hpNYgAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "unit = ''\n", "\n", "fig, ax = plt.subplots(figsize=(10,5))\n", "\n", "ax.hist(resampled_means, bins=15, density=True, color='blue', alpha=0.8, ec='white', zorder=5)\n", "\n", "ax.plot(np.array([left_80, right_80]), np.array([0,0]), color='yellow', lw=8, zorder=10)\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Bootstrap Sample Mean'\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": [ "This 80% confidence interval is much shorter than the 95% confidence interval. It only goes from about 27.0 years to about 27.4 years. While that's a tight set of estimates, you know that this process only produces a good interval about 80% of the time. \n", "\n", "The earlier process produced a wider interval but we had more confidence in the process that generated it.\n", "\n", "To get a narrow confidence interval at a high level of confidence, you'll have to start with a larger sample. We'll see why in the next chapter." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Confidence Interval for a Population Proportion: Bootstrap Percentile Method ###\n", "In the sample, 39% of the mothers smoked during pregnancy." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.3909710391822828" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(baby[baby['Maternal Smoker'] == True]) / len(baby)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For what follows, it is useful to observe that this proportion can also be calculated by an array operation:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.3909710391822828" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "smoking = baby['Maternal Smoker']\n", "np.count_nonzero(smoking)/len(smoking)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "What percent of mothers in the population smoked during pregnancy? This is an unknown parameter which we can estimate by a bootstrap confidence interval. The steps in the process are analogous to those we took to estimate the population mean and median.\n", "\n", "We will start by defining a function `bootstrap_proportion` that returns an array of bootstrapped sampled proportions. Once again, we will achieve this by editing our definition of `bootstrap_median`. The only change in computation is in replacing the median of the resample by the proportion of smokers in it. The code assumes that the column of data consists of Boolean values. The other changes are only to the names of arrays, to help us read and understand our code." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "def bootstrap_proportion(original_sample, label, replications):\n", " \n", " \"\"\"Returns an array of bootstrapped sample proportions:\n", " original_sample: table containing the original sample\n", " label: label of column containing the Boolean variable\n", " replications: number of bootstrap samples\n", " \"\"\"\n", " \n", " just_one_column = original_sample[[label]]\n", " proportions = np.array([])\n", " for i in np.arange(replications):\n", " bootstrap_sample = just_one_column.sample(len(just_one_column), replace=True)\n", " resample_array = bootstrap_sample.iloc[:,0]\n", " resampled_proportion = np.count_nonzero(resample_array)/len(resample_array)\n", " proportions = np.append(proportions, resampled_proportion)\n", " \n", " return proportions\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us use `bootstrap_proportion` to construct an approximate 95% confidence interval for the percent of smokers among the mothers in the population. The code is analogous to the corresponding code for the mean and median." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([0.36286201, 0.41908007])" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Generate the proportions from 5000 bootstrap samples\n", "bstrap_props = bootstrap_proportion(baby, 'Maternal Smoker', 5000)\n", "\n", "# Get the endpoints of the 95% confidence interval\n", "left = np.percentile(bstrap_props, 2.5, interpolation='nearest')\n", "right = np.percentile(bstrap_props, 97.5, interpolation='nearest')\n", "\n", "np.array([left, right])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The confidence interval goes from about 36% to about 42%. The original sample percent of 39% is very close to the center of the interval, as you can see below." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "image/png": "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UCD+/PPPdfvtt6tJkyYKCwvTJ598IknKycnRXXfdpV27djmlSAAAAMBZ7J4ykZKSokGDBikoKEgjRozQ2rVrjX3+/v7Kz8/XunXrdNNNNzmlUADuIyPDS+npl/UBlVOdO2d2dQkAABewOxDPnj1boaGh+uCDD1RQUGATiCWpR48eWr9+vcMLBOB+0tNraOrUqhc++aoEAHgmu4doPv/8c91zzz2qXbt2matNNG3aVJmZmQ4tDgAAAHA2uwNxjRo1VKNG+c0zMzNVp04dhxQFAAAAVBa7A3FkZKS2bdtW5r7z589r48aN6tKli8MKAwAAACqD3YH473//uz788EM9/PDD+uqrryRJJ0+e1I4dOzRo0CD9+OOPeuyxx5xWKAAAAOAMdn+prlevXlqxYoWmTZum119/XZI0adIkWa1WNWjQQKtXr1bnzp2dVigAAADgDHYHYkkaOnSobr31ViUlJemHH35QSUmJWrVqpT59+sjX19dZNQIAAABOU6FALEl169bVgAEDnFELAAAAUOnsnkO8detWTZs2rdz906ZNK/dLdwAAAEBVZXcg/te//qVff/213P2FhYVaunSpQ4oCAAAAKovdgfjQoUOKjIwsd/91112nw4cPO6ImAAAAoNLYHYh/++03nTt3rtz9586dk8VicUhRAAAAQGWxOxC3a9dO77zzjkpKSkrtKykp0TvvvKO2bds6tDgAAADA2ewOxA888IA+++wzjRw5UgcOHJDFYpHFYtGBAwd0991367PPPtPEiROdWSsAAADgcHYvu3bnnXfqxx9/VHx8vN5//31JkslkktVqlclkUmxsrIYPH+60QgEAAABnqNA6xFOnTtXQoUO1ZcsWHT16VFarVa1atdLAgQPVsmVLJ5UIAAAAOI9dgfjcuXO66667NHz4cN1zzz3629/+5uy6AAAAgEph1xziOnXq6Msvv1RxcbGz6wEAAAAqld1fqrvxxhu1e/duZ9YCAAAAVDq7A/G8efP0+eef68knn9TRo0fLXH4NAAAAqG7s/lJd586dZbValZCQoISEBNWoUUO1atWyaWMymfTzzz87vEgAAADAWewOxHfccYdMJpMzawEAAAAqnd2BeNmyZQ5/8E8++UT/+te/9OWXXyojI0MJCQkaNWqUsd9qtWru3Ll65ZVXlJubq44dO2rhwoW6+uqrjTYWi0VPPPGE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Hc2YMUMffvihVq9erdatW+vBBx+0uf++ffv05ptvauLEifL19dUrr7yiUaNG6e233y4zwF+Qmpqq/v37y9/fXw899JAaNGig9957Tw8//LDOnDlT6nHsdfToUZnNZps3CXv27NHbb7+t8ePHKygoSG3atFFOTo5uueUWnT59WhMmTFDjxo2VmJioSZMmKTc313hDdMHGjRuVl5ensWPHqqSkRKtXr9btt9+u5ORkhYWFSZK+//573XLLLfLy8tKDDz4oHx8fvf766xo+fLheeeUV47V1wZIlS2QymTRx4kRJ0s0336zp06dr7ty5uv/++/WXv/xFktS+fftyz3fJkiWaNWuWunXrpmeeeUYnTpzQqlWrtGfPHn344Yc2AbqkpER33HGH2rdvr1mzZunTTz/VK6+8In9/f82cOfOynm/A03FhDgA2XnvtNT300EOltteqVUsLFizQ/fffb2w7dOiQunXrprvuuksrV640ti9btkxxcXF6/vnn9de//lVFRUW65pprVL9+fSUnJ8vHx0eS9OWXX6pXr14aOnSocf8LweDLL79UixYtjGP+97//1ahRo5SUlKTrr7++zNozMzMVERGh2NhYxcXF2eyLj4/XvHnzNHDgQK1bt85mX1lTJ44cOaK//OUvmjZtmqZOnSrp9xHBgQMHKiAgQPv37zdCyq5duzR48GD9/e9/v2ggyc7OVlRUlLKzsxUaGqobb7xRUVFR6tevnxH+L1bTnj17FBMTo5UrV+quu+6S9H/9FR0drTfffFMmk0mSNHDgQH388ccaNmyYTd907dpVZrNZu3fvNrZdOI/t27era9eukqRTp07phhtuUJs2bfTee+/ZnP+WLVuMOdp33HGHfv75ZyUlJdnUO3r0aO3YsUOHDx82+rssAwYMUEZGhjH6mpOTo5dfflnLly9XTEyMMdLr5+cnk8mkXbt22czJfeKJJ/TCCy/YTEM5f/68YmJidPjwYR06dEgNGjTQsWPHdN1118nLy0v79+83Xlvff/+9oqKidPvtt2v16tWSpL/+9a/aunWrdu/erTZt2kj6/Q1it27dJEkHDx5UjRo1jOejWbNm2rdvn8157t+/XzfffLMSEhI0atQom3O+8Fq88MXRnJwctWvXTp07d9Zbb71lTKe48JqfOnWqnnjiCUm/jxD/5z//sdkmSXfffbf27dunH374odznGkD5mDIBoEzz5s3TW2+9pbfeeksrV65Ur1699Nhjj9msNHHhI/VHHnnE5r5jxoxR/fr1jf0HDhxQZmamxo4daxMarrvuOkVHR+u9996T1Xrx9+b16tWTJG3btk1FRUWXfV5jx44tte2PQe7XX3/VqVOn1KBBA4WGhurAgQOl2o8YMcJmxO6mm27S1VdfbQTH8jRq1EhJSUkaM2aM8vPz9corr2jSpElq06aN4uLijBHrP9eUn5+vU6dOqU2bNmrQoEGZNd1zzz1GGJakTp06yWq16t5777Vp17FjR/3444+l7n/99dcbYViSrrrqKg0bNkwpKSnlrviRm5ur5ORk3X777Tp37pxycnKMn759++rs2bP64osvLvqcSL+/+QgNDVVoaKi6dOliBP6EhASbdl27di31BbXt27fr2muvtZmT7eXlpUmTJqmgoEAff/yxTfuYmBibN1phYWHq06ePEciLi4v1wQcf6JZbbjHCsCTVr19fY8aM0YkTJ/TNN9/YHHPEiBEXDf2XkpycLIvFogcffNBmbvGAAQMUHh5e5tSVP7+Ou3fvrpycHJ09e/ay6wA8GVMmAJTphhtusPlS3dChQ3XTTTfp8ccfV0xMjLy8vHT8+HGZTCaFh4fb3Nfb21stWrTQ8ePHJcn47x8DxgURERHauXOnzpw5Y/Px+J/16NFDAwcO1Lx58/Tiiy+qW7duiomJ0dChQ+Xr62v3ebVs2bLUtsLCQs2ZM0cbNmzQyZMnbfb9eeRWkkJDQ8vcZs9yb82bN9fixYu1ePFiHT16VMnJyXrhhRe0bNky1atXT//4xz8k/R42n376ab399ts6ffq0zTHKmp/drFkzm9v169cvd/u5c+dksVjk7e19yXOSfp+jW9ac1x9++EFWq1Xz5s0zVvf4s+zs7DK3/7n2F154QSaTSQ0aNFDLli3LfLyy+u748eOlpjBIMuaTX3jtXVDeeW7fvl15eXnGvOvyXqsXjtmhQ4eL1lURF/v9aNOmTalQX6tWrVKrkVx4vk6fPm28eQRgPwIxALvUqFFDN954o5YtW6YffvhBV1999UXbW61WmxHLi7Wzh8lk0rp16/TZZ59p27ZtSk5O1uTJk7Vo0SJ98MEHCgwMtOs4f557K/2+xNzatWs1YcIERUVFqX79+qpRo4bi4uLKXAu3rPOy9zz+qGXLlrr//vs1ePBgRUZGav369UYgHjNmjHbv3q2HH35Y1157rerVqyeTyaQxY8aUWVN5KxvUqFH2B4F/rvdyzulCHQ8++KD69etXZpt27dpd9BjS730SHR1tVzt7lVf7lfRdee0qUldFlfWY5fVpee0BXBqBGIDdLqxOUFBQIOn/viSWlpama665xmh3/vx5HT9+3JhnGhISIkn67rvv1Lt3b5tjpqWlyc/PzxjRvFSI7tixozp27KgZM2bo/fff17Bhw7R27VpNnTrVrgBelsTERI0YMUJz58612Z6bm1vml+S+//77UtuOHDmi5s2bX9bjN2zYUK1atTJWtcjNzdXOnTs1ffp0TZ8+3WhXWFh4WRcssUd55ySp3PO6MDJas2ZNuwKtM4SEhNisVHLBhVU/Lrz2LijvPBs0aKAGDRrI19dXPj4+FTpmWSryWvzj78eFL/b98THteTwAV4Y5xADsUlRUpKSkJHl5eRkf7V4YFfzzXM81a9bozJkz6t+/vyQZS4e9/PLLOnfunNHuq6++UlJSkvr162cEiAtzZ/8c/HJzc0uNfl133XU2bcu776WYzeZSx960aVO5V4574403bB5j165d+vbbb42ltsqzf//+Mud4Hj9+XKmpqcbUkwsjgH+u6cUXX3Ta1du++OILpaSkGLdPnTqljRs3qnPnzuVeICUgIEA9e/bUv//971LLwUn2TZe4Uv3799fBgwf14YcfGtuKioq0fPly1a1bVzfeeKNN+23btunYsWPG7e+//14ffPCB+vbtK+n310KfPn20fft2m/B89uxZrVmzRs2aNbvoahEXVOS1GB0dLW9vby1fvlzFxcXG9v/9739KS0szfo8AOA8jxADK9MEHHxgjhL/88osSExP1/fffa8qUKcZobvv27TV69GgjAPfq1Uvffvut1qxZoxtuuEEjR46U9Pucx+eee07jx49X//79NXz4cGPZtfr16xvTBCQZK0jMnj1bd955p7y8vNSzZ09t3LhRq1ev1m233aZWrVrp3Llzeu2112Q2mzV48GBJkq+vr8LDw5WYmKiwsDBdddVVatGihTp16nTRc42JidEbb7yhevXqqV27dvrqq6+UmJhY7tzQgIAA3XLLLbrnnnuUl5en5cuXKzAwUA8//PBFH2fDhg1av369BgwYoMjISNWpU0dHjx7Va6+9JovFYqyMUb9+fd144416/vnnVVRUpObNm2vPnj2XXNbtSrRr107Dhw/XhAkTjGXXzp49e8llvBYvXqz+/fure/fuuu+++xQaGqqcnBx9+eWX2rlzp3766Sen1HvBhfWTR44cqYkTJyooKEhvvvmm9u/frzlz5pSalx4aGqpbb71V48aNU0lJiVatWiVvb2/FxsYabZ588kklJycrJiZG48aNM5ZdO3HihP79739fdMrCHx+nfv36evnll+Xr6ytfX19dffXVZU4h8ff31/Tp0zVr1iwNHjxYAwcOVHp6ulauXKmQkJBLvq4AXDkCMYAy/XH6QO3atRUeHq7Fixdr9OjRNu0WLVqkFi1aaO3atXrvvffk7++vsWPH6oknnrC5iMfQoUNVp04dLVq0SLNnz5aXl5duvPFGPf300zbBs3PnznriiSf073//Ww899JBKSkq0ZcsWde/eXV988YXefPNNZWVlqV69err22ms1f/58my//JSQkKC4uTk888YQsFotGjhx5yUA8d+5c1apVS2+++aZeffVVRUZGavPmzeVeNnjy5MlKS0vTCy+8oNzcXHXt2lXz588v8wt4f3T//ferbt262rVrl9577z3l5eWpYcOG6tSpkx5++GGb9X5Xr16t6dOna82aNfrtt9/UrVs3vfPOO0b4d7SuXbuqR48emjt3ro4eParQ0FC9+uqrl7wEdlhYmJKTkzV//nxt3LhR2dnZ8vf3V0REhGbPnu2UWv/I399f27dv16xZs7RmzRr9+uuvCgsL07Jly4w3ZH80bNgw1a1bVwkJCcrMzNQ111yjOXPm2HyhLTw8XNu2bdOsWbOUkJCg8+fPq0OHDnrjjTfKnSv9Z97e3lqxYoVmz56tqVOnqqioSLGxseXOqZ4yZYr8/f21fPlyPfnkk/L19dXgwYP11FNPVfgS5gAqjnWIAcBOF9adfemll3TnnXe6uhyH8fPz0+jRo7VkyRJXl+I0F9YhfuqppzRlyhRXlwOgimEOMQAAADwagRgAAAAejUAMAAAAj8YcYgAAAHg0RogBAADg0QjEAAAA8GgEYgAAAHg0AjEAAAA8GoEYAAAAHo1ADAAAAI/2/wDdO0uxseTsPgAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "resampled_proportions = pd.DataFrame({'Bootstrap Sample Proportion':bstrap_props})\n", "\n", "unit = ''\n", "\n", "fig, ax = plt.subplots(figsize=(10,5))\n", "\n", "ax.hist(resampled_proportions, bins=15, density=True, color='blue', alpha=0.8, ec='white', zorder=5)\n", "\n", "ax.plot(np.array([left, right]), np.array([0,0]), color='yellow', lw=8, zorder=10)\n", "\n", "y_vals = ax.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Bootstrap Sample Proportion'\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": [ "### Care in Using the Bootstrap ###\n", "The bootstrap is an elegant and powerful method. Before using it, it is important to keep some points in mind.\n", "\n", "- Start with a large random sample. If you don't, the method might not work. Its success is based on large random samples (and hence also resamples from the sample) resembling the population. The Law of Averages says that this is likely to be true provided the random sample is large.\n", "\n", "- To approximate the probability distribution of a statistic, it is a good idea to replicate the resampling procedure as many times as possible. A few thousand replications will result in decent approximations to the distribution of sample median, especially if the distribution of the population has one peak and is not very asymmetric. We used 5,000 replications in our examples but would recommend 10,000 in general.\n", "\n", "- The bootstrap percentile method works well for estimating the population median or mean based on a large random sample. However, it has limitations, as do all methods of estimation. For example, it is not expected to do well in the following situations.\n", " - The goal is to estimate the minimum or maximum value in the population, or a very low or very high percentile, or parameters that are greatly influenced by rare elements of the population.\n", " - The probability distribution of the statistic is not roughly bell shaped.\n", " - The original sample is very small, say less than 10 or 15.\n", "\n" ] } ], "metadata": { "anaconda-cloud": {}, "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 }