{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "698314a9",
   "metadata": {},
   "source": [
    "# Confidence Intervals\n",
    "A manager needs both an estimate and a way to describe its uncertainty. A **confidence interval** estimates a population parameter using two endpoints. The **confidence level** describes the intended long-run coverage of the procedure: with fresh random samples and suitable assumptions, an approximate 95% procedure should capture the fixed population parameter about 95% of the time.\n",
    "\n",
    "The **bootstrap percentile method** uses percentiles of resampled statistics as endpoints. For a central 95% interval, leave 2.5% in each tail and use the 2.5th and 97.5th percentiles. In general, a central C% interval leaves (100 − C)/2 percent in each tail. We use `method='nearest'` for endpoints throughout this chapter, and `np.median` for ordinary sample medians.\n",
    "\n",
    "The salary example let us check coverage because we knew its population median. Usually the parameter is unknown. Once an interval is calculated, it either contains that fixed parameter or it does not; the confidence level describes the sampling procedure, rather than a probability assigned to the parameter after seeing the data. Bootstrap coverage is approximate and depends on the original sample and statistic.\n",
    "\n",
    "```{index} confidence interval, confidence level, bootstrap percentile method\n",
    "```\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "1cca8c12",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:00.797869Z",
     "iopub.status.busy": "2026-08-31T06:02:00.797617Z",
     "iopub.status.idle": "2026-08-31T06:02:01.967024Z",
     "shell.execute_reply": "2026-08-31T06:02:01.966747Z"
    },
    "tags": [
     "hide-input",
     "thebe-init",
     "runnable"
    ]
   },
   "outputs": [],
   "source": [
    "path_data = '../../data/'\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "plt.style.use('fivethirtyeight')\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "28a52b34",
   "metadata": {},
   "source": [
    "```{contents}\n",
    ":local:\n",
    ":depth: 2\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4eafcd8a",
   "metadata": {},
   "source": [
    "## Estimating a Population Median\n",
    "\n",
    "We will now use the bootstrap method to estimate an unknown population median. You have encountered the dataset before. It comes 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 `births` contains the following variables for mother-baby pairs: the baby's birth weight in ounces, the number of gestational days (the number of days the mother was pregnant), 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.\n",
    "For this teaching example, the target is the population represented by these records. The original multistage sampling design limits a simple row bootstrap; the interval should not be generalized to all births today. We use the familiar data to practice estimation, not to make clinical recommendations.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "974f0572",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:01.968441Z",
     "iopub.status.busy": "2026-08-31T06:02:01.968341Z",
     "iopub.status.idle": "2026-08-31T06:02:01.975450Z",
     "shell.execute_reply": "2026-08-31T06:02:01.975235Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "births = pd.read_csv(path_data + 'baby.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "0a040618",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:01.976555Z",
     "iopub.status.busy": "2026-08-31T06:02:01.976493Z",
     "iopub.status.idle": "2026-08-31T06:02:01.980755Z",
     "shell.execute_reply": "2026-08-31T06:02:01.980561Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "      Birth Weight  Gestational Days  Maternal Age  Maternal Height  \\\n0              120               284            27               62   \n1              113               282            33               64   \n2              128               279            28               64   \n3              108               282            23               67   \n4              136               286            25               62   \n...            ...               ...           ...              ...   \n1169           113               275            27               60   \n1170           128               265            24               67   \n1171           130               291            30               65   \n1172           125               281            21               65   \n1173           117               297            38               65   \n\n      Maternal Pregnancy Weight  Maternal Smoker  \n0                           100            False  \n1                           135            False  \n2                           115             True  \n3                           125             True  \n4                            93            False  \n...                         ...              ...  \n1169                        100            False  \n1170                        120            False  \n1171                        150             True  \n1172                        110            False  \n1173                        129            False  \n\n[1174 rows x 6 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Birth Weight</th>\n      <th>Gestational Days</th>\n      <th>Maternal Age</th>\n      <th>Maternal Height</th>\n      <th>Maternal Pregnancy Weight</th>\n      <th>Maternal Smoker</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>120</td>\n      <td>284</td>\n      <td>27</td>\n      <td>62</td>\n      <td>100</td>\n      <td>False</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>113</td>\n      <td>282</td>\n      <td>33</td>\n      <td>64</td>\n      <td>135</td>\n      <td>False</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>128</td>\n      <td>279</td>\n      <td>28</td>\n      <td>64</td>\n      <td>115</td>\n      <td>True</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>108</td>\n      <td>282</td>\n      <td>23</td>\n      <td>67</td>\n      <td>125</td>\n      <td>True</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>136</td>\n      <td>286</td>\n      <td>25</td>\n      <td>62</td>\n      <td>93</td>\n      <td>False</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>1169</th>\n      <td>113</td>\n      <td>275</td>\n      <td>27</td>\n      <td>60</td>\n      <td>100</td>\n      <td>False</td>\n    </tr>\n    <tr>\n      <th>1170</th>\n      <td>128</td>\n      <td>265</td>\n      <td>24</td>\n      <td>67</td>\n      <td>120</td>\n      <td>False</td>\n    </tr>\n    <tr>\n      <th>1171</th>\n      <td>130</td>\n      <td>291</td>\n      <td>30</td>\n      <td>65</td>\n      <td>150</td>\n      <td>True</td>\n    </tr>\n    <tr>\n      <th>1172</th>\n      <td>125</td>\n      <td>281</td>\n      <td>21</td>\n      <td>65</td>\n      <td>110</td>\n      <td>False</td>\n    </tr>\n    <tr>\n      <th>1173</th>\n      <td>117</td>\n      <td>297</td>\n      <td>38</td>\n      <td>65</td>\n      <td>129</td>\n      <td>False</td>\n    </tr>\n  </tbody>\n</table>\n<p>1174 rows × 6 columns</p>\n</div>"
     },
     "execution_count": 3
    }
   ],
   "source": [
    "births"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e69da20a",
   "metadata": {},
   "source": [
    "Birth weight and gestational days describe different aspects of the same birth. Their ratio gives a descriptive summary in ounces per gestational day. It does not measure an individual baby's daily growth or predict its birth weight.\n",
    "\n",
    "The table `ratios` contains birth weight, gestational days, and their ratio. The first entry is calculated as:\n",
    "\n",
    "$$\n",
    "\\frac{120~\\text{ounces}}{284~\\text{days}} \\approx 0.4225~\\text{ounces per day}\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "af6180a7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:01.981688Z",
     "iopub.status.busy": "2026-08-31T06:02:01.981632Z",
     "iopub.status.idle": "2026-08-31T06:02:01.983802Z",
     "shell.execute_reply": "2026-08-31T06:02:01.983576Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "ratios = births[['Birth Weight', 'Gestational Days']].copy()\n",
    "\n",
    "ratios['Ratio BW:GD'] = births['Birth Weight']/births['Gestational Days']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "e8a1e8cc",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:01.984778Z",
     "iopub.status.busy": "2026-08-31T06:02:01.984725Z",
     "iopub.status.idle": "2026-08-31T06:02:01.987240Z",
     "shell.execute_reply": "2026-08-31T06:02:01.987070Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "      Birth Weight  Gestational Days  Ratio BW:GD\n0              120               284     0.422535\n1              113               282     0.400709\n2              128               279     0.458781\n3              108               282     0.382979\n4              136               286     0.475524\n...            ...               ...          ...\n1169           113               275     0.410909\n1170           128               265     0.483019\n1171           130               291     0.446735\n1172           125               281     0.444840\n1173           117               297     0.393939\n\n[1174 rows x 3 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Birth Weight</th>\n      <th>Gestational Days</th>\n      <th>Ratio BW:GD</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>120</td>\n      <td>284</td>\n      <td>0.422535</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>113</td>\n      <td>282</td>\n      <td>0.400709</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>128</td>\n      <td>279</td>\n      <td>0.458781</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>108</td>\n      <td>282</td>\n      <td>0.382979</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>136</td>\n      <td>286</td>\n      <td>0.475524</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>1169</th>\n      <td>113</td>\n      <td>275</td>\n      <td>0.410909</td>\n    </tr>\n    <tr>\n      <th>1170</th>\n      <td>128</td>\n      <td>265</td>\n      <td>0.483019</td>\n    </tr>\n    <tr>\n      <th>1171</th>\n      <td>130</td>\n      <td>291</td>\n      <td>0.446735</td>\n    </tr>\n    <tr>\n      <th>1172</th>\n      <td>125</td>\n      <td>281</td>\n      <td>0.444840</td>\n    </tr>\n    <tr>\n      <th>1173</th>\n      <td>117</td>\n      <td>297</td>\n      <td>0.393939</td>\n    </tr>\n  </tbody>\n</table>\n<p>1174 rows × 3 columns</p>\n</div>"
     },
     "execution_count": 5
    }
   ],
   "source": [
    "ratios"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e7ff92f2",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:01.988121Z",
     "iopub.status.busy": "2026-08-31T06:02:01.988067Z",
     "iopub.status.idle": "2026-08-31T06:02:01.989431Z",
     "shell.execute_reply": "2026-08-31T06:02:01.989246Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": "0.23673469387755103\n0.7837837837837838\n"
    }
   ],
   "source": [
    "print(ratios[\"Ratio BW:GD\"].min())\n",
    "print(ratios[\"Ratio BW:GD\"].max())"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e4c91318",
   "metadata": {},
   "source": [
    "Here is a histogram of the ratios."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0fd9dca7",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:01.990318Z",
     "iopub.status.busy": "2026-08-31T06:02:01.990262Z",
     "iopub.status.idle": "2026-08-31T06:02:02.075544Z",
     "shell.execute_reply": "2026-08-31T06:02:02.075344Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "Text(0, 0.5, 'Percent per unit')"
     },
     "execution_count": 7
    },
    {
     "output_type": "display_data",
     "metadata": {},
     "data": {
      "text/plain": "<Figure size 1200x400 with 2 Axes>",
      "image/png": "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8f59f/nll02a/x/+8Aev4+g/R/GU8s68yT/mRf4x7/GPeY1vzFnic15iy8/PJ/cXAAAAAADAAokZegYAAAAAAAgDAi8AAAAAAAAWIfACAAAAAABgEQIvAAAAAAAAFiHwAgAAAAAAYBECLwAAAAAAABYh8AIAAAAAAGARAi8AQm7SpElSvnz5SHcDAAAAACKOwAuQABYuXGgCIa7LFVdcIVdffbUMHDhQ8vLygjrmL7/8YgIsH330kYQrkOO6VKhQQerWrSvdunWTzZs3ux937733So0aNcTpdHo9/8svvzTPu+aaa8479rp160zbvHnzLtiPf/3rX/Lggw/KtddeK5UrV5Zq1apJy5YtZcyYMfLtt996PVbH1rPP+thGjRpJ79695R//+IcUFRVd1JgAAAAAiA1Jke4AgPDJyckxgYkzZ86YgMVrr70mn376qXzyySdSpkyZEh3rv//9rzz99NPm61atWnm1DR8+XB599FEJtWnTpsmll15qghbff/+9/PWvf5Xf/e538s9//tMEQ1q0aCEffPCB7NixQxo0aOB+3meffSZJSUly8OBB8zwNgni2KX1uIPpaQ4YMMUErDfDUqVNHCgoKZOfOnbJo0SKZNWuWHDp0SEqVKuV+TkpKijz33HPm69OnT0tubq6899578oc//MEEbHT8U1NTQz5OAAAAAKIHgRcggbRv316aNGlivtbMCw0izJgxwwQD7r777pC9jgY59BJqnTt3Nn12uf322+WGG24wGSSuwIvSYNK5gRd975qdo2333HOPu01vX3755SaDxh99vgZdfvOb38gbb7wh5cqV82ofP368TJky5bzn6RhoVo6nJ554QqZPny7jxo2TRx55RF599dUgRwMAAABALGCpEZDANGih9u/f777v7NmzMmHCBGndurVkZmZKenq63HbbbbJ+/Xr3Yw4cOCBXXXWV+VqzXlzLaXRJkL8aL5odMnnyZGncuLFUqlRJGjZsKH/+859N9k2wdLmPcmWZXH/99VK6dGl3FouL3r7xxhvluuuuM4EWF82c2bJlizRv3lxsNpt7LDzHw/UetX3OnDnnBV2UZgtpQMUz2yUQzQZq27atLFu2TPbu3RvEOwcAAAAQK8h4ARLYd999Z649gyQ///yzzJ8/32SF6JKYkydPum+7lvRceeWVZtmPZoHccccd0qlTJ/NczyyT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"
     }
    }
   ],
   "source": [
    "fig, ax = plt.subplots(1, 2, figsize = (12, 4))\n",
    "\n",
    "ax[0].hist(ratios['Ratio BW:GD'], ec='white', density=True)\n",
    "\n",
    "# xbins = np.arange(0.2, 0.81, 0.1)              ### this is to show bins config\n",
    "# xbins = np.arange(0.2, 0.81, 0.05)           ### note the width of the bin\n",
    "xbins = np.arange(0.2, 0.81, 0.01)           ### note the width of the bin\n",
    "ax[1].hist(ratios['Ratio BW:GD'], ec='white', bins=xbins, density=True)  ### also note ethe subtle difference between ax[0] and ax[1]\n",
    "\n",
    "ax[0].tick_params(axis='both', labelsize=10)\n",
    "ax[1].tick_params(axis='both', labelsize=10)\n",
    "formatter = plt.FuncFormatter(lambda x, _: '{:g}'.format(x * 100))\n",
    "ax[0].yaxis.set_major_formatter(formatter)\n",
    "ax[1].yaxis.set_major_formatter(formatter)\n",
    "ax[0].set_xlabel('Ratio BW:GD', fontsize=12)\n",
    "ax[0].set_ylabel('Percent per unit', fontsize=12)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1f827320",
   "metadata": {},
   "source": [
    "At first glance the histogram looks quite symmetric, with the density at its maximum over the interval 0.4 ounces per day to 0.45 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": 8,
   "id": "5d888504",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.076538Z",
     "iopub.status.busy": "2026-08-31T06:02:02.076467Z",
     "iopub.status.idle": "2026-08-31T06:02:02.079188Z",
     "shell.execute_reply": "2026-08-31T06:02:02.079005Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "     Birth Weight  Gestational Days  Ratio BW:GD\n238           116               148     0.783784",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>Birth Weight</th>\n      <th>Gestational Days</th>\n      <th>Ratio BW:GD</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>238</th>\n      <td>116</td>\n      <td>148</td>\n      <td>0.783784</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 8
    }
   ],
   "source": [
    "ratios_1 = ratios.sort_values(by=['Ratio BW:GD'], ascending=False)\n",
    "\n",
    "ratios_1.iloc[[0]]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8f620521",
   "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": 9,
   "id": "54d973b9",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.080149Z",
     "iopub.status.busy": "2026-08-31T06:02:02.080082Z",
     "iopub.status.idle": "2026-08-31T06:02:02.081853Z",
     "shell.execute_reply": "2026-08-31T06:02:02.081654Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "0.42907801418439717"
     },
     "execution_count": 9
    }
   ],
   "source": [
    "np.median(ratios['Ratio BW:GD']).item()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d2522bfa",
   "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."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9f3851d5",
   "metadata": {},
   "source": [
    "### Constructing a Bootstrap Confidence Interval \n",
    "\n",
    "Define `one_bootstrap_median` to draw as many rows as the original sample, with replacement, and return one ordinary median. Resampling paired rows preserves the relationship between each birth's weight and gestational days.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "ede8d2df",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.082914Z",
     "iopub.status.busy": "2026-08-31T06:02:02.082857Z",
     "iopub.status.idle": "2026-08-31T06:02:02.084218Z",
     "shell.execute_reply": "2026-08-31T06:02:02.084057Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "def one_bootstrap_median():\n",
    "    resample = ratios.sample(len(ratios), replace=True)\n",
    "    return np.median(resample['Ratio BW:GD']).item()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d05f34bb",
   "metadata": {},
   "source": [
    "Run the cell below to get one resampled median. Each repetition gives a statistic, not a new observation from the population.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "6476332c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.085137Z",
     "iopub.status.busy": "2026-08-31T06:02:02.085072Z",
     "iopub.status.idle": "2026-08-31T06:02:02.086856Z",
     "shell.execute_reply": "2026-08-31T06:02:02.086680Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "0.42857142857142855"
     },
     "execution_count": 11
    }
   ],
   "source": [
    "one_bootstrap_median()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2807bac4",
   "metadata": {},
   "source": [
    "Now we can use a `for` loop to generate 5000 bootstrapped medians."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "0d7c1e90",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.087777Z",
     "iopub.status.busy": "2026-08-31T06:02:02.087725Z",
     "iopub.status.idle": "2026-08-31T06:02:02.495378Z",
     "shell.execute_reply": "2026-08-31T06:02:02.495056Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# Seed once so the example is reproducible; do not reset inside the loop.\n",
    "np.random.seed(42)\n",
    "### generate medians from 5000 bootstrap samples\n",
    "\n",
    "num_repetitions = 5000\n",
    "bstrap_medians = np.array([])\n",
    "for i in np.arange(num_repetitions):\n",
    "    bstrap_medians = np.append(bstrap_medians, one_bootstrap_median())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "c8d4c8fe",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.496591Z",
     "iopub.status.busy": "2026-08-31T06:02:02.496519Z",
     "iopub.status.idle": "2026-08-31T06:02:02.498646Z",
     "shell.execute_reply": "2026-08-31T06:02:02.498445Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "array([0.42569024, 0.43267569])"
     },
     "execution_count": 13
    }
   ],
   "source": [
    "### get the endpoints of the 95% confidence interval\n",
    "\n",
    "left = np.percentile(bstrap_medians, 2.5, method='nearest')\n",
    "right = np.percentile(bstrap_medians, 97.5, method='nearest')\n",
    "\n",
    "np.array([left, right])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "73d860f9",
   "metadata": {},
   "source": [
    "The endpoints are about 0.425 and 0.433 ounces per day. This interval estimates the **population median ratio**, not the range containing 95% of individual births. Keep full precision for calculations; round only the displayed interpretation.\n",
    "\n",
    "The ordinary sample median is about 0.429. A percentile interval need not be symmetric around that estimate, so do not assume a single plus-or-minus margin of error describes both sides.\n",
    "\n",
    "The histogram below shows 5,000 bootstrap medians. The yellow segment marks the central 95% interval.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "a1a108bc",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.499636Z",
     "iopub.status.busy": "2026-08-31T06:02:02.499575Z",
     "iopub.status.idle": "2026-08-31T06:02:02.534403Z",
     "shell.execute_reply": "2026-08-31T06:02:02.534195Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "Text(0, 0.5, 'Percent per unit')"
     },
     "execution_count": 14
    },
    {
     "output_type": "display_data",
     "metadata": {},
     "data": {
      "text/plain": "<Figure size 500x400 with 1 Axes>",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAg8AAAGkCAYAAAC2FsYSAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAQiVJREFUeJzt3Qm8TfX+//GPwzElQ0RkjogKhTRRNA8qFddU3GTslmZSLhWVQinRpZkmGRIpjUgJFSlpMiTKcIVUOIfzf7y/97/2bw/nHGcd+xxnr/16Ph77sc/Ze+291v7utdf3sz7fYRXavn17hgEAAORQSk4XBAAAEIIHAADgC8EDAADwheABAAD4QvAAAAB8IXgAAAC+EDwAAABfCB4AAIAvBA8AAMAXggcAAOALwQOytXv3blu9erW7B+WRGcokFmUSizIJVpkQPOCA9u3bd6g3oUChPGJRJrEok1iUSXDKhOABAAD4QvAAAAB8IXgAAAC+EDwAAABfCB4AAIAvBA8AAMAXggcAAOALwQMAAPCF4AEAAPhC8AAAAHwheAAAAL4QPAAAAF+K+FscABLLH1bMdqZl5Pl6SqcWssNtT56vBygICB4ABJoCh4aT1uT5er7pUssOT83z1QAFAs0WAADAF4IHAADgC8EDAADwheABAAD4QvAAAAB8IXgAAAC+EDwAAABfCB4AAIAvBA8AAMAXggcAAOALwQMAAPCF4AEAAPhC8AAAAHwheAAAAL4QPAAAAF8IHgAAgC8EDwAAwBeCBwAA4AvBAwAA8IXgAQAA+ELwAAAAfCF4AAAAvhA8AAAAXwgeAACALwQPAADAF4IHAADgC8EDAADwheABAAD4QvAAAAB8IXgAAAC+EDwAAIDEDR5GjRplZ599tlWtWtXq1KljnTp1sh9++CFimYsvvtjKli0bcbv55psjllm/fr21b9/eKleu7N7nnnvusfT09IhlFixYYC1btrSKFStakyZNbPLkyTHbM2HCBDvhhBOsUqVK1qZNG/v888/z6JMDAJA4ClTwsHDhQuvRo4e9++67Nn36dFfhX3HFFfbnn39GLHfttdfad999F7oNHTo09Ny+ffusQ4cOtnfvXnvnnXds3Lhx9tJLL9nw4cNDy6xdu9Ytc+aZZ7ogok+fPnbjjTfa+++/H1pm2rRpNmjQILvzzjtt3rx5dvzxx1u7du1sy5Yt+VQaAAAUTEWsAJk6dWrE/08++aTLHCxbtsxOP/300OMlSpRw2YDMfPDBB7Zq1SqbMWOGyyqIgoAhQ4bYgAEDrGjRovbss89ajRo1bNiwYe75evXq2aJFi9z6lGGQsWPHuiClS5cu7v/Ro0fb3LlzbdKkSTGZDgAAkkmBCh6i7dy5092XK1cu4vEpU6bYa6+95gKICy64wG6//XYrWbKke27x4sXWoEGDUOAgrVu3tltuucW+/fZba9SokVumVatWEe+pZe666y73t7IWCljCg4SUlBT3Gr02O7t377YgUVmE3yc7yiPxyiQjJX8OcxkZ+0O//4JeJocCZVKwy6R48eLBCB72799vAwcOtBYtWrhgwHP11VdbtWrV7KijjrJvvvnGZRTUL0IZAdm8eXNE4CDe/3ouu2UUrPz999+2fft21/yR2TLRfTCibdy40b02aDZt2nSoN6FAoTwSp0xSq9TNl/Wkp6Xb+o3rE6JMDiXKpOCVSeHCha127drBCB5uu+02W7lypb399tsRj3fr1i30d8OGDV324bLLLrM1a9ZYrVq17FCrUqWKBYkiYu3YKmc1+SQ7yiPxymRrPmUeiqQWsaOqVUuIMjkUKJNglUmBDB7UDKHOjrNnz7ajjz4622WbNm3q7levXu2CB2UHokdFeBkHL5Oge++x8GVKly7t+lMoCtMts2WisxEHm/pJFNqxg/rZcoPySJwyKZSWP/3CCxVKifn8BbVMDiXKJBhlUqBGW2RkZLjAYdasWTZz5kyrWbPmAV+zYsUKd+91oGzevLnLWISPivjoo49cYFC/fv3QMvPnz494Hy3TrFmz0BfZuHFjN8oivBlFr9FrAQBIZikFrani1VdfdfMrlCpVyqVzdFM/BFHTxIgRI1xnxnXr1tlbb71lvXv3ttNOO80NpfQ6PipI6NWrlwssNPzy/vvvd0NAixUr5pbp3r27G645ePBg+/77723ixIluaGjfvn1D29KvXz974YUX3DBPDQdVh0sNGe3cufMhKh0AAAqGAtVs8fTTT7v7Sy65JOJxDZtUpZ2amuoyBJq74a+//nJNGm3btnVBh0fNDa+88ordeuutdt5557lRGB07dgyNpBBlNBSk6LHx48e7fgpjxowJDdMUzemwdetWNz+Emis0WZSGkh6o2QIAgKArUMGDRjlkRzNPKttwINWrV3fDObPjTRCVnZ49e7obAAAooM0WAACg4CN4AAAAvhA8AAAAXwgeAACALwQPAADAF4IHAADgC8EDAADwheABAAD4QvAAAAB8IXgAAAC+EDwAAIDEvbYFgOTxhxWznWkZeb6e/VYoz9cBJBuCBwCHhAKHhpPW5Pl6lneunefrAJINzRYAAMAXggcAAOALwQMAAPCF4AEAAPhC8AAAAHwheAAAAL4QPAAAAF8IHgAAgC8EDwAAwBeCBwAA4AvBAwAA8IXgAQAA+ELwAAAAfCF4AAAAvhA8AAAAXwgeAACALwQPAADAF4IHAADgC8EDAADwheABAAD4QvAAAAB8IXgAAAC+EDwAAABfCB4AAEDeBw8PPfSQrVy5Msvnv/32W7cMAAAIniK5edGDDz5otWvXtgYNGmQbPNx5550Hu30AkBCKFUmxDWlF3d8ZKUUstUpd25pSxAqlxT/BWzq1kB1ue+L+vkCeBg8H8vvvv1vRov/7EQFAMvgzLcMaTV6TL+v6pkstOzw1X1YFHFzwsHDhQvv4449D/7/55pu2evXqmOV27Nhh06dPzzIrAQAAkiR4WLBgQagfQ6FChVzwoFtm6tevbyNGjIjfVgIAgMQLHm666Sbr2bOnZWRkWJ06dWz06NHWtm3biGUUVJQoUcKKFy+eF9sKAAASKXhQUKCbLF++3CpUqGAlS5bMy20DAAAFUK66AVevXj1PAodRo0bZ2WefbVWrVnXZjU6dOtkPP/wQsczu3bvttttus1q1atnRRx9tXbt2tc2bN0css379emvfvr1VrlzZvc8999xj6enpMc0wLVu2tIoVK1qTJk1s8uTJMdszYcIEO+GEE6xSpUrWpk0b+/zzz+P+mQEACGTm4cQTT7SUlBRbsmSJpaamuv/VRJEdPb9s2TJfG6NOmT169LCTTjrJVfb33XefXXHFFfbZZ5/ZYYcd5pa56667bO7cufbcc89ZmTJl7Pbbb3cBxDvvvOOe37dvn3Xo0MEFBXps06ZN1rt3b7fdgwcPdsusXbvWLdO9e3cXIMybN89uvPFGO+qoo1yQINOmTbNBgwa5gKZp06Y2btw4a9eunS1dutSOPPJIX58LAICkCx5OP/10FwwogAj/P96mTp0a8f+TTz7pMgcKQrROjeR48cUXbeLEidaqVSu3zNixY6158+YusGnWrJl98MEHtmrVKpsxY4YLIERBwJAhQ2zAgAFuCOmzzz5rNWrUsGHDhrnn69WrZ4sWLXLr84IHve+1115rXbp0cf+rj4eClkmTJtnNN98c988OAECgggeddWf3f17ZuXOnuy9Xrpy7VxCRlpYWChzk2GOPdc0cixcvdsGD7jVM1AscpHXr1nbLLbe4yasaNWrklgl/D28ZZTVk7969bl3hQYICJ71Gr82OmlWCRGURfp/sKI/4lYkmUsofGQFbj1lGxv6EO9bw2ynYZeJ3oEN+/Xp9279/vw0cONBatGgRmjNCfRuUOShbtmzEsgoUvH4Pug8PHLznveeyW0bByt9//23bt293zR+ZLRPdByPaxo0b3WuDRs0/+D+Ux8GXiWZgzA8Z+VSn59d6JD0t3dZvXG+JiN9OwSuTwoULu1mj8y14UPOA+g+ostUQzmgdO3bM9XurU6Sun/H2229bIqlSpYoFiSJi7djqNMqsoZRHPMtEUzfnhzxoYT2k65EiqUXsqGrVLJHw2wlWmeTq17tmzRo354NGH2QWNIj6ROQ2eFAnSHV2nD17thtREX7mr8JWsBKefQjPJOg+elSEl3EIXyZ6hIb+L126tBuOqihMt8yWic5GRAvqHBfasYP62XKD8jj4MsmLaz5ksaaArUfH15SE3f/47QSjTHL16+3fv7/LCjzwwANupILmfYi++R1pIQpEFDjMmjXLZs6caTVr1ox4vnHjxm7UhNbpUTPCL7/84jpNiu61bVu2bAkt89FHH7nAQDNfesvMnz8/4r21jPpMeF+k1hW+HjWj6DXeegAASFa5yjxo6KQ6IPbq1SuuG6OmiilTpthLL71kpUqVCrUDeRkBDc3UsEyNnlAnSj1+xx13uArdq/jV8VFBgrZt6NChLltw//33uyGgxYoVc8t4QzQ1dFOjKRQU6Hocr732Wmhb+vXrZ3369HFzQJx88smuk+iff/5pnTt3jutnBgAgKYKH8uXLu4o73p5++ml3f8kll0Q8rmGTXqU9fPhwN/LhmmuucU0YChZGjhwZWlbNDa+88ordeuutdt5557nJrNR84o2kEGU0Xn31VffY+PHjXT+FMWPGhIZpiuZ02Lp1q1ufAhBNFqWhpAdqtgAAIOhyFTzozF1n6ddff72rrONFfRkORO1CjzzyiLtlNwOmMhjZOfPMM90sk9lRvw7dAADAQQYPmrhJwxHPOOMMlxHQPAveBFLhoi+cBQAAkjjz4NF1I7IabbFt27bcbxkAAAhO8PDmm2/Gf0sAAEBwgwc1VwAAgOSUX7O0AACAZM48XHrppQdcRn0eNNETAAAIllwFD5ptMfqS3Bp9sX79etuwYYO7wEblypXjtY0AACDRgwddcyIrupCVpq8eNmzYwWwXAABIlj4PF1xwgbVv395dThsAAARPnnSYrFWrln355Zd58dYAACBowUN6erq7yJSufwEAAIInV30edMXJzOzYscOWLl3qroZJnwcAAIIpV8GDLmEdPdpC/5ctW9ZatGjhrnipq10CAIDgyVXwsGLFivhvCQAASAjMMAkAAHwheAAAAL4QPAAAAF8IHgAAgC8EDwAAIG+Dh927d9v48eNt4cKFfl8KAACSMXgoXry4DRkyxH788ce82SIAABC8ZovjjjvOfv755/hvDQAACGbwcM8999izzz5rH330Ufy3CAAABG+Gyf/85z9Wrlw5a9eundWoUcPd1JwRPV31yy+/HK/tBAAAiRw8fPPNNy44qFq1qu3bt89Wr14ds0z0tS8AAEAwcG0LAADgC/M8AACA/Ake1FwxdepU69+/v3Xu3Nk1ZciOHTts5syZtnnz5ty+NQAACFrwsH37djv//POtR48eLoCYM2eObd261T1XqlQpGzBggJtICgAABE+ugoehQ4faqlWrbNq0abZs2TLLyMgIPVe4cGFr27atzZ07N57bCQAAEjl4mD17tvXs2dPOPvvsTEdV1KlTh0mkAAAIqFwFDzt37nRzO2QlLS3N9YkAAADBk6vgoVatWrZ8+fIsn//www+tXr16B7NdAAAgSMFD165dbdKkSa7Pg9ffQc0Xe/bssfvuu8/ee+8969atW7y3FQAAJOokUX369HEdJq+77jorU6aMe+z666+3bdu2WXp6unXv3t2uueaaeG8rAABI1OBBWYYxY8ZYx44dbcaMGbZmzRrbv3+/a864/PLL7fTTT4//lgIAgMQNHjynnnqquwEAgORxUMHD77//7i7L7Q3L1AiMli1b2hFHHBGv7QMAAEEJHh544AF77LHHXCfJcEWLFrUbb7zRBg0aFI/tAwAAQQgeRowY4W7nnXeemyzqmGOOcY//+OOPNmHCBBs5cqSlpqbaHXfcEe/tBQAAiRg8PPvss3bBBRfYyy+/HPF4zZo17ZxzzrEOHTrYM888Q/AAAEAA5XqGSQUJWVFGYteuXQezXQAAIEjBwymnnGJLly7N8nk9p2UAAEDw5Cp4GDVqlC1ZssQGDhxoq1evdnM86Ka/dTluBQ9axq+FCxe6Jo/69etb2bJlbdasWTGTU+nx8NuVV14ZMwJEE1ZVq1bNqlevbjfccENMFuTrr7+2Cy+80CpVqmQNGzZ0HT+jaf6KZs2auWVOO+00rhIKAMDB9Hk444wzXLDw1FNPuVtKyv9iED0mxYoVc8tETyx1oCtt/vXXX3bCCSdYly5d3BTYmVFzydixY0P/a13hFDj89ttvNn36dHeBrn79+ln//v1t4sSJoSaXdu3a2VlnneUCnJUrV7oAQzNlelNqf/bZZ272zH//+992/vnn25QpU6xz5842b948a9CgQW6KDACA5A4eLr300kwvxX2wzj33XHfLjoaCKhuQme+++85dV0MX5mrSpIl7TKNCrr76anfNjcqVK7tAYO/evfbEE0+49zruuONsxYoVLiDxgofx48e7IEVDTuXuu+9281loJMno0aPj/rkBAAh88DBu3Dg7VD7++GOrU6eOa7LQhFSq2L1JqRYvXuwyCF7gIMowKDOiphQFPVpGzRAKHDytW7e2Rx991LZv3+7eV00yffv2jVivlpk9e/YBt2/37t0WJAq0wu+THeURvzLJSDmoOer8rClg6zHLyNifcMcafjsFu0yKFy/ua/n8+vXGhbIBCgA0k6Wup6FswlVXXWXvvvuuFS5c2DZv3mxHHnlkxGuKFCli5cqVc8+J7vX6cBUrVnT3mzZtcsGD7r3Hwpfx3iM7GzdutH379lnQqEzwfyiPgy+T1Cp1LT/8/wv/BmY9kp6Wbus3rrdExG+n4JWJ6s/atWsHN3gI7xypjo7HH3+8NW7c2GUjWrVqZQVBlSpVLEgUEWvHVlNReLYmWVEe8SuTrfmUeciDFtZDuh4pklrEjqpWzRIJv51glUlCBQ/RNClV+fLl3SgPBQ/KDmzZsiViGV0iXCMwvExCZhkE73+vL4XuM1smOhsRj9RPotCOHdTPlhuUx8GXSaG0XA32yoX8qtXzL3ooVCglYfc/fjvBKJOEDh42bNhg27ZtC1X6zZs3tx07dtiyZctcRkLmz5/vRoE0bdo0tIyaOzQSQ1NoizpD1q1b1zVZiIZoamRFeL8HLaPXAkH2hxWznWkZvvsuqAlCmQQ/AcH+fKxsAQQ4eNB8DMoieNatW2dfffWV67Og20MPPWRt27Z1GYC1a9fa4MGDXTtNmzZt3PL16tULjZLQqAgFCLfffrtr7tBIC1EfCb2PhmdqCOe3337rRlcMHz48tN7evXvbxRdfbI8//rgbqjl16lT78ssvXadKIMgUODSctCZf1rW8s782VgAFR67yhprMaevWrVk+/9///tct45cqaI2g0E10ZU79rYpdHTq++eYb69ixo8siqPJXdmHOnDkRcz1oOOWxxx5rl112mbVv395atGgRUelrNMa0adPcnBMaiaHRGroGhzdMUzQ7puaFeP755918FTNnzrTJkyczxwMAAAczz4Mmh9L8CZlRyr9Hjx6uScGPM8880w2XzIoq/QNRhsKbECor6mipoCM7l19+ubsBAIA4ZB4yDjAmac+ePS5TAAAAkjjzsH79+ojppb///vtMmybUYfG5555z15YAAABJHDyozV8dDTUttW4jR450t8yyEso6MI0zAABJHjxcccUV7joQos6FvXr1slNPPTViGQUVhx12mLu4VU7mRAAAAAEOHjQMUjfRRaR0fQhN0gQAAJJLrkZbdOrUKf5bAgAAgj1JlC5/rX4QmqxJwyujR2CoCUPzIwAAgGDJVfDwyiuvWL9+/dz0zt7lsf0O5wQAAEkUPDz44IN24okn2uuvv+4uTAUAAJJHriaJ+u2336xLly4EDgAAJKFcBQ8NGza0X3/9Nf5bAwAAghk8DBs2zCZNmmSfffZZ/LcIAAAEr8+DrlJZunRpu/DCC61+/fpWtWpVS0lJiRlt8fLLL8drOwEAQCIHD7o0toIDBQ27du2yVatWxSyj5wEAQPDkKnhYsWJF/LcEAAAEt88DAABIXrkOHvbt22dTp061/v37W+fOnV1ThndJbs0suXnz5nhuJwAASOTgQdNRn3/++dajRw8XQMyZM8e2bt3qnitVqpQNGDDAxo8fH+9tBQAAiRo8DB061HWSnDZtmi1btixiKurChQtb27Ztbe7cufHcTgAAkMjBw+zZs61nz5529tlnZzqqQte7+Pnnn+OxfQAAIAjBw86dO61GjRpZPp+Wlub6RAAAgODJVfBQq1YtW758eZbPf/jhh1avXr2D2S4AABCk4KFr165uemr1efD6O6j5Ys+ePXbffffZe++9Z926dYv3tgIAgESdJKpPnz6uw+R1111nZcqUcY9df/31tm3bNktPT7fu3bvbNddcE+9tBQAAiRo8KMswZswY69ixo73xxhu2evVq279/v2vOuPzyy+3000+P/5YCAIDEDR48p556qrsBAIDkkas+D2vXrnUTQ2VFz61bt+5gtgsAAAQp83DPPffYH3/84S7JnZmJEye6vhDPPPPMwW4fAAAIQuZhyZIlboKorLRq1co+/fTTg9kuAAAQtGtb6BoWWTnssMPcyAsAABA8uQoeqlatap999lmWzyvrUKVKlYPZLgAAEKTg4corr7TXX3/dXTlTQzQ9mpJ63LhxbvKoq666Kp7bCQAAErnD5C233GKLFi2ygQMH2siRI92FsOTHH390l+Y+44wz7Lbbbov3tgIAgEQNHooVK2bTp0+3l156yd588003dFNOOukkdzluTR6VkpKrpAYAAAha8PD333+761eceeaZ1qVLF3cDAADJw3d6oESJEvbcc8/Zli1b8maLAABAgZartoVGjRrZypUr4781AAAgmMHDAw884EZUvPDCC+4qmgAAIHnkqsNk3759XYfI/v3725133mmVK1e24sWLx1x5c+HChfHaTgAAkMjBQ7ly5eyII44IDdEEAADJI1fBw+zZs+O/JQAAICEwGQMAAMif4GHnzp02evRoa9eunZvz4fPPP3eP//777/bEE0/Y6tWrc/vWAAAgaMHDhg0brGXLljZ8+HDbuHGjffPNN7Zr165QfwjNA/HUU0/5fl91sOzQoYPVr1/fypYta7NmzYp4PiMjw4YNG2b16tWzo446yi677DL76aefIpZR8HL99ddbtWrVrHr16nbDDTeEts3z9ddf24UXXmiVKlWyhg0b2mOPPRazLTNmzLBmzZq5ZU477TSbO3eu788DAEAQ5Sp4GDx4sKuQFyxY4Po/qFIPd/HFF9u8efN8v+9ff/1lJ5xwgj388MOZPq9KXkHJqFGj7L333rOSJUu6zMfu3btDyyhw+Pbbb9302a+++qp98sknblRIeMZEr1Fw8dFHH9m9995rDz74oAt4PLpi6HXXXWddu3a1+fPn20UXXWSdO3dmbgsAAHIbPHzwwQfWq1cvlyHQkMxoNWvWdNkJv84991y7++677dJLL415TgGKrth5++23u+Dk+OOPd1f1/O2330IdOL/77jsXVDz++OPWtGlTO/XUU23EiBE2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rLPOcmX57LPPuucmTZpkl156qWsu0zaccsopLssQ/fqs9pWs+jzMmDHDfc9aV+3atV0ThLb/QBTUaDv12mg52a9F25NZk1p0PxRvP1m0aJHL/qlMtU927tzZtm7dmmm2Tftg1apVrVq1anb22WfblClTIpZZunSpXXnllW5/0/6g5fX+4f744w8bMGCA2x59DpW9KmZNwxxO+9rixYvt/PPPj3hMn0Hvr1vv3r1tx44dMduqJgYt16hRI7f/6uqUmtJ527ZtoWX0u9Pnf/PNN2Ner8+l57R+j/YdmT17dszyyB6ZB+SJnTt3uqYKVURbtmyx//znP66jmA74Hj3XsWNHd5BWZkIHHh1k77nnHndQDj9Y6qIyL7/8sl122WV2ww03uAPaqFGj7Lvvvgu1W2v5O++80w477DC79dZb3WPexWcUOGj5a665xk4++WS3fTqwLV++3B0wu3fv7lLVCibU3JIZrUcVgc5UlHEoV66cO2i++OKL7uCqSlOf0ftfn+XEE0+MeA99Bi1z/fXXu/dSs07btm1dpetta3YUOOjAqQp5yZIl9txzz7nATAdEVQAKGnRmN2bMGDvuuONc+XoUKChNr4pEgYYCGgVMX331lb3zzjuhKXIVDD3yyCN23nnnuQySyqhdu3YuSDkQVbAKFP75z3/aEUcc4dq19d3r+3z++ecjllWQoHLS96ELAn300Uf2xBNPuMDuuuuuO+C61Ayg5fTdqexVYckzzzxj9evXd0FckSJFXFOZ9gcFTyr3A+0rWX33qqgUfKqMtU/ru1Ml6lVYWdF+prJTpRctJ/t1bmg/0TbpM/788882btw4u/3220MBlveZtE7tJzfffLPbj7QvvPfee66JUXTBJv2t4EbvqayMXqd9Vk0x+u7klltusTfeeMOVb7169ez33393ga4uM63Xej744AOXcdBvzjsGKHhUOWqfUUAwa9asiIDIo9+mMgTaf/UbUPCnfUpBvLZZ73vmmWe634ECBQWQ4fSY9q3mzZuHHtNn1mOfffaZ+36RcwQPyBM6GIYrVqyYqxi8g4aoo5IOvDrbvO2229xjOvioItCBWWd2+mGvWLHCHWBV8atSlB49erh2U53J6z1atmzpzpBV8anSCg9SRJWjKsPHHnss0+3VAUWVjw5Q0a/1qAL84osvrEKFChEVoA644c0X2k69nypNfeZwa9ascRWql75W+lY9vh999FEbPnz4ActVFZwOgjpQqgz0fioTVaCqdETBjYIWnYF7wYMO5Lpqn4IFr2IQHWxVgavS1+M6O9X76czwlVdeCaWWVbmPHDnygNs3dOjQiKYDbYvO0nU2vX79end261HwpAsBqVISVR76HhV85SR4WL16tWsGi+4xr7PI8G3QfqTPqIyPFzxkt69EU9ZKPfOVidE+6zVpKIOj1yqbo7P8rKgCFWWEwuV0v84NfS6N7vC+PwVOCop1Rq8KU/fKFKjyV2Ud3kzjZax0r6BA+8jrr78eei/ta/rs999/v1uH9/vS71Zl6lFfp2haTpkgbYOoPBU4a/+48cYb3WP67vX9RFPZKNgK16xZM7e89u/TTjvNbWP79u3dd+19VtF+rcDFCxTDqblCwRr8odkCeUJnrqqQdFMlqgOQDg4zZ86MSJmqGUNnweF0NqQDlzc6w7uPPjPQcqIz7QPRQURnKj/99FOuP5POZMIDB9H2e4GDDtA641JAof4eOmOPptR4eLu3Dt5qqsnpSBRlaMLbivV6lZUeD98mne0ps+DR91C6dGkXvCkj5N20nHr/eyl6nf3rLFkVbvh6MjsTzEx4pa0mKa1DgZS2UUFWNAUM4U499VR3dpkTqowzG2oXvg2qQLQN6vyo980sHX4gX375pcs0qJIKr2QVYOlM+UD7n/YJic5OxGO/zoqCtvDvT+Wq/VIBnPc9K2umbFR0/w7vdfq+9Hu56qqrXNOAt8/89ddfrglGlb72ee/3pazJr7/+muU2aVll48KbLFQGyg6F7weZHROiv1cFntoW/XYk/Lf2j3/8wzX7KBMSfjVLNRFlFijqe/EuUoWcI/OAPKFKLbzDpA5ACiB0lqm+BqpwdSBTG+rhhx8e8VodkMU70Ole6VKdwYZT6lIHLW+57OjMUOlRbZfOIFXp6ECitvmcij5z9KgpQBkGpdF1lprd8tGfQdQurco9J5SSDaeAQNRnIPrx8L4MOktXU42X2o+mylG8stQ2hVPQlF1q3qPXK4OilHZ0XwqtP5wqrehgTOuIfp3f70MpcDVLqFlHFV30NnhnoznllUlmZad+I9Ht/1mJ7oMSj/06p/uJ9915ZauMlei3kBXtMwcKHFWeem9lDrSc+rgoIFVzl7Je4Z0QlbVTBkAZQI8+o/qQRA9fzaysFYSp+VGBgLe/hm9H+PFDzUvK0CmrI/pbWYrMfn/6XgpC581EQ/CAfKGDpIIHNUfobEbtrH4dzA9cZ55qe1ZKW00TSuEr3Tx69OjQAeZAMuvJ/+qrr1rfvn1dRkGZFaWcdeakJgTvAB1P0R1Os3s8vLLSWZ+2zesUGk2XBT5YOrNVM4QO8jqjVcWqPgVq7lEZeWepB/osOZXZ96EyV5OZ1q0UuoIqBao6i9f3Hb0N+UF9Y7yKOzrIO9j9OqvPk1XZRgcwOXlvNVmpP1Jm9P2KvndlN9QEouYBNbuoiVBNUAokRN+BOkSqP0pusynq26OmC22PAg5to5qkostB2Qc1y2zYsMFl0hRIqhNwZvS9xGP/TzYED8g3Xi96pbNF7d9e+jQ8+6AzeO95714HBwUd6ozl2bx5s0tDh7ejZ3cg1kG8S5cu7qZOi+o1rjOZnAYPmVFqVGdX6l8Qvu6sJpvyzubC6XPpoJqX1HdEZa325uyGM3plqW0KP2vUGeOBMgKa/OfHH390nfPCO2p6I1rygzIeSlmrL0H4fpHZbJE5rbS999Fnix4xocfC15MZL5OmZiSdmYe/b073a53dRze5qFJUJ9/c7g+ikT6ZnY2HL6PfpjcqITvKIKhfgm7KDKis1E8mPHgIzzqIPqM6Zer3GJ59ULmG076n5dRRWJ1APVk1Qyqg0Cgu9YlRB151Blan38zoe/GTgcT/0OcB+ULpfJ2R6CzQO5jqoKKAIvpsWGeIOrB7Bx3vXpVSOHWKkvADUsmSJTNt1w4fziU6UOmgGT4kzjuLymnaPPwML/yMTm2/4cPBwinzET68T50ntbw6TuYlDZtTWWd29qW2YO8zq5LQgVb9VMI/U3TZ57Qs9LeyTfkls23Q/pDZyIWs9pVoan5T1kajOML3F7XXq6NddIUYTWl87ffqOxHOz36tilx9DMJppE1OhrVmRn1fFBQo86b+A+G8stN2a73KImQ2pbY39FPbEF2OKi8FE155KSBSv4ToslIZaP9T2Xr0ftEjnpS5DN+2A+2XyiToN6XMoJos1EyZWXZB261sVfgIDOQMmQfkCR1YvV7mOgtRb22dJWhImNdOr6F0aspQWlTDyRT9K8BQD2y1n3pnPkpR6kxWB0v92NUEoUpXZ5dqLgjvka4Dnsb0q5JUcKA2dZ0B6Yz7jDPOcM8rA6EDuTe0LPy1ojMbHWxUEekMJjvq/KUx5Ro+pr91FuMNFczsgOvNL6HOdzqw6uCnnvGZ9UyPJ312b0SGevmr8lCQoO9E5aAMjNL9Ki+lhbWc+oTo4O4N3ztQaldBoT6fhtqq45wqJ3WQ9ROMHazWrVu7ilppa31eZbk0nE+fK/osPat9JZrKSaMt1LFR+5v2CW+opjJGapLJjvp2qLx15qyzYY+f/VrZMf121DFW76U5D9T5MLfpdv0G1ayjpjaVmfokKbuh91U/EX02VdgaBaJROBpdoX1cnX0V/CqTo+9XlbMyh8qoaPimfsMKzJXlUh8Hjcjwsg4qB/3ew+kYoPdW+eoYoAyMfk/R/WO0vRpNoe1RsKG+UjpWhHcKjqZ9QCNAJLzcw2k7FZB4c3wg5wgekCfChx3qoKE2aFVIOqB7dHDSgVLLasiXzg51MFYw4fU49+jsR2l0dU5Uu6o6lWkYWXgKU9QhU52wdJDRQU0HZFUI6r2tlLYOOEr3Kl2qIaLe8DBvNIVGGahD1muvveYOKgcKHnRA1VmVxs/rvXXw01m7OkB+/PHHMcurslBWRQdnVUDq2KXKS2dpeU1nmaowta0qY/VyVzloaJuCK4/KRUNrtZwqCXUyVZloueyoktXwTn0nWpfeQ0PuFKApeMkP2s8ULKjSUhCjoa0K1FTJRu9TWe0rWX3PylToc6mi09/6bPo7Jx1J1VSmAOCXX36J6MyY0/1alaAqSvUhUNCg/gXax1Rh55a2RxkCDRPWPqjvT+UXHgypslfFr+eVIVQw5k3m5k21rbJQGWv/12dQU4yCSDVZeENudTKh94puMvOOAeqfoN+cF1Do+4sepqprkeg703bot6mgRyclWfWh0Pvou9H26O/MKHBWWXonKsi5Qtu3b895DxoAuaIDvyYJUqUdPVYdwadUvAI0NR8pOEsmyhQos6PJtdQfIj/Xq8BCmb7o+VZk06ZN7jep7BOZB//o8wAAeUxNYBourLPnZLskt0bfqBkys4mf8pL6F6lfhpovMqMmQw1VJXDIHTIPQD4g8wDkD3VA1sgfNbWoP1H0dWYQH/R5AAAEhpoh1H9CHVI1cgt5g8wDAADwhT4PAADAF4IHAADgC8EDAADwheABAAD4QvAAAAB8IXgAAAC+EDwAAABfCB4AAID58f8AIC6BtHkjf+IAAAAASUVORK5CYII="
     }
    }
   ],
   "source": [
    "resampled_medians = pd.DataFrame({\n",
    "    'Bootstrap Sample Median': bstrap_medians\n",
    "})\n",
    "\n",
    "### use pandas df.hist will give you the same thing, less the details ###\n",
    "# resampled_medians['Bootstrap Sample Median'].hist(bins=15, ec='white', figsize=(5, 4), density=True)\n",
    "# plt.plot([left, right], [0,0], color='yellow', lw=8)\n",
    "\n",
    "fig, ax = plt.subplots(figsize = (5, 4))\n",
    "ax.hist(resampled_medians, bins=15, density=True, ec='white')\n",
    "plt.plot([left, right], [0,0], color='yellow', lw=8)\n",
    "\n",
    "plt.xticks(rotation=90, fontsize=10)\n",
    "plt.yticks(fontsize=10)\n",
    "ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: '{:g}'.format(x * 100)))\n",
    "plt.xlabel('Bootstrap median ratio (ounces/day)', fontsize=12)\n",
    "plt.ylabel('Percent per unit', fontsize=12)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52972522",
   "metadata": {},
   "source": [
    "Unlike the salary demonstration, this plot has no line marking the population parameter: we do not know it. We cannot check whether this particular interval contains it. The confidence level refers to the intended coverage of the method across fresh original samples.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8b15962e",
   "metadata": {},
   "source": [
    "This is an approximate interval. More bootstrap repetitions reduce simulation noise in its endpoints; they cannot repair an unrepresentative original sample or an inappropriate sampling model.\n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "tags": [
     "thebe-interactive"
    ]
   },
   "source": [
    "### Exercise: Choose the tails\n",
    "# A central 90% interval leaves what percentage in each tail?\n",
    "# Compute its lower and upper percentile levels and print them.\n",
    "### Your code starts here.\n",
    "\n",
    "### Your code ends here.\n"
   ],
   "outputs": [],
   "execution_count": 15
  },
  {
   "cell_type": "code",
   "metadata": {
    "tags": [
     "hide-input"
    ]
   },
   "source": [
    "### Solution\n",
    "confidence = 90\n",
    "tail = (100 - confidence) / 2\n",
    "print(tail, 100 - tail)  # 5.0, 95.0\n"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": "5.0 95.0\n"
    }
   ],
   "execution_count": 16
  },
  {
   "cell_type": "markdown",
   "id": "8dd8acf9",
   "metadata": {},
   "source": [
    "## Estimating a Population Mean\n",
    "What we have done for medians can also be applied to **averages**. 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, along with their average age, which was approximately 27.2 years."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "9f4fbf56",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.535550Z",
     "iopub.status.busy": "2026-08-31T06:02:02.535487Z",
     "iopub.status.idle": "2026-08-31T06:02:02.567580Z",
     "shell.execute_reply": "2026-08-31T06:02:02.567379Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "Text(0.5, 0, 'Maternal Age')"
     },
     "execution_count": 17
    },
    {
     "output_type": "display_data",
     "metadata": {},
     "data": {
      "text/plain": "<Figure size 500x400 with 1 Axes>",
      "image/png": "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bShdslLPfCdPniwpKSmBblI2bdok11xzjfninXbaafL2229L8+bNi/0dfc/Cze2llZaWJraKTmgqtsrXHcFKNpfP5rLZLic7R3al7iq397N5/1CeqIey10NUVJQkJSWFfpz04cOHZcyYMTJu3Dj/YxquI0aMkB49egS6SWnatKmsXLlSjhw5Ih988IEMGjRIFi9eXGxQ67XsstIjIq3w+Ph4iYmJERsdsPhM2vY5bWwun81ls50n2iP1GjUK+ftUhP1DeaAenK2HUiXA/fffL/fcc4+sWbNGDh48aObqbtOmTZHzeJeEfmDf0UXr1q1l/fr18sYbb8iECROC1mTwW+8fzO0FU0R2qYeylwPbk8bm8tlcNrtFRESW6/fV5v1DeaIenKmHUp+mVa1aVTp27CihoGOxjx8/HpJtAwBQUQQc0nrdee/evWbYVGH6WIMGDaR///4l3t4zzzwjV199tTRs2FAyMjJk7ty5pgPa+++/H2jRAABwd0jr8Kjk5ORT9vyeOHFiQCG9f/9+ue+++0xbf1xcnJnJTANal8EEgMIqeSJlT3ZMuYys0I6b2i8kkMtOcdERUk1oCYRDIb1r165T9k5r3Lix7Ny5M+BVtQCgpI5me6XVzMAmTSpPm+5KlGrRTpcC4SLgXknVqlWTHTt2FPmczuFduXLlYJQLAADXCziktRlah1/t3r27wON79uyRsWPHmuvLAADAgeZu7Rymi2DokKsOHTpIvXr1ZN++fWau7dq1a8tTTz0VhGIBAICAz6Tr169vJh7Rmcd0Hm/tia0/tTOZPh6MSUYAAECAZ9I6befIkSPljjvuMAthAAAAS86kdZaVmTNnmgUwAACAZc3dujrVN998E5rSAACA0ncce/zxx81kJbqah3YgO/300yWi0GoBOpc3AAAo55DWJSWVXps+VU9u7UgGAADKOaR1hrDCZ84AACD4SrWeNAAACL1SL1acnp4uX331lcyZM8f82zdES5eZBAAADoS0hvCzzz5rVqu6/vrrZeDAgWbObnX33XfLSy+9FIRiAQCAgEN61KhRMmXKFHn++edl3bp14vV6/c917dpVlixZEuwyAgDgSgFfk541a5aZbaxv376Sm5tb4LnExETZts3eJeQAAAjrM2kdXtWsWbMin9PQzsnJCUa5AABwvYBDukmTJrJ8+fIin9PFNlq0aBGMcgEA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bC+fzWWrGOUrfxHp6elecZieOV9wwQUyduxYc//EiRNyzjnnyIABA+Shhx5yungAADjC8UOWrKws+fbbb+WKK67wPxYZGWnur1mzxtGyAQDg6pA+ePCg5Obmyumnn17gcb3/yy+/OFYuAADE7SENAAAsDenatWtLVFTUSWfNer/w2TUAAG7ieEjHxMRI69at5YsvvvA/ph3HVqxYIRdffLGjZQMAQNw+BCs5OVkGDRok559/vlx44YVmCNbRo0elV69eThcNAAB3h7SOiT5w4ICMGjXKNHPrpCbz5s2juRsA4GpWjJMGAACWnkmj/Om0qzoO3ddhT1sttA+AXm5wq+3bt8u2bdvM1LRnn32208UBHMG+wa59g6vPpL1er6xcudJf+TrzWXR0tISz/fv3S+/eveUf//iHNGzY0H9JQb+Qu3fvlrZt28pbb70V8ulYnfbwww/LM888I1WrVpX//ve/MnDgQFm0aJH5m4iIiJB27drJ7NmzzfNuwI75ZG47aGPfYOe+wfHe3eXp1ltvlf/85z/m34cPH5bOnTtLt27d5LnnnpOePXuaytdr4+H+B6iTx+gO+fvvv5dPP/3U3PTf+pj2rB82bJiEu+nTp5svoNLpaDWkFixYIHv27JGPPvrI7JReeeUVccOOuWvXrnL11VdLSkqKGVWhN/23PqbP6WvCnX4vMjIyzL/170LDSqcq1v4yl19+udx4443+58MV+wY79w2uCulPPvnETEOqnn/+efOl27Bhg/z888/mD7FKlSqm81o4++yzz8wfXtOmTU96Th8bM2aM+WKGOz0q9lmyZIk5cu7QoYP5G9AzhhdeeEE+/PBDCXfsmO3cMTuBfYOd+wZXhXR+erYwcuRIady4sbnfoEED858R7n+EOi79119/PeXz+py+xg206UqlpaWZBV3yO/fcc80OOtyxY7Zzx+wE9g127htcF9K+yk9PT5fExMQCz+n9ffv2STjT5jsdk647nCNHjvgf13/rYzpm/fe//724ge54H3/8cbOgS+H/90OHDpkddLhjx2znjtkJ7Bvs3De4rnf34MGDzU4nOztbduzYIS1atPA/px0kqlevLuH+x6dNmH/4wx8kJyfHvwPWywAej0fuvvtucykg3F122WWyZcsW8+9mzZrJrl27Cjy/bNkyad68uYQ7345ZL/PoynNxcXH+HbPOAqjrvLtpx1y5cmX/jjn/vsENB22n2jccP37cdKhl3+DMvsFVvbs1oPPTjmM9evTw39fm702bNpmJVMKd7oR1idD8vXl1elbfTtrttGev7pj0Mkg40x3wY489Jm+//fYpD9o0wCtVqiTh7Prrr/efSavbbrvNdB7z0UsCn3/+uSxevFjcsG/Qvjq+DoPam1tng3T7vsH7/727y3vf4KqQ/i06Faku9hEbG+t0UYByxUFb8dxy0FYUDekvv/zSnFW6WV2H6sF1zd3F0WFZo0ePlokTJ0o4016sukOuWbPmSc02mZmZMn/+fLnzzjsl3FEPef71r3/J2rVrzbho7Sz1008/yRtvvCHvvvuuOaPUZnA38NXDJZdcYjrN+epBWxvcUA96DbYo2vt//PjxUqtWLXM/3EfAPG5ZPXAmnY8OO9Evol5/Clc63Eyb+HVIiTbdaM/VqVOnSv369c3zeialgRXOdXCqepg2bZrUq1fPVfWgwxJ1joDTTjvNHLRos/d9991nOkrp9clVq1bJ+++/H/YBRT2IOVjVz1u4X45+dm3u1mvy+l0J917uNS2rB1eFtI53/K0mrSeeeCKsd8y6sphee9TJKnRiF70e+eOPP5oZdRo1auSacKIe8lxzzTXm7Fn/7rUvho6b1o5DTz75pHlehyJpa4O2KoQz6kHMWeLf/vY3ee211wocjNSpU8c087qhI6WN9eCqkNYjJD0Cyj8msjB9Ppx3zNqMp5M0+IaYaF3oDunvf/+7CSg9SnRDOFEPec444wzTISopKcmcMeq1aB0X3apVK/P85s2bpXv37qbpN5xRD3nWr18vAwYMkGuvvVaeeuopcx3ebSFtWz24apy0NmXOmDHDXHsu6qZDTsKdXmvVXrv5D0rGjRtnpn/UHq7aDOwG1MP/+Ho169Aj7TSZv5lP5yfOP2Y2nFEPYqZC1YMVnR75yiuvNAcn+Xu9u8UFFtWDq0Jaj4q1yepUfussO1zOIHV4RWE6xOS6665zRUcpRT3k0ab9f//73/772pKgiyv46DV7XWAi3FEPUuCARDvMDR061LQeaIcpN6pqST24KqQfeOAB03PzVLSpK9w7Rdxwww2nHAeuAXXLLbeE/YGKoh7y6HXX/DsfXe0pfwuDdqjSa7Xhjno4mU5is3z5ctP6qAcxbvV7h+vBVdekAQCoSFx1Jg0AQEVCSAMAYClCGgAASxHSAABYipAGgkjnfq9Ro4ZZ5lAnxSisS5cu5nldHjIQuv65bltnRbOVli+QBSiGDx9u6uKll14KabmAioyQBoJMZyc6ePCgmes3v507d8qaNWvM+MtA6dSlY8aMMYtAhAMd7uSbYnPu3LlOFwewFiENBJmuyXz11VefNA5bF2jQM+zGjRuL03QMuK7u5BSd3U/nR9fZnHSqzeImGQLcjJAGQkAnQ/nggw8kOzvb/9icOXPM44VpSN17771mHnFdjUwn3Pnzn//sby7fsWOHfw7pPn36mCZivenjSsP22WefNSv36JzTuuSkvld+2rx+6aWXmpm02rVrZ163ZMkSfxP1pk2bzDzF+v76Op23Or/Zs2eb5/UA43e/+52ZOnXdunWlrh8tX7Vq1cwCJ9ryULi8vtYDnT9ZZ/4688wzzWfUetHPXvhSgM67ruv86ufSRRE+++yzUpcNsAkhDYSABlpWVpY/LPRasgbhzTfffNJr9+7da0Lo5Zdflvfee88Esc565rtW65tzXo0cOVKWLVtmbr5lNe+55x6ZPn263H///WYN6E6dOplw09cUfh+9Djx48GDTxNyyZUvzuB5I9O/f3yzVqEs06kICvXv3LrC4iDbV33HHHfLmm2/KX//6VxOcOn1qaeY413nTdRETDfqEhARTXm1lKHwNPzk52RxI6ApUGuba1D958uQCr9E61iVHly5dalaw0oMJDWtd/1nrG6jo/jfvHYCg0VW0NMS0yVs7i2ko6hluUU3deubnWxJPm6H1TFbXNJ4yZYo8+uijUqlSJTnvvPPM802aNJE2bdr4f3fFihXy8ccfm5Dr2LGjeeyqq66StLQ0c5bcuXPnAmecWo6LLrropKB7+umnzXKNSg8Y9MxdQ/722283j2m4+2iY6nvoSkGzZs0yBw6B0OD99ddf5dZbbzX39ac+tnLlSn89+JYN1bmT9eBA6SWE/J9d6UGNrgOff3UiDf2tW7eaAx1dchCoyDiTBkI4568GqAauhqjeP9WZ5ahRo8yC8tpcq2eyzz33nOzbt08yMjKKfQ+dU1iXYNV5pXV9bN9Nr/Vu3LixwHzUtWrVOimgfas+6et9tDm7cuXKkpqa6n9Mz2J1DW5dmES3o2XcsmVLqc6ktWm7bt26/vfUlce0M13+Jm89APA9l7+c2kJR+PPrPNt6YFH48/u2AVRknEkDIaJndLpIgwawXj/WZtmi6Hq1b731ljlbbd26tVkicfHixab5W683F9cbXHuR6zKrGppF0aD3DYvSA4CiaCBrZ7f89DqxHjwoPevVZvratWvLCy+8YBYZ0KUc//jHPwbc+UzP5n1n6LpdH20F0MVtXnnlFdNyoC0BWob8y0UqDffCn18PRor6/FFRUQGVDbARIQ2EiIbMTTfdJBMnTjTNuKcKSe1gpteVH3zwQf9jeo21JPQsWgOqqI5XhUOttOvhrl27Vvbs2SPvvPOO/zq20vWVAxkXrRYuXGia1/Uau+86e376ubXOdFlIvVauncfyB/X+/ftP+vza4e71118v1WcDbEdIAyGkHbA0WLQz2Kloc3j+M1ltotbm8fx8z/vObn20WffVV181BwTauzsUtHz5y6BWr15tOpPpkLJA6MHEGWecYQ5cilouUp/XkNamf/XRRx/51/bWa+F67brw5/d1otOe6UC4IaSBELrwwgtN56riaCcs7TWtvZK1SXnq1KknNSPrmaWeUWpHNL1mrE3Cegapv6vXaXVol66Xro8dO3bMdLzSzlM6ZKmstLOWNrkPGzZMHnroIXOt+sUXXzQ9swOhv6cTvOh22rdvf9Lz+hn0s+vZs4a/rvmtlwD0IEGb2LUTmB6k5G8R0E5l2rNdX6vN79qxTn9fm8D1TFwvJQAVGR3HAIfpUCsdu6yBpEGjHaF03G9+2mlKzz712na3bt1MOOuQKqXXs/v27WsCTntK6zZ06JduMxi0mV4D8sCBA2aY1qRJk2T8+PGSmJgY0Hb0AEPPhn1nxoXp43pwok3iSpuw9QDkySeflIEDB5qe8fqauLg4/+/owYq+XnvQ6zV8vXauBwE6OUrbtm3L+MkB50Wkp6d7nS4EAJSE9vbWDmE6PAtwA5q7AVhJO9Tt3r3b34SvY7y//vprM+EK4BaENAAr6XVwnUFNr61rj3Ado/2Xv/zFXH8G3ILmbgAALEXHMQAALEVIAwBgKUIaAABLEdIAAFiKkAYAwFKENAAAliKkAQCwFCENAIClCGkAAMRO/wdeY0YZZlnk7AAAAABJRU5ErkJggg=="
     }
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize = (5, 4))\n",
    "\n",
    "ax.hist(births['Maternal Age'], density=True, ec='white')\n",
    "\n",
    "plt.xticks(rotation=90, fontsize=10)\n",
    "plt.yticks(fontsize=10)\n",
    "ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: '{:g}'.format(x * 100)))\n",
    "ax.set_ylabel('Percent per unit', fontsize=11)\n",
    "ax.set_xlabel('Maternal Age', fontsize=11)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "e47fbd93",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.568658Z",
     "iopub.status.busy": "2026-08-31T06:02:02.568597Z",
     "iopub.status.idle": "2026-08-31T06:02:02.570322Z",
     "shell.execute_reply": "2026-08-31T06:02:02.570139Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "27.228279386712096"
     },
     "execution_count": 18
    }
   ],
   "source": [
    "np.average(births['Maternal Age']).item()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "46a7ab44",
   "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 adapt the code for `one_bootstrap_median` to instead define the function `one_bootstrap_mean`. The code is the same except that the statistics are means (that is, averages) instead of medians, and are collected in an array called `bstrap_means` instead of `bstrap_medians`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "b6354d9d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.571279Z",
     "iopub.status.busy": "2026-08-31T06:02:02.571225Z",
     "iopub.status.idle": "2026-08-31T06:02:02.572583Z",
     "shell.execute_reply": "2026-08-31T06:02:02.572383Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "def one_bootstrap_mean():\n",
    "    resample = births.sample(len(births), replace=True)\n",
    "    return np.average(resample['Maternal Age'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "346ea287",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.573482Z",
     "iopub.status.busy": "2026-08-31T06:02:02.573424Z",
     "iopub.status.idle": "2026-08-31T06:02:02.904444Z",
     "shell.execute_reply": "2026-08-31T06:02:02.904124Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# Seed once so the example is reproducible; do not reset inside the loop.\n",
    "np.random.seed(42)\n",
    "### generate means from 5000 bootstrap samples\n",
    "\n",
    "num_repetitions = 5000\n",
    "bstrap_means = np.array([])\n",
    "for i in np.arange(num_repetitions):\n",
    "    bstrap_means = np.append(bstrap_means, one_bootstrap_mean())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "530b5019",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.905786Z",
     "iopub.status.busy": "2026-08-31T06:02:02.905715Z",
     "iopub.status.idle": "2026-08-31T06:02:02.907904Z",
     "shell.execute_reply": "2026-08-31T06:02:02.907714Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "array([26.90204429, 27.56218058])"
     },
     "execution_count": 21
    }
   ],
   "source": [
    "### get the endpoints of the 95% confidence interval\n",
    "\n",
    "left = np.percentile(bstrap_means, 2.5, method='nearest')\n",
    "right = np.percentile(bstrap_means, 97.5, method='nearest')\n",
    "\n",
    "np.array([left, right])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "097accff",
   "metadata": {},
   "source": [
    "The 95% confidence interval spans approximately 26.9 to 27.6 years. That is, we estimate that the average age of mothers in the population is somewhere in the interval of 26.9 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. In general, the larger the sample, the less its average varies from one sample to the next.\n",
    "\n",
    "The empirical histogram of the 5,000 bootstrapped mean ages is shown below, along with the 95% confidence interval for the population mean age."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "2a6d9eeb",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.908992Z",
     "iopub.status.busy": "2026-08-31T06:02:02.908937Z",
     "iopub.status.idle": "2026-08-31T06:02:02.940188Z",
     "shell.execute_reply": "2026-08-31T06:02:02.939987Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "Text(0.5, 0, 'Bootstrap mean age (years)')"
     },
     "execution_count": 22
    },
    {
     "output_type": "display_data",
     "metadata": {},
     "data": {
      "text/plain": "<Figure size 500x300 with 1 Axes>",
      "image/png": "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hwEiG/RfffXVkvwZAABItKCvbn0AAJBYWIYXAACfKFFLv2vXrkU+RmP6r7zySkmeHgAAxEvQ37t37z5b6yqbPzs729asWWONGze2evXqReocAQBArIL+3LlzC73vzTffdMv03nXXXaU5LwAAEO9j+meddZZdfPHFNmzYsEg/NQAAiLdEvqysLPvyyy/L4qkBAEC8BP3c3FybPXu2W58fAAAk+Jj+oEGDCrx9y5Yt9sUXX9i6desY0wcAIBmC/ocffrhP9r5+r1atmrVr18769etnnTp1itQ5AgCAWAX9r7/+OhLHBgAAUcSKfAAA+ARBHwAAnyDoAwDgEwR9AAB8gqAPAIBPFDvo79y50x5++GGbP39+2ZwRAACIj6Bfvnx5GzVqlP3www9lc0YAACB+uvePOOII++mnnyJ/NgAAIL6C/siRI+2JJ56wDz74IPJnBAAA4mdFvkcffdSqV69u559/vh1yyCHuS93+ocvyPvPMM8V6XuUJPPjgg7ZkyRL79ddfbcaMGdalS5f8+6+++up9nvO0006zWbNm5f++adMmu/nmm+3NN99059CtWze75557rFKlSiV5qQAA+DvoL1261AXUBg0a2J49e2zFihX7PCZ0bf5w7Nixw4466ijr06eP9e3bt8DHnH766TZp0qT83zMzM4Puv/LKK12FQTv95eTkuM2BbrjhBps2bVqxzwcAgGQSV2vvn3HGGe5rfzIyMqxOnToF3vfdd9/Zu+++a++//74dffTR7rZx48bZRRddZHfccYfVq1evTM4bAICkDfqx9PHHH1vTpk3djn6nnHKK3XbbbXbggQe6+xYsWGBVq1bND/jSsWNHS01NdVv+du3atcjpiH62e/fuoO9IrHLKS43WxzkvyY4TvWPl5e3d5zoTr++neEM5FS50eH1/SnyVULf+nDlz7KOPPrINGzbY8OHDrXnz5rZlyxabN2+e22K3du3aFknq2lfgVg7BypUrXev9wgsvtHfeecfKlStn69evt1q1agX9TVpamss/0H1FWbt2rXtdfrdu3bpYn0JCiLdySq9/aFSOkxelWByt40TzWLk5uZa9Njsh3k/xinIKptjXuHFjK9Ogv3nzZhdsFy1a5BLktm/fbgMGDHD36fdbb73VLrnkErv99tstki644IL8n1XBaNGihbVu3dq1/jt06FDq569fv775mWrQ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xKJ7f82aNXbOOee4702aNLHvv//etm3blj/er3n82dnZNnbs2NKeHwAAiGXQv/32212Q/+ijj6xWrVr7JPSpQvDWW29F6hwBAECsuvffe+89GzhwoDVr1sxNzQvVqFEj1wsAAAASPOjv3LnTatasWej9Xlc/AABI8KB/+OGH2yeffLLfKX1HHXVUac4LAADEQ9C/+uqrbdasWXb//fe7LH7Jy8tzGfsDBgywBQsWuFX7AABAgify9ejRw2Xn33nnnW6bXbngggtc4NfyvEr069KlS6TPFQAARDvoy5AhQ1zwf+WVV2zlypW2d+9ey8rKsq5du7pEPgBA7GSmpdqanIwyP06V9BSrbLvK/DiIQdBXAt/rr79uq1evdmvvn3nmmTZo0KAInQoAIFK25+RZq5kry/w4S/tkWeX0Mj8Moh30N2zYYJ07d3YBX934UrFiRZs5c6Z17NgxUucDAABincg3btw4++mnn1yC3nPPPWdjxoxx2+lqe10AAJBELf3333/fLrnkEpe856ldu7b179/fli9fboceemhZnSMAAIhmS//nn3+2du3aBd2m39XVv379+rI4NwAAEIugv2vXLtedH8j7PTc3N5LnBAAAYp29rzH9xYsX5//uLcyjRXmqVq26z+Nbt24diXMEAADRDvp33XWX+wo1ePDgoN/V5a+NeDZu3Fj6MwQAANEN+pMmTYrMEQEAQHwH/V69epXtmQAAgPjbcAcAACQegj4AAD6RUEFfqwBWq1Yt6Ou4444L2htAGwFp45+DDjrI+vbtyxoCAACUdpe9WDniiCNszpw5+b+npf3vJQwfPtzefvttmz59uptCOHToUBf433rrrRidLQAA8SPhgn65cuWsTp06+9y+ZcsWe+qpp2zatGnWoUOH/BkHbdu2tYULFwb1CAAA4EcJ1b3vLQTUrFkza9WqlV155ZWWnZ3tbteiQTk5OfkBXw477DBr0KCBLViwIIZnDABAfEioln6bNm1s8uTJ1rRpU1u3bp2NHTvWzj77bPv000/d2H1GRoYb5w+kTYHCHddXToCf7d69O+h7MstLjdZb/7/bUCfXsZLtONE8VvK9pry8vVG5dvrp+lRcoUvkJ03QP+OMM/J/btGihR177LHWsmVLmz17tlWoUKHUz7927Vrbs2eP+Z0qVMkuvX50doXMi+I1PlrHSrbjRPNYyfia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9AEA8AmCPgAAPkHQBwDAJwj6AFAGtJnMCSec4NaQT3SjRo3KXzwHiY2gj7g1c+ZMq1atWtBX06ZNrUuXLvbOO++U+fGnTZvmzqEktKrYmDFjIn5OSBwvvviirVmzxq688kpLdFdffbX95z//sddffz3Wp4JSIugj7g0fPtweeeQRe/jhh+3666+333//3S666CK3PndZeuyxx+zpp58u0d+qUjJ27NiInxMShzaNOf/8861q1aqW6OrUqWN/+ctf3GY4SGwEfcS9M844w3r06GGXXHKJ/fWvf7U33njDbc4xa9YsSwbaL3z37t2xPg1E0JIlS1zL+LzzzrN4tXPnTjcEEa5zzz3XPvvsM1u1alWZnhfKFkEfCUctpwoVKritOEPX7R4xYoQ1b97cateubW3atHEtE2/rzsAgO27cOLeLlx6n7Tv//ve/265du/Ifo9u+/fZbmz9/fv7QwjnnnOPuy8nJsXvuuceOOeYY1wLKysqys846y20F6nWFTp061f0cODQhq1evdj/rvCZPnpx/DsuWLXOBX/uId+jQwQ4++GCrX7++nX322W5P8UCBzzFp0iRr0aKF1a1b17XEvvnmm7CHTT799FO7+eabrUmTJu54N9xwgzuHzZs328CBA+2QQw5xX7fffvs+ZahgofNv166dK4NDDz3U/b3+NtDcuXPt4osvtmbNmrnXqderst+zZ0/Q41S2Gv9WOWj4pl69enbEEUfYAw88YOGYMWOGde3a1Q3/6DjHH3+866kJpfPWsIvOR8fQsXRM/b/1fwuk13Lrrbfmv5+0Ccz9998fVqDU687IyLATTzwx/zb9H1Xur7766j6Pf+GFF9x9CxYsyL/t+++/t379+lmjRo1cGXfs2HGf7vVNmzbZbbfd5o6jbWkbNmxoF154oX399ddBj/voo4/c86uifOedd7qy1evfunVrke9nj47vvTYkLrbWRdzThUld+go8GzZssEcffdS2bdvmWv8e3dezZ093cevbt6+7iP/rX/+ykSNH2tq1a4PG19Vb8Mwzz1j37t3t2muvtS+++MImTJhg3333Xf4Yvh5/yy23uM0/Bg8e7G7ThV90gdTjdUE+9thj3fktXrzYte5OPfVUu/zyy+3XX391F00NSxREx1FL67LLLnPBoXr16vbHH3/YU089ZRdccIFdeuml7jV6v+u1tGzZMug5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"
     }
    }
   ],
   "source": [
    "resampled_means = pd.DataFrame({\n",
    "    'Bootstrap Sample Mean': bstrap_means\n",
    "})\n",
    "\n",
    "fig, ax = plt.subplots(figsize = (5, 3))\n",
    "ax.hist(resampled_means['Bootstrap Sample Mean'], bins=15, density=True, ec='white')\n",
    "ax.plot(np.array([left, right]), np.array([0,0]), color='yellow', lw=8, zorder=10)\n",
    "\n",
    "plt.xticks(rotation=45, fontsize=10)\n",
    "plt.yticks(fontsize=10)\n",
    "ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: '{:g}'.format(x * 100)))\n",
    "ax.set_ylabel('Percent per unit', fontsize=12)\n",
    "ax.set_xlabel('Bootstrap mean age (years)', fontsize=12)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e3f756a4",
   "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",
   "id": "fa052e95",
   "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 as seen below:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "3992e34d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.941343Z",
     "iopub.status.busy": "2026-08-31T06:02:02.941278Z",
     "iopub.status.idle": "2026-08-31T06:02:02.974525Z",
     "shell.execute_reply": "2026-08-31T06:02:02.974319Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "Text(0.5, 0, 'Maternal Age')"
     },
     "execution_count": 23
    },
    {
     "output_type": "display_data",
     "metadata": {},
     "data": {
      "text/plain": "<Figure size 500x400 with 1 Axes>",
      "image/png": "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"
     }
    }
   ],
   "source": [
    "fig, ax = plt.subplots(figsize = (5, 4))\n",
    "\n",
    "ax.hist(births['Maternal Age'], bins=15, density=True, ec='white')\n",
    "\n",
    "plt.xticks(rotation=45, fontsize=10)\n",
    "plt.yticks(fontsize=10)\n",
    "ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: '{:g}'.format(x * 100)))\n",
    "ax.set_ylabel('Percent per unit', fontsize=12)\n",
    "ax.set_xlabel('Maternal Age', fontsize=12)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b966e44e",
   "metadata": {},
   "source": [
    "The **Central Limit Theorem (CLT)** helps explain this pattern: for independent observations from a population with finite variance, the sampling distribution of the mean becomes approximately normal as sample size n grows. Strong skew or unusual values can require a much larger sample; n = 30 is not a universal guarantee. The bootstrap histogram here approximates variation in the sample mean, while the age histogram describes variation among individuals.\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "37a4d43d",
   "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": 24,
   "id": "b79b69ce",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.975729Z",
     "iopub.status.busy": "2026-08-31T06:02:02.975663Z",
     "iopub.status.idle": "2026-08-31T06:02:02.977712Z",
     "shell.execute_reply": "2026-08-31T06:02:02.977524Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "array([27.01277683, 27.44207836])"
     },
     "execution_count": 24
    }
   ],
   "source": [
    "left_80 = np.percentile(bstrap_means, 10, method='nearest')\n",
    "right_80 = np.percentile(bstrap_means, 90, method='nearest')\n",
    "np.array([left_80, right_80])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "461d0d01",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:02.978699Z",
     "iopub.status.busy": "2026-08-31T06:02:02.978641Z",
     "iopub.status.idle": "2026-08-31T06:02:03.009110Z",
     "shell.execute_reply": "2026-08-31T06:02:03.008902Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "Text(0.5, 0, 'Bootstrap mean age (years)')"
     },
     "execution_count": 25
    },
    {
     "output_type": "display_data",
     "metadata": {},
     "data": {
      "text/plain": "<Figure size 500x300 with 1 Axes>",
      "image/png": "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hwEiG/RfffXVkvwZAABItKCvbn0AAJBYWIYXAACfKFFLv2vXrkU+RmP6r7zySkmeHgAAxEvQ37t37z5b6yqbPzs729asWWONGze2evXqReocAQBArIL+3LlzC73vzTffdMv03nXXXaU5LwAAEO9j+meddZZdfPHFNmzYsEg/NQAAiLdEvqysLPvyyy/L4qkBAEC8BP3c3FybPXu2W58fAAAk+Jj+oEGDCrx9y5Yt9sUXX9i6desY0wcAIBmC/ocffrhP9r5+r1atmrVr18769etnnTp1itQ5AgCAWAX9r7/+OhLHBgAAUcSKfAAA+ARBHwAAnyDoAwDgEwR9AAB8gqAPAIBPFDvo79y50x5++GGbP39+2ZwRAACIj6Bfvnx5GzVqlP3www9lc0YAACB+uvePOOII++mnnyJ/NgAAIL6C/siRI+2JJ56wDz74IPJnBAAA4mdFvkcffdSqV69u559/vh1yyCHuS93+ocvyPvPMM8V6XuUJPPjgg7ZkyRL79ddfbcaMGdalS5f8+6+++up9nvO0006zWbNm5f++adMmu/nmm+3NN99059CtWze75557rFKlSiV5qQAA+DvoL1261AXUBg0a2J49e2zFihX7PCZ0bf5w7Nixw4466ijr06eP9e3bt8DHnH766TZp0qT83zMzM4Puv/LKK12FQTv95eTkuM2BbrjhBps2bVqxzwcAgGQSV2vvn3HGGe5rfzIyMqxOnToF3vfdd9/Zu+++a++//74dffTR7rZx48bZRRddZHfccYfVq1evTM4bAICkDfqx9PHHH1vTpk3djn6nnHKK3XbbbXbggQe6+xYsWGBVq1bND/jSsWNHS01NdVv+du3atcjpiH62e/fuoO9IrHLKS43WxzkvyY4TvWPl5e3d5zoTr++neEM5FS50eH1/SnyVULf+nDlz7KOPPrINGzbY8OHDrXnz5rZlyxabN2+e22K3du3aFknq2lfgVg7BypUrXev9wgsvtHfeecfKlStn69evt1q1agX9TVpamss/0H1FWbt2rXtdfrdu3bpYn0JCiLdySq9/aFSOkxelWByt40TzWLk5uZa9Njsh3k/xinIKptjXuHFjK9Ogv3nzZhdsFy1a5BLktm/fbgMGDHD36fdbb73VLrnkErv99tstki644IL8n1XBaNGihbVu3dq1/jt06FDq569fv775mWrQ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xKJ7f82aNXbOOee4702aNLHvv//etm3blj/er3n82dnZNnbs2NKeHwAAiGXQv/32212Q/+ijj6xWrVr7JPSpQvDWW29F6hwBAECsuvffe+89GzhwoDVr1sxNzQvVqFEj1wsAAAASPOjv3LnTatasWej9Xlc/AABI8KB/+OGH2yeffLLfKX1HHXVUac4LAADEQ9C/+uqrbdasWXb//fe7LH7Jy8tzGfsDBgywBQsWuFX7AABAgify9ejRw2Xn33nnnW6bXbngggtc4NfyvEr069KlS6TPFQAARDvoy5AhQ1zwf+WVV2zlypW2d+9ey8rKsq5du7pEPgBA7GSmpdqanIwyP06V9BSrbLvK/DiIQdBXAt/rr79uq1evdmvvn3nmmTZo0KAInQoAIFK25+RZq5kry/w4S/tkWeX0Mj8Moh30N2zYYJ07d3YBX934UrFiRZs5c6Z17NgxUucDAABincg3btw4++mnn1yC3nPPPWdjxoxx2+lqe10AAJBELf3333/fLrnkEpe856ldu7b179/fli9fboceemhZnSMAAIhmS//nn3+2du3aBd2m39XVv379+rI4NwAAEIugv2vXLtedH8j7PTc3N5LnBAAAYp29rzH9xYsX5//uLcyjRXmqVq26z+Nbt24diXMEAADRDvp33XWX+wo1ePDgoN/V5a+NeDZu3Fj6MwQAANEN+pMmTYrMEQEAQHwH/V69epXtmQAAgPjbcAcAACQegj4AAD6RUEFfqwBWq1Yt6Ou4444L2htAGwFp45+DDjrI+vbtyxoCAACUdpe9WDniiCNszpw5+b+npf3vJQwfPtzefvttmz59uptCOHToUBf433rrrRidLQAA8SPhgn65cuWsTp06+9y+ZcsWe+qpp2zatGnWoUOH/BkHbdu2tYULFwb1CAAA4EcJ1b3vLQTUrFkza9WqlV155ZWWnZ3tbteiQTk5OfkBXw477DBr0KCBLViwIIZnDABAfEioln6bNm1s8uTJ1rRpU1u3bp2NHTvWzj77bPv000/d2H1GRoYb5w+kTYHCHddXToCf7d69O+h7MstLjdZb/7/bUCfXsZLtONE8VvK9pry8vVG5dvrp+lRcoUvkJ03QP+OMM/J/btGihR177LHWsmVLmz17tlWoUKHUz7927Vrbs2eP+Z0qVMkuvX50doXMi+I1PlrHSrbjRPNYyfia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8AmCPgAAPkHQBwDAJwj6AAD4BEEfAMqANpM54YQT3BryiW7UqFH5i+cgsRH0Ebdmzpxp1apVC/pq2rSpdenSxd55550yP/60adPcOZSEVhUbM2ZMxM8JiePFF1+0NWvW2JVXXmmJ7uqrr7b//Oc/9vrrr8f6VFBKBH3EveHDh9sjjzxiDz/8sF1//fX2+++/20UXXeTW5y5Ljz32mD399NMl+ltVSsaOHRvxc0Li0KYx559/vlWtWtUSXZ06dewvf/mL2wwHiY2gj7h3xhlnWI8ePeySSy6xv/71r/bGG2+4zTlmzZplyUD7he/evTvWp4EIWrJkiWsZn3feeRavdu7c6YYgwnXuuefaZ599ZqtWrSrT80LZIugj4ajlVKFCBbcVZ+i63SNGjLDmzZtb7dq1rU2bNq5l4m3dGRhkx40b53bx0uO0feff//5327VrV/5jdNu3335r8+fPzx9aOOecc9x9OTk5ds8999gxxxzjWkBZWVl21llnua1Ava7QqVOnup8DhyZk9erV7med1+TJk/PPYdmyZS7wax/xDh062MEHH2z169e3s88+2+0pHijwOSZNmmQtWrSwunXrupbYN998E/awyaeffmo333yzNWnSxB3vhhtucOewefNmGzhwoB1yyCHu6/bbb9+nDBUsdP7t2rVzZXDooYe6v9ffBpo7d65dfPHF1qxZM/c69XpV9nv27Al6nMpW498qBw3f1KtXz4444gh74IEHLBwzZsywrl27uuEfHef44493PTWhdN4adtH56Bg6lo6p/7f+b4H0Wm699db895M2gbn//vvDCpR63RkZGXbiiSfm36b/o8r91Vdf3efxL7zwgrtvwYIF+bd9//331q9fP2vUqJEr444dO+7Tvb5p0ya77bbb3HG0LW3Dhg3twgsvtK+//jrocR999JF7flWU77zzTle2ev1bt24t8v3s0fG914bExda6iHu6MKlLX4Fnw4YN9uijj9q2bdtc69+j+3r27Okubn379nUX8X/96182cuRIW7t2bdD4unoLnnnmGevevbtde+219sUXX9iECRPsu+++yx/D1+NvueUWt/nH4MGD3W268IsukHq8LsjHHnusO7/Fixe71t2pp55ql19+uf3666/uoqlhiYLoOGppXXbZZS44VK9e3f744w976qmn7IILLrBLL73UvUbvd72Wli1b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"
     }
    }
   ],
   "source": [
    "# resampled_means.hist(bins=15)\n",
    "# plt.plot([left_80, right_80], [0, 0], color='yellow', lw=8);\n",
    "\n",
    "fig, ax = plt.subplots(figsize = (5, 3))\n",
    "ax.hist(resampled_means, bins=15, density=True, ec='white')\n",
    "ax.plot(np.array([left_80, right_80]), np.array([0,0]), color='yellow', lw=8, zorder=10)\n",
    "\n",
    "plt.xticks(rotation=45, fontsize=10)\n",
    "plt.yticks(fontsize=10)\n",
    "ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: '{:g}'.format(x * 100)))\n",
    "ax.set_ylabel('Percent per unit', fontsize=12)\n",
    "ax.set_xlabel('Bootstrap mean age (years)', fontsize=12)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "932c957b",
   "metadata": {},
   "source": [
    "The 80% interval is shorter here, about 27.0 to 27.4 years. It trades coverage for precision: the procedure aims to capture the parameter about 80% of the time under suitable conditions. From the same bootstrap distribution, an 80% central interval cannot be wider than its 95% central interval; ties can make their widths equal.\n",
    "\n",
    "To seek a narrower interval at the same confidence level, collect a larger representative original sample. Increasing n adds information. Increasing the number of bootstrap repetitions B stabilizes the simulation but does not add people to the original sample.\n"
   ]
  },
  {
   "cell_type": "code",
   "metadata": {
    "tags": [
     "thebe-interactive"
    ]
   },
   "source": [
    "### Exercise: More data or more resamples?\n",
    "# An analyst has 100 customer responses and 2,000 bootstrap statistics.\n",
    "# Compare the n and B for collecting 300 more responses versus generating\n",
    "# 3,000 more bootstrap statistics. Which action adds population information?\n",
    "### Your code starts here.\n",
    "\n",
    "### Your code ends here.\n"
   ],
   "outputs": [],
   "execution_count": 26
  },
  {
   "cell_type": "code",
   "metadata": {
    "tags": [
     "hide-input"
    ]
   },
   "source": [
    "### Solution\n",
    "print(\"Collect responses: n =\", 100 + 300, \"B =\", 2000)\n",
    "print(\"More resamples: n =\", 100, \"B =\", 2000 + 3000)\n",
    "# Collecting new representative responses adds population information.\n"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": "Collect responses: n = 400 B = 2000\nMore resamples: n = 100 B = 5000\n"
    }
   ],
   "execution_count": 27
  },
  {
   "cell_type": "markdown",
   "id": "44cbe45c",
   "metadata": {},
   "source": [
    "## Estimating a Population Proportion\n",
    "In the sample, 39% of the mothers smoked during pregnancy."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "253446d9",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:03.010347Z",
     "iopub.status.busy": "2026-08-31T06:02:03.010283Z",
     "iopub.status.idle": "2026-08-31T06:02:03.012298Z",
     "shell.execute_reply": "2026-08-31T06:02:03.012109Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "0.3909710391822828"
     },
     "execution_count": 28
    }
   ],
   "source": [
    "len(births[births['Maternal Smoker'] == True]) / len(births)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6b0b9fb9",
   "metadata": {},
   "source": [
    "Remember that a proportion is an average of zeros and ones. So the proportion of mothers who smoked could also be calculated using array operations as follows."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "42edc50e",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:03.013240Z",
     "iopub.status.busy": "2026-08-31T06:02:03.013186Z",
     "iopub.status.idle": "2026-08-31T06:02:03.014810Z",
     "shell.execute_reply": "2026-08-31T06:02:03.014608Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "np.float64(0.3909710391822828)"
     },
     "execution_count": 29
    }
   ],
   "source": [
    "smoking = births['Maternal Smoker']\n",
    "np.count_nonzero(smoking) / len(smoking)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4abe2ab7",
   "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 are analogous to those we took to estimate the population median and mean.\n",
    "\n",
    "We will start by defining a function `one_bootstrap_proportion` that bootstraps the sample and returns the proportion of smokers in the bootstrapped sample. Then we will call the function multiple times using a `for` loop, and get the 2.5th percentile and 97.5th percentiles of the bootstrapped proportions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "4f2fb31d",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:03.015763Z",
     "iopub.status.busy": "2026-08-31T06:02:03.015699Z",
     "iopub.status.idle": "2026-08-31T06:02:03.017093Z",
     "shell.execute_reply": "2026-08-31T06:02:03.016914Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "def one_bootstrap_proportion():\n",
    "    resample = births.sample(len(births), replace=True)\n",
    "    smoking = resample['Maternal Smoker']\n",
    "    return np.count_nonzero(smoking) / len(smoking)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "1af4b011",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:03.017976Z",
     "iopub.status.busy": "2026-08-31T06:02:03.017910Z",
     "iopub.status.idle": "2026-08-31T06:02:03.265757Z",
     "shell.execute_reply": "2026-08-31T06:02:03.265449Z"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# Seed once so the example is reproducible; do not reset inside the loop.\n",
    "np.random.seed(42)\n",
    "### generate proportions from 5000 bootstrap samples\n",
    "\n",
    "bstrap_proportions = np.array([])\n",
    "num_repetitions = 5000\n",
    "for i in np.arange(num_repetitions):\n",
    "    bstrap_proportions = np.append(bstrap_proportions, one_bootstrap_proportion())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "d3c2750c",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:03.266935Z",
     "iopub.status.busy": "2026-08-31T06:02:03.266868Z",
     "iopub.status.idle": "2026-08-31T06:02:03.268883Z",
     "shell.execute_reply": "2026-08-31T06:02:03.268688Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "array([0.36286201, 0.41908007])"
     },
     "execution_count": 32
    }
   ],
   "source": [
    "### get the endpoints of the 95% confidence interval\n",
    "\n",
    "left = np.percentile(bstrap_proportions, 2.5, method='nearest')\n",
    "right = np.percentile(bstrap_proportions, 97.5, method='nearest')\n",
    "\n",
    "np.array([left, right])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e0f1cf1f",
   "metadata": {},
   "source": [
    "The interval is about 0.36 to 0.42, or 36% to 42%, for the **population proportion** in the population represented by the sample. This is an interval for a proportion, not a prediction of an individual mother's smoking status. The interval width is about 0.06, or 6 percentage points.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "d2eb9884",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:03.269888Z",
     "iopub.status.busy": "2026-08-31T06:02:03.269826Z",
     "iopub.status.idle": "2026-08-31T06:02:03.302923Z",
     "shell.execute_reply": "2026-08-31T06:02:03.302700Z"
    },
    "tags": []
   },
   "outputs": [
    {
     "output_type": "execute_result",
     "metadata": {},
     "data": {
      "text/plain": "Text(0.5, 0, 'Bootstrap sample proportion')"
     },
     "execution_count": 33
    },
    {
     "output_type": "display_data",
     "metadata": {},
     "data": {
      "text/plain": "<Figure size 500x400 with 1 Axes>",
      "image/png": "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eI5gAAAAzxEMAADgOYIBAAA8RzAAAIDnCAYAAPAcwQAAAJ4jGAAAwHMEAwAAeI5gAAAAzxEMAADgOYIBAAA8RzAAAIDnCAYAAPAcwQAAAJ4jGAAAwHMEAwAAeI5gAAAAzxEMAADgOYIBAAA8RzAAAIDnCAYAAPAcwQAAAJ4jGAAAwHP5DgaeffZZ++WXX7Jd9+uvv7r1AAAggYOB/v372+rVq7Ndt2bNGrceAAAkcDCQkZGR47qtW7damTJlCpomAAAQQyl52eitt95yj8AjjzxilSpVCm2zc+dOmz9/vh1zzDHRTyUAACjaYODbb7+12bNnu7+TkpLsww8/tOLFi4e20evGjRvbsGHDCielAACg6IKBa665xj3k2GOPtWnTplEDAACAr30Gvvjii6gGAuPGjbMOHTpYzZo17aijjrKLL77YVq5cGdpmx44dduutt1rdunWtRo0adskll9jmzZtD26xdu9Z69Ohh1apVc58zdOhQS09PD22zYMECa9eunVWuXNlatGjhghoAAHyXp5qBV155xRWiFSpUcH/vzznnnJPnBCxcuNCuvPJKO+6441zhPXLkSOvevbt9/PHHdsghh7htBg8ebG+++aY9+eSTVr58eRswYIALCObMmePW796923r27OkKeS3btGmT9evXz1JTUzObLb7//nu3zRVXXGGTJk2yefPm2fXXX29Vq1a1Tp065Tm9AAB4GQxcdtll9vbbb9vxxx/v/s6N+hTkNA9BdmbOnBl6PWHCBHdlv3TpUjvppJPst99+s6lTp9rkyZOtffv2bpvx48dbq1atbPHixdayZUt799137euvv7aXXnrJBQQyZMgQGz58uA0aNMj1Z3jiiSesTp06dvfdd7v1DRs2tI8++sjtj2AAAOCzPAUDn3/+ubuCDv4uTNu2bXPPFStWdM8KCtLS0jIDAWnQoIFrVli0aJELBvTcpEmTzEBAOnbsaDfffLOtWLHCmjVr5raJ/IxgG9U6AADgszwFA7Vr187272jbs2eP3X777da6dWtXuIv6BujKXk0UkVTwB/0G9BwZCATrg3W5baPg46+//rJSpUrlmC71WYilXbt2hZ59R34ceH5kFMvTVzxKMmKzl4w9oe8k58de5EWY7/lRsmTJPG97wL8UP/74o23YsCHbglLV+wdCnQSXL1+eOYwxXug41S8h1tT3AXuRH/nPj9Tq9S1WcpmPLKrS09Jt7Ya1+yzn/NiLvAjzMT+Sk5OtXr16hRcMqCNe3759XXt9djMS5rfPQECdAtX577XXXnMjBiKv3hXVaXbDyNqByCt9PS9ZsiT0eUGNQOQ2WUcg6HW5cuVyrRWQ6tWrWyzpeHXyVqlSZZ/5HHxEfhx4fvwUw5qBpKTY7OeQ0iVtZ53Gma/1E7Q7Pd2SU1KinoayKWYldm23gwXflTDyI+/y/UuhHvjr1693sxA2atTI9dgvCAUTAwcOtFdffdU9jjjiiND65s2bu32o93+3bt3cMg09XLdunetEKHq+//77bcuWLZkzI86dO9cV9EpjsE3kLIrBNupzEM2qlmjSyVtU+45H5Ef+8yMpLZY3Jo1NNPBnWoY1m7YmJvta1qeulT8Izzm+K2HkRyEEA59++qnrgZ+f4YP7axqYMWOGPfPMM+6+BkF1TnDFrqGEGkao0QHqVKjlCh5UuAcFuToCqtBXjcWIESPcFf+oUaPckMUSJUq4bYIhhRpq2KdPHzd18qxZs+z555+PynEAAOBNMKBJfdQWES1Tpkxxz2eddVZouYYP9u7d2/09evRoK1asmF166aWu2keFv2oCAkrP9OnT7ZZbbrGuXbta6dKlrVevXqGRAqpxeO6559yyiRMnuqr/hx9+mGGFAADv5TsYuOOOO+zBBx+0Nm3aZA7/Kwj1BdgfVe/cd9997pETjXJQDUNu2rZt62YhBAAABQgGVJ2v3vW6R8HRRx/tqvGzdiB89tln8/uxgFd+txK2Le3Aut9ruKBGCahz4P76BOyJUTs+AM+CgT/++MPdIyCwffvB09MWiBcKBJo+vbrQ9/N577wPLQLgr3wHA+rxDwAAEkcsxx0BAIBEqBkYM2bMfre57bbbDjQ9AAAg3oMBzTGQXT8CTdereQE0uQPBAAAACRwMrFmz78xf6enpboZATejz2GOPRSttAAAgBqIycXlKSoqbvEdDDjXxj+4xAAAAPOxAqBsMffnll9H8SAAAcLAEA7qboWYmzHqjIQAAkGDNBDVr1nSzDEZKS0tz9wzQPQGmTp0azfQBAIB4Cwb69++/TzCgewfoxj9dunSJyv0KAABAHAcDt99+e+GkBAAAFAlmIAQAwHMEAwAAeI5gAAAAzxEMAADguXwFAxo++Morr7g5BQAAgIfBgG5CdNVVV9natWsLL0UAACC+mwnq169v69atK5zUAACA+A8G7rzzTrvvvvvss88+K5wUAQCA+J50SMHAL7/84u5SeOihh1rlypVD6zU74cKFC6OZRgAAEE/BQLNmzax58+aFkxoAABD/wcCjjz5aOCkBAAAH3zwDGRkZ9uOPP1p6enr0UgQAAOI/GHjnnXesc+fOVqVKFWvatKl99dVXbvkNN9xgzz//fLTTCAAA4ikYeOGFF+zCCy+0OnXquFEFqh0I1K1b16ZNmxbtNAIAgHgKBu6991675pprbMqUKda7d+/QukaNGtmKFSuimT4AABBvwYCmIu7atWu260qXLm3btm2LRroAAEC8BgOaV+Cbb77Jdt2yZcusVq1a0UgXAACI12BA/QX++c9/2rx580ITDS1fvtwefvhh69GjR7TTCAAA4mmegUGDBrl+Aeeee66bgTAIEH766Sc79dRT7aabbiqMdAIAgHgJBnTnwmeffdbmz59vc+fOtZ9//tkqVqxop5xyinsAAIAEDwYC7dq1cw8AAOBpMPDee+/ZJ598Yps2bXKTD7Vs2ZKaAQAAfAgGVPhfeumltmjRItc8UKlSJduyZYuNHj3aBQRTp051wQEAAEjQ0QTqIKi5Bl5++WVbtWqVffzxx+75pZdesh9++MFuvvnmwkkpAACIj2BAnQZHjBixT3+B9u3b25133umaDwAAQAIHAxUqVHCPnNaVL18+GukCAADxGgzovgQPPvigbd++PbT8999/t4ceesj69esXzfQBAIB460CofgF6NGnSxNq2bZvZgXDBggVWtmxZW79+vQ0cODBzZsIxY8YURroBAEBRBQNz5syxlJQU1yTw5ZdfZi4Pmg5mz56duYxgAACABAwGvvjii6gmYOHChe6eBp9//rlt3LjRnn76aTvrrLNCzRKa8TBSp06dbObMmZmvf/31V1cboUBEAcg555zj7p9QpkyZzG2++uorGzBggH366ad2+OGH29VXX2033HBDVI8FAAAv+gxE259//mnHHHOM3XvvvTlu07lzZ/vvf/+b+ZgyZUpo/VVXXeXulzBr1ix77rnn7IMPPrAbb7wxc71uq3zeeee5OypqNMRdd93lgoUnn3yyUI8NAICEnoEwWrp06eIe+7sfQk4TGSk4ePvtt92QxhYtWrhlY8eOdTdPGjlypFWrVs1mzJhhu3btskceecR9VuPGjV0Tx/jx4+3yyy8vlOMCAOBgUeQ1A3nx/vvv21FHHWUnnHCCm9Tol19+yVynmRA1nDEIBETTIhcrVsxNlxxs06ZNGxcIBDp27GgrV660rVu3xvhoAACIL0VeM7A/aiI4++yzrU6dOrZ69Wp3tX/BBRfYW2+9ZcnJybZ582Y3oiGSOjhqqmStEz3r/ZEqV66cOb1yTvMmBHbs2GGxpFqMyGffJWJ+ZBSL1VcvI0b7ieW+YndMGRl7Yv79L4hE/K4UhO/5UbJkycQJBs4///zMv5s2bWpHH320NW/e3NUWaNbDWNiwYYPt3r3bYk2BChIzP1Kr14/JfjJiGAvEal+xPKb0tHRbu2GtHWwS6bsSDT7mR3JystWrV6/wggENFdSNitQWn5VGAzz11FN22223WWE54ogj7LDDDnP3Q1AwoCt8zXMQKT093Y0wCK7+9RzUEgSC13m5qVL16tUtlhTFBneDjGza8FUi5sdPMaoZSEqKyW5iuq9YHlNKaopVrVXLDhaJ+F0pCPLDCjcYUNV9TsGA1hdmMKBJjdRnICjEW7VqZb/99pstXbrU1RjI/Pnzbc+ePa6PQbCNmhfS0tIsNTXVLdOogvr16++3iSC/VS3RpJO3qPYdjxIpP5LSYtVdJ4YlZ8z2FbtjSkoqdlCec4n0XYkG8mP/8v2LlJGR4cbyZ0fBQH7vTaBpjTV3QTB/wZo1a9zfa9eudeuGDh1qixcvdsvnzZtnF198sav60FwD0rBhQxecXH/99bZkyRL76KOP3HwCal4IAhb1MdDJcN1117khiC+++KJNnDjR+vfvn9/DBwDAz5qBF154wT1EgcCQIUP2KfR37txpn332mZ144on5SoDeow6CAX229OrVy8aNG2fLli1zkw7p6r9q1apuFIC2KVGiROZ7Jk2a5AKAbt26uVEE+rzImQ+VVgUA2kYjDdTMoEmKGFYIAEAegwG1uwQ3JlLNgCYKUueESLryvuiii/I9q5/ub5Db8D4V4vujkQOTJ0/OdRt1PHzjjTfylTYAAHyQp2BAVfN6iKYK1hV7gwYNCjttAAAgHjsQvvrqq4WTEgAAUCQOaHyTZu575ZVX3Pj7rBNyqE+Bpv0FAAAJGgxMnz7d9cLXMA3d+CcYqhfIaaQBAABIkGBAdxdUr31d/ZcuXbpwUgUAAOJ3ngHNJXDZZZcRCAAA4GswoLv/LV++vHBSAwAA4r+ZQDMC9u3b1/UZ6NChQ7YzDmrcPwAASNBgILhT4M0335xjZ0HdOwAAACRoMKCOg4wYAADA42Cgd+/ehZMSAABQJA74Pqq6n8AHH3xgM2bMyLy3gCYg0q2DAQBAAgcDKuzvuusua9q0qZ155pmuM+H333/v1l1yySU2duzYwkgnAACIl2Bg9OjR7pbBo0aNsiVLlri7GAZOP/10mz17drTTCAAA4qnPwDPPPOOGF15xxRW2e/fu0Lq6deva6tWro5k+AAAQbzUDGjbYsGHDbNcpOEhPT49GugAAQLwGA0ceeaS999572a57//33rXHjxtFIFwAAiNdmgmuvvdZuuOEGS0lJcTcsEt3KePHixfbYY4/ZhAkTCiOdAAAgnuYZ+PXXX23MmDE2bty4zGWHHHKIDRkyxLp3714Y6QQAAPESDMh1111nl19+uS1atMh+/vlndy+Cli1bZnufAgAAkIDBgJQpU8Y6duwY3dQAAID470CofgHDhw/Pdp2Waw4CAACQwMHAlClT3HwCOY000HoAAJDAwcDatWutXr162a474ogj7IcffohGugAAQLwGA2XLlrU1a9Zku073KChVqlQ00gUAAOI1GOjQoYMbVrhu3brQ8vXr19u9995rnTt3jmb6AABAvI0mUCfBLl26uKGE7dq1s6pVq9rGjRtt/vz5dthhh9mdd95ZOCkFAADxUTNQrVo1W7BggZuJUPcp0BTEeu7fv79bXr169cJJKQAAKPqagR07dtiwYcPsoosucncuBAAAntUMlCxZ0qZNm2Z//vln4aUIAADEd5+BVq1a2SeffGInn3xy4aQIKEK/WwnblpZR6PvZY0mFvg8AKLRgYPDgwXbVVVdZcnKy60hYuXJlS0oK/7DpXgXAwUiBQNOnVxf6fj7vnf1cHQBwUAQDXbt2dc/qO5DTyAF1KAQAAAkaDDzyyCP71AQAAACPgoHevXsXTkoAAMDBMc9AYOvWrfbBBx/YjBkz3N/B0MM9e/ZEM30AACDeggEV9nfddZc1bdrUzjzzTOvbt6+7J4FccsklNnbs2MJIJwAAiJdgYPTo0TZp0iQbNWqULVmyxDIy9g7DOv3002327NnRTiMAAIinPgPPPPOMm33wiiuusN27d4fW1a1b11avLvxhWQAAoAhrBjRssGHDhtmuU3CQnp4ejXQBAIB4DQaOPPJIe++997Jdp5sWNW7cOBrpAgAA8dpMoLsV3nDDDZaSkmLdunVzyzZs2GCLFy+2xx57zCZMmFAY6QQAAPFSM6B5BoYPH+4K/vbt22cuGzFihA0ZMsS6d++er89buHCh9ezZ0xo1amQVKlSwV199NbReHRTvvvtu1zRRtWpVF4B89913oW1+/fVXN0VyrVq1rHbt2nbdddfZ9u3bQ9t89dVXroNjlSpV3EiIhx56KL+HDsAzJVKK2fq04oX+0D0xgIOqZkBU2F5++eX28ccfuz4EuhdBy5YtrXz58vn+LN0B8ZhjjrE+ffq4oYlZqdBW4PHoo49anTp1XGBw3nnnuX3rLoqiQGDjxo02a9YsS0tLs/79+9uNN95okydPduu3bdvm3nPKKafYuHHjbPny5e4YlF4dBwBk54+0DGs2rfA7RS/rU9fKphb6boCCBwNff/21Pf7447ZmzRqrXr26u0Lv1KmTFZRudqRHdlQroCBgwIABbk4DmThxojVo0MBee+01O//88+2///2vvf32264fQ4sWLdw2muvgwgsvtJEjR1q1atXcxEi7du1yUykXL17c9Wv48ssvbfz48QQDAADv5amZ4MMPP3RNArrS/uyzz2zq1KnuSlvBQWFS4LFp06bM5gjR1fzxxx9vixYtcq/1rGVBICCqAShWrJi71XKwTZs2bVwgEOjYsaOtXLkyc/ZEAAB8laeagXvuucfq169v06dPt5o1a7pqd1XFa+Khv//974WWOAUCotskR9LrzZs3u7/1XKlSpdB6dW5U00XkNmpiyPoZwT7UVyE3mmY5llSLEfnsu1jmR0axA2o5O5A9Jdh+YrmvxDumjIw9Ufmd4bcjzPf8KPn/m9LzIk+/fGpjV1u7AgEpV66cCwSaN29u69aty1yeqDRaIusES7EQBEOIXX6kVq9vsRAxcWdC7CeW+0rEY0pPS7e1G9ZG7fP47QjzMT+Sk5OtXr160Q0Gfv75Z6tRo0ZoWRAAaF1hBQPq+R9c2WskQUCv1ekwuMLfsmVL6H2a+EgjDIKr/8iahMjPiNxHbtRHIpYUxerkVdoimzZ8Fcv8+ClGNQOxugt4LO82zjEduJTUFKtaq1aBP4ffjjDyI+/y/MuXFMtv4P+nqn39E+fNm2fHHnusW6YmCt0T4X/+53/c61atWtlvv/1mS5cudTUVMn/+fHdDpRNOOCFzG3Um1EiD1NT/67I7d+5c1/SxvyaC/Fa1RJNO3qLadzyKRX4kpR3wjTzzu6cE208s95V4x5SUVCyq5za/HWHkRxSDgbPPPtt1ysvqjDPOCC1X0PDDDz/k9WPdfACrVq0KdRr84osvXJu/5g245ppr7L777nMzHwZDC1VLEIwu0PwDnTt3tuuvv94eeOABV+Br9IFGGmgkgVxwwQU2ZswYN5xQQw5XrFjhRiXopksAAPguT8HAbbfdVmgJ0OgEBRoBTVwkvXr1csMKNdvhH3/84Qpx1QC0bt3aZs6cGYrydBdFBQAa7qjARJ+nwj+g0QYvvvii20YjDQ477DAbOHAgwwoBAMhrMDBo0KBCS0Dbtm1zHd6nmgYFCEGQkB3VIgQTDOXk6KOPtjfeeKNAaQUAIBHFqoEUAADEKYIBAAA8RzAAAIDnCAYAAPAcwQAAAJ4jGAAAwHMEAwAAeI5gAAAAzxEMAADgOYIBAAA8RzAAAIDnCAYAAPAcwQAAAJ4jGAAAwHMEAwAAeI5gAAAAzxEMAADgOYIBAAA8RzAAAIDnCAYAAPAcwQAAAJ4jGAAAwHMEAwAAeI5gAAAAzxEMAADgOYIBAAA8RzAAAIDnCAYAAPAcwQAAAJ4jGAAAwHMEAwAAeI5gAAAAzxEMAADgOYIBAAA8RzAAAIDnCAYAAPAcwQAAAJ4jGAAAwHMEAwAAeI5gAAAAzxEMAADgOYIBAAA8F/fBwD333GMVKlQIPVq2bJm5fseOHXbrrbda3bp1rUaNGnbJJZfY5s2bQ5+xdu1a69Gjh1WrVs2OOuooGzp0qKWnpxfB0QAAEH9S7CDQuHFje+mllzJfp6TsTfbgwYPtzTfftCeffNLKly9vAwYMcAHBnDlz3Prdu3dbz549rXLlym7Zpk2brF+/fpaammrDhg0rkuMBACCeHBTBQHJyslWpUmWf5b/99ptNnTrVJk+ebO3bt3fLxo8fb61atbLFixe7GoR3333Xvv76axdMKCCQIUOG2PDhw23QoEFWvHjxmB8PAADxJO6bCWTVqlXWqFEja9asmV111VWu2l+WLl1qaWlpmYGANGjQwGrWrGmLFi1yr/XcpEmTzEBAOnbsaNu2bbMVK1YUwdEAABBf4r5m4IQTTrAJEya4tn5V8Y8ZM8ZOP/10+/DDD13fAF3Zqx9BJBX8Qb8BPUcGAsH6YF1eqF9CLO3atSv07LtY5kdGsVh9JTISbD+x3FfiHVNGxp6o/M7w2xHme36ULFkycYKBLl26ZP599NFH2/HHH2/HHnuszZo1y0qVKhWTNGzYsMH1PYg1BT+IbX6kVq9vsZARo/IsVvuJ5b4S8ZjS09Jt7Yb/q/GMBn47wnzMj+TkZKtXr17iBANZqRbgyCOPtNWrV9spp5ziIr6tW7eGagciawP0vGTJktBnBDUCWWsMclK9enWLJR2TTl71k6BPQ2zz46cY1QwkJVlC7SeW+0rEY0pJTbGqtWoV+HP47QgjPyxxg4Ht27e7QEAjBJo3b+5GBcybN8+6devm1q9cudLWrVvnOhGKnu+//37bsmWLVapUyS2bO3eulStXzvVDiHZVSzTp5C2qfcejWORHUlqsutHEqkSLYcnJMR34XpKKRfXc5rcjjPxIgGDgjjvusNNOO81q1aplGzdudPMOqPrjggsucEMJNYxQowMqVqzoCviBAwe6ACCYi0CdBVXo9+3b10aMGOFqBUaNGmVXXnmllShRoqgPDwCAIhf3wYDa61Vw//LLL3b44Ydb69at7e2333Z/y+jRo61YsWJ26aWXuiohFf6qCQgocJg+fbrdcsst1rVrVytdurT16tXLzU8AAPGgREoxW59WPCodYNXvRc1d2dVylUtNsrK2s8D7QeKJ+2Dg8ccfz3W9qn7uu+8+98hJ7dq1bcaMGYWQOgAouD/SMqzZtNWFvp9lfepa2dRC3w0OQgfFPAMAAKDwEAwAAOA5ggEAADxHMAAAgOfivgMhsLN4mVx7SEfTnpiOYQeA+EAwgLj3e7pZ8+fXx2Rfn/fO+/SdAJAoaCYAAMBzBAMAAHiOYAAAAM8RDAAA4DmCAQAAPEcwAACA5wgGAADwHMEAAACeIxgAAMBzBAMAAHiOYAAAAM8RDAAA4DmCAQAAPEcwAACA5wgGAADwHMEAAACeIxgAAMBzBAMAAHiOYAAAAM8RDAAA4DmCAQAAPEcwAACA5wgGAADwHMEAAACeIxgAAMBzKUWdABy8frcSti0to9D3k5FU6LsAAK8RDOCAKRBo+vTqQt/P573rFvo+AMBnBAMA4IkSKcVsfVrxmOyrXGqSlbWdMdkXCo5gAAA88UdahjWbVvi1ebKsT10rmxqTXSEK6EAIAIDnCAYAAPAcwQAAAJ4jGAAAwHMEAwAAeI5gAAAAzzG0EAmlePIuK5G864DfXyxpm5Utvj2qafJhP7HcF8e0r527i9uu3bGZPwCJiWAACeX2lpNseOsJBfqMbddGLTle7SeW++KYwoZ/dK2N+Kh/NJMDz3gXDEyaNMkefvhh27x5sx199NE2duxYO/7444s6WQCQUGI12yEzHUaHV8HAiy++aEOGDLFx48bZCSecYI8++qidd9559sknn1ilSpUsniQnJx/we7dbcfs9BjcQksNKFH63k2KWkef9lEo+xPbsOazQ0wTEE533efmO5Oe7VFB/pe2xU15YU+j7ef/C2rnOdFiQ31KfJG3dujU2pUYc6NSpkx133HF27733utd79uyxpk2b2tVXX2033XRTUScPAIAi4c1ogl27dtnSpUutffv2mcuKFSvmXi9atKhI0wYAQFHyJhj4+eefbffu3Va5cuXQcr1W/wEAAHzlTTAAAAA8DwYOO+ww15Ekay2AXmetLQAAwCfeBAPFixe35s2b27x58zKXqQPh/PnzrVWrVkWaNgAAipJXQwv79+9v11xzjbVo0cLNLaChhX/88Yf17t27qJMGAECR8SoY0JwCP/30k40ePdo1DxxzzDE2c+ZMmgkAAF7zap4BAADgec3AwaRZs2ZuxsQjjzyyqJMCxN2cIa+99pqbHyToEKzavRNPPNHOOOMM1z/IJ+vXr7fy5ctbmTJlQsvT0tJcHp100knmM35L84ZgoIhNnDgx2+Xr1q2zadOmZTZh9OvXz3z5YStZsqQb/SEffPCBPfHEEy4/atWqZVdeeaV3HT5nz55tS5YscTNotm7d2nWCfeSRR1wH2LPPPtsuv/xy88WqVatcc9/GjRtdv5/g+/HFF1+486R69er2wgsvWL169SzRKQ8uvvhiN5laUlKSXXDBBXb//fdnBgW//vqrOz9++eUX8wG/pQVDM0ERq1ixovsByzp/9tq1a61atWqWkpLivuiff/65+UAF3oABA+y0005zV3+XXHKJnXrqqdawYUP79ttvbc6cOTZ16lS33gcq4JQfuqmWCkJNpX3rrbda9+7d3Tkzffp0GzZsmOsY64Nzzz3XSpcu7X74y5UrF1q3bds290O/Y8cOdyWY6HSs+k7onPjtt99s+PDh7rdi1qxZVqFCBVdrou+NggIf8FtaMAQDRUz3RNCNkiZPnuy+uIHDDz/c3n//fWvUqJH5pEaNGrZw4UI74ogjrHPnznbWWWfZjTfemLn+3//+tz399NNuSKgPVBOggv6yyy5zx9yjRw8bNWqUqyERXfHoLpwff/yx+UA/6u+88441adIk2/XLli1z582PP/5oia5x48buuxDcdXXnzp3uPFHt2iuvvOKaCfT74UvNAL+lBePNPAPx6oEHHrCBAwfa+eef7wo63ymq3759u/t7zZo17oc9UpcuXdzVkC+UBx07dnR/t2vXzk2p3aZNm8z1J598srvy8YXaxn/44Ycc12udtvGBakJUAxAoUaKECw5q167tgugtW7aYT/gtLRiCgTigdr0333zTXn31Vdfut2nTJvOVOjtpuKcce+yxLqKPtGDBAnd16ItDDz00s7DX1W56erprAw1onapHfaFmI1WPjx8/3r766itXFa6H/taya6+91l0d+6BOnTruuCOpKvypp55yNWs9e/Y03/BbeuDoQBgn1Nb18ssvu+hWV4AZGX623qjd8/TTT3cFn6rIVSX+6aefumq/lStXuvbQcePGmS/UO/4f//iH9erVy9544w276KKL7I477nB33FT759ChQ61Dhw7miyFDhtghhxxi//rXv1w+KA9E35cqVaq4JqUbbrjBfKBaMhX83bp1yzYgUOC0YcMG8w2/pQeGPgNxSL2DP/zwQ1cARFYD+mL16tUuCFCEHzQZ6AfuuOOOcwWjqkB9oRkyBw8ebIsXL3ajKMaOHWuPPfaYjRw50rUJqyZFnQwrVapkvvn+++9DQwt1NewT1RL9+eef+3SkjFyvYEDNBr7y/bc0PwgGELcU0avdU0PoNNQwNTW1qJMUN9RjXsFA2bJlizopcRMY1KxZ0wWNviMvwsiPvKHPQBx477333BTJwU2U1Jte7V1q/1KHIF+pClhXfFWrViUQyEJzMRAI7NWyZUv77rvvijoZcYG8CCM/8oZQqYg999xz7gZKTZs2tQkTJtiYMWNctbDaAXVFfPPNN7sf/aztgokeHKlqT1Xg7du3d8GR2v80dEqdovr06WM+IT/2yulYNcritttuy5xwx4cgmrwIIz8KhpqBIqaZ5NQ+rloBjRnXhDIaHqOx41qnDmK6u6JPwdGFF17oJhfS3SSVJ5plTZ2C1HtawZE6B/mC/AjTRFSaREft5JEPUcfCyNeJjrwIIz8Khj4DcTTJjqgjmK4ENeOcfPPNN262Pc0+54O2bdu6Qk/DxxQgBb3nVXsi6kWuL72m6PUB+RGmYaeacfH2228PXQn6OLEMeRFGfhQMNQNFTJ1a1BEscuKQyBuO6KYr6izmCwU9wVTDqhJXj2g9BzQ1sQIkX5AfYZpQ5vXXX3dVvRo6t3XrVvMVeRFGfhQMwUAR0w1VIn/Mly9f7qp/I3vCqkrYFwRHYeTHvvT90I++puPVDIyanjiYb8A35EUY+XHg6EBYxNTmGzn+NWub1meffeZuzuJbcFS/fv3M4Ciy17xvwRH5kT1NuqSOtppwSU0o6iTmK/IijPw4MPQZQFz5z3/+46bgzeke7OpFr4l41G7uA/Jj/zQxlSaq0iyVqinxGXkRRn7kHcEAAACeo89AnLvrrrsye44DyB3fl73IizDyI3cEA3FO9ybP7ZatvuELHUZ+hPF92Yu8CCM/ckczAQ4qffv2dTdfUVs6yA8A0UEwEAd+/vlnNzZ20aJFobuwnXjiiW62OU2aAeD/8H3Zi7wIIz8OHMFAEfv000/tvPPOs9KlS7vJZHTiik7k+fPnu1uUvvjii9aiRQvzBV/oMPJjL74ve5EXYeRHwRAMFLHOnTu7qYc1RCzr5Bi6he9NN91ky5Yts7feest8wBc6jPwI4/uyF3kRRn4UDMFAEdPtefWj3qBBg2zXa8KZdu3a2caNG80HfKHDyI8wvi97kRdh5EfBMJqgiOlKb8mSJTmu1zrdvMgXX331lV177bXZTiGqZVr35Zdfmi/IjzC+L3uRF2HkR8EwHXER+8c//mE33nijLV26dJ9qYN2l7n//939t5MiR5tsXOqfo3rcvNPkRxvdlL/IijPwoGJoJ4oDafCdMmOBO4mAe7eTkZGvevLkbQ969e3fzxaRJk9zUupdffnmuX+grr7zSfEB+7Ivvy17kRRj5ceAIBuKI7k6nnuNy2GGHWWpqqvmIL3QY+ZE9vi97kRdh5Ef+EQwgbvGFDiM/ABQWggEAADzHaAIAADxHMAAAgOcIBgAA8BzBABLGPffcYxUqVMh8VKlSxVq1amUPPfSQ7dmzp1D2+cUXX7j9alrgWLwP5v63//rXv4o6GXFl2rRpNmPGjH2Wn3nmmdazZ88iSRMOLkw6hIRSqlQpe+WVV9zff/31ly1YsMCGDx/uggFN3Rttmv1vzJgxdvXVV7v7BxT2+4DsPPPMM1amTBm78MILQ8vvv/9+NwwV2B+CASSUYsWKWcuWLTNfay7y5cuX23/+859CCQZiQUGNghzEB90TYteuXVaiRIm4PzcaNWoU0/Tg4EUzARKerpg0Rj/Sr7/+6ibsqVevnrvBSdeuXW3hwoX7vPeJJ56wE044wc38d8wxx9i9996b2eSgqll9hhx55JGu+lrbyNatW+3666+3xo0bu+aKpk2b2t///vf9vk/r9Fq3Kz733HOtevXqNmzYMLdOVeMdOnSw2rVr21FHHeWqf7/99ttQeq+55hr729/+5m5cpGftWzMXLl68eL/5NHXqVGvdurXLj7p169ppp53m7poYyM/+586da23atHGfdcYZZ9iaNWtcnmsmxVq1arkJkzSZUnZV2s8++6xbr/dq2cqVK/eb9jlz5linTp3ce5SnN998s/3xxx+5vifIa+XN2WefbdWqVXP/B+VDdsf05ptv2kknneTOhdmzZ7t1qoU6+eSTXT6r4B08eLDt2LEj872qmdI+9N4+ffq4/2fDhg3dFXtWOv90HuoYdF7qHFGeBZSH+iylW+eW/kc6ZuWR3qs8CJrI1AQVmacHsp/nnnvOBgwYYHXq1HFp1kyY6enp+/1f4OBEzQASTvCDFTQTqFZAhUNAs/hdcMEF9v3337smBP24P/bYY24mP/1oqyASLbvttttcVb4Kxo8//tj++c9/2m+//WajRo2yU0891W699Va77777bObMmVauXDkrXry4e++QIUPs7bfftjvvvNMVnps2bcq8s2Bu7wtoemEVnEp30IywYcMGu+qqq1xh+vvvv7tART/quj9BxYoVM9+ru7LdcsstNmjQIPej/uCDD9r555+f630MVEBobnc9unTp4vJO2+tYA3ndv45Vx69jTElJcelQHuoKVgHCZZddZk899ZRbpkBL+RP4/PPPbfXq1e7/Ispn3cL5k08+yfFK/OWXX7YrrrjCevfubbfffrs7/hEjRriA7PHHH9/v+aIgTe/XvPb6fygPFBjojpGBH3/80Z0LOqaaNWu6PHj99dfdsShvlV7dFU9TQ69bt85NEx1Jn63tFGgoUNJ2yrMgQNTskjr/FFg8+eSTbrppHcPXX3/tzsnIqv677rrL5fuUKVNcYKr0BM1Nwdz7Cjqyk5/96LMUyGm74NxX8BCkGYmFYAAJRVeDhx9+eGiZCpPIJgJdQakA0w+/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"
     }
    }
   ],
   "source": [
    "resampled_proportions = pd.DataFrame({\n",
    "    'Bootstrap Sample Proportion': bstrap_proportions\n",
    "})\n",
    "\n",
    "# resampled_proportions.hist(bins=15)\n",
    "\n",
    "fig, ax = plt.subplots(figsize = (5, 4))\n",
    "ax.hist(resampled_proportions, bins=15, density=True, ec='white')\n",
    "ax.plot([left, right], [0, 0], color='yellow', lw=8)\n",
    "\n",
    "plt.xticks(rotation=90, fontsize=10)\n",
    "plt.yticks(fontsize=10)\n",
    "ax.yaxis.set_major_formatter(plt.FuncFormatter(lambda x, _: '{:g}'.format(x * 100)))\n",
    "ax.set_ylabel('Percent per unit', fontsize=11)\n",
    "ax.set_xlabel('Bootstrap sample proportion', fontsize=11)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9caaa9f9",
   "metadata": {},
   "source": [
    "## Care in Using the Bootstrap Percentile Method\n",
    "Before using an interval to support a management decision, check the data and the process that generated it.\n",
    "\n",
    "- **Define the population and statistic.** A median, a mean, and a proportion answer different questions. Explain the units and time period of the target population.\n",
    "- **Check the original sample.** A large convenience sample can still be biased. Resampling cannot recover customers, employees, or transactions systematically missing from the data.\n",
    "- **Respect dependence.** This chapter resamples independent rows. Repeated purchases by one customer, branches sampled in clusters, and time-series records may need a different resampling design.\n",
    "- **Separate n from B.** A few thousand resamples often give useful teaching approximations. Check endpoint stability with more repetitions for a consequential analysis. Repeating the bootstrap does not increase the original sample size or guarantee the stated coverage.\n",
    "- **Watch difficult statistics.** A resample cannot exceed the observed maximum or fall below the observed minimum, so this simple method is unreliable for population extremes. Very small samples, strong bias, highly discrete statistics, or skewed sampling distributions can also give poor percentile coverage. A bell-shaped histogram alone does not prove validity.\n",
    "- **Interpret a threshold cautiously.** If a proposed value lies inside an interval, the data do not rule it out by this procedure; that does not prove the value or show a supplier meets a business requirement. Report the interval alongside the requirement and the consequences of a wrong decision.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "44dd1553",
   "metadata": {
    "tags": []
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "cell-9a306716",
   "metadata": {},
   "source": [
    "\n",
    "## Section Practice\n",
    "\n",
    "Use this short exercise to check the main workflow from this section.\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "cell-e5f3e668",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:03.304025Z",
     "iopub.status.busy": "2026-08-31T06:02:03.303949Z",
     "iopub.status.idle": "2026-08-31T06:02:03.305363Z",
     "shell.execute_reply": "2026-08-31T06:02:03.305166Z"
    },
    "tags": [
     "thebe-interactive"
    ]
   },
   "outputs": [],
   "source": [
    "### Exercise: Practice Confidence Intervals\n",
    "# A store's random sample of 20 order values (in dollars) is below. A manager claims\n",
    "# the average order value of all orders is $60.\n",
    "#   1. Build 2,000 bootstrap means (resample with replacement, random_state=i).\n",
    "#   2. Compute the 95% confidence interval with np.percentile(..., method='nearest').\n",
    "#   3. Is $60 inside the interval? Print the interval and the answer.\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "orders = pd.Series([42, 55, 48, 61, 39, 52, 47, 58, 44, 50, 63, 41, 49, 56, 45, 53, 46, 51, 59, 43])\n",
    "### Your code starts here\n",
    "\n",
    "\n",
    "\n",
    "\n",
    "### Your code ends here\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "cell-1065d418",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2026-08-31T06:02:03.306264Z",
     "iopub.status.busy": "2026-08-31T06:02:03.306204Z",
     "iopub.status.idle": "2026-08-31T06:02:03.307694Z",
     "shell.execute_reply": "2026-08-31T06:02:03.307527Z"
    },
    "tags": [
     "hide-input"
    ]
   },
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": "Sample mean: 50.1\n95% CI: 47.15 to 52.95\n$60 inside the interval: False\n"
    }
   ],
   "source": [
    "### Solution\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "\n",
    "orders = pd.Series([42, 55, 48, 61, 39, 52, 47, 58, 44, 50, 63, 41, 49, 56, 45, 53, 46, 51, 59, 43])\n",
    "\n",
    "means = np.array([orders.sample(len(orders), replace=True, random_state=i).mean() for i in range(2000)])\n",
    "left = np.percentile(means, 2.5, method='nearest')\n",
    "right = np.percentile(means, 97.5, method='nearest')\n",
    "\n",
    "print('Sample mean:', orders.mean())\n",
    "print('95% CI:', round(left, 2), 'to', round(right, 2))\n",
    "print('$60 inside the interval:', left <= 60 <= right)\n",
    "# $60 is outside the interval, so the data are not consistent with the claim.\n"
   ]
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": ".venv",
   "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.13.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
