{ "cells": [ { "cell_type": "code", "execution_count": 15, "metadata": { "tags": [ "remove_input" ] }, "outputs": [], "source": [ "path_data = '../../data/'\n", "\n", "import numpy as np\n", "import pandas as pd\n", "\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "plt.style.use('fivethirtyeight')\n", "\n", "import warnings\n", "warnings.filterwarnings('ignore')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Empirical Distribution of a Statistic\n", "The Law of Averages implies that with high probability, the empirical distribution of a large random sample will resemble the distribution of the population from which the sample was drawn.\n", "\n", "The resemblance is visible in two histograms: the empirical histogram of a large random sample is likely to resemble the histogram of the population.\n", "\n", "As a reminder, here is the histogram of the delays of all the flights in `united`, and an empirical histogram of the delays of a random sample of 1,000 of these flights." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "united = pd.read_csv(path_data + 'united_summer2015.csv')" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "delay_bins = np.arange(-20, 201, 10)\n", "\n", "unit = 'minute'\n", "\n", "fig, ax1 = plt.subplots()\n", "\n", "ax1.hist(united['Delay'], bins=delay_bins, density=True, alpha=0.8, ec='white')\n", "\n", "y_vals = ax1.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Delay' + (unit if unit else '(unit)')\n", "\n", "ax1.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.title('Population');\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sample_1000 = united.sample(1000)\n", "\n", "unit = 'minute'\n", "\n", "fig, ax1 = plt.subplots()\n", "\n", "ax1.hist(sample_1000['Delay'], bins=delay_bins, density=True, alpha=0.8, ec='white')\n", "\n", "y_vals = ax1.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Delay (' + (unit if unit else 'unit') + ')'\n", "\n", "ax1.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.title('Population');\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The two histograms clearly resemble each other, though they are not identical. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Parameter\n", "Frequently, we are interested in numerical quantities associated with a population.\n", "- In a population of voters, what percent will vote for Candidate A?\n", "- In a population of Facebook users, what is the largest number of Facebook friends that the users have?\n", "- In a population of United flights, what is the median departure delay?\n", "\n", "Numerical quantities associated with a population are called *parameters*. For the population of flights in `united`, we know the value of the parameter \"median delay\":" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.0" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.median(united['Delay'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `NumPy` function `median` returns the median (half-way point) of an array. Among all the flights in `united`, the median delay was 2 minutes. That is, about 50% of flights in the population had delays of 2 or fewer minutes:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.5018444846292948" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(united[united['Delay'] <= 2])/len(united)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Half of all flights left no more than 2 minutes after their scheduled departure time. That's a very short delay! \n", "\n", "**Note.** The percent isn't exactly 50 because of \"ties,\" that is, flights that had delays of exactly 2 minutes. There were 480 such flights. Ties are quite common in data sets, and we will not worry about them in this course." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "480" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(united[united['Delay'] == 2])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Statistic\n", "In many situations, we will be interested in figuring out the value of an unknown parameter. For this, we will rely on data from a large random sample drawn from the population.\n", "\n", "A *statistic* (note the singular!) is any number computed using the data in a sample. The sample median, therefore, is a statistic. \n", "\n", "Remember that `sample_1000` contains a random sample of 1000 flights from `united`. The observed value of the sample median is:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.0" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.median(sample_1000['Delay'], overwrite_input=True)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Our sample – one set of 1,000 flights – gave us one observed value of the statistic. This raises an important problem of inference:\n", "\n", "**The statistic could have been different.**\n", "A fundamental consideration in using any statistic based on a random sample is that *the sample could have come out differently*, and therefore the statistic could have come out differently too. " ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2.0" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.median(united['Delay'].sample(1000))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Run the cell above a few times to see how the answer varies. Often it is equal to 2, the same value as the population parameter. But sometimes it is different." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Just how different could the statistic have been?** One way to answer this is to simulate the statistic many times and note the values. A histogram of those values will tell us about the distribution of the statistic.\n", "\n", "Let's recall the main steps in a simulation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Simulating a Statistic\n", "We will simulate the sample median using the steps we set up in an earlier chapter when we started studying simulation. You can replace the sample size of 1000 by any other sample size, and the sample median by any other statistic.\n", "\n", "**Step 1: Decide which statistic to simulate.** We have already decided that: we are going to simulate the median of a random sample of size 1000 drawn from the population of flight delays.\n", "\n", "**Step 2: Write the code to generate one value of the statistic.** Draw a random sample of size 1000 and compute the median of the sample. We did this in the code cell above. Here it is again, encapsulated in a function." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "def random_sample_median():\n", " return np.median(united['Delay'].sample(1000))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Step 3: Decide how many simulated values to generate.** Let's do 5,000 repetitions.\n", "\n", "**Step 4: Write the code to generate an array of simulated values.** As in all simulations, we start by creating an empty array in which we will collect our results. We will then set up a `for` loop for generating all the simulated values. The body of the loop will consist of generating one simulated value of the sample median, and appending it to our collection array.\n", "\n", "The simulation takes a noticeable amount of time to run. That is because it is performing 5000 repetitions of the process of drawing a sample of size 1000 and computing its median. That's a lot of sampling and repeating!" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "medians = np.array([])\n", "\n", "for i in np.arange(5000):\n", " medians = np.append(medians, random_sample_median())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The simulation is done. All 5,000 simulated sample medians have been collected in the array `medians`. Now it's time to visualize the results. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualization\n", "\n", "Here are the simulated random sample medians displayed in the table `simulated_medians`." ] }, { "cell_type": "code", "execution_count": 26, "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", "
Sample Median
03.0
12.0
22.0
32.0
43.0
......
49952.0
49962.0
49973.0
49983.0
49992.0
\n", "

5000 rows × 1 columns

\n", "
" ], "text/plain": [ " Sample Median\n", "0 3.0\n", "1 2.0\n", "2 2.0\n", "3 2.0\n", "4 3.0\n", "... ...\n", "4995 2.0\n", "4996 2.0\n", "4997 3.0\n", "4998 3.0\n", "4999 2.0\n", "\n", "[5000 rows x 1 columns]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "simulated_medians = pd.DataFrame(({'Sample Median':medians}))\n", "simulated_medians" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can also visualize the simulated data using a histogram. The histogram is called an *empirical histogram of the statistic*. It displays the *empirical distribution* of the statistic. Remember that *empirical* means *observed*." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAbEAAAEfCAYAAADPxvgvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAq50lEQVR4nO3deVxU9cI/8M8RARFBFIZxAZdgFHEPl0KLmyapqEhCLvVcwyVDLC1FoUXDFgTR50FFrk/m82DovaFSAZleeyTDfV/K5ZKIuyDgoBCMxpzfH/6c2zgsZ3LGw8HP+/Xi9XLO98yczxmED2cdQavViiAiIlKgJnIHICIi+rNYYkREpFgsMSIiUiyWGBERKRZLjIiIFIslRkREisUSIyIixWKJERGRYrHEFCovL0/uCI0S31fL43tqeXxP/40lRkREisUSIyIixWKJERGRYrHEiIhIsVhiRESkWCwxIiJSLJYYEREpFkuMiIgUq6ncAajxu64TcLVCL3cMSW7buaOstOF/2Hl7xyZoa9/wcxJZG0uMrO5qhR7zdt+UO4YkOl0V7O11cseoV+JgFdraC3LHIJIddycSEZFiscSIiEixWGJERKRYLDEiIlIs2UosLi4OLi4uRl9dunQxjIuiiLi4OPj4+KBNmzYICgrCmTNn5IpLREQNkKxbYhqNBufOnTN87d271zCWlJSE5ORkxMfHY+fOnVCpVAgJCcGdO3dkTExERA2JrCXWtGlTqNVqw5ebmxuA+1thKSkpmDNnDoKDg+Hr64uUlBSUl5dj8+bNckYmIqIGRNYSKygoQLdu3dCrVy9MmTIFBQUFAICLFy+isLAQQ4YMMczr4OAAf39/HDhwQKa0RETU0Mh2sXO/fv2wevVqaDQaFBcXY+nSpQgMDMT+/ftRWFgIAFCpVEbPUalUuH79ep2v+yR9bLdS1vW2nTt0uiq5Y0imhKy379xGXkmR3DEkU8r/VSV5Ut5TjUZT57hsJTZs2DCjx/369UOfPn2wceNG9O/fHwAgCMZ3JBBF0WTaw+pb4cYiLy9PMetaVioq4i4YwIM7djSTO0a9nJ2coWndUu4Ykijp/6pS8D39twZzin2LFi3g4+OD/Px8qNVqAEBRkfFfmsXFxSZbZ0RE9ORqMCVWVVWFvLw8qNVqdOzYEWq1Gjk5OUbj+/btw8CBA2VMSUREDYlsuxM/+OADDB8+HB4eHoZjYr/99hsmTpwIQRAQERGBZcuWQaPRwNvbG4mJiXB0dERoaKhckYmIqIGRrcSuXbuGadOmoaSkBG5ubujXrx927NiBDh06AABmz56NyspKREVFQavVws/PDxkZGXBycpIrMhERNTCyldi6devqHBcEATExMYiJiXlMiYiISGkazDExIiIic7HEiIhIsVhiRESkWCwxIiJSLJYYEREpFkuMiIgUiyVGRESKxRIjIiLFYokREZFiscSIiEixzL7t1OXLl7Fnzx7cvHkTISEh8PDwwO+//45bt26hVatWaNpUtjtZERHRE8asxnnvvffw3//936iuroYgCOjVqxc8PDzw22+/4emnn0Z0dDQiIyOtlZWIiMiI5N2JK1asQEpKCiIjI/HNN99AFEXDmLOzM4KCgpCdnW2VkERERDWRXGKpqal45ZVXEBsbi549e5qMd+/eHefPn7doOCIiorpILrErV67A39+/1nEnJyeUlZVZJBQREZEUkkusdevWuHHjRq3jv/zyC9q2bWuRUERERFJIPrEjMDAQqampmDZtGgRBMBo7ceIE0tLSMGXKFIsHJCJTQpMmOFyqlzuGJLft3FFWKtY/YwPQ3rEJ2torIyvdJ7nE3nvvPfzf//0f/P398dJLL0EQBGzYsAGpqanIzs6Gp6cnoqKirJmViP6/4spqxB0qljuGJDpdFeztdXLHkCRxsApt7YX6Z6QGQ/LuRLVajR9//BHDhw9HVlYWRFHEpk2b8MMPP2D8+PH45z//CRcXFytGJSIiMmbWdWJubm5ISkpCUlISiouLodfr4ebmhiZNeOMPIiJ6/CS3T2RkJA4fPmx47ObmBnd3d0OBHTlyhBc6ExHRYyW5xDZu3IgLFy7UOn7x4kX8/e9/t0goIiIiKSy2H7C0tBT29vaWejkiIqJ61XlMbM+ePdi9e7fhcVZWFvLz803m02q1yMjIQI8ePSyfkIiIqBZ1llhubi7i4+MBAIIgICsrC1lZWTXOq9FoEBcXZ/mEREREtaizxN566y1MmTIFoijCx8cHiYmJGD16tNE8giCgefPmcHR0tGpQIiKih9VZYo6OjoZyOnHiBNzc3NC8efPHEoyIiKg+kq8T69ChgzVzEBERmU1yifXq1cvknokPEwQBx48ff9RMREREkkgusUGDBpmUWHV1NS5duoSDBw+i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TxTFepdR3wo3Fnl5eYpZ17JSEfb2OrljSKLTVcHevpncMepl29RWETkB5bynAODs5AxN65Zyx6iXkn7+rU1yiZ06dcriC7ezs8NTTz0FAOjbty+OHj2K1atXY968eQCAoqIiQ2kCQHFxscnWGRERPbka1HVier0ed+/eRceOHaFWq5GTk2MYq6qqwr59+zBw4EAZExIRUUMieUsM+PcJGD/99BNu3ryJDz/8ED169IBWq0VOTg6effZZtGnTRtJrffTRRwgMDET79u0NZx3u3r0b6enpEAQBERERWLZsGTQaDby9vZGYmAhHR0eEhob+qRUlIqLGR3KJlZWV4eWXX8bRo0fRokULVFRUYObMmQAAJycnvP/++5gwYQIWLlwo6fUKCwvxxhtvoKioCM7OzujevTs2b96MoUOHAgBmz56NyspKREVFQavVws/PDxkZGXBycvoTq0lERI2R5BKLjY3F2bNnsWnTJvTt2xfe3t6GMRsbG4wePRo7duyQXGIpKSl1jguCgJiYGH6OGRER1UryMbHvvvsOb7zxBl588cUazxD08vLC5cuXLRqOiIioLpJLTKvVonPnzrWOi6KIu3fvWiQUERGRFJJLrEOHDjh9+nSt43v27DHaxUhERGRtkkssLCwM69evx549ewzTHuxWXLNmDbKzszFp0iTLJyQiIqqF5BM73nnnHRw+fBhjxoyBt7c3BEFAdHQ0SktLUVhYiKCgIMyYMcOaWYmIiIxILjFbW1ukp6dj06ZN+OabbyAIAn7//Xf07t0bL7/8Ml555RWzbztFRET0KMy62Bm4v1sxLCzMGlmIiIjMYnaJAcDPP/9sOJ3e09MT3bt351YYERE9dmaV2JYtW7Bo0SJcu3YNoigCuH9yR7t27bBo0SJuoRER0WMlucQ2bNiAWbNmQaPRIDY2Ft7e3hBFEefPn8f69esxY8YM3L17F6+++qo18xIRERlILrHly5fDz88P2dnZaNbM+LOBpk+fjpEjR2L58uUsMSIiemwkXyd29epVhIWFmRQYADRr1gzjx4/HtWvXLBqOiIioLpJLzMfHB9evX691/Nq1a+jatatFQhEREUkhucQWL16M1NRUfP311yZjW7Zswfr16/Hxxx9bNBwREVFdJB8TW7lyJVxdXTF16lRER0ejc+fOEAQB+fn5uHnzJry8vLBixQqsWLHC8BxB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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fig, ax1 = plt.subplots()\n", "\n", "ax1.hist(simulated_medians, bins=np.arange(0.5, 5, 1), density=True, alpha=0.8, ec='white')\n", "\n", "y_vals = ax1.get_yticks()\n", "\n", "y_label = 'Percent per ' + (unit if unit else 'unit')\n", "\n", "x_label = 'Sample Median'\n", "\n", "ax1.set_yticklabels(['{:g}'.format(x * 100) for x in y_vals])\n", "\n", "plt.ylabel(y_label)\n", "\n", "plt.xlabel(x_label)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can see that the sample median is very likely to be about 2, which was the value of the population median. Since samples of 1000 flight delays are likely to resemble the population of delays, it is not surprising that the median delays of those samples should be close to the median delay in the population.\n", "\n", "This is an example of how a statistic can provide a good estimate of a parameter." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The Power of Simulation\n", "\n", "If we could generate all possible random samples of size 1000, we would know all possible values of the statistic (the sample median), as well as the probabilities of all those values. We could visualize all the values and probabilities in the probability histogram of the statistic.\n", "\n", "But in many situations including this one, the number of all possible samples is large enough to exceed the capacity of the computer, and purely mathematical calculations of the probabilities can be intractably difficult.\n", "\n", "This is where empirical histograms come in.\n", "\n", "We know that by the Law of Averages, the empirical histogram of the statistic is likely to resemble the probability histogram of the statistic, if the sample size is large and if you repeat the random sampling process numerous times.\n", "\n", "This means that simulating random processes repeatedly is a way of approximating probability distributions *without figuring out the probabilities mathematically or generating all possible random samples*. Thus computer simulations become a powerful tool in data science. They can help data scientists understand the properties of random quantities that would be complicated to analyze in other ways." ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 1 }