{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Bootstrap Sampling" ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-print" ] }, "source": [ "[Click here to run this notebook on Colab](https://colab.research.google.com/github/AllenDowney/ElementsOfDataScience/blob/master/12_bootstrap.ipynb) or\n", "[click here to download it](https://github.com/AllenDowney/ElementsOfDataScience/raw/master/12_bootstrap.ipynb)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the previous chapter we used resampling to compute standard errors and confidence intervals, which quantify the variability in an estimate due to random sampling.\n", "As one of the examples, we used data from the General Social Survey (GSS) to explore changes in support for gun control over time and to compute confidence intervals for the estimated proportions.\n", "\n", "In this chapter, we'll use GSS data to estimate average income and the 10th percentile of income.\n", "We'll see that the resampling method we used in the previous chapter works for the average income but not for the 10th percentile.\n", "\n", "To solve this problem, we'll use another kind of resampling, called bootstrapping or bootstrap sampling (see ).\n", "Then we'll use bootstrapping to compute sampling distributions and confidence intervals for other statistics, including the coefficient of correlation and the parameters of linear regression.\n", "Finally, I'll point out a problem with bootstrap resampling when there are not enough different values in a dataset, and a way to solve it with KDE resampling." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Estimating Average Income\n", "\n", "As a first example, we'll use data from the General Social Survey to estimate average family income.\n", "The following cell loads the data, which I have stored in an HDF file." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "try:\n", " import empiricaldist\n", "except ImportError:\n", " !pip install empiricaldist" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "from os.path import basename, exists\n", "\n", "def download(url):\n", " filename = basename(url)\n", " if not exists(filename):\n", " from urllib.request import urlretrieve\n", " local, _ = urlretrieve(url, filename)\n", " print('Downloaded ' + local)\n", " " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "download('https://github.com/AllenDowney/' +\n", " 'ElementsOfDataScience/raw/master/data/gss_eda.hdf')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
YEARID_AGEEDUCSEXGUNLAWGRASSREALINC
01972123.016.021.0NaN18951.0
11972270.010.011.0NaN24366.0
21972348.012.021.0NaN24366.0
31972427.017.021.0NaN30458.0
41972561.012.021.0NaN50763.0
\n", "
" ], "text/plain": [ " YEAR ID_ AGE EDUC SEX GUNLAW GRASS REALINC\n", "0 1972 1 23.0 16.0 2 1.0 NaN 18951.0\n", "1 1972 2 70.0 10.0 1 1.0 NaN 24366.0\n", "2 1972 3 48.0 12.0 2 1.0 NaN 24366.0\n", "3 1972 4 27.0 17.0 2 1.0 NaN 30458.0\n", "4 1972 5 61.0 12.0 2 1.0 NaN 50763.0" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "gss = pd.read_hdf('gss_eda.hdf', 'gss')\n", "gss.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The column `REALINC` records family income, converted to 1986 dollars.\n", "The following figure uses the Seaborn function `kdeplot` to show the distribution of family income.\n", "The argument `cut=0` cuts off the curve so it doesn't extend beyond the observed minimum and maximum values." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "sns.kdeplot(gss['REALINC'] / 1000, label='GSS data', cut=0)\n", "\n", "plt.xlabel('Family income ($1000s)')\n", "plt.ylabel('PDF')\n", "plt.title('Distribution of income')\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The distribution of income is skewed to the right; most household incomes are less than $60,000, but a few are substantially higher.\n", "Here are the mean and standard deviation of the reported incomes." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "31742.56337281537 29526.06789623489\n" ] } ], "source": [ "mean_realinc = gss['REALINC'].mean()\n", "std_income = gss['REALINC'].std()\n", "print(mean_realinc, std_income)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The average family income in this sample is $31,743.\n", "But if we ran the GSS survey again, the average might be higher or lower.\n", "To see how much it might vary, we can use this function from the previous chapter to simulate the sampling process." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "def simulate_sample_mean(n, mu, sigma):\n", " sample = np.random.normal(mu, sigma, size=n)\n", " return sample.mean()" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# set the random seed so we get the same results every time\n", "np.random.seed(18)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`simulate_sample_mean` takes as parameters the sample size and the observed mean and standard deviation of income.\n", "It generates a sample from a normal distribution with the given mean and standard deviation, and returns the mean of the sample.\n", "\n", "Before we call this function, we have to count the number of valid responses." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "58293" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n_realinc = gss['REALINC'].notna().sum()\n", "n_realinc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, if we call `simulate_sample_mean` once, we get a single value from the sampling distribution of the mean." ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "31725.9120143765" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "simulate_sample_mean(n_realinc, mean_realinc, std_income)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we call it many times, we get a random sample from the sampling distribution." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "t1 = [simulate_sample_mean(n_realinc, mean_realinc, std_income)\n", " for i in range(1000)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the sampling distribution of the mean looks like:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.kdeplot(t1)\n", "\n", "plt.xlabel('Family income (1986 $)')\n", "plt.ylabel('PDF')\n", "plt.title('Sampling distribution of mean income');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This distribution shows how much we would expect the observed mean to vary if we ran the GSS survey again.\n", "We'll use the following function to summarize the sampling distribution." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "def summarize(t, digits=2):\n", " table = pd.DataFrame(columns=['Estimate', 'SE', 'CI90'])\n", " est = np.mean(t).round(digits)\n", " SE = np.std(t).round(digits)\n", " CI90 = np.percentile(t, [5, 95]).round(digits)\n", " table.loc[''] = est, SE, CI90\n", " return table" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
31739.4123.3[31531.6, 31941.8]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", " 31739.4 123.3 [31531.6, 31941.8]" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summary1 = summarize(t1, digits=1)\n", "summary1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result shows the mean of the sampling distribution, the standard error, and a 90% confidence interval.\n", "The mean of the sampling distribution is close to the mean of the data, as we expect.\n", "The standard error quantifies with width of the sampling distribution, which is about $128.\n", "Informally, that's how much we would expect the sample mean to change if we ran the survey again.\n", "And if we ran the survey many times and computed the average income each time, we would expect 90% of the results to fall in the range from $31,538 to $31,958." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "31742.56337281537" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_realinc" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this section, we used a normal distribution to simulate the sampling process.\n", "The normal distribution is not a particularly good model for the distribution of income, but it works well enough for this example, and the results are reasonable.\n", "In the next section we'll see an example where the normal distribution is not good enough and the results are not reasonable; then we'll see how to fix the problem." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Estimating Percentiles\n", "\n", "Suppose that, instead of estimating the average income, we want to estimate the 10th percentile.\n", "Computing percentiles of income is often relevant to discussions of income inequality.\n", "To compute the 10th percentile of the data, we can use the NumPy function `percentile`, but we have to drop the NaN values." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5631.3" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.percentile(gss['REALINC'].dropna(), 10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The 10th percentile of the sample is $5631, but if we collected another sample, the result might be higher or lower.\n", "To see how much it would vary, we can use the following function to simulate the sampling process: `simulate_sample_percentile` generates a sample from a normal distribution and returns the 10th percentile." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [], "source": [ "def simulate_sample_percentile(n, mu, sigma):\n", " sample = np.random.normal(mu, sigma, size=n)\n", " return np.percentile(sample, 10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we call it several times, the result is a sample from the sampling distribution of the 10th percentile." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "t2 = [simulate_sample_percentile(n_realinc, mean_realinc, std_income)\n", " for i in range(1000)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what that sampling distribution looks like." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.kdeplot(t2)\n", "\n", "plt.xlabel('Family income (1986 $)')\n", "plt.ylabel('PDF')\n", "plt.title('Sampling distribution of the 10th percentile');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that something has gone wrong.\n", "All of the values in the sampling distribution are negative, even though no one in the sample reported a negative income.\n", "We can summarize the results like this." ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
-6095.13207.46[-6441.61, -5753.08]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", " -6095.13 207.46 [-6441.61, -5753.08]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summary2 = summarize(t2)\n", "summary2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But the estimate and the confidence interval are all negative, which is not a reasonable result.\n", "To see what happened, let's look at the distribution of reported incomes again compared to the normal distribution with the same mean and standard deviation." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import norm\n", "\n", "xs = np.linspace(-50, 150)\n", "ys = norm(mean_realinc/1000, std_income/1000).pdf(xs)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "image/png": "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nr/77rs0NTUB0NPTQ3FxMWlpaRw5coSjR48ObHfgwAHS0tLOajs6OpqoqCjeeecdAJ555pmBdS0tLcyfPx+bzcbTTz+N0+kEICIigra2tjG381WaOJTHdTucvFVax6XLkkb8ZpYSE8pHVibz3L5q2rp6pzlCNduJCH/84x958803ycjIYMOGDWzfvp37778fgGPHjnHxxReTm5vL6tWrWbduHR/72Mdob29n+/btZGdnk5eXR3FxMd/61rfOaf///u//uPvuu9m8eTMhIf/oMd911108+eSTbNq0idLSUsLCwgDIy8vD39+flStX8uCDD464na8SY2b/HPp169YZXx5omu32nmjkY4++x//espYP5MwbcbuDVc1sfeRdvrM1h1s3p09fgMrjSkpKWL58ubfDUKMY7t9IRPYaY9YN3VZ7HMrjCqpbAFiVGj3qditTo8lLieKp904wF77QKDVTaeJQHldY3UJSZBBJkWMP+N28KY2yM+3sKm+chsiUUpOhiUN5XEFNC7nJ0ePa9sN5C4gKCeCXu4a91bFSygdo4lAe1d7t4FhdO3kpUePaPiTQj+vXpvDSoVOcadOb/ijlizRxKI86VNOCMZA7zsQBcNOGhTj6DM/vq/FgZEqpydLEoTyq9LRrrvryecNfvzGcxYnhrE2L4Tf5VTpIrpQP0sShPKq8voPQQD+SIidWg+rGdamU13Ww90SThyJTanqlp6dTX1/v0WNs2bJlzBpX49lmLJo4lEdV1HeQHhc24ZLpH8ybT1igH7/ZU+WhyJQaP4fD4e0QfIomDuVRx+s7yEiY+FWwYUH+fChvAX8prKW9W/9o1dRUVFSwfPlybr/9dnJycrjyyiux2+2Aq4zIpk2byMvL49prrx0oPbJlyxa++tWvcvHFF/PQQw+xZcsWvvjFL3LRRRexfPly9uzZw3XXXUdWVhZf+9rXBo710Y9+lLVr15KTk8Njjz02Zmzh4eF8+ctfZu3atVx++eXs3r2bLVu2kJmZOXC/kK6uLm677baBK9v//ve/A2C327npppvIy8vjxhtvHHhNAC+//DKbN29mzZo1XH/99QM3pnIHLXKoPKbH0UdVk50Przy3sOF43LA+ld/kV/Hngye5acNCN0envOXQoUO0tLS4tc2oqChyckYvnnj06FGeffZZfvazn3HDDTfw3HPPcfPNN3PrrbcO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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.kdeplot(gss['REALINC'] / 1000, label='GSS data', cut=0)\n", "plt.plot(xs, ys, color='0.7', label='normal model')\n", "\n", "plt.xlabel('Family income ($1000s)')\n", "plt.ylabel('PDF')\n", "plt.title('Distribution of income')\n", "plt.legend();" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The problem is that the normal model extends past the lower bound of the observed values, so it doesn't produce sensible results.\n", "Fortunately there is a simple alternative that is more robust: bootstrapping." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bootstrapping\n", "\n", "Bootstrapping is a kind of resampling, based on the framework we saw in the previous chapter:\n", "\n", "![](https://github.com/AllenDowney/ElementsOfDataScience/raw/master/figs/resampling.png)\n", "\n", "The idea is that we treat the original sample as if it were the entire population, and simulate the sampling process by choosing random rows with replacement.\n", "`DataFrame` provides a method called `sample` we can use to select a random sample of the rows." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(58293, 8)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "bootstrapped = gss.sample(n=n_realinc, replace=True)\n", "bootstrapped.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The argument `n=n_realinc` means that the bootstrapped sample has the same size as the original. \n", "\n", "`replace=True` means that sampling is done with replacement; that is, the same row can be chosen more than once.\n", "To see how many times each row appears in the bootstrapped sample, we can use `value_counts` and the `_ID` column, which contains a unique identifier for each respondent. " ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "797 50\n", "195 48\n", "197 47\n", "171 45\n", "920 45\n", "Name: ID_, dtype: int64" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "repeats = bootstrapped['ID_'].value_counts()\n", "repeats.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Several of the rows appear more than 40 times.\n", "Since some rows appear many times, other rows don't appear at all. To see how many, we can use `set` subtraction to count the values of `ID_` that appear in the original dataset but not the bootstrapped sample." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "567" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "unused = set(gss['ID_']) - set(bootstrapped['ID_'])\n", "len(unused)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can use bootstrapping to generate a sampling distribution.\n", "For example, the following function takes a `DataFrame`, generates a bootstrapped sample, and returns the average income." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "def bootstrap_mean(df, varname):\n", " bootstrapped = df.sample(n=len(df), replace=True)\n", " return bootstrapped[varname].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we run it many times, we get a sample from the sampling distribution of the mean." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "t3 = [bootstrap_mean(gss, 'REALINC')\n", " for i in range(1001)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a summary of the results, compared to the results based on the normal model." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
normal model31739.40123.30[31531.6, 31941.8]
bootstrapping31742.67121.39[31544.79, 31946.17]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", "normal model 31739.40 123.30 [31531.6, 31941.8]\n", "bootstrapping 31742.67 121.39 [31544.79, 31946.17]" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summary3 = summarize(t3)\n", "table = pd.concat([summary1, summary3])\n", "table.index=['normal model', 'bootstrapping']\n", "table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results from bootstrap sampling are consistent with the results based on the normal model.\n", "Now let's see what happens when we estimate the 10th percentile.\n", "\n", "The following function generates a bootstrapped sample and returns the 10th percentile.\n", "Instead of `percentile` from Numpy, it uses `quantile` from Pandas, which drops `NaN` values.\n", "The parameter of `quantile` is a probability between 0 and 1, rather than a percentage between 0 and 100." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "def bootstrap_income_percentile(df):\n", " bootstrapped = df.sample(n=len(df), replace=True)\n", " return bootstrapped['REALINC'].quantile(0.1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use it to generate a sample from the sampling distribution of the 10th percentile." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "t4 = [bootstrap_income_percentile(gss)\n", " for i in range(1001)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the results along with the results based on the normal model." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
normal model-6095.13207.46[-6441.61, -5753.08]
bootstrapping5649.5088.71[5512.5, 5806.0]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", "normal model -6095.13 207.46 [-6441.61, -5753.08]\n", "bootstrapping 5649.50 88.71 [5512.5, 5806.0]" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summary4 = summarize(t4)\n", "table = pd.concat([summary2, summary4])\n", "table.index=['normal model', 'bootstrapping']\n", "table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mean of the sampling distribution is consistent with the 10th percentile of the data, which is $5631.\n", "So the results from bootstrapping are more sensible than the results based on the normal model." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/plain": [ "5631.3" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.percentile(gss['REALINC'].dropna(), 10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In general, bootstrapping is robust; that is, it works well with many different distributions and many different statistics.\n", "However, at the end of the chapter, we'll see one example where it fails." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Working with Bigger Data\n", "\n", "As sample size increases, errors due to random sampling get smaller.\n", "To demonstrate this effect, I'll use data from the Behavioral Risk Factor Surveillance System (BRFSS).\n", "\n", "In previous chapters, we used BRFSS data to explore the relationship between height and weight, and the relationship between income and vegetable consumption.\n", "In this section, we'll use it to estimate the average height for men in the United States.\n", "\n", "First, let's read the 2019 data, which I have stored in an HDF file." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "from os.path import basename, exists\n", "\n", "def download(url):\n", " filename = basename(url)\n", " if not exists(filename):\n", " from urllib.request import urlretrieve\n", " local, _ = urlretrieve(url, filename)\n", " print('Downloaded ' + local)\n", " \n", "download('https://github.com/AllenDowney/' +\n", " 'ElementsOfDataScience/raw/master/data/brfss.hdf')" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(418268, 9)" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "brfss = pd.read_hdf('brfss.hdf', 'brfss')\n", "brfss.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This dataset contains 418 268 rows, one for each respondent, and 11 columns, one for each variable I selected.\n", "Here are the first few rows." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
SEQNOHTM4WTKG3_SEX_AGEG5YR_VEGESU1_INCOMG_LLCPWTAGE
02019000001157.069.85213.0114.02135.30408082.0
12019000002163.048.99211.0121.031454.88222072.0
22019000003165.086.18210.0164.05215.57685267.0
32019000004165.055.34213.0NaN4261.28283882.0
42019000005152.049.90213.0178.09535.27010382.0
\n", "
" ], "text/plain": [ " SEQNO HTM4 WTKG3 _SEX _AGEG5YR _VEGESU1 _INCOMG _LLCPWT \\\n", "0 2019000001 157.0 69.85 2 13.0 114.0 2 135.304080 \n", "1 2019000002 163.0 48.99 2 11.0 121.0 3 1454.882220 \n", "2 2019000003 165.0 86.18 2 10.0 164.0 5 215.576852 \n", "3 2019000004 165.0 55.34 2 13.0 NaN 4 261.282838 \n", "4 2019000005 152.0 49.90 2 13.0 178.0 9 535.270103 \n", "\n", " AGE \n", "0 82.0 \n", "1 72.0 \n", "2 67.0 \n", "3 82.0 \n", "4 82.0 " ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "brfss.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `HTM4` column contains the respondents' heights in centimeters." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "height = brfss['HTM4']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To select male respondents, we'll use the `SEX` column to make a Boolean `Series`." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "189835" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "male = (brfss['_SEX'] == 1)\n", "male.sum()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use `notna` and `sum` to count the number of male respondents with valid height data." ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "182269" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n_height = height[male].notna().sum()\n", "n_height" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is the mean and standard deviation of these values." ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(178.0768644146838, 7.9664553134728395)" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_height = height[male].mean()\n", "std_height = height[male].std()\n", "mean_height, std_height" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The average height for men in the U.S. is about 178 cm; the standard deviation is about 8 cm.\n", "We can use bootstrapping to generate values from the sampling distribution of the mean.\n", "To reduce computation time, I set the number of iterations to 201." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
178.0790.019[178.047, 178.107]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", " 178.079 0.019 [178.047, 178.107]" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t5 = [bootstrap_mean(brfss[male], 'HTM4')\n", " for i in range(201)]\n", "\n", "summarize(t5, digits=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Because the sample size is so large, the standard error is small and the confidence interval is narrow.\n", "This result suggests that our estimate is very precise, which is true in the sense that the error due to random sampling is small.\n", "\n", "But there are other sources of error. For example, the heights and weights in this dataset are based on self-reports, so they are vulnerable to **social desirability bias** (see ). It's also possible that there are errors in recording the data. In a previous year of the BRFSS, there are a suspicious number of heights recorded as 60 or 61 centimeters. I suspect that many of them are six feet tall, or six feet and one inch, and something went wrong in recording the data.\n", "\n", "And that brings us to the first point of this example: \n", "\n", "> With large sample sizes, error due to random sampling is small, but with real-world data, that usually means that there are other sources of error that are bigger. So we can't be sure that the estimate is accurate.\n", "\n", "In fact, there is another source of error in this example that we have not taken into account: oversampling." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Weighted Bootstrapping\n", "\n", "By design, the BRFSS oversamples some demographic groups; that is, people in some groups are more likely than others to appear in the sample.\n", "If people in these groups are taller than others on average, or shorter, our estimated mean would not be accurate.\n", "\n", "We encountered this issue in Chapter 7, where we used data from the National Survey of Family Growth (NSFG) to compute the average birth weight for babies in the United States.\n", "In that example, we corrected for oversampling by computing a weighted mean.\n", "\n", "In this example, we will use a different method, **weighted bootstrapping**, to estimate the mean and compute a confidence interval.\n", "\n", "The BRFSS dataset includes a column, `_LLCPWT`, that contains sampling weights.\n", "The sampling weight for each respondent is the number of people in the population they represent.\n", "People in oversampled groups have lower sampling weights; people in undersampled groups have higher sampling weights.\n", "Here's what the range of values looks like." ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 418268.000000\n", "mean 603.513276\n", "std 1082.430311\n", "min 1.016173\n", "25% 111.160528\n", "50% 272.869258\n", "75% 654.211787\n", "max 42066.730900\n", "Name: _LLCPWT, dtype: float64" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "brfss['_LLCPWT'].describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The lowest sampling weight is about 1; the largest is 42 066.\n", "So that's a very wide range!\n", "\n", "We can take these weights into account by passing them as an argument to `sample`.\n", "That way, the probability that any row is selected is proportional to its sampling weight." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "n = len(brfss)\n", "bootstrapped = brfss.sample(n=n, replace=True, weights='_LLCPWT')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we saw with unweighted bootstrapping, the same row can appear more than once.\n", "To see how many times, we can use `value_counts` and the `SEQNO` column, which contains a unique identifier for each respondent." ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2019000108 139\n", "2019000047 122\n", "2019000048 115\n", "2019000096 110\n", "2019000851 110\n", "Name: SEQNO, dtype: int64" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "repeats = bootstrapped['SEQNO'].value_counts()\n", "repeats.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some rows appear more than 100 times. Most likely, these are the rows with the highest sampling rates, which correspond to people from undersampled groups.\n", "\n", "To see how many rows don't appear at all, we can use `set` subtraction to count the values of `SEQNO` that appear in the original dataset but not the sample." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "826" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "unused = set(brfss['SEQNO']) - set(bootstrapped['SEQNO'])\n", "len(unused)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are several hundred rows that don't appear in this sample, but they are not dropped altogether; when we repeat this process, they will appear in other samples.\n", "\n", "We can use weighted bootstrapping to generate values from the sampling distribution of the mean.\n", "The following function uses `sample` and the `_LLCPWT` column to generate a bootstrapped sample, then returns the average height." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "def weighted_bootstrap_mean(df):\n", " n = len(df)\n", " sample = df.sample(n=n, replace=True, weights='_LLCPWT')\n", " return sample['HTM4'].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll test this function with a `DataFrame` that contains only male respondents.\n", "If we run it once, we get a single value from the sampling distribution of the weighted mean." ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "177.63307589732193" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "male_df = brfss[male]\n", "weighted_bootstrap_mean(male_df)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we run it many times, we get a random sample from the sampling distribution." ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
177.6390.021[177.602, 177.671]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", " 177.639 0.021 [177.602, 177.671]" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "t6 = [weighted_bootstrap_mean(male_df) \n", " for i in range(201)]\n", "\n", "summarize(t6, digits=3)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mean of the sampling distribution estimates the average height for men in the U.S., corrected for oversampling.\n", "If we compare it to the unweighted mean we computed, it is a little lower." ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "177.6394121015467 178.0768644146838\n" ] } ], "source": [ "print(np.mean(t6), mean_height)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So it seems like people in the oversampled groups are taller than others, on average, by enough to bring the unweighted mean up by about half a centimeter.\n", "\n", "The difference between the weighted and unweighted averages is bigger than the width of the confidence interval.\n", "So in this example the error if we fail to correct for oversampling is bigger than variability due to random sampling." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Correlation and Regression\n", "\n", "Bootstrap resampling can be used to estimate other statistics and their sampling distributions.\n", "For example, in Chapter 9 we computed the correlation between height and weight, which is about 0.48." ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.47715146283881427" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var1, var2 = 'HTM4', 'WTKG3'\n", "corr = brfss[var1].corr(brfss[var2])\n", "corr" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That correlation does not take into account oversampling.\n", "We can correct it with this function, which generates a weighted bootstrapped sample and uses it to compute the correlation of the columns with names `var1` and `var2`." ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [], "source": [ "def weighted_bootstrap_corr(df, var1, var2):\n", " n = len(df)\n", " sample = df.sample(n=n, replace=True, weights='_LLCPWT')\n", " corr = sample[var1].corr(sample[var2])\n", " return corr" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** Use this function to draw 101 values from the sampling distribution of the correlation between height and weight.\n", "What is the mean of these values? Is it substantially different from the correlation we computed without correcting for oversampling?\n", "Compute the standard error and 90% confidence interval for the estimated correlation." ] }, { "cell_type": "code", "execution_count": 51, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
0.465010.00141[0.46233, 0.46707]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", " 0.46501 0.00141 [0.46233, 0.46707]" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "t7 = [weighted_bootstrap_corr(brfss, 'HTM4', 'WTKG3')\n", " for i in range(101)]\n", "\n", "summarize(t7, digits=5)" ] }, { "cell_type": "code", "execution_count": 52, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "# The estimated correlation with weighted bootstrapping is\n", "# slightly smaller, but the difference is not enough to matter \n", "# in practice.\n", "\n", "# The error due to oversampling, although small,\n", "# is bigger than variability due to random sampling,\n", "# which is small because the sample size is so large." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** In Chapter 9 we also computed the slope of the regression line for weight as a function of height.\n", "Here's the result with with 2019 data." ] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.932929241334935" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy.stats import linregress\n", "\n", "subset = brfss.dropna(subset=['WTKG3', 'HTM4'])\n", "res = linregress(subset['HTM4'], subset['WTKG3'])\n", "res.slope" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The estimated slope is 0.93 kg/cm, which means that we expect someone 1 cm taller than average to be about 0.93 kg heavier than average.\n", "\n", "Write a function called `weighted_bootstrap_slope` that takes a `DataFrame`, generates a weighted bootstrapped sample, runs `linregress` with height and weight, and returns the slope of the regression line.\n", "\n", "Run it 101 times and collect the results. Use the sampling distribution to compute the mean of the slope estimates, standard error, and a 90% confidence interval." ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "def weighted_bootstrap_slope(df):\n", " n = len(df)\n", " sample = df.sample(n=n, replace=True, weights='_LLCPWT')\n", " subset = sample.dropna(subset=['WTKG3', 'HTM4'])\n", " res = linregress(subset['HTM4'], subset['WTKG3'])\n", " return res.slope" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
0.897350.00318[0.89259, 0.90293]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", " 0.89735 0.00318 [0.89259, 0.90293]" ] }, "execution_count": 55, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Solution\n", "\n", "t8 = [weighted_bootstrap_slope(brfss)\n", " for i in range(101)]\n", "\n", "summarize(t8, digits=5)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "# In this example, again the value we get with weighted resampling is a little\n", "# different, but not enough to matter in practice.\n", "\n", "# Because the sample size is large, the standard error is small and \n", "# the confidence interval is narrow, but there might be sources of error,\n", "# other than random sampling, that have a bigger effect." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Limitations of Bootstrapping\n", "\n", "One limitation of bootstrapping is that it can be computationally expensive.\n", "With small datasets, it is usually fast enough that we can generate 1000 values from the sampling distribution, which means that we can compute standard errors and confidence intervals precisely.\n", "With larger datasets, we can cut the computation time by generating fewer values.\n", "With 100-200 values, the standard errors we get are usually precise enough, but the bounds of the confidence intervals might be noisier.\n", "\n", "The other limitation, which can be more problematic, is that bootstrap sampling does not work well with datasets that contain a small number of different values.\n", "To demonstrate, I'll select data from the GSS for one year, 2018:" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [], "source": [ "one_year = gss['YEAR']==2018\n", "gss2018 = gss[one_year]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And I'll use bootstrapping to generate values from the sampling distribution of income." ] }, { "cell_type": "code", "execution_count": 58, "metadata": {}, "outputs": [], "source": [ "t9 = [bootstrap_income_percentile(gss2018)\n", " for i in range(1001)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here are the results." ] }, { "cell_type": "code", "execution_count": 59, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
5158.3232.53[5107.5, 5107.5]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", " 5158.3 232.53 [5107.5, 5107.5]" ] }, "execution_count": 59, "metadata": {}, "output_type": "execute_result" } ], "source": [ "summary9 = summarize(t9)\n", "summary9" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The estimate and the standard error look plausible at first glance, but the width of the confidence interval is 0, which suggests that something has gone wrong!\n", "\n", "The problem is that `REALINC` is not a numerical variable; it is a categorical variable in disguise.\n", "Using `value_counts`, we can see that there are only 26 distinct values in this column." ] }, { "cell_type": "code", "execution_count": 60, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "26" ] }, "execution_count": 60, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(gss2018['REALINC'].value_counts())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The reason is that the GSS does not ask respondents to report their incomes.\n", "Instead, it gives them a list of ranges and asks them to pick the range their income falls in. \n", "The ranges are described in the documentation of the related variable `INCOME` (see ).\n", "\n", "Then GSS analysts compute the midpoint of each range and convert to 1986 dollars by adjusting for inflation.\n", "Details of the methodology are in available from .\n", "\n", "As a result, there are only 26 distinct values in `REALINC`.\n", "When we generate a bootstrapped sample and compute the 10th percentile, we get a small subset of them. Here are the values that appear in our sample: " ] }, { "cell_type": "code", "execution_count": 61, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5107.5 955\n", "5675.0 1\n", "5902.0 1\n", "6015.5 2\n", "6242.5 42\n", "dtype: int64" ] }, "execution_count": 61, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pd.Series(t9).value_counts().sort_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There are only 5 different values, and one of them appears more than 95% of the time.\n", "When we compute a 90% confidence interval, this value is both the 5th and the 95th percentile.\n", "\n", "Bootstrapping works well for most distributions and most statistics;\n", "the one thing it can't handle is lack of diversity in the data.\n", "However, even this problem can be solved.\n", "The fundamental cause is that the data have been discretized excessively, so the solution is to smooth it.\n", "Jittering is one option. Another is to use kernel density estimation (KDE)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Resampling with KDE\n", "\n", "We have used KDE several times to estimate and plot a probability density based on a sample.\n", "We can also use it to smooth data that have been discretized.\n", "\n", "In Chapter 8 we saw that the distribution of income is well modeled by a lognormal distribution, so if we take the log of income, it is well modeled by a normal distribution.\n", "Here are the logarithms of the income data." ] }, { "cell_type": "code", "execution_count": 62, "metadata": {}, "outputs": [], "source": [ "log_realinc = np.log10(gss2018['REALINC'].dropna())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's what the estimated density looks like." ] }, { "cell_type": "code", "execution_count": 63, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "sns.kdeplot(log_realinc)\n", "\n", "plt.xlabel('Income (log10 1986 dollars)')\n", "plt.ylabel('Probability density')\n", "plt.title('Estimated distribution of income');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To draw samples from this distribution, we'll use a Scipy function called `gaussian_kde`, which takes the data and returns an object that represents the estimated density.\n" ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [], "source": [ "from scipy.stats import gaussian_kde\n", "\n", "kde = gaussian_kde(log_realinc)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`kde` provides a method called `resample` that draws random values from the estimated density.\n", "As we've done in previous examples, we'll generate a resampled dataset with the same size as the original. " ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2152" ] }, "execution_count": 65, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = gss2018['REALINC'].notna().sum()\n", "n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can draw a sample, compute the 10th percentile, and convert from a logarithm to a dollar value." ] }, { "cell_type": "code", "execution_count": 66, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "5130.216531511149" ] }, "execution_count": 66, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sample = kde.resample(n)\n", "10 ** np.percentile(sample, 10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The result is a random value from the sampling distribution of the 10th percentile.\n", "The following function encapsulates these steps." ] }, { "cell_type": "code", "execution_count": 67, "metadata": {}, "outputs": [], "source": [ "def resample_kde_percentile(kde):\n", " sample = kde.resample(kde.n)\n", " return 10 ** np.percentile(sample, 10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can generate a sample from the sampling distribution." ] }, { "cell_type": "code", "execution_count": 68, "metadata": {}, "outputs": [], "source": [ "t10 = [resample_kde_percentile(kde)\n", " for i in range(1000)]\n", "\n", "summary10 = summarize(t10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following table compares the results with KDE resampling to the previous result with bootstrapping." ] }, { "cell_type": "code", "execution_count": 69, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
EstimateSECI90
bootstrapping5158.30232.53[5107.5, 5107.5]
KDE resampling5092.02270.36[4674.41, 5560.08]
\n", "
" ], "text/plain": [ " Estimate SE CI90\n", "bootstrapping 5158.30 232.53 [5107.5, 5107.5]\n", "KDE resampling 5092.02 270.36 [4674.41, 5560.08]" ] }, "execution_count": 69, "metadata": {}, "output_type": "execute_result" } ], "source": [ "table = pd.concat([summary9, summary10])\n", "table.index=['bootstrapping', 'KDE resampling']\n", "table" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The means and standard errors are about the same with either method. The difference is that the confidence interval we get from KDE resampling is much more reasonable." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Summary\n", "\n", "There are ten examples in this chapter so far; let's review them:\n", "\n", "1. First we used resampling based on a normal model to estimate average family income in the GSS and compute a confidence interval.\n", "\n", "2. Then we used the same method to estimate the 10th percentile of income, and we found that all of the values in the sampling distribution are negative. The problem is that the normal model does not fit the distribution of income. \n", "\n", "3. To solve this problem, we switched to bootstrap sampling. First we estimated average family income and confirmed that the results are consistent with the results based on the normal model.\n", "\n", "4. Then we used bootstrapping to estimate the 10th percentile of income. The results are much more plausible." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "5. Next we used data from the BRFSS to estimate the average height of men in the U.S. Since this dataset is large, the confidence interval is very small. That means that the estimate is precise, in the sense that variability due to random sampling is small, but we don't know whether it is accurate, because there are other possible sources of error.\n", "\n", "6. One of those sources of error is oversampling; that is, some people are more likely to appear in the sample than others. In the BFRSS, each respondent has a sampling weight that indicates how many people in the population they represent. We used these weights to do weighted bootstrapping, and found that the error due to oversampling is larger than the variability due to random sampling.\n", "\n", "7. In one exercise you used weighted bootstrapping to estimate the correlation of height and weight and compute a confidence interval.\n", "\n", "8. In another exercise you estimated the slope of a regression line and computed a confidence interval.\n", "\n", "9. Then I demonstrated a problem with bootstrap sampling when the dataset has only a few different values,\n", "\n", "10. And presented a solution using KDE to smooth the data and draw samples from an estimated distribution.\n", "\n", "In the exercise below, you can work on one more example.\n", "It is a little more involved than the previous exercises, but I will walk you through it." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Exercise:** In Chapter 10 we used logistic regression to model support for legalizing marijuana as a function of age, sex, and education level.\n", "Going back to that example, let's explore changes in support over time and generate predictions for the next decade.\n", "\n", "To prepare the data for logistic regression, we have to recode the `GRASS` column so `1` means in favor of legalization and `0` means not in favor." ] }, { "cell_type": "code", "execution_count": 70, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.0 25662\n", "1.0 11884\n", "Name: GRASS, dtype: int64" ] }, "execution_count": 70, "metadata": {}, "output_type": "execute_result" } ], "source": [ "gss['GRASS'].replace(2, 0, inplace=True)\n", "gss['GRASS'].value_counts()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As explanatory variables we'll use `YEAR` and `YEAR` squared, which I'll store in a column called `YEAR2`." ] }, { "cell_type": "code", "execution_count": 71, "metadata": {}, "outputs": [], "source": [ "gss['YEAR2'] = (gss['YEAR']-1990) ** 2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we can run the model like this:" ] }, { "cell_type": "code", "execution_count": 72, "metadata": {}, "outputs": [], "source": [ "import statsmodels.formula.api as smf\n", "\n", "formula = 'GRASS ~ YEAR + YEAR2'\n", "results = smf.logit(formula, data=gss).fit(disp=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To generate predictions, I'll create a `DataFrame` with a range of values of `YEAR` up to 2030, and corresponding values of `YEAR2`." ] }, { "cell_type": "code", "execution_count": 73, "metadata": {}, "outputs": [], "source": [ "years = np.linspace(1972, 2030)\n", "df_pred = pd.DataFrame()\n", "df_pred['YEAR'] = years\n", "df_pred['YEAR2'] = (df_pred['YEAR']-1990)**2\n", "\n", "pred = results.predict(df_pred)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I'll use `groupby` to compute the fraction of respondents in favor of legalization during each year." ] }, { "cell_type": "code", "execution_count": 74, "metadata": {}, "outputs": [], "source": [ "grass_by_year = gss.groupby('YEAR')['GRASS'].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following function plots the data and decorates the axes." ] }, { "cell_type": "code", "execution_count": 75, "metadata": {}, "outputs": [], "source": [ "def plot_data():\n", " grass_by_year.plot(style='o', alpha=0.5, label='data')\n", " plt.xlabel('Year')\n", " plt.ylabel('Fraction in favor')\n", " plt.title('Support for legalization of marijuana')\n", " plt.legend(loc='upper left');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's what the predictions look like, plotted along with the data." ] }, { "cell_type": "code", "execution_count": 76, "metadata": {}, "outputs": [ { "data": { "image/png": "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Bq655hre+c538vjjjwNwxRVXsGfPHsbGxrj11lsnPnvvvffy+OOPs2fPHt73vvdxwQUX4PP5JtYH2LlzJxdddBFbtmzhbW9721nxPPzww7z73e/m2muvpaqqivvuu4+vfe1rXHjhhbzpTW+is7MTgH379vGmN72J888/n+uvv37izGPv3r1s2bKFSy+9lPvvv39iu2NjY9x1111s3bqV888/n//4j/+I6PdqTDIZGxujoaGBhoYGPB4PmzZtilgSgMheEYSqHZza5/U/A/8qIvtwhkV8BWc80skfUt0B7ACoqamZsd/sEydOLPh9tOzsbFasWDH7isATTzzBvn372L9/P2fOnGHr1q1s27aN559/nsbGRl599VXa2trYuHEjH/7whyd9dt++fbS0tHDgwAEAuru7KSgo4L777uOrX/0qNTU1k9Zvb2/nL/7iL9i1axdVVVUTB/WpDhw4wCuvvMLQ0BBr1qzhS1/6Eq+88gqf/OQn+d73vsff/M3f8MEPfpBvfOMbXH755Xz+85/nH/7hH/j617/ObbfdNjH/rrteH373O9/5Dl6vl927dzM8PMyf/Mmf8I53vMMqhY05R/39/TQ0NDAyMkJpaSmlpaUR/38VySuCZiD46FmBMw7rBFXtVdXbVPUCnDqCEpxhFOPWc889xy233EJqairLli3j8ssvZ/fu3Tz33HO85z3vISUlheXLl/PWt771rM+uXr2a+vp6Pv7xj7Nz507y82cek/ull15i27ZtE23zi4qKQq731re+lby8PEpKSvB6vVx77bUAnHfeeTQ2NtLT00N3dzeXX+6M3vihD32IXbt2nTX/Ax/4wMQ2f/nLX/K9732PCy64gEsuuYSOjg6OHTs29y/MGDOhtbWVI0eOALB+/XrKysoW5eQqklcEu4G1IlIFtAA3A+8NXkFECoBBd2Si24Fdqtp7LjsN98w9UqYb6CecAYAKCwvZv38/zzzzDPfffz+PPfYYDz744Iz7CuePJDMzc+J9SkrKxHRKSgp+//TDFs+0fVXlG9/4BlddddWk+Y2NjbPGY4yZLBAI0NTURGdnJwUFBVRWVpKamrpo+4/YFYE7MPrHgGeAQ8BjqnpQRO4UkTvd1TYCB0XkME7rok9EKp7Fsm3bNh599FHGxsZob29n165dXHzxxVx22WX85Cc/IRAI0Nrayu9+97uzPnvm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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(years, pred, label='logistic model', color='gray', alpha=0.4)\n", "plot_data()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The model fits past data reasonably well and makes plausible predictions for the next decade, although we can never be sure that trends like this will continue.\n", "\n", "This way of representing the results could be misleading because it does not show our uncertainty about the predictions.\n", "Random sampling is just one source of uncertainty among many, and for this kind of prediction it is certainly not the biggest.\n", "But it is the easiest to quantify, so let's do it, if only as an exercise.\n", "\n", "Write a function called `bootstrap_regression_line` that takes a `DataFrame` as a parameter, uses `sample` to resample the rows, runs the logistic regression model, generates predictions for the rows in `df_pred`, and returns the predictions.\n", "\n", "Call this function 101 times and save the results as a list of `Series` objects.\n", "To visualize the results, you have two options:\n", "\n", "1. Loop through the list and plot each prediction using a gray line with a low value of `alpha`. The overlapping lines will form a region showing the range of uncertainty over time.\n", "\n", "2. Pass the list of `Series` to `np.percentile` with the argument `axis=0` to compute the 5th and 95th percentile in each column. Plot these percentiles as two lines, or use `plt.fill_between` to plot a shaded region between them." ] }, { "cell_type": "code", "execution_count": 77, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "def bootstrap_regression_line(df):\n", " n = len(df)\n", " sample = df.sample(n=n, replace=True)\n", " results = smf.logit(formula, data=sample).fit(disp=False)\n", " pred = results.predict(df_pred)\n", " return pred" ] }, { "cell_type": "code", "execution_count": 78, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "t11 = [bootstrap_regression_line(gss)\n", " for i in range(101)]" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "for pred in t11:\n", " plt.plot(years, pred, color='gray', alpha=0.01)\n", "plot_data()" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# Solution\n", "\n", "low, high = np.percentile(t11, [5, 95], axis=0)\n", "plt.fill_between(years, low, high, \n", " color='gray', alpha=0.4, label='model')\n", "plot_data()" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "tags": [ "remove-cell" ] }, "outputs": [], "source": [ "# Solution\n", "\n", "# In this example, the width of the CI is quite narrow, which might suggest that\n", "# the predictions are nearly certain. But remember that the CI only quantifies\n", "# uncertainty due to random sampling. In this example, there are many other sources\n", "# of uncertainty; one of the big ones is that there is no guarantee that the trends\n", "# we see in the past will continue in the future." ] }, { "cell_type": "markdown", "metadata": { "tags": [ "remove-cell" ] }, "source": [ "*Elements of Data Science*\n", "\n", "Copyright 2021 [Allen B. Downey](https://allendowney.com)\n", "\n", "License: [Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International](https://creativecommons.org/licenses/by-nc-sa/4.0/)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "celltoolbar": "Tags", "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.7.7" } }, "nbformat": 4, "nbformat_minor": 2 }