{ "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//5z8rMzJQkHT58WNnZ2RowYIB9rre3t3r37q3du3dLktLS0lRaWuowJzAwUKGhofY5AADg6tPQXQfu2bOnXn75ZYWEhCg3N1eJiYkaNGiQdu3apezsbEmSxWJxeI7FYtHx48clSTk5OTKbzfLz86swJycn58q8CAAAUOe4LdzccccdDo979uyp8PBwrV69WjfddJMkyWQyOcyx2WwVtv2eM3MyMjIuoeKrE71yncLCIlmt3u4uo0YKC4uVkZHp7jIq4H3pWvTTdeil61TVy5CQkCqf67Zw83tNmzZV586ddejQIQ0bNkzS+bMzgYGB9jm5ubn2szmtWrVSWVmZ8vLy7Gt1Lszp3bt3lceqrik4LyMjg165SEZGhpo185Gnp9ndpdRIs2YN69x7gPela9FP16GXrnO5vXR6zc2XX36p3NzcSsfz8vL05ZdfXnIhJSUlysjIkL+/v9q3by9/f3+lpqY6jO/cuVORkZGSpPDwcHl4eDjMycrKUnp6un0OAAC4+jgdboYPH+4QJH7vs88+0/Dhw50+8JNPPqkvvvhCmZmZ2rt3ryZOnKj/9//+n8aOHSuTyaSpU6fq73//uzZu3KgDBw5o2rRpatKkiWJiYiRJzZs314QJEzRnzhxt27ZN33zzjaZMmaKwsDD169fP6ToAAICxOH1ZymazVTl+9uxZNWjg/Ievjh07pnvvvdd+Walnz5765JNPdO2110qSpk+fruLiYsXFxSk/P18RERFav369fHx87PuYN2+ezGazJk2apJKSEvXt21fLli2T2Vy/Tv0DAADXqTLcFBYWqqCgwP745MmTOnr0aIV5+fn5euedd9SmTRunD/zqq69WOW4ymRQfH6/4+PhK53h5eSkxMVGJiYlOHxcAABhbleHm5Zdf1gsvvCCp+rBhs9k0e/Zs11cIAABQA1WGm379+snLy0s2m01z587VqFGj1K1bN4c5JpNJjRs3Vo8ePdSzZ89aLRYAAKA6VYabqKgoRUVFSTr/JZXDhw9XWFjYFSkMAADgUji9oPjxxx+vzToAAABcotJw8+abb0qSxowZI5PJZH9cnbFjx7qmMgAAgEtQabiZNm2aTCaT7r77bjVq1EjTpk2rdmcmk4lwAwAA3KrScPPNN99Ikho1auTwGAAAoC6rNNxcuJleZY8BAADqIudvKQwAAFAP1Ohbwbdt26aVK1cqMzNTp06dqvCVDCaTSWlpaa6sDwAAoEacDjfJycmaNWuW/XugunTpUpt1AQAAXBKnw01SUpL69Omjd955x77IGAAAoK5xes1NXl6eRo0aRbABAAB1mtPhJjw8XEeOHKnNWgAAAC6b0+Hm+eef1+rVq/X555/XZj0AAACXxek1NwkJCWrWrJlGjBih4OBgtWvXTmaz2WGOyWTSmjVrXF4kAACAs5wONz/88INMJpMCAwNltVr1008/VZhjMplcWhwAAEBNOR1uvvvuu9qsAwAAwCW4QzEAADAUp8/cHD161Kl57dq1u+RiAGccP95IWVn1K5cXFnaQh4e5+okAgMvmdLi54YYbnFpTc/LkycsqCKhOVlYDzZxZv4KC1eqtp592dxUAcHVwOtz84x//qBBuysrKdPjwYb311ltq1aqV7r33XpcXCAAAUBNOh5vx48dXOjZjxgwNGDBAp0+fdklRAAAAl8olCxeaNm2q8ePH6+WXX3bF7gAAAC6Zy1Zlenh46Pjx467aHQAAwCVxSbj57rvvtGzZMoWGhrpidwAAAJfssj8tVVBQoMLCQjVt2lRJSUkuLQ4AAKCmnA43ffr0qRBuTCaTfH19FRQUpLvvvlu+vr6urg8AAKBGnA43ycnJtVkHAACAS9Sv27wCAABUg3ADAAAMhXADAAAMhXADAAAMhXADAAAMxalwU1JSogULFmjr1q21XQ8AAMBlcSrceHl56aWXXtKvv/5a2/UAAABcFqcvS3Xr1k2HDh2qzVoAAAAum9PhZs6cOXrttde0ZcuW2qwHAADgsjgdbpYsWSJfX1+NHTtW119/vYYNG6bRo0c7/Nxzzz2XXMiiRYvk6+uruLg4+zabzaaEhAR17txZrVu31tChQ3Xw4EGH51mtVsXFxSkoKEgBAQEaM2aMsrKyLrkOAABQvzkdbn744QedO3dOgYGBatCggY4cOaL09PQKP5diz549WrlypcLCwhy2L168WElJSfbFzBaLRSNHjlRRUZF9Tnx8vDZt2qQVK1Zo8+bNKioqUmxsrMrKyi6pFgAAUL85/d1S3333Xa0UUFBQoMmTJ2vp0qV64YUX7NttNpuSk5M1Y8YMRUdHSzr//VYhISFat26dJk2apIKCAq1atUpJSUnq37+/JCklJUXdunXTtm3bNHDgwFqpGQAA1F1uv8/NhfBy2223OWw/fPiwsrOzNWDAAPs2b29v9e7dW7t375YkpaWlqbS01GFOYGCgQkND7XMAAMDVpUbhpqysTGvWrNEDDzyg2NhYff/995Kk/Px8vfvuuzpx4kSNDr5y5UodOnRIs2bNqjCWnZ0tSbJYLA7bLRaLcnJyJEk5OTkym83y8/OrdA4AALi6OH1ZqqCgQKNGjdK+ffvUtGlTnTlzRtOmTZMk+fj4aNasWRozZozmzJnj1P4yMjI0d+5cffjhh2rUqFGl80wmk8Njm81WYdvvVTcnIyPDqRpRN3tVWNhBVqu3u8uosdLSc7Ja69dasMLCYmVkZLq7jArq4vuyPqOfrkMvXaeqXoaEhFT5XKfDzTPPPKMffvhBa9euVY8ePdSpUyf7mNls1vDhw/XJJ584HW6++uor5eXl6eabb7ZvKysr044dO/Tqq69q165dks6fnQkMDLTPyc3NtZ/NadWqlcrKypSXl6eWLVs6zOndu3elx66uKTgvIyOjTvaqoMBLnp5md5dRI1arVR4eDeXp6fSvXJ3QrFnDOvceqKvvy/qKfroOvXSdy+2l05elPvjgA9133326/fbbL3pWJDg4WEePHnX6wEOHDtWOHTu0fft2+0+PHj109913a/v27erUqZP8/f2Vmppqf05JSYl27typyMhISVJ4eLg8PDwc5mRlZSk9Pd0+BwAAXF2c/jMyPz9fHTt2rHTcZrPp7NmzTh/Y19dXvr6+DtsaN26sFi1aqGvXrpKkqVOnatGiRQoJCVGnTp20cOFCNWnSRDExMZKk5s2ba8KECZozZ44sFotatGihWbNmKSwsTP369XO6FgAAYBxOh5trr71WBw4cqHT8yy+/dLhU5QrTp09XcXGx4uLilJ+fr4iICK1fv14+Pj72OfPmzZPZbNakSZNUUlKivn37atmyZTKb69dlCwAA4BpOh5vRo0fr73//u4YPH64uXbpI+r/FvikpKXr//fc1b968yyrmgw8+cHhsMpkUHx+v+Pj4Sp/j5eWlxMREJSYmXtaxAQCAMTgdbh5++GHt3btXf/jDH9SpUyeZTCY9/vjjOnnypLKzszV06FBNmTKlNmsFAAColtPhxsPDQ2vWrNHatWv13nvvyWQy6dy5c+revbtGjRqle+65p9qPaAMAANS2Gn8u9cKXZAIwPpPJrL17vdxdhoPCwg4qKKi6prZty9WmjfMfcABgLJd0043vv//e/rHvdu3aKSwsjLM2gAHl5koJCXVrcb7V6l3tfY4WLpTatLlCBQGoc2oUbt555x099dRTOnbsmGw2m6Tzi34DAgL01FNPcUYHAAC4ndPh5o033tADDzygkJAQPfPMM+rUqZNsNpt+/vlnvfbaa5oyZYrOnj2r8ePH12a9AAAAVXI63Lz44ouKiIjQ+++/Ly8vx+vdkydP1pAhQ/Tiiy8SbgAAgFs5/fULWVlZGj16dIVgI52/10xsbKyOHTvm0uIAAABqyulw07lzZx0/frzS8WPHjik0NNQlRQEAAFwqp8PN3LlztXLlSr377rsVxt555x299tprevbZZ11aHAAAQE05veZm6dKl8vPz01/+8hc9/vjj6tixo0wmkw4dOqTffvtNwcHBWrJkiZYsWWJ/jslk0po1a2qlcAAAgItxOtz88MMPMplMCgwMlCT7+hpPT08FBgbKarUqPT3d4Tnc+wYAAFxpToeb7777rjbrAAAAcAmn19wAAADUB4QbAABgKIQbAABgKIQbAABgKIQbAABgKIQbAABgKE6Hm+7du2vz5s2Vjn/00Ufq3r27S4oCAAC4VE6HmyNHjujMmTOVjp85c0ZHjx51SVEAAACXqkaXpaq64/BPP/0kHx+fyy4IAADgclR5h+LVq1frzTfftD9euHChVq5cWWFefn6+Dhw4oMGDB7u+QgAAgBqoMtycOXNG2dnZ9scFBQUqLy93mGMymdS4cWNNnDhRjz/+eO1UCQAA4KQqw83kyZM1efJkSdINN9yg+fPna8iQIVekMAAAgEvh9Bdnfvvtt7VZBwAAgEs4HW4uKCoq0q+//qpTp07JZrNVGO/Tp49LCgMAALgUToebU6dO6bHHHtO7776rsrKyCuM2m00mk0knT550aYEAAAA14XS4efjhh/X+++9r8uTJ6tOnj3x9fWuxLAAAgEvjdLj59NNPNWXKFD3//PO1WQ8AAMBlcfomfo0aNVJwcHBt1gIAAHDZnA430dHR+uSTT2qzFgAAgMvmdLh58MEHdeLECd1///3as2ePTpw4od9++63CDwAAgDs5veYmIiJCJpNJaWlpWrNmTaXz+LQUAABwJ6fDzaOPPlrlF2cCAADUBU6Hm/j4+NqsAwAAwCWcXnPz38rKynTy5EmdO3fO1fUAAABclhqFm3379mnEiBEKCAhQp06d9OWXX0qS8vLydM899+izzz6rlSIBAACc5XS4+eqrrzRkyBD98ssvGjNmjMP3Svn5+en06dNatWqV0wf+5z//qd69e6tdu3Zq166d7rjjDm3ZssU+brPZlJCQoM6dO6t169YaOnSoDh486LAPq9WquLg4BQUFKSAgQGPGjFFWVpbTNQAAAONxOtw8++yzCg4O1u7duzVnzpwK47feeqv27t3r9IEDAgL0zDPP6LPPPlNqaqr69u2r8ePH6/vvv5ckLV68WElJSVqwYIG2bt0qi8WikSNHqqioyL6P+Ph4bdq0SStWrNDmzZtVVFSk2NjYi373FQAAuDo4HW727dunP/7xj/Ly8rrop6batm2r7Oxspw88dOhQ3XHHHQoKClKnTp00e/ZsNW3aVHv27JHNZlNycrJmzJih6Ohode3aVcnJyTp9+rTWrVsnSSooKNCqVas0d+5c9e/fX+Hh4UpJSdH+/fu1bds2p+sAAADG4nS4adCggRo0qHx6dna2vL29L6mIsrIyvfPOOzpz5ox69eqlw4cPKzs7WwMGDLDP8fb2Vu/evbV7925JUlpamkpLSx3mBAYGKjQ01D4HAABcfZz+KHh4eLg++ugjTZkypcLY2bNntXbtWvXq1atGB9+/f78GDRqkkpISNWnSRK+//rrCwsLs4cRisTjMt1gsOn78uCQpJydHZrNZfn5+Febk5ORUedyMjIwa1Xk1q4u9KizsIKv10oK0O5WWnpPVWr8umZaWmutkzVartcrxwsJiZWRkXpliDKAu/p7XV/TSdarqZUhISJXPdTrc/O1vf1NMTIweeOABjR49WpJ04sQJffrpp1q4cKF++eUXJSUlObs7e3Hbt29XQUGBNm7cqKlTp+r999+3j//+8pfNZqv2RoLOzKmuKTgvIyOjTvaqoMBLnp5md5dRI1arVR4eDeXp6fSvXJ3g4aE6V7PVapWnp2eVc5o1a1gn37t1UV39Pa+P6KXrXG4vnf5Xq3///kpJSVFcXJxWr14tSZo6dapsNpuaN2+u5cuX66abbqrRwRs1aqSgoCBJUo8ePbRv3z69/PLLmjlzpqTzZ2cCAwPt83Nzc+1nc1q1aqWysjLl5eWpZcuWDnN69+5dozoAAIBx1OhPspiYGA0ZMkSpqan6+eefVV5ero4dO2rgwIFq2rTpZRdTXl6us2fPqn379vL391dqaqpuvPFGSVJJSYl27typuXPnSjp/mczDw0Opqan2M0lZWVlKT09XZGTkZdcCAADqpxqfb27cuLGGDh162Qd++umnNWjQILVt29b+KagvvvhCa9askclk0tSpU7Vo0SKFhISoU6dOWrhwoZo0aaKYmBhJUvPmzTVhwgTNmTNHFotFLVq00KxZsxQWFqZ+/fpddn0AAKB+cjrcbN68WampqUpMTLzoeFxcnAYOHKg777zTqf1lZ2frvvvuU05Ojpo1a6awsDCtW7dOAwcOlCRNnz5dxcXFiouLU35+viIiIrR+/Xr5+PjY9zFv3jyZzWZNmjRJJSUl6tu3r5YtWyazuX6txwAAAK7jdLhZunSpfX3MxZSUlGjx4sVOh5vk5OQqx00mk+Lj46v8wk4vLy8lJiZWGrgAAMDVx+n73Bw4cEDh4eGVjnfv3l0//PCDK2oCAAC4ZE6Hm3Pnzqm4uLjS8eLi4mrvPQEAAFDbnA43Xbt21caNG1VeXl5hrLy8XBs3blTnzp1dWhwAAEBNOR1u7r//fn399dcaO3as0tLSZLVaZbValZaWpnHjxunrr7++6N2LAQAAriSnFxTffffd+uWXX5SQkKBPPvlE0vlFvxfuCPzYY48pNja21goFAABwRo3uczNz5kzFxMRo06ZNyszMlM1mU8eOHTV8+HB16NChlkoEAABwnlPhpri4WPfcc49iY2P1xz/+UQ8++GBt1wUAAHBJnFpz4+3trW+++UZlZXXv24EBAAD+m9MLim+55Rbt2LGjNmsBAAC4bE6HmwULFmjfvn2aPXu2MjMzL/qRcAAAAHdzekHxTTfdJJvNpqSkJCUlJalBgwby8PBwmGMymXTs2DGXFwkAAOAsp8PNyJEjZTKZarMWAACAy+Z0uKnuiy4BAADqAqfX3AAAANQHNQo3R44c0UMPPaTw8HC1a9dOX3zxhSQpLy9PjzzyiNLS0mqjRgAAAKc5fVkqPT1dd955p8rLy9WzZ08dOXLEft8bPz8/7dmzR1arVf/4xz9qrVgAAIDqOB1unnrqKfn4+OjTTz+V2WxWp06dHMYHDRqk9957z9X1AQAA1IjTl6V27Nihe++9V61atbrop6batWun48ePu7Q4AACAmnI63Jw7d05NmjSpdPzUqVMym80uKQoAAOBSOR1uunbtqu3bt190zGazadOmTQoPD3dVXQAAAJfE6XAzdepUbdiwQS+88IJOnjwpSSovL9ePP/6oP//5z/rPf/7Dt4UDAAC3c3pB8d13362jR4/q+eef1/z58+3bJMlsNuu5557THXfcUTtVAgAAOMnpcCNJM2bMUExMjDZu3KhDhw6pvLxcHTt21B/+8Ae1b9++tmoEAABwWrXhxmq1avPmzcrMzNQ111yjwYMHa9q0aVeiNgAAgBqrMtxkZ2dryJAh+uWXX2Sz2SRJTZo00dtvv60+ffpckQIBAABqosoFxc8995wyMzM1bdo0vf3220pISJCnp6ceffTRK1UfAABAjVR55mbr1q0aO3asnnvuOfu2Vq1a6d5771VWVpbatm1b6wUCAADURJVnbrKzsxUZGemwLSoqSjabTb/++mutFgYAAHApqgw3ZWVl8vLycth24XFJSUntVQUAAHCJqv20VGZmpr7++mv748LCQklSRkaGmjZtWmF+RESEC8sDAAComWrDTUJCghISEips//2iYpvNJpPJZL97MQAAgDtUGW6SkpKuVB0AAAAuUWW4GTdu3JWqAwAAwCWc/uJMAACA+oBwAwAADIVwAwAADIVwAwAADIVwAwAADMVt4ebFF19U//791a5dOwUHBys2NlYHDhxwmGOz2ZSQkKDOnTurdevWGjp0qA4ePOgwx2q1Ki4uTkFBQQoICNCYMWOUlZV1JV8KAACoQ9wWbr744gv95S9/0ZYtW7Rx40Y1bNhQI0aM0KlTp+xzFi9erKSkJC1YsEBbt26VxWLRyJEjVVRUZJ8THx+vTZs2acWKFdq8ebOKiooUGxursrIyd7wsAADgZtXeobi2rF+/3uFxSkqKrr32Wu3atUt33XWXbDabkpOTNWPGDEVHR0uSkpOTFRISonXr1mnSpEkqKCjQqlWrlJSUpP79+9v3061bN23btk0DBw684q8LAAC4V51Zc3P69GmVl5fL19dXknT48GFlZ2drwIAB9jne3t7q3bu3du/eLUlKS0tTaWmpw5zAwECFhoba5wAAgKuL287c/N7jjz+ubt26qVevXpKk7OxsSZLFYnGYZ7FYdPz4cUlSTk6OzGaz/Pz8KszJycmp9FgZGRmuLN3Q6mKvCgs7yGr1dncZNVZaek5Wa/26XFpaaq6TNVut1irHCwuLlZGReWWKMYC6+HteX9FL16mqlyEhIVU+t06EmyeeeEK7du3SRx99JLPZ7DBmMpkcHl/4gs6qVDenuqbgvIyMjDrZq4ICL3l6mqufWIdYrVZ5eDSUp2ed+JVzmoeH6lzNVqtVnp6eVc5p1qxhnXzv1kV19fe8PqKXrnO5vXT7Zan4+Hi988472rhxozp06GDf7u/vL0kVzsDk5ubaz+a0atVKZWVlysvLq3QOAAC4urg13Dz22GNat26dNm7cqOuuu85hrH379vL391dqaqp9W0lJiXbu3KnIyEhJUnh4uDw8PBzmZGVlKT093T4HAABcXdx2vnnmzJl6++239frrr8vX19e+xqZJkyZq2rSpTCaTpk6dqkWLFikkJESdOnXSwoUL1aRJE8XExEiSmjdvrgkTJmjOnDmyWCxq0aKFZs2apbCwMPXr189dLw0AALiR28LN8uXLJcn+Me8LHnvsMcXHx0uSpk+fruLiYsXFxSk/P18RERFav369fHx87PPnzZsns9msSZMmqaSkRH379tWyZcsqrN0BAABXB7eFm/z8/GrnmEwmxcfH28POxXh5eSkxMVGJiYkurA4AANRXbl9QDAAA4EqEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCiEGwAAYCgN3V0AALiayWTW3r1e7i6jRtq2LVebNmfdXQZgCIQbAIaTmyslJJjdXUaNLFwotWnj7ioAY+CyFAAAMBTCDQAAMBTCDQAAMBTCDQAAMBQWFF/ljh9vpKysi2fcwsIOKiioe584KS6uXwtFAQBXFuHmKpeV1UAzZ148LFit3vL0rHtBIj7e3RUAAOoyLksBAABDIdwAAABDIdwAAABDIdwAAABDIdwAAABDIdwAAABDcWu4+fLLLzVmzBh16dJFvr6+euONNxzGbTabEhIS1LlzZ7Vu3VpDhw7VwYMHHeZYrVbFxcUpKChIAQEBGjNmjLKysq7kywAAAHWIW8PNmTNn1LVrV82fP1/e3t4VxhcvXqykpCQtWLBAW7dulcVi0ciRI1VUVGSfEx8fr02bNmnFihXavHmzioqKFBsbq7Kysiv5UgAAQB3h1nAzaNAgzZkzR9HR0WrQwLEUm82m5ORkzZgxQ9HR0eratauSk5N1+vRprVu3TpJUUFCgVatWae7cuerfv7/Cw8OVkpKi/fv3a9u2bW54RQAAwN3q7Jqbw4cPKzs7WwMGDLBv8/b2Vu/evbV7925JUlpamkpLSx3mBAYGKjQ01D4HAABcXers1y9kZ2dLkiwWi8N2i8Wi48ePS5JycnJkNpvl5+dXYU5OTk6l+87IyHBxtfVXYWEHWa0VLwleYLVar2A1ziktNctqrX+XHUtLz9W7uutqr6t7X9bVuqtSWFisjIxMtxybfxNdh166TlW9DAkJqfK5dTbcXGAymRwe22y2Ctt+r7o51TXlalJQ4FXp90dZrVZ5enpe4Yqq5+EheXrW+beuA6vVKg+PhvWu7rrYa2fel3Wx7uo0a9bQLf82ZWRk8G+ii9BL17ncXtbZy1L+/v6SVOEMTG5urv1sTqtWrVRWVqa8vLxK5wAAgKtLnQ037du3l7+/v1JTU+3bSkpKtHPnTkVGRkqSwsPD5eHh4TAnKytL6enp9jkAAODq4tbztqdPn9ahQ4ckSeXl5fr111/17bffqkWLFmrXrp2mTp2qRYsWKSQkRJ06ddLChQvVpEkTxcTESJKaN2+uCRMmaM6cObJYLGrRooVmzZqlsLAw9evXz42vDAAAuItbw81//vMfDR8+3P44ISFBCQkJGjt2rJKTkzV9+nQVFxcrLi5O+fn5ioiI0Pr16+Xj42N/zrx582Q2mzVp0iSVlJSob9++WrZsmczmi68jAQAAxubWcHPrrbcqPz+/0nGTyaT4+HjFx8dXOsfLy0uJiYlKTEyshQoBAEB9U2fX3AAAAFwKwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADAUwg0AADCUhu4uAAAgmUxm7d3rdcWPW1jYQQUFl37ctm3L1abNWRdWBFw+wg0A1AG5uVJCgvmKH9dq9Zan56Ufd+FCqU0bFxYEuACXpQAAgKFw5sZFjh9vpKys+pcVi4uv/F+KAADUJsKNi2RlNdDMmfUvKMTHu7sCAABcq/6dagAAAKgC4QYAABgK4QYAABgK4QYAABgK4QYAABiKYcLN8uXLdcMNN8jf31+33XabduzY4e6SAACAGxgi3Kxfv16PP/64HnnkEX3++efq1auXRo8eraNHj7q7NAAAcIUZItwkJSVp3LhxmjhxokJDQ5WYmCh/f3+9+uqr7i4NAABcYab8/Hybu4u4HGfPnlWbNm20YsUKjRgxwr595syZOnDggDZv3uy+4gAAwBVX78/c5OXlqaysTBaLxWG7xWJRTk6Om6oCAADuUu/DzQUmk8nhsc1mq7ANAAAYX70PN35+fjKbzRXO0uTm5lY4mwMAAIyv3oebRo0aKTw8XKmpqQ7bU1NTFRkZ6aaqAACAuxjiW8H/+te/asqUKYqIiFBkZKReffVVnThxQpMmTXJ3aQAA4AozRLgZNWqUTp48qcTERGVnZ6tLly5as2aNrr32WneXBgAArrB6/1Fw1J7y8nKVlZXJw8PD3aXUe6+99pqio6PVvHlzd5cCSJL27duno0eP6tprr1WPHj3cXU69kpeXJz8/P3eXYSinTp1SixYt7I93796t8vJyhYeHy9vbu8b7q/drbnD5SktL9fTTT2vw4MF69tlnJUkvvfSSAgICFBAQoMmTJ8tqtbq5yvrtkUce0YkTJ9xdRr2ydetWnTt3zv547dq1uuWWWxQQEKAePXpo2bJlbqyufpk7d64+/fRTSec/bHHHHXdo4MCBuvfeezVgwAANHjxYubm5bq6y/ggJCVF0dLTWr1+v0tJSd5dTr/3888+KiIhQcHCw7rjjDuXl5WnYsGG68847NWTIEPXq1Us//vhjjfdLuIHmz5+v1atXq2fPnvrggw/08MMPa/ny5VqyZImWLFmiL7/8UsnJye4us15o167dRX/OnTunAQMG2B+jejExMTp16pQkacOGDbr//vsVFRWlRYsW6c4779RTTz2ldevWubnK+uHNN9+Uv7+/JGn27Nmy2Wzau3evfvvtN+3bt08NGzbUrFmz3Fxl/WGz2VRWVqbJkyerc+fOevLJJ5Wenu7usuql2bNnq3379tqwYYNCQkIUExMjk8mk/fv36+DBg7ruuuv01FNP1Xi/XJaCwsPDNX/+fN155506dOiQevbsqeXLl2vUqFGSpHfffVeJiYl8GakTAgMD1adPH0VHR9u32Ww2PfTQQ3riiSfUpk0bSdK4cePcVWK90aJFC/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.43262411])" ] }, "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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OnbsqI8//vi25yRJ33//vYYPH66mTZvK29tbHTt21MaNG2362hsGDx6sDz74QFevXrUcO3TokE6fPq3BgwcX+zW5ubl64YUX1KpVK3l7e+v+++/Xn//8Z5lMJqt5V65c0YsvvqhmzZrJz89P/fv3t/p9d0Nxa4zt/T4cOHBAL7/8soKDg3XvvfdqwIABOnXqlF29AHB7XDEGUKFyc3MtG7v//PPPeuutt5SZmakhQ4ZYzXvuuee0bt06RUREaOzYsTpx4oTWrl2rL7/8Uh9//LElSG/btk2jRo3S/fffr5kzZyo3N1erV69Wz549lZiYqEaNGikyMlKpqamKj4/X3Llz5enpKUkKDg5WRkaGBgwYIE9PT/3xj3+Uu7u7zp49q3/+85+6dOmS6tWrp4ULF2rq1Kl6+OGHFRkZKUlq3LixVb0xMTEKCAjQzJkzdeXKFUnSV199pf379ysyMlIBAQE6d+6c1q1bpz59+ujQoUPy8fGxeo6//OUvKiws1IQJE5Sdna033nhDkZGROnDggO65554SexoQECCz2axNmzbpySefLLX/CQkJSk1N1aOPPqr69evr5MmTWrdunY4cOaIDBw7Izc3Nan5sbKzq1aun6dOnKzk5We+8845q1KihU6dOyc3NTTNnztRnn32mNWvWqEmTJnrmmWesvv7w4cN6//33NWbMGNWqVUtvv/22Hn/8cX344YfFBvkbUlJS1KtXL3l6emr8+PGqW7euPvnkE02YMEG5ublFXqckUVFReuWVV7R792716dNHkrR161Y1b95crVq1KjI/Pz9fDz/8sH788Uc9/fTTaty4sY4dO6bXX39d3377rTZt2mSZO2nSJG3atEn9+/dX586ddeTIEQ0YMMCm5Rn2fh+ef/55ubm5afLkycrMzNTrr7+u0aNH65NPPrGpDwBsQzAGUKEGDRpk9bhatWpaunSp+vbtazl2/PhxrVu3To8++qhWr15tOR4UFKTY2Fj9/e9/15NPPqmrV69q5syZCgwM1K5du1SzZk1J1z941a1bN82dO1erV6/W/fffr1atWik+Pl59+/ZVw4YNLc/5j3/8Q1lZWYqPj9cDDzxgOf78889b/r9fv36aOnWqWrZsqejo6GLPKzAwUBs2bLA69oc//EH9+/e3OhYdHa3f/e532rBhg6ZMmWI19vPPP+vf//63ZQ10586d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S5cu2rp1q9asWaOHH35YjRs3Vn5+vt555x0ZjUbLjhK1atVSUFCQ4uPjFRgYqHvuuUcNGzZUu3btSj3XiIgIvfvuu6pdu7buu+8+HTt2TPHx8cWuR5auB8LevXvriSeeUE5OjlatWiVvb29NmDCh1NfZsmWLNm/erL59+yokJERubm46deqU3nnnHZlMJsXGxkq6vg74oYce0muvvaarV6/K399fBw8evO12cL/Gfffdp+joaI0ePdqyXdvFixdL3WVDkpYsWaJevXqpU6dOeuqpp9S0aVNlZmbqP//5j/bu3aszZ87YVYebm5vV1dmSPPvss/rkk080bNgwPfroo2rbtq1MJpO+++47vf/++5ZQf//99ys6OlobN27UxYsXLdu1JSYmlhq8Jcd8HwDYhmAMoELdvKzA1dVVQUFBWrJkiWJiYqzmLV68WA0bNtT69ev1ySefyNPTUyNGjNALL7xgdTOQqKgoubm5afHixXrllVdUvXp1PfTQQ/rzn/9sFUDbt2+vF154QX/72980fvx4FRYWaseOHerUqZO++uorvf/++zp//rxq166t1q1ba8GCBVYfEly+fLliY2P1wgsvyGQyaejQobcNxvPmzVO1atX0/vvva+PGjQoJCdF7772nWbNmFTt/0qRJSk1N1euvv67s7GyFhoZqwYIFtw1aTz/9tGrUqKFPP/1Un3zyiXJycuTh4aF27dppwoQJVvsFr1mzRjNmzNC6det07do1dezYUdu3by+yrVxZCQ0NVefOnTVv3jydOnVKTZs21caNG297a+3AwEAlJiZqwYIF2rp1qzIyMuTp6ang4GC98sor5VKrdD1Ab9++XcuWLVN8fLzee+891axZU40aNdK4ceOsPhD617/+Vd7e3vr73/+u3bt3q3379vrggw+KbElYnIr+PgCwjSE7O5uV+wDgQJ9//rkiIyO1du1am0JVZeHu7q6YmBgtXbrU0aUAgE1YYwwAAACIYAwAAABIIhgDAAAAklhjDAAAAEjiijEAAAAgiWAMAAAASCIYAwAAAJIIxgAAAIAkgjEAAAAgiWAMAAAASJL+H36fkMoF2/q1AAAAAElFTkSuQmCC\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.89437819, 27.57410562])" ] }, "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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43rsscfUsGFD7du3T/Pnz9evv/6qFStWWOdOmDBBK1asUJ8+fdS+fXv9/PPP6tevn13LGAr7PLzwwgvy8PDQs88+q/T0dM2fP19PPPGENm3aZFcfANiHQAvALv3797e57erqqrfeeku9evWybjtw4ICWLFmiQYMG6f3337duDwoKUmRkpD777DM98sgjunLliqZOnarAwEBt2LBBlSpVkvTXF4I6deqkGTNm6P3339ftt9+uZs2aKTY2Vr169VL9+vWtj/nNN9/o3Llzio2N1R133GHd/sILL1j/+4EHHtCkSZPUtGlTRURE5Pl7BQYGatmyZTbb7r//fvXp08dmW0REhO6++24tW7ZMEydOtBk7c+aMfvzxR+sa3/bt26tPnz6aP3++Xn755Xx7+vDDDys6OlpPP/203n77bd1zzz1q06aNunbtag3v14wcOVJPPfWUzbbu3burR48eWrdunQYNGmQz5uXlpdjYWOu13ZOSkrR48WINHDjQ+tyMHDlSrVu31qeffporaB44cEAbN25U69atJUnDhg3TnXfeqddee63AMDZlyhT5+vpq69at1uUbI0eO1PDhwxUVFaVHH33U+nwXpF69emrTpo1iYmLUs2dPXblyRV999ZWefPLJPOcvWLBACQkJiouLsx6Zl6TGjRtr4sSJ2rFjh9q2batffvlFK1as0EMPPaT58+db502bNk3z5s27YV2FfR4qVqyor7/+WuXK/fWBaPXq1fXCCy/o4MGDaty48Q33B8A+LDkAYJdZs2bpq6++0ldffaX3339fnTp10nPPPWezlvHaR9JPP/20zX1HjBihqlWrWsfj4+OVmpqqkSNH2oSbFi1aqGPHjtq0adMNL9FYpUoVSdKGDRtsPpYurJEjR+badv062j/++ENnz55VtWrVFBAQoPj4+FzzBw8ebPOFtXvvvVeNGze+4VG4mjVrauvWrRoxYoQuXLigTz75RGPHjlWjRo0UGRlpPWL895ouXLigs2fPqlGjRqpWrVqeNT300EPWMCtJLVu2lMVi0cMPP2wzLywsTMeOHct1/zvuuMMaZiWpRo0aGjhwoP7973/ne8aJjIwMxcXFqW/fvsrOzlZ6err157777tP58+e1d+/eAntyvYEDB2rDhg3KysrS5s2bde7cuXzXa69evVqtW7dWzZo1bfbbsWNHSdJ3330n6X9/o9efnkuS3UeOC/s8DB8+3BpmJVmPbrPsAChaHKEFYJc777zT5kthAwYM0L333qvnn39ePXr0UIUKFZSUlCSTyaSgoCCb+7q5ual+/fpKSkqSJOv/NmrUKNd+goODtWXLFmVlZdmsIf279u3bKzw8XLNmzdKCBQvUtm1b9ejRQwMGDFDlypXt/r0aNGiQa9ulS5c0Y8YMxcTE6NSpUzZjfz9yKkkBAQF5brPndGH+/v6aN2+e5s2bp8TERMXFxWn+/PlauHChqlSpYj3inJGRoVdffVVr1qzRuXPnbB4jr/XJdevWtbldtWrVfLdnZ2fLbDbLzc3thr+TJJ04cSLPM0789ttvslgsmjVrlvXsEn+XlpaW5/a89O3bV5MnT9a6dev07bffqnXr1qpfv76OHz+e577379+fZ93X7/fEiRMymUwKDAy0Ga9Zs6ZdZ9Eo7PPg7+9vc/vaPv5+XwC3hkAL4KaUK1dO99xzjxYuXKjffvvthh+fWiwWmyOGBc2zh8lk0rJly/TTTz9pw4YNiouL04QJEzR37lz961//ko+Pj12P8/c1j9JfH5svXbpUTzzxhNq0aaOqVauqXLlyioyMVE5OTp613Ozvcb0GDRroscceU58+fRQaGqovvvjCGmhHjBihHTt2aPz48WrevLmqVKkik8mkESNG5FmTi4tLnvu4/mhhQfXezO90rY5x48apa9euec5p0qRJgY9xvRo1aqhLly76+OOPtX//fr3++usF7rtDhw76v//7vzzHa9euLang38Ge56yonoeb+fsAkD8CLYCbdu3b8RcvXpT0vy85JSQk6Pbbb7fOu3z5spKSkqzngq1Xr54k6ddff1Xnzp1tHjMhIUGenp7WI4o3CsFhYWEKCwvT1KlTtXnzZg0cOFBLly7VxIkT7QrQeYmNjdXgwYM1c+ZMm+0ZGRl5fsnryJEjubYdPXo019E5e1WvXl0NGza0nlUhIyNDW7Zs0ZQpUzRlyhTrvEuXLt3UBSfskd/vJOU+6njNtaPd5cuXt37Uf6sGDRqkESNGyNXVVX379s13XsOGDXXhwoUb7vfa3+iRI0fUtGlT6/a0tLQ8j7Bez4jnAYB9WEML4KZcuXJFW7duVYUKFaxLB64dlYuOjraZu2TJEmVlZalbt26SZD3l0UcffaTs7GzrvH379mnr1q3q2rWrNYxeW7P498CQkZGR6yhXixYtbObmd98bcXFxyfXYX375Zb5X7vr8889t9rFt2zYdPHhQ999/f4H7+fHHH3X+/Plc25OSknT48GHr0o1rR1X/XtOCBQvyPCpYFPbu3at///vf1ttnz57VypUr1apVq3w/mvf29laHDh308ccf5zqNlVS45QbX9OjRQ1OmTNGcOXPyXO5xzYMPPqiff/5Z69evzzWWnZ2tCxcuSPrf3+jChQtt5ixYsOCGtRjxPACwD0doAdjlX//6l/UI3ZkzZxQbG6sjR47o2WeftR5Nbdq0qYYPH24NsJ06ddLBgwe1ZMkS3XnnnRoyZIikv86Q8MYbb2jUqFHq1q2bIiIirKftqlq1qs2ZCq6dwWD69Onq37+/KlSooA4dOmjlypVavHixevfurYYNGyo7O1vLly+Xi4uL9QwFlStXVlBQkGJjYxUYGKgaNWqofv36atmyZYG/a48ePfT555+rSpUqatKkifbt26fY2Ng819tKfwW57t2766GHHlJmZqbee+89+fj4aPz48QXuJyYmRl988YV69eql0NBQeXh4KDExUcuXL5fZbFZkZKSkv9a53nPPPXrnnXd05coV+fv7a+fOnTc8LditaNKkiSIiIvTEE09YT9t1/vz5As/aIEnz5s1Tt27d1K5dOz366KMKCAhQenq6/vOf/2jLli06ceJEoerw8PCwORqan6eeekqbNm3Sww8/rEGDBiksLExms1lHjhzR6tWrrWH89ttvV0REhD799FOdP3/eetquuLi4AgOzZMzzAMA+BFoAdrn+43d3d3cFBQVp3rx5Gj58uM28uXPnqn79+lq6dKk2bdokLy8vjRw5Ui+++KLNRRgGDBggDw8PzZ07V9OnT1eFChV0zz336NVXX7UJjq1atdKLL76ojz/+WE8++aRycnK0bt06tWvXTnv37tXq1at1+vRpValSRc2bN9ebb75p8+W16OhoRUZG6sUXX5TZbNaQIUNuGGhnzpwpV1dXrV69Wp9++qlCQ0O1atUqvfTSS3nOnzBhghISEjR//nxlZGSodevWevPNN28YkB577DFVrFhR27Zt06ZNm5SZmanq1aurZcuWGj9+vM35XhcvXqwpU6ZoyZIl+vPPP9W2bVutXbs21+nFikrr1q3Vvn17zZw5U4mJiQoICNCnn356w0sIBwYGKi4uTm+++aZWrlyptLQ0eXl5KTg4WNOnTy+WWqW/gu/atWv19ttvKzY2VqtWrVKlSpXUoEEDjR071uaLiu+++658fHz02WefafPmzWrVqpW++uqrXKemy0tJPw8A7GPKyMhgZToA3ITvv/9e4eHh+vDDD+0KQ87C09NTw4cP11tvvWV0KQBgF9bQAgAAwKkRaAEAAODUCLQAAABwaqyhBQAAgFPjCC0AAACcGoEWAAAATo1ACwAAAKdGoAUAAIBTI9ACAADAqRFoAQAA4NT+H3zobybdhleaAAAAAElFTkSuQmCC\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.01192504, 27.45059625])" ] }, "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": "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srKytHr1ap04caJYigQAAAAKYnegPXv2rLp06aJRo0bpyy+/1KZNm6yXnK1SpYomT56s999/v9gKBQAAAPJjd6CdOnWqDh48qJUrVyoxMVEWi8U65ubmpqioKG3atKlYigQAAAAKYneg/frrr/XEE0/ovvvuy/dsBkFBQTp69KhDiwMAAABuxO5Am5WVpQYNGhQ4brFYdOnSJYcUBQAAANjL7kBbt25d/fzzzwWOb9u2TcHBwQ4pCgAAALCX3YG2f//+WrJkibZt22bddm3pwXvvvaevvvpKQ4YMcXyFAAAAQCHsvrDCc889pz179uiBBx5QcHCwTCaTJk2apNOnTys9PV09e/bUqFGjirNWAAAAIA+7A627u7tWrFihlStX6osvvpDJZNKVK1fUokULPfjggxowYACXvgUAAECJszvQXtO/f3/179+/OGoBAAAAiqzIgVaS9u/fbz1FV2BgoJo2bcrRWQAAABiiSIF21apVmjJlio4fP269sILJZFKtWrU0ZcoUjtwCAACgxNkdaJctW6axY8cqJCREU6dOVXBwsCwWi3777TctWbJEo0aN0qVLlzR06NDirBcAAACwYXegnTt3riIiIvTVV1/J09PTZmzkyJHq0aOH5s6dS6AFABQbk8lNe/Z43nhiAbKz6+vs2Zu/f0Fq185VQAAXFwKMYnegTU1N1RNPPJEnzEqSp6enBg4cqFdeecWRtQEAYCMjQ4qNdbvp+5vNXvLwuPn7F2T2bCkgwOG7BWAnuy+sEBYWprS0tALHjx8/rtDQUIcUBQAAANjL7kD76quvavHixVq9enWesVWrVmnJkiWaNm2aQ4sDAAAAbsTuJQf/+Mc/5OPjoxEjRmjSpElq0KCBTCaTDh8+rFOnTikoKEhvvfWW3nrrLet9TCaTVqxYUSyFAwAAAFIRAu3BgwdlMplUp04dSX8uMZAkDw8P1alTR2azWYcOHbK5D+emBQAAQHGzO9Du27evOOsAAAAAborda2gBAAAAZ0SgBQAAgEsj0AIAAMClEWgBAADg0gi0AAAAcGkEWgAAALg0uwNtixYttG7dugLH169frxYtWjikKAAAAMBedgfalJQUXbhwocDxCxcu6OjRow4pCgAAALBXkZYcFHblr19//VVVqlS55YIAAACAoij0SmGffvqp/vnPf1pvz549W4sXL84zLysrSz//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USN17NhRISEhGj58uC5cuGBwlaXTyZMn1adPHwUGBmrEiBEym80aPXq0mjZtqmbNmqlTp05KS0szusxSae3ateratasCAgIUFham0NBQBQQEqGvXrvrqq6+MLq/U2rlzp1566SXNmTNHx44dsxnLyspSVFSUQZWVPf3799fRo0eNLqNU4/3VGGX9vbXMBtp//OMf8vLykiS9+uqr2r9/v1atWqX9+/dr9erVOnjwoKZOnWpwlaXTiy++qDNnzmjmzJnKysrSkCFDtG/fPv3rX//S+vXrJcnwK7yVRosWLdLw4cMVGhqqDz74QF999ZXWrl2rDz74QGFhYRoxYoQWL15sdJmlzr/+9S/17NlT27dv14oVK9SmTRtt2LDBOn7p0iXrmz8cp02bNvn+XLlyRUOHDrXehuPx/mqMsv7eWmaXHPj7+2vPnj0KDAxURESEZs+erY4dO1rHd+7cqREjRuh///ufgVWWTqGhofr0008VERGhzMxMBQcHKz4+3tr/nTt3atiwYTpw4IDBlZYud9xxh5577jk98sgj+Y4vWbJEc+fOVWJiYskWVsrdd999uv/++zVx4kRJ0gcffKBXXnlF7777rqKionTy5EmFhYXp9OnTBldautSoUUMdOnRQy5YtrdssFotmzZql4cOHq0aNGpKkSZMmGVViqcX7qzHK+ntrqfhS2M2oWbOmDh8+rMDAQF28eFHVqlWzGff29lZWVpYxxZVy586ds54j2MfHR+XLl5e/v791vGbNmsrOzjaqvFIrLS1Nd999d4HjrVu31okTJ0qworLh0KFDWrhwofX2yJEj5efnp1GjRik3N7fQ3wlu3tq1azVmzBjdddddmjBhgvVCO3PmzNHjjz+usLAwgyssvXh/NUZZf28ts0sOBgwYoGnTpunMmTMaNGiQ4uLidP78eUnSH3/8obi4OLVu3drgKkunoKAgrVu3TpK0fv16eXl5afPmzdbxzZs3q169ekaVV2qFhYXpww8/LHB80aJFvMkXAw8PD505c8ZmW+/evbVgwQKNGTNGq1evNqiy0u3uu+/Wli1btG/fPnXv3p11syWI91djlPX31jJ7hPaFF17QwYMHFR4erjvvvFM7duxQo0aNFBAQoBMnTqh69er68ssvjS6zVHrmmWc0evRovfPOO0pPT9cHH3ygSZMmadeuXXJzc9O6dev02muv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CBITE9W/f38FBQWpZs2aatGihUaNGqULFy7oyJEjCg0NlfTnORqv3XfMmDHWfXt7e+vgwYMaPXq0GjRooNatW0uSUlJS9Pzzz1uXAdStW1cDBw7UgQMHbOq/toZ0xYoVmjFjhsLCwhQQEKA+ffooKSnphj38/fffZTKZ1LZt2zxjlSpVUrVq1ay39+/frzFjxig8PFz+/v4KCgrSiBEjdOzYMZv7XVsi8v333+vvf/+7goODVbduXT311FO6ePGiLly4oHHjxqlhw4aqW7euxo8fnyc4e3t767nnnlN8fLwiIyPl7++vNm3aaMOGDTd8TpL022+/afjw4QoKCpKfn5/atGmjTz75xK77XtO/f3998cUXunz5snXbzp07lZKSov79++d7n+zsbL344otq1qyZ/Pz8dPvtt+uVV16R2WzO06PevXurUaNG8vPzU0REhN544w3l5ubazOvZs6datWql3377Tf369VOtWrUUEhKiqVOn5pkLoHhxhBaAQ2RnZyszM1OSdOrUKX300UfKzMzUoEGDbOY9//zzWrRokbp3767Ro0frwIED+vDDD/XDDz9ow4YN1gD8+eefa+TIkbr99ts1efJkZWdn6/3331eXLl20ZcsW1a9fX1FRUUpKSlJ8fLxmzJghHx8fSVJoaKgyMjLUt29f+fj46Nlnn5W3t7eOHTumf/3rX7pw4YJq1KihWbNmacKECerVq5eioqIkSQ0aNLCpd9iwYapbt64mT56sS5cuSZL27t2rbdu2KSoqSnXr1lVaWpoWLVqkHj16aOfOnfL397fZx7UwNHbsWGVlZem9995TVFSUtm/frttuu63AntatW1cWi0WffvqpHnnkkUL7n5CQoKSkJA0YMEC1a9fW4cOHtWjRIv3444/avn27vLy8bObHxMSoRo0amjhxohITE7Vs2TJVrFhRycnJ8vLy0uTJk/Xtt99q4cKFatiwoZ588kmb++/atUurV6/WqFGjVLlyZS1evFhDhw7Vl19+mW8Av+bQoUPq2rWrfHx89NRTT6latWrauHGjxo4dq+zs7DyPU5Do6GhNmzZNmzZtUo8ePSRJK1euVFhYmJo1a5Znfk5Ojnr16qUjR47oscceU4MGDbRv3z69/fbb+uWXX/Tpp59a537wwQcKCQnRfffdJy8vLyUkJOiVV15Rdna2Xn75ZZv9Zmdnq3fv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\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.41993186])" ] }, "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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t7LUa7p8+bLMZnOpfSpWrFjsPgEoW0xvAGCXqlWrqnLlykXWYSwsLNTf//53tW7dWrVq1VKzZs00ceJEZWVlFXmMzZs3q3v37goMDFT9+vX16KOP6vvvvzfa4+LijCN+rVq1Mr7yvjJd4eDBgxo4cKBCQkJUu3ZttWrVSqNGjVJubq5OnjypsLAwSdLMmTON+44ePdp4bF9fXx05ckRPPfWUGjZsqA4dOkiSTp06peeff96YchAcHKxBgwbpu+++s6n/ypzWdevWafr06WratKkCAwPVr18/JScnX/M1/PHHH2UymdSpU6cibVWqVFH16tWN2//5z380evRohYeHKyAgQCEhIRo2bJjOnDljc78r01G++OIL/fWvf1Xjxo0VHBysp59+Wnl5ecrNzdW4cePUqFEjBQcHa8KECUXCta+vr8aPH6+EhAS1b99eAQEB6tixo7Zu3XrNfZKkH374QUOHDlVISIhq1aqljh076p133rHrvsWpXLmy2rRpo9zcXP388882Nb7//vvq2LGjatWqpY0bN0qSTp8+rREjRqhRo0YKCAjQPffco3/+8582j3ny5En5+vpq/vz5Wrx4se666y7Vrl1bPXr00IEDB4rUcPjwYQ0ePFjBwcEKDAzUvffeq08++cSmz+/fD7NmzdKdd96p2rVr691339W9994rSXr66aeN9+KVq1SVNKd35cqV6tixowICAtS4cWONGjWqyJSX0aNHKyAgQGlpaYqOjla9evVUv359Pffcc8rLy7uxFxy4TfBRE0CxsrOzjUXHf/75Zy1fvlwZGRkaPHiwTb/nn39eK1asUGRkpJ566il99913euutt/Tll19q69atRkjesGGDRowYoTvvvFOTJ09Wdna2lixZop49eyopKUkNGjRQVFSUkpOTlZCQoOnTp8vPz0+SFBYWpvT0dPXv319+fn567rnn5OvrqzNnzujf//63cnNzVbNmTc2ePVsTJ07UAw88oKioKElSw4YNbeqNjo5WcHCwJk+erMuXL0uSvv76a+3cuVNRUVEKDg7W2bNntWLFCt13333FXkf+73//uwoLC/XMM88oMzNTixcvVlRUlHbt2qU77rijxNc0ODhYVqtVa9as0eOPP17q65+YmKjk5GQ9/PDDqlu3ro4fP64VK1boq6++0q5du1SpUiWb/rGxsapZs6ZiYmJ08OBBrV69WpUrV9aJEydUqVIlTZ48WZ999pmWLVumRo0aacyYMTb337t3r9577z2NGjVKPj4+evvtt/Xoo4/qgw8+KDakX3H06FH16tVLfn5+evrpp1W9enV9/PHHeuaZZ5SdnV3keex14sQJmc1mmw8Cu3fv1gcffKARI0YoICBATZo0UUZGhnr37q0LFy5o5MiRql27thISEjR69GhlZmYaH3quWL9+vbKysjRs2DAVFhZq2bJl6tevn5KSktS4cWNJ0rFjx9S7d295enpqzJgxqlKlitasWaNBgwbp7bffNt5bV8yfP18mk0mjRo2SJN17772aNGmSZsyYoSeffFJ//OMfJUktWrQocX/nz5+vqVOnqmPHjnrllVd05swZLV26VLt379Znn31mE5ILCwvVv39/tWjRQlOnTtWBAwf09ttvy8/PT1OmTLmh1xu4HXBxCgA2Vq9eraeffrrIdg8PD82ePVtPPvmkse3w4cPq2LGjHn74YS1ZssTYvnDhQsXGxmrBggV6/PHHlZ+frzvvvFPVqlVTUlKSqlSpIkn65ptv1LVrVw0YMMC4/5U//t98843q169vPOa//vUvPfroo0pMTNQf/vCHYmtPTU1VWFiYYmJiFBsba9MWFxenmTNnKioqSqtWrbJpK26aw/Hjx/XHP/5REydO1IQJEyT9dmQvKipK/v7+2r9/vxFEduzYob59++ovf/lLqaEjPT1dHTp0UHp6ukJCQnTPPfeoQ4cO6tmzpxHwS6tp9+7dioyM1JIlS/Twww9L+t94RURE6L333pPJZJIkRUVF6YsvvtDAgQNtxqZ9+/Yym83atWuXse3KfmzdulXt27eXJJ0/f1533323mjRpoo8//thm/zdt2mTMme7fv79++uknJSYm2tQbHR2tbdu26ciRI8Z4F+f+++/X2bNnjaOoGRkZWr58uRYtWqTIyEjjiK2vr69MJpN27NhhM0f2xRdf1BtvvGEzZeTy5cuKjIzUkSNHdPjwYVWvXl0nT55Uq1at5Onpqf379xvvrWPHjqlDhw7q16+fli1bJkl6/PHHtXnzZu3atUtNmjSR9NuHwI4dO0qSDh06pAoVKhivR1BQkPbu3Wuzn/v379e9996r+Ph4Pfroozb7fOW9eOVkzYyMDDVv3lxt27bV+++/b0x9uPKenzBhgl588UVJvx3p/ec//2mzTZIeeeQR7d27Vz/88EOJrzVwu2N6A4BizZw5U++//77ef/99LVmyRF27dtXzzz9vs4LDla+/x44da3PfoUOHqlq1akb7wYMHlZqaqmHDhtkEg1atWikiIkIff/yxrNbSP39XrVpVkrRlyxbl5+ff8H4NGzasyLbfh7VffvlF58+fV/Xq1RUSEqKDBw8W6T948GCbI29/+tOf1KxZMyMclqRmzZpKTEzU0KFDlZOTo7ffflujR49WkyZNFBsbaxx5vrqmnJwcnT9/Xk2aNFH16tWLrenPf/6zEXglqU2bNrJarXrsscds+rVu3Vo//vhjkfv/4Q9/MAKvJN1xxx0aOHCg9u3bV+JKGpmZmUpKSlK/fv106dIlZWRkGP969Oihixcv6uuvvy71NZF++4AREhKikJAQtWvXzgj18fHxNv3at29f5KSwrVu36q677rKZI+3p6anRo0crNzdXX3zxhU3/yMhImw9TjRs3Vvfu3Y3QXVBQoE8//VS9e/c2Aq8kVatWTUOHDtWZM2f03//+1+YxBw8eXGqwv5akpCRZLBaNGTPGZq7v/fffr9DQ0GKnmVz9Pu7UqZMyMjJ08eLFG64DcHdMbwBQrLvvvtvmRLYBAwboT3/6k1544QVFRkbK09NTp06dkslkUmhoqM19vby8VL9+fZ06dUqSjP/+PkRcERYWpu3btys7O9vmq+yrde7cWVFRUZo5c6befPNNdezYUZGRkRowYIB8fHzs3q8GDRoU2ZaXl6fp06dr3bp1OnfunE3b1UdgJSkkJKTYbfYslVavXj3NmzdP8+bN04kTJ5SUlKQ33nhDCxcuVNWqVfXXv/5V0m+B8m9/+5s++OADXbhwweYxipsvHRQUZHO7WrVqJW6/dOmSLBaLvLy8rrlP0m9zZoubg/rDDz/IarVq5syZxqoZV0tPTy92+9W1v/HGGzKZTKpevboaNGhQ7PMVN3anTp0qMt1AkjG/+8p774qS9nPr1q3Kysoy5kGX9F698pgtW7Ysta7rUdrPR5MmTYoEdw8PjyKrfFx5vS5cuGB8QARgi9ALwC4VKlTQPffco4ULF+qHH35Qs2bNSu1vtVptjjyW1s8eJpNJq1at0pdffqktW7YoKSlJ48aN09y5c/Xpp5+qVq1adj3O1XNhpd+WZ1u5cqVGjhypDh06qFq1aqpQoYJiY2OLXSu2uP2ydz9+r0GDBnryySfVt29fhYeHa+3atUboHTp0qHbt2qVnnnlGd911l6pWrSqTyaShQ4cWW1NJKwZUqFD8F3pX13sj+3SljjFjxqhnz57F9mnevHmpjyH9NiYRERF29bNXSbXfzNiV1O966rpexT1nSWNaUn8AvyH0ArDblbP+c3NzJf3vxKzk5GTdeeedRr/Lly/r1KlTxrzP4OBgSdL333+vbt262TxmcnKyfH19jSOT1wrKrVu3VuvWrTV58mR98sknGjhwoFauXKkJEybYFbKLk5CQoMGDB2vGjBk22zMzM4s9Me3YsWNFth0/flz16tW7oeevUaOGGjZsaKwWkZmZqe3bt2vSpEmaNGmS0S8vL++GLtphj5L2SVKJ+3XlCGfFihXtCq1lITg42GYFkCuurKZx5b13RUn7Wb16dVWvXl0+Pj6qUqXKdT1mca7nvfj7n48rJ9P9/jnteT4A18acXgB2yc/PV2Jiojw9PY2vYa8c3bt67uWKFSuUnZ2tXr16SZKx7Nby5ct16dIlo9+3336rxMRE9ezZ0wgJV+ayXh3uMjMzixzFatWqlU3fku57LWazuchjb9iwocQrpL377rs2z7Fjxw599913xjJVJdm/f3+xcy5PnTqlo0ePGtNErhzJu7qmN998s8yuUvb1119r3759xu3z589r/fr1atu2bYkXCfH391eXLl30j3/8o8hSapJ9UxtuVq9evXTo0CF99tlnxrb8/HwtWrRIlStX1j333GPTf8uWLTp58qRx+9ixY/r000/Vo0cPSb+9F7p3766tW7faBOSLFy9qxYoVCgoKKnUVhiuu570YEREhLy8vLVq0SAUFBcb2f//730pOTjZ+jgDcHI70AijWp59+ahzp+/nnn5WQkKBjx45p/PjxxlHZFi1aKDo62gi5Xbt21XfffacVK1bo7rvv1pAhQyT9Ngfxtdde04gRI9SrVy8NGjTIWLKsWrVqxlf6koyVGaZNm6aHHnpInp6e6tKli9avX69ly5bpgQceUMOGDXXp0iWtXr1aZrNZffv2lST5+PgoNDRUCQkJaty4se644w7Vr19fbdq0KXVfIyMj9e6776pq1apq3ry5vv32WyUkJJQ4V9Pf31+9e/fWn//8Z2VlZWnRokWqVauWnnnmmVKfZ926dVq7dq3uv/9+hYeHq1KlSjpx4oRWr14ti8VirDhRrVo13XPPPVqwYIHy8/NVr1497d69+5pLot2M5s2ba9CgQRo5cqSxZNnFixevuQTWvHnz1KtXL3Xq1ElPPPGEQkJClJGRoW+++Ubbt2/X6dOny6TeK66sLzxkyBCNGjVKAQEBeu+997R//35Nnz69yDzxkJAQ3XfffRo+fLgKCwu1dOlSeXl5KSYmxujz0ksvKSkpSZGRkRo+fLixZNmZM2f0j3/8o9TpBb9/nmrVqmn58uXy8fGRj4+PmjVrVux0Dz8/P02aNElTp05V3759FRUVpZSUFC1ZskTBwcHXfF8BsA+hF0Cxfv9Vv7e3t0JDQzVv3jxFR0fb9Js7d67q16+vlStX6uOPP5afn5+GDRumF1980eZCFgMGDFClSpU0d+5cTZs2TZ6enrrnnnv0t7/9zSZctm3bVi+++KL+8Y9/6Omnn1ZhYaE2bdqkTp066euvv9Z7772ntLQ0Va1aVXfddZdmzZplc8JdfHy8YmNj9eKLL8pisWjIkCHXDL0zZsyQh4eH3nvvPb3zzjsKDw/Xxo0bS7wE7rhx45ScnKw33nhDmZmZat++vWbNmlXsSW+/9+STT6py5crasWOHPv74Y2VlZalGjRpq06aNnnnmGZv1cJctW6ZJkyZpxYoV+vXXX9WxY0d9+OGHRsB3tPbt26tz586aMWOGTpw4oZCQEL3zzjvXvJxz48aNlZSUpFmzZmn9+vVKT0+Xn5+fwsLCNG3atDKp9ff8/Py0detWTZ06VStWrNAvv/yixo0ba+HChcaHrt8bOHCgKleurPj4eKWmpurOO+/U9OnTbU4iCw0N1ZYtWzR16lTFx8fr8uXLatmypd59990S5y5fzcvLS4sXL9a0adM0YcIE5efnKyYmpsQ5zuPHj5efn58WLVqkl156ST4+Purbt69efvnl674cN4DisU4vANjpyrqsb731lh566CFnl+Mwvr6+io6O1vz5851dSpm5sk7vyy+/rPHjxzu7HABOwJxeAAAAuD1CLwAAANweoRcAAABujzm9AAAAcHsc6QUAAIDbI/QCAADA7RF6AQAA4PYIvQAAAHB7hF4AAAC4PUIvAAAA3N7/A58FwlSMsmFnAAAAAElFTkSuQmCC\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 }