{ "cells": [ { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Python for Statistical Modelling\n", "\n", "Feng Li\n", "\n", "School of Statistics and Mathematics\n", "\n", "Central University of Finance and Economics\n", "\n", "[feng.li@cufe.edu.cn](mailto:feng.li@cufe.edu.cn)\n", "\n", "[https://feng.li/python](https://feng.li/python)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "# Statistical Data Modeling\n", "\n", "- The curricula for most introductory statisics courses are mostly focused on conducting **statistical hypothesis tests** as the primary means for interest: t-tests, chi-squared tests, analysis of variance, etc. Such tests seek to esimate whether groups are \"significantly different \"or effects are \"statistically significant\", a concept that is poorly understood, and hence, often misused by practioners. Even when interpreted *correctly*, statistical significance (as characterized by a small p-value) is a questionable goal for statistical inference, as it is not a measure of evidence in any statistical sense." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "\n", "- A far more powerful approach to statistical analysis involves building flexible **models** with the overarching aim of *estimating* quantities of interest. This section of the tutorial illustrates how to use Python to build statistical models of low to moderate difficulty from scratch, and use them to extract estimates and associated measures of uncertainty. These estimates can then be passed on to individuals with domain expertise who can then appraise them for \"real-world\" significance." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Regression models with LSE\n", "\n", "A general, primary goal of many statistical data analysis tasks is to relate the influence of one variable on another. For example, we may wish to know how different medical interventions influence the incidence or duration of disease, or perhaps a how baseball player's performance varies as a function of age." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAASIElEQVR4nO3df4xl5X3f8fdnASsZQoRTpoRfu+NWCIlYAaPR2i4qskNssQSZNIpaVtPESS2NHeHKbiu1JCul7R9IldqkVYJlNLUptjrBcWyToGRtg9JUtiX/mt2AWYJdb+jusl7KjmMF7I4ld823f9yzYhjfYXbuucOdeXi/pKtzznOee873aLWfPfvc8yNVhSSpXbsmXYAkaWsZ9JLUOINekhpn0EtS4wx6SWrc+ZMuYJhLLrmkZmZmJl2GJO0Yhw4d+nZVTQ9bty2DfmZmhqWlpUmXIUk7RpLj661z6EaSGmfQS1LjDHpJapxBL0mNM+glqXEGvSRN2uIizMzArl2D6eLiWDe/LS+vlKRXjcVFmJ+HlZXB8vHjg2WAubmx7MIzekmapAMHXgz5s1ZWBu1jYtBL0iSdOLG59hEY9JI0Sbt3b659BAa9JE3S3XfD1NRL26amBu1jYtBL0iTNzcHCAuzZA8lgurAwth9iwatuJGny5ubGGuxreUYvSY0z6CWpcQa9JDVuwzH6JPcBtwGnq+r1XdsfAtd0XS4G/raqrh/y3WPAd4EfAmeqanYsVUuSztm5/Bh7P3AP8NGzDVX1T87OJ/kd4LmX+f5bq+rboxYoSepnw6Cvqs8lmRm2LkmAfwz83JjrkiSNSd8x+n8IPFtV31xnfQEPJzmUZP7lNpRkPslSkqXl5eWeZUmSzuob9PuBB15m/Y1VdQOwD7gzyU3rdayqhaqararZ6emhLzKXJI1g5KBPcj7wS8Afrtenqk5109PAg8DeUfcnSRpNnzP6nwe+XlUnh61McmGSi87OA28HjvTYnyRpBBsGfZIHgC8C1yQ5meRd3ao7WDNsk+TyJAe7xUuBLyR5DPgK8GdV9ZnxlS5JOhfnctXN/nXaf21I2yng1m7+KeC6nvVJknryzlhJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXtLmLS7CzAzs2jWYLi5OuiK9jA2fRy9JL7G4CPPzsLIyWD5+fLAMMDc3ubq0Ls/oJW3OgQMvhvxZKyuDdm1LBr2kzTlxYnPtmrhzeWfsfUlOJzmyqu3fJflWkke7z63rfPeWJN9IcjTJXeMsXNKE7N69uXZN3Lmc0d8P3DKk/T9X1fXd5+DalUnOAz4A7AOuBfYnubZPsZK2gbvvhqmpl7ZNTQ3atS1tGPRV9TngOyNsey9wtKqeqqofAB8Dbh9hO5K2k7k5WFiAPXsgGUwXFvwhdhvrM0b/3iRf64Z2Xjtk/RXA06uWT3ZtQyWZT7KUZGl5eblHWZK23NwcHDsGL7wwmBry29qoQf9B4O8D1wPPAL8zpE+GtNV6G6yqhaqararZ6enpEcuSJK01UtBX1bNV9cOqegH4rwyGadY6CVy1avlK4NQo+5MkjW6koE9y2arFfwQcGdLtq8DVSV6X5DXAHcBDo+xPkjS6De+MTfIA8BbgkiQngX8LvCXJ9QyGYo4B7+76Xg58qKpuraozSd4LfBY4D7ivqp7YioOQJK0vVesOm0/M7OxsLS0tTboMSdoxkhyqqtlh67wzVpIaZ9BLUuMMeulc+Fhe7WA+pljaiI/l1Q7nGb20ER/Lqx3OoJc24mN5tcMZ9NJGfCyvdjiDXtqIj+XVDmfQSxvxsbza4bzqRjoXc3MGu3Ysz+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4wx6SWqcQS9JjTPoJalxGwZ9kvuSnE5yZFXbf0zy9SRfS/JgkovX+e6xJI8neTSJL4GVpAk4lzP6+4Fb1rQ9Ary+qn4W+F/Ab77M999aVdev99JaSdLW2jDoq+pzwHfWtD1cVWe6xS8BV25BbZKkMRjHGP0/Az69zroCHk5yKMn8y20kyXySpSRLy8vLYyhLkgQ9gz7JAeAMsN6bkm+sqhuAfcCdSW5ab1tVtVBVs1U1Oz093acsSdIqIwd9kncCtwFzVVXD+lTVqW56GngQ2Dvq/iRJoxkp6JPcAvwb4B1VtbJOnwuTXHR2Hng7cGRYX0nS1jmXyysfAL4IXJPkZJJ3AfcAFwGPdJdO3tv1vTzJwe6rlwJfSPIY8BXgz6rqM1tyFJKkdW34hqmq2j+k+cPr9D0F3NrNPwVc16s6SVJv3hkrSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL+1Ui4swMwO7dg2mi+s9W1CvdhveGStpG1pchPl5WOkeNXX8+GAZYG5ucnVpW/KMXtqJDhx4MeTPWlkZtEtrGPTSTnTixOba9apm0Es70e7dm2vXq5pBL+1Ed98NU1MvbZuaGrRLaxj00k40NwcLC7BnDySD6cKCP8RqKK+6kXaquTmDXefEM3pJapxBr8nyph9py53LO2PvS3I6yZFVbT+V5JEk3+ymr13nu7ck+UaSo0nuGmfhasDZm36OH4eqF2/6MeylsTqXM/r7gVvWtN0F/HlVXQ38ebf8EknOAz4A7AOuBfYnubZXtWqLN/1Ir4gNg76qPgd8Z03z7cBHuvmPAL845Kt7gaNV9VRV/QD4WPc9acCbfqRXxKhj9JdW1TMA3fTvDulzBfD0quWTXdtQSeaTLCVZWl5eHrEs7Sje9CO9Irbyx9gMaav1OlfVQlXNVtXs9PT0FpalbcObfqRXxKhB/2ySywC66ekhfU4CV61avhI4NeL+1CJv+pFeEaMG/UPAO7v5dwJ/MqTPV4Grk7wuyWuAO7rvSS+am4Njx+CFFwZTQ14au3O5vPIB4IvANUlOJnkX8B+AtyX5JvC2bpkklyc5CFBVZ4D3Ap8FngQ+XlVPbM1hSJLWs+EjEKpq/zqrbh7S9xRw66rlg8DBkauTJPXmnbGS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUOINekho3ctAnuSbJo6s+zyd5/5o+b0ny3Ko+v927YknSpmz4ztj1VNU3gOsBkpwHfAt4cEjXz1fVbaPuR5LUz7iGbm4G/rqqjo9pe5KkMRlX0N8BPLDOujcneSzJp5P8zHobSDKfZCnJ0vLy8pjKkiT1DvokrwHeAfzRkNWHgT1VdR3w+8Afr7edqlqoqtmqmp2enu5bliSpM44z+n3A4ap6du2Kqnq+qr7XzR8ELkhyyRj2KUk6R+MI+v2sM2yT5KeTpJvf2+3vb8awT0nSORr5qhuAJFPA24B3r2p7D0BV3Qv8MvAbSc4A3wfuqKrqs09J0ub0CvqqWgH+zpq2e1fN3wPc02cfkqR+vDNWkhpn0EtS4wx6SWqcQS9JjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJalyvoE9yLMnjSR5NsjRkfZL8XpKjSb6W5IY++5MkbV6vl4N33lpV315n3T7g6u7zRuCD3VSS9ArZ6qGb24GP1sCXgIuTXLbF+5QkrdI36At4OMmhJPND1l8BPL1q+WTX9iOSzCdZSrK0vLzcsyxJ0ll9g/7GqrqBwRDNnUluWrM+Q75TwzZUVQtVNVtVs9PT0z3LkiSd1Svoq+pUNz0NPAjsXdPlJHDVquUrgVN99ilJ2pyRgz7JhUkuOjsPvB04sqbbQ8CvdlffvAl4rqqeGblaSdKm9bnq5lLgwSRnt/MHVfWZJO8BqKp7gYPArcBRYAX49X7lSpI2a+Sgr6qngOuGtN+7ar6AO0fdhySpP++MlaTGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGmfQS1LjDHpJapxBL0mNM+glqXEGvSQ1zqCXpMYZ9JLUuD4vB78qyV8keTLJE0neN6TPW5I8l+TR7vPb/cqVJG1Wn5eDnwH+VVUdTnIRcCjJI1X1V2v6fb6qbuuxH0lSDyOf0VfVM1V1uJv/LvAkcMW4CpMkjcdYxuiTzABvAL48ZPWbkzyW5NNJfuZltjGfZCnJ0vLy8jjKkiQxhqBP8hPAJ4H3V9Xza1YfBvZU1XXA7wN/vN52qmqhqmaranZ6erpvWZKkTq+gT3IBg5BfrKpPrV1fVc9X1fe6+YPABUku6bNPSdLm9LnqJsCHgSer6nfX6fPTXT+S7O329zej7lOStHl9rrq5EfgV4PEkj3ZtvwXsBqiqe4FfBn4jyRng+8AdVVU99ilJ2qSRg76qvgBkgz73APeMug9JUn/eGStJjTPoJalxBr0kNc6gl6TGGfSS1DiDXpIaZ9BLUuMMeklqnEEvSY0z6CWpcQa9JDXOoJekxhn0ktQ4g16SGtdO0C8uwswM7No1mC4uTroiSdoW+rx4ZPtYXIT5eVhZGSwfPz5YBpibm1xdkrQNtHFGf+DAiyF/1srKoF2SXuXaCPoTJzbXLkmvIr2CPsktSb6R5GiSu4asT5Lf69Z/LckNffa3rt27N9cuSa8iIwd9kvOADwD7gGuB/UmuXdNtH3B195kHPjjq/l7W3XfD1NRL26amBu2S9CrX54x+L3C0qp6qqh8AHwNuX9PnduCjNfAl4OIkl/XY53Bzc7CwAHv2QDKYLiz4Q6wk0e+qmyuAp1ctnwTeeA59rgCeWbuxJPMMzvrZPcqQy9ycwS5JQ/Q5o8+Qthqhz6CxaqGqZqtqdnp6ukdZkqTV+gT9SeCqVctXAqdG6CNJ2kJ9gv6rwNVJXpfkNcAdwENr+jwE/Gp39c2bgOeq6keGbSRJW2fkMfqqOpPkvcBngfOA+6rqiSTv6dbfCxwEbgWOAivAr/cvWZK0Gb0egVBVBxmE+eq2e1fNF3Bnn31IkvrJIIu3lyTLwPFVTZcA355QOVultWNq7XigvWNq7XigvWPqczx7qmrolSzbMujXSrJUVbOTrmOcWjum1o4H2jum1o4H2jumrTqeNp51I0lal0EvSY3bKUG/MOkCtkBrx9Ta8UB7x9Ta8UB7x7Qlx7MjxuglSaPbKWf0kqQRGfSS1LhtHfRJrkryF0meTPJEkvdNuqY+kvxYkq8keaw7nn8/6ZrGJcl5Sf4yyZ9Oupa+khxL8niSR5MsTbqecUhycZJPJPl69/fpzZOuaVRJrun+bM5+nk/y/knX1VeSf9HlwpEkDyT5sbFtezuP0XfPrr+sqg4nuQg4BPxiVf3VhEsbSZIAF1bV95JcAHwBeF/3rP4dLcm/BGaBn6yq2yZdTx9JjgGzVdXMjThJPgJ8vqo+1D2baqqq/nbCZfXWvQDpW8Abq+r4Rv23qyRXMMiDa6vq+0k+DhysqvvHsf1tfUZfVc9U1eFu/rvAkwyeZ78jdS9g+V63eEH32b7/0p6jJFcCvwB8aNK16Ecl+UngJuDDAFX1gxZCvnMz8Nc7OeRXOR/48STnA1OM8Um/2zroV0syA7wB+PKES+mlG+J4FDgNPFJVO/p4Ov8F+NfACxOuY1wKeDjJoe6FODvd3wOWgf/WDa99KMmFky5qTO4AHph0EX1V1beA/wScYPBipueq6uFxbX9HBH2SnwA+Cby/qp6fdD19VNUPq+p6Bs/m35vk9RMuqZcktwGnq+rQpGsZoxur6gYG7zy+M8lNky6op/OBG4APVtUbgP8L3DXZkvrrhqDeAfzRpGvpK8lrGbx69XXA5cCFSf7puLa/7YO+G8v+JLBYVZ+adD3j0v3X+X8Ct0y2kt5uBN7RjWt/DPi5JP99siX1U1Wnuulp4EEG70feyU4CJ1f97/ETDIJ/p9sHHK6qZyddyBj8PPC/q2q5qv4f8CngH4xr49s66LsfLz8MPFlVvzvpevpKMp3k4m7+xxn84X59okX1VFW/WVVXVtUMg/9G/4+qGtuZyCstyYXdD/90wxtvB45Mtqp+qur/AE8nuaZruhnYkRc0rLGfBoZtOieANyWZ6nLvZga/SY5Fr+fRvwJuBH4FeLwb1wb4re45+DvRZcBHuisFdgEfr6odfzliYy4FHhz8XeN84A+q6jOTLWks/jmw2A13PMUOfwlQkingbcC7J13LOFTVl5N8AjgMnAH+kjE+DmFbX14pSepvWw/dSJL6M+glqXEGvSQ1zqCXpMYZ9JLUOINekhpn0EtS4/4/xqEaDYbnkCkAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "x = np.array([2.2, 4.3, 5.1, 5.8, 6.4, 8.0])\n", "y = np.array([0.4, 10.1, 14.0, 10.9, 15.4, 18.5])\n", "plt.plot(x,y,'ro')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "We can build a model to characterize the relationship between $X$ and $Y$, recognizing that additional factors other than $X$ (the ones we have measured or are interested in) may influence the response variable $Y$.\n", "\n", "\n", "$y_i = f(x_i) + \\epsilon_i$\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "where $f$ is some function, for example a linear function:\n", "\n", " \n", "$y_i = \\beta_0 + \\beta_1 x_i + \\epsilon_i$\n", "\n", "\n", "and $\\epsilon_i$ accounts for the difference between the observed response $y_i$ and its prediction from the model $\\hat{y_i} = \\beta_0 + \\beta_1 x_i$. This is sometimes referred to as **process uncertainty**." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "We would like to select $\\beta_0, \\beta_1$ so that the difference between the predictions and the observations is zero, but this is not usually possible. Instead, we choose a reasonable criterion: ***the smallest sum of the squared differences between $\\hat{y}$ and $y$***.\n", "\n", " \n", "$$R^2 = \\sum_i (y_i - [\\beta_0 + \\beta_1 x_i])^2 = \\sum_i \\epsilon_i^2 $$ \n", "\n", "\n", "Squaring serves two purposes: (1) to prevent positive and negative values from cancelling each other out and (2) to strongly penalize large deviations. Whether the latter is a good thing or not depends on the goals of the analysis.\n", "\n", "In other words, we will select the parameters that minimize the squared error of the model." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "def ss(theta, x, y): \n", " return np.sum((y - theta[0] - theta[1]*x) ** 2)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "333.35" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ss([0,1],x,y)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 21.375000\n", " Iterations: 79\n", " Function evaluations: 153\n" ] }, { "data": { "text/plain": [ "(-4.350013603887088, 3.0000002915386412)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from scipy.optimize import fmin\n", "\n", "b0,b1 = fmin(ss, [0,1], args=(x,y))\n", "b0,b1" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(x, y, 'ro')\n", "plt.plot([0,10], [b0, b0+b1*10])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "(0.0, 20.0)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(x, y, 'ro')\n", "plt.plot([0,10], [b0, b0+b1*10])\n", "for xi, yi in zip(x,y):\n", " plt.plot([xi]*2, [yi, b0+b1*xi], 'k:')\n", "plt.xlim(2, 9); plt.ylim(0, 20)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Minimizing the sum of squares is not the only criterion we can use; it is just a very popular (and successful) one. For example, we can try to minimize the sum of absolute differences:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 10.162463\n", " Iterations: 39\n", " Function evaluations: 77\n", "0.0015717044449411344 2.3123174318112456\n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def sabs(theta, x, y): \n", " return np.sum(np.abs(y - theta[0] - theta[1]*x))\n", "\n", "b0,b1 = fmin(sabs, [0,1], args=(x,y))\n", "print(b0, b1)\n", "plt.plot(x, y, 'ro')\n", "plt.plot([0,10], [b0, b0+b1*10])" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "We are not restricted to a straight-line regression model; we can represent a curved relationship between our variables by introducing **polynomial** terms. For example, a cubic model:\n", "\n", " \n", "$y_i = \\beta_0 + \\beta_1 x_i + \\beta_2 x_i^2 + \\epsilon_i$\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 14.001110\n", " Iterations: 198\n", " Function evaluations: 372\n", "-11.074818603916224 6.05769759480417 -0.3026810570883315\n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def ss2(theta, x, y): \n", " return np.sum((y - theta[0] - theta[1]*x - theta[2]*(x**2)) ** 2)\n", "\n", "b0,b1,b2 = fmin(ss2, [1,1,-1], args=(x,y))\n", "print(b0, b1, b2)\n", "plt.plot(x, y, 'ro')\n", "xvals = np.linspace(0, 10, 100)\n", "plt.plot(xvals, b0 + b1*xvals + b2*(xvals**2))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Although polynomial model characterizes a nonlinear relationship, it is a linear problem in terms of estimation. That is, the regression model $f(y | x)$ is linear in the parameters.\n", "\n", "For some data, it may be reasonable to consider polynomials of order>2. For example, consider the relationship between the number of home runs a baseball player hits and the number of runs batted in (RBI) they accumulate; clearly, the relationship is positive, but we may not expect a linear relationship." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 4274.128398\n", " Iterations: 230\n", " Function evaluations: 407\n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import pandas as pd\n", "\n", "def ss3(theta, x, y): \n", " return np.sum((y - theta[0] - theta[1]*x - theta[2]*(x**2) - theta[3]*(x**3)) ** 2)\n", "\n", "bb = pd.read_csv(\"data/baseball.csv\", index_col=0)\n", "plt.plot(bb.hr, bb.rbi, 'r.')\n", "b0,b1,b2,b3 = fmin(ss3, [0,1,-1,0], args=(bb.hr, bb.rbi))\n", "xvals = np.arange(40)\n", "plt.plot(xvals, b0 + b1*xvals + b2*(xvals**2) + b3*(xvals**3))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Of course, we need not fit least squares models by hand. The `statsmodels` package implements least squares models that allow for model fitting in a single line:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/lib/python3/dist-packages/statsmodels/stats/stattools.py:74: ValueWarning: omni_normtest is not valid with less than 8 observations; 6 samples were given.\n", " warn(\"omni_normtest is not valid with less than 8 observations; %i \"\n" ] }, { "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", "
OLS Regression Results
Dep. Variable: y R-squared: 0.891
Model: OLS Adj. R-squared: 0.864
Method: Least Squares F-statistic: 32.67
Date: Sat, 13 Nov 2021 Prob (F-statistic): 0.00463
Time: 19:31:55 Log-Likelihood: -12.325
No. Observations: 6 AIC: 28.65
Df Residuals: 4 BIC: 28.23
Df Model: 1
Covariance Type: nonrobust
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
const -4.3500 2.937 -1.481 0.213 -12.505 3.805
x1 3.0000 0.525 5.716 0.005 1.543 4.457
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Omnibus: nan Durbin-Watson: 2.387
Prob(Omnibus): nan Jarque-Bera (JB): 0.570
Skew: 0.359 Prob(JB): 0.752
Kurtosis: 1.671 Cond. No. 17.9


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: y R-squared: 0.891\n", "Model: OLS Adj. R-squared: 0.864\n", "Method: Least Squares F-statistic: 32.67\n", "Date: Sat, 13 Nov 2021 Prob (F-statistic): 0.00463\n", "Time: 19:31:55 Log-Likelihood: -12.325\n", "No. Observations: 6 AIC: 28.65\n", "Df Residuals: 4 BIC: 28.23\n", "Df Model: 1 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "const -4.3500 2.937 -1.481 0.213 -12.505 3.805\n", "x1 3.0000 0.525 5.716 0.005 1.543 4.457\n", "==============================================================================\n", "Omnibus: nan Durbin-Watson: 2.387\n", "Prob(Omnibus): nan Jarque-Bera (JB): 0.570\n", "Skew: 0.359 Prob(JB): 0.752\n", "Kurtosis: 1.671 Cond. No. 17.9\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import statsmodels.api as sm\n", "\n", "straight_line = sm.OLS(y, sm.add_constant(x)).fit()\n", "straight_line.summary()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/lib/python3/dist-packages/statsmodels/stats/stattools.py:74: ValueWarning: omni_normtest is not valid with less than 8 observations; 6 samples were given.\n", " warn(\"omni_normtest is not valid with less than 8 observations; %i \"\n" ] }, { "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", "
OLS Regression Results
Dep. Variable: y R-squared: 0.929
Model: OLS Adj. R-squared: 0.881
Method: Least Squares F-statistic: 19.50
Date: Sat, 13 Nov 2021 Prob (F-statistic): 0.0191
Time: 19:31:55 Log-Likelihood: -11.056
No. Observations: 6 AIC: 28.11
Df Residuals: 3 BIC: 27.49
Df Model: 2
Covariance Type: nonrobust
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [0.025 0.975]
Intercept -11.0748 6.013 -1.842 0.163 -30.211 8.062
x 6.0577 2.482 2.441 0.092 -1.840 13.955
I(x ** 2) -0.3027 0.241 -1.257 0.298 -1.069 0.464
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Omnibus: nan Durbin-Watson: 2.711
Prob(Omnibus): nan Jarque-Bera (JB): 0.655
Skew: -0.809 Prob(JB): 0.721
Kurtosis: 2.961 Cond. No. 270.


Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified." ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: y R-squared: 0.929\n", "Model: OLS Adj. R-squared: 0.881\n", "Method: Least Squares F-statistic: 19.50\n", "Date: Sat, 13 Nov 2021 Prob (F-statistic): 0.0191\n", "Time: 19:31:55 Log-Likelihood: -11.056\n", "No. Observations: 6 AIC: 28.11\n", "Df Residuals: 3 BIC: 27.49\n", "Df Model: 2 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err t P>|t| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "Intercept -11.0748 6.013 -1.842 0.163 -30.211 8.062\n", "x 6.0577 2.482 2.441 0.092 -1.840 13.955\n", "I(x ** 2) -0.3027 0.241 -1.257 0.298 -1.069 0.464\n", "==============================================================================\n", "Omnibus: nan Durbin-Watson: 2.711\n", "Prob(Omnibus): nan Jarque-Bera (JB): 0.655\n", "Skew: -0.809 Prob(JB): 0.721\n", "Kurtosis: 2.961 Cond. No. 270.\n", "==============================================================================\n", "\n", "Notes:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from statsmodels.formula.api import ols as OLS\n", "\n", "data = pd.DataFrame(dict(x=x, y=y))\n", "cubic_fit = OLS('y ~ x + I(x**2)', data).fit()\n", "\n", "cubic_fit.summary()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### `statsmodels`\n", "\n", "[`statsmodels`](https://statsmodels.org) is a Python module that provides classes and functions for the estimation of many different statistical models, as well as for conducting statistical tests, and statistical data exploration. It supports\n", "\n", "- Statistics and Tests\n", "- Regression\n", "- Generalized Linear Models\n", "- Discrete and Count Models\n", "- Factor analysis, Principal Component Analysis\n", "- Time Series Models\n", "- ...\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Model Selection\n", "\n", "How do we choose among competing models for a given dataset? More parameters are not necessarily better, from the standpoint of model fit. For example, fitting a 9-th order polynomial to the sample data from the above example certainly results in an overfit." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 7.015262\n", " Iterations: 663\n", " Function evaluations: 983\n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def calc_poly(params, data):\n", " x = np.c_[[data**i for i in range(len(params))]]\n", " return np.dot(params, x)\n", " \n", "ssp = lambda theta, x, y: np.sum((y - calc_poly(theta, x)) ** 2)\n", "betas = fmin(ssp, np.zeros(10), args=(x,y), maxiter=1e6)\n", "plt.plot(x, y, 'ro')\n", "xvals = np.linspace(0, max(x), 100)\n", "plt.plot(xvals, calc_poly(betas, xvals))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "One approach is to use an information-theoretic criterion to select the most appropriate model. For example **Akaike's Information Criterion (AIC)** balances the fit of the model (in terms of the likelihood) with the number of parameters required to achieve that fit. We can easily calculate AIC as:\n", "\n", "$$AIC = n \\log(\\hat{\\sigma}^2) + 2p$$\n", "\n", "where $p$ is the number of parameters in the model and $\\hat{\\sigma}^2 = RSS/(n-p-1)$.\n", "\n", "Notice that as the number of parameters increase, the residual sum of squares goes down, but the second term (a penalty) increases.\n", "\n", "To apply AIC to model selection, we choose the model that has the **lowest** AIC value." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 21.375000\n", " Iterations: 79\n", " Function evaluations: 153\n", "Optimization terminated successfully.\n", " Current function value: 14.001110\n", " Iterations: 198\n", " Function evaluations: 372\n", "15.781658357173654 17.675936801895737\n" ] } ], "source": [ "n = len(x)\n", "\n", "aic = lambda rss, p, n: n * np.log(rss/(n-p-1)) + 2*p\n", "\n", "RSS1 = ss(fmin(ss, [0,1], args=(x,y)), x, y)\n", "RSS2 = ss2(fmin(ss2, [1,1,-1], args=(x,y)), x, y)\n", "\n", "print(aic(RSS1, 2, n), aic(RSS2, 3, n))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Hence, we would select the 2-parameter (linear) model." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Logistic Regression\n", "\n", "Fitting a line to the relationship between two variables using the least squares approach is sensible when the variable we are trying to predict is continuous, but what about when the data are dichotomous?\n", "\n", "- male/female\n", "- pass/fail\n", "- died/survived\n", "\n", "Let's consider the problem of predicting survival in the Titanic disaster, based on our available information. For example, lets say that we want to predict survival as a function of the fare paid for the journey." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "0 Allen, Miss. Elisabeth Walton\n", "1 Allison, Master. Hudson Trevor\n", "2 Allison, Miss. Helen Loraine\n", "3 Allison, Mr. Hudson Joshua Creighton\n", "4 Allison, Mrs. Hudson J C (Bessie Waldo Daniels)\n", " ... \n", "1304 Zabour, Miss. Hileni\n", "1305 Zabour, Miss. Thamine\n", "1306 Zakarian, Mr. Mapriededer\n", "1307 Zakarian, Mr. Ortin\n", "1308 Zimmerman, Mr. Leo\n", "Name: name, Length: 1309, dtype: object" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "titanic = pd.read_excel(\"data/titanic.xls\", \"titanic\")\n", "titanic.name" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/fli/.local/lib/python3.9/site-packages/pandas/core/arraylike.py:364: RuntimeWarning: divide by zero encountered in log\n", " result = getattr(ufunc, method)(*inputs, **kwargs)\n" ] }, { "data": { "text/plain": [ "Text(0.5, 0, 'log(fare)')" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "jitter = np.random.normal(scale=0.02, size=len(titanic))\n", "plt.scatter(np.log(titanic.fare), titanic.survived + jitter, alpha=0.3)\n", "plt.yticks([0,1])\n", "plt.ylabel(\"survived\")\n", "plt.xlabel(\"log(fare)\")" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "I have added random jitter on the y-axis to help visualize the density of the points, and have plotted fare on the log scale.\n", "\n", "Clearly, fitting a line through this data makes little sense, for several reasons. First, for most values of the predictor variable, the line would predict values that are not zero or one. Second, it would seem odd to choose least squares (or similar) as a criterion for selecting the best line." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 277.621917\n", " Iterations: 55\n", " Function evaluations: 103\n" ] } ], "source": [ "x = np.log(titanic.fare[titanic.fare>0])\n", "y = titanic.survived[titanic.fare>0]\n", "betas_titanic = fmin(ss, [1,1], args=(x,y))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "jitter = np.random.normal(scale=0.02, size=len(titanic))\n", "plt.scatter(np.log(titanic.fare), titanic.survived + jitter, alpha=0.3)\n", "plt.yticks([0,1])\n", "plt.ylabel(\"survived\")\n", "plt.xlabel(\"log(fare)\")\n", "plt.plot([0,7], [betas_titanic[0], betas_titanic[0] + betas_titanic[1]*7.])" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "If we look at this data, we can see that for most values of `fare`, there are some individuals that survived and some that did not. However, notice that the cloud of points is denser on the \"survived\" (y=1) side for larger values of fare than on the \"died\" (y=0) side." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Stochastic model\n", "\n", "Rather than model the binary outcome explicitly, it makes sense instead to model the *probability* of death or survival in a **stochastic** model. Probabilities are measured on a continuous [0,1] scale, which may be more amenable for prediction using a regression line. We need to consider a different probability model for this exerciese however; let's consider the **Bernoulli** distribution as a generative model for our data:\n", "\n", "
\n", "$$f(y|p) = p^{y} (1-p)^{1-y}$$ \n", "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "where $y = \\{0,1\\}$ and $p \\in [0,1]$. So, this model predicts whether $y$ is zero or one as a function of the probability $p$. Notice that when $y=1$, the $1-p$ term disappears, and when $y=0$, the $p$ term disappears.\n", "\n", "So, the model we want to fit should look something like this:\n", "\n", "
\n", "$$p_i = f(\\beta_0 + \\beta_1 x_i )$$\n", "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "However, since $p$ is constrained to be between zero and one, it is easy to see where a linear (or polynomial) model might predict values outside of this range. We can modify this model sligtly by using a **link function** to transform the probability to have an unbounded range on a new scale. Specifically, we can use a **logit transformation** as our link function:\n", "\n", "
\n", "$$\\text{logit}(p_i) = \\log\\left[\\frac{p_i}{1-p_i}\\right] = \\beta_0 + \\beta_1 x_i $$\n", "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Here's a plot of $p/(1-p)$" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_139954/2408501820.py:3: RuntimeWarning: divide by zero encountered in true_divide\n", " plt.plot(unit_interval/(1-unit_interval), unit_interval)\n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "logit = lambda p: np.log(p/(1.-p))\n", "unit_interval = np.linspace(0,1)\n", "plt.plot(unit_interval/(1-unit_interval), unit_interval)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "And here's the logit function:" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/tmp/ipykernel_139954/2408501820.py:1: RuntimeWarning: divide by zero encountered in true_divide\n", " logit = lambda p: np.log(p/(1.-p))\n", "/tmp/ipykernel_139954/2408501820.py:1: RuntimeWarning: divide by zero encountered in log\n", " logit = lambda p: np.log(p/(1.-p))\n" ] }, { "data": { "text/plain": [ "[]" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(logit(unit_interval), unit_interval)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "The inverse of the logit transformation is:\n", "\n", "\n", "$$p_i = \\frac{1}{1 + \\exp(-(\\beta_0 + \\beta_1 x_i))}$$\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "So, now our model is:\n", "\n", "$$\\text{logit}(p_i) = \\beta_0 + \\beta_1 x_i $$\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "We can fit this model using maximum likelihood. Our likelihood, again based on the Bernoulli model is:\n", "\n", "\n", "\n", "$$L(y|p) = \\prod_{i=1}^n p_i^{y_i} (1-p_i)^{1-y_i}$$\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "which, on the log scale is:\n", "\n", "
\n", "$$l(y|p) = \\sum_{i=1}^n y_i \\log(p_i) + (1-y_i)\\log(1-p_i)$$\n", "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "We can easily implement this in Python, keeping in mind that `fmin` minimizes, rather than maximizes functions:" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "invlogit = lambda x: 1. / (1 + np.exp(-x))\n", "\n", "def logistic_like(theta, x, y):\n", " p = invlogit(theta[0] + theta[1] * x)\n", " # Return negative of log-likelihood\n", " return -np.sum(y * np.log(p) + (1-y) * np.log(1 - p))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Remove null values from variables" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "x, y = titanic[titanic.fare.notnull()][['fare', 'survived']].values.T" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "... and fit the model." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization terminated successfully.\n", " Current function value: 827.015955\n", " Iterations: 47\n", " Function evaluations: 93\n" ] }, { "data": { "text/plain": [ "(-0.8823898452833819, 0.012452067664164127)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "b0 ,b1 = fmin(logistic_like, [0.5,0], args=(x,y))\n", "b0, b1" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "jitter = np.random.normal(scale=0.01, size=len(x))\n", "plt.plot(x, y+jitter, 'r.', alpha=0.3)\n", "plt.yticks([0,.25,.5,.75,1])\n", "xvals = np.linspace(0, 300)\n", "plt.plot(xvals, invlogit(b0+b1*xvals))" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "As with our least squares model, we can easily fit logistic regression models in `statsmodels`, in this case using the `GLM` (generalized linear model) class with a binomial error distribution specified." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "slideshow": { "slide_type": "slide" } }, "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", "
Generalized Linear Model Regression Results
Dep. Variable: y No. Observations: 1308
Model: GLM Df Residuals: 1306
Model Family: Binomial Df Model: 1
Link Function: logit Scale: 1.0000
Method: IRLS Log-Likelihood: -827.02
Date: Sat, 13 Nov 2021 Deviance: 1654.0
Time: 19:31:55 Pearson chi2: 1.33e+03
No. Iterations: 5
Covariance Type: nonrobust
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err z P>|z| [0.025 0.975]
const -0.8824 0.076 -11.684 0.000 -1.030 -0.734
x1 0.0125 0.002 7.762 0.000 0.009 0.016
" ], "text/plain": [ "\n", "\"\"\"\n", " Generalized Linear Model Regression Results \n", "==============================================================================\n", "Dep. Variable: y No. Observations: 1308\n", "Model: GLM Df Residuals: 1306\n", "Model Family: Binomial Df Model: 1\n", "Link Function: logit Scale: 1.0000\n", "Method: IRLS Log-Likelihood: -827.02\n", "Date: Sat, 13 Nov 2021 Deviance: 1654.0\n", "Time: 19:31:55 Pearson chi2: 1.33e+03\n", "No. Iterations: 5 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err z P>|z| [0.025 0.975]\n", "------------------------------------------------------------------------------\n", "const -0.8824 0.076 -11.684 0.000 -1.030 -0.734\n", "x1 0.0125 0.002 7.762 0.000 0.009 0.016\n", "==============================================================================\n", "\"\"\"" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "logistic = sm.GLM(y, sm.add_constant(x), family=sm.families.Binomial()).fit()\n", "logistic.summary()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Estimation\n", "==========\n", "\n", "An recurring statistical problem is finding estimates of the relevant parameters that correspond to the distribution that best represents our data.\n", "\n", "In **parametric** inference, we specify *a priori* a suitable distribution, then choose the parameters that best fit the data.\n", "\n", "* e.g. $\\mu$ and $\\sigma^2$ in the case of the normal distribution" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "(array([7., 2., 3., 7., 1., 2., 1., 1., 0., 1.]),\n", " array([0.90326139, 1.6201968 , 2.33713221, 3.05406762, 3.77100303,\n", " 4.48793844, 5.20487386, 5.92180927, 6.63874468, 7.35568009,\n", " 8.0726155 ]),\n", " )" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "import statsmodels.api as sm\n", "import matplotlib.pyplot as plt\n", "\n", "\n", "x = np.array([ 1.00201077, 1.58251956, 0.94515919, 6.48778002, 1.47764604,\n", " 5.18847071, 4.21988095, 2.85971522, 3.40044437, 3.74907745,\n", " 1.18065796, 3.74748775, 3.27328568, 3.19374927, 8.0726155 ,\n", " 0.90326139, 2.34460034, 2.14199217, 3.27446744, 3.58872357,\n", " 1.20611533, 2.16594393, 5.56610242, 4.66479977, 2.3573932 ])\n", "plt.hist(x, bins=10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fitting data to probability distributions\n", "\n", "We start with the problem of finding values for the parameters that provide the best fit between the model and the data, called point estimates. First, we need to define what we mean by ‘best fit’. There are two commonly used criteria:\n", "\n", "* **Method of moments** chooses the parameters so that the sample moments (typically the sample mean and variance) match the theoretical moments of our chosen distribution.\n", "* **Maximum likelihood** chooses the parameters to maximize the likelihood, which measures how likely it is to observe our given sample." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Discrete Random Variables\n", "\n", "$$X = \\{0,1\\}$$\n", "\n", "$$Y = \\{\\ldots,-2,-1,0,1,2,\\ldots\\}$$\n", "\n", "**Probability Mass Function**: \n", "\n", "For discrete $X$,\n", "\n", "$$Pr(X=x) = f(x|\\theta)$$\n", "\n", "![Discrete variable](data/Poisson_pmf.svg)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "***e.g. Poisson distribution***\n", "\n", "The Poisson distribution models unbounded counts:\n", "\n", "\n", "$$Pr(X=x)=\\frac{e^{-\\lambda}\\lambda^x}{x!}$$\n", "\n", "\n", "* $X=\\{0,1,2,\\ldots\\}$\n", "* $\\lambda > 0$\n", "\n", "$$E(X) = \\text{Var}(X) = \\lambda$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Continuous Random Variables\n", "\n", "$$X \\in [0,1]$$\n", "\n", "$$Y \\in (-\\infty, \\infty)$$\n", "\n", "**Probability Density Function**: \n", "\n", "For continuous $X$,\n", "\n", "$$Pr(x \\le X \\le x + dx) = f(x|\\theta)dx \\, \\text{ as } \\, dx \\rightarrow 0$$\n", "\n", "![Continuous variable](https://upload.wikimedia.org/wikipedia/commons/thumb/7/74/Normal_Distribution_PDF.svg/500px-Normal_Distribution_PDF.svg.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "***e.g. normal distribution***\n", "\n", "\n", "\n", "$$f(x) = \\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp\\left[-\\frac{(x-\\mu)^2}{2\\sigma^2}\\right]$$\n", "\n", "\n", "* $X \\in \\mathbf{R}$\n", "* $\\mu \\in \\mathbf{R}$\n", "* $\\sigma>0$\n", "\n", "$$\\begin{align}E(X) &= \\mu \\cr\n", "\\text{Var}(X) &= \\sigma^2 \\end{align}$$" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Example: Nashville Precipitation\n", "\n", "The dataset `nashville_precip.txt` contains [NOAA precipitation data for Nashville measured since 1871](http://bit.ly/nasvhville_precip_data). " ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
JanFebMarAprMayJunJulAugSepOctNovDec
Year
18712.764.585.014.133.302.981.582.360.951.312.131.65
18722.322.113.145.913.095.176.101.654.501.582.252.38
18732.967.144.113.596.314.204.632.361.814.284.365.94
18745.229.235.3611.841.492.872.653.523.122.636.124.19
18756.153.068.144.221.735.638.121.603.791.255.464.30
.......................................
20073.321.842.262.753.302.371.471.381.994.956.203.83
20084.762.535.567.205.542.214.321.670.885.031.756.72
20094.592.852.924.138.454.536.032.1411.086.490.673.99
20104.132.773.523.4816.434.965.866.991.172.495.411.87
20112.315.544.597.514.385.043.461.786.200.936.154.25
\n", "

141 rows × 12 columns

\n", "
" ], "text/plain": [ " Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov \\\n", "Year \n", "1871 2.76 4.58 5.01 4.13 3.30 2.98 1.58 2.36 0.95 1.31 2.13 \n", "1872 2.32 2.11 3.14 5.91 3.09 5.17 6.10 1.65 4.50 1.58 2.25 \n", "1873 2.96 7.14 4.11 3.59 6.31 4.20 4.63 2.36 1.81 4.28 4.36 \n", "1874 5.22 9.23 5.36 11.84 1.49 2.87 2.65 3.52 3.12 2.63 6.12 \n", "1875 6.15 3.06 8.14 4.22 1.73 5.63 8.12 1.60 3.79 1.25 5.46 \n", "... ... ... ... ... ... ... ... ... ... ... ... \n", "2007 3.32 1.84 2.26 2.75 3.30 2.37 1.47 1.38 1.99 4.95 6.20 \n", "2008 4.76 2.53 5.56 7.20 5.54 2.21 4.32 1.67 0.88 5.03 1.75 \n", "2009 4.59 2.85 2.92 4.13 8.45 4.53 6.03 2.14 11.08 6.49 0.67 \n", "2010 4.13 2.77 3.52 3.48 16.43 4.96 5.86 6.99 1.17 2.49 5.41 \n", "2011 2.31 5.54 4.59 7.51 4.38 5.04 3.46 1.78 6.20 0.93 6.15 \n", "\n", " Dec \n", "Year \n", "1871 1.65 \n", "1872 2.38 \n", "1873 5.94 \n", "1874 4.19 \n", "1875 4.30 \n", "... ... \n", "2007 3.83 \n", "2008 6.72 \n", "2009 3.99 \n", "2010 1.87 \n", "2011 4.25 \n", "\n", "[141 rows x 12 columns]" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "precip = pd.read_table(\"data/nashville_precip.txt\", index_col=0, \n", " na_values='NA', delim_whitespace=True)\n", "precip" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "precip.hist(sharex=True, sharey=True, grid=False, figsize=(10,6))\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "The first step is recognixing what sort of distribution to fit our data to. A couple of observations:\n", "\n", "1. The data are skewed, with a longer tail to the right than to the left\n", "2. The data are positive-valued, since they are measuring rainfall\n", "3. The data are continuous\n", "\n", "The **gamma distribution** is often a good fit to aggregated rainfall data, and will be our candidate distribution in this case.\n", "\n", "\n", "\n", "$$x \\sim \\text{Gamma}(\\alpha, \\beta) = \\frac{\\beta^{\\alpha}x^{\\alpha-1}e^{-\\beta x}}{\\Gamma(\\alpha)}$$\n", "\n", "\n", "![gamma](data/Gamma_distribution_pdf.png)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "The ***method of moments*** simply assigns the empirical mean and variance to their theoretical counterparts, so that we can solve for the parameters.\n", "\n", "So, for the gamma distribution, the mean and variance are:\n", "\n", "\n", "$$ \\hat{\\mu} = \\bar{X} = \\alpha \\beta $$\n", "$$ \\hat{\\sigma}^2 = S^2 = \\alpha \\beta^2 $$\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "So, if we solve for these parameters, we can use a gamma distribution to describe our data:\n", "\n", "\n", "$$ \\alpha = \\frac{\\bar{X}^2}{S^2}, \\, \\beta = \\frac{S^2}{\\bar{X}} $$\n", "\n", "Let's deal with the missing value in the October data." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "Year\n", "1960 1.38\n", "1961 1.12\n", "1962 2.29\n", "1963 NaN\n", "1964 1.83\n", "1965 0.57\n", "1966 2.50\n", "1967 1.57\n", "1968 3.92\n", "1969 2.01\n", "1970 2.94\n", "Name: Oct, dtype: float64" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "precip.Oct.loc[1960:1970]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Given what we are trying to do, it is most sensible to fill in the missing value with the average of the available values." ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
JanFebMarAprMayJunJulAugSepOctNovDec
Year
18712.764.585.014.133.302.981.582.360.951.312.131.65
18722.322.113.145.913.095.176.101.654.501.582.252.38
18732.967.144.113.596.314.204.632.361.814.284.365.94
18745.229.235.3611.841.492.872.653.523.122.636.124.19
18756.153.068.144.221.735.638.121.603.791.255.464.30
.......................................
20073.321.842.262.753.302.371.471.381.994.956.203.83
20084.762.535.567.205.542.214.321.670.885.031.756.72
20094.592.852.924.138.454.536.032.1411.086.490.673.99
20104.132.773.523.4816.434.965.866.991.172.495.411.87
20112.315.544.597.514.385.043.461.786.200.936.154.25
\n", "

141 rows × 12 columns

\n", "
" ], "text/plain": [ " Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov \\\n", "Year \n", "1871 2.76 4.58 5.01 4.13 3.30 2.98 1.58 2.36 0.95 1.31 2.13 \n", "1872 2.32 2.11 3.14 5.91 3.09 5.17 6.10 1.65 4.50 1.58 2.25 \n", "1873 2.96 7.14 4.11 3.59 6.31 4.20 4.63 2.36 1.81 4.28 4.36 \n", "1874 5.22 9.23 5.36 11.84 1.49 2.87 2.65 3.52 3.12 2.63 6.12 \n", "1875 6.15 3.06 8.14 4.22 1.73 5.63 8.12 1.60 3.79 1.25 5.46 \n", "... ... ... ... ... ... ... ... ... ... ... ... \n", "2007 3.32 1.84 2.26 2.75 3.30 2.37 1.47 1.38 1.99 4.95 6.20 \n", "2008 4.76 2.53 5.56 7.20 5.54 2.21 4.32 1.67 0.88 5.03 1.75 \n", "2009 4.59 2.85 2.92 4.13 8.45 4.53 6.03 2.14 11.08 6.49 0.67 \n", "2010 4.13 2.77 3.52 3.48 16.43 4.96 5.86 6.99 1.17 2.49 5.41 \n", "2011 2.31 5.54 4.59 7.51 4.38 5.04 3.46 1.78 6.20 0.93 6.15 \n", "\n", " Dec \n", "Year \n", "1871 1.65 \n", "1872 2.38 \n", "1873 5.94 \n", "1874 4.19 \n", "1875 4.30 \n", "... ... \n", "2007 3.83 \n", "2008 6.72 \n", "2009 3.99 \n", "2010 1.87 \n", "2011 4.25 \n", "\n", "[141 rows x 12 columns]" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "precip.fillna(value={'Oct': precip.Oct.mean()}, inplace=True)\n", "precip" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Now, let's calculate the sample moments of interest, the means and variances by month:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [ { "data": { "text/plain": [ "Jan 4.523688\n", "Feb 4.097801\n", "Mar 4.977589\n", "Apr 4.204468\n", "May 4.325674\n", "Jun 3.873475\n", "Jul 3.895461\n", "Aug 3.367305\n", "Sep 3.377660\n", "Oct 2.610500\n", "Nov 3.685887\n", "Dec 4.176241\n", "dtype: float64" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "precip_mean = precip.mean()\n", "precip_mean" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "Jan 6.928862\n", "Feb 5.516660\n", "Mar 5.365444\n", "Apr 4.117096\n", "May 5.306409\n", "Jun 5.033206\n", "Jul 3.777012\n", "Aug 3.779876\n", "Sep 4.940099\n", "Oct 2.741659\n", "Nov 3.679274\n", "Dec 5.418022\n", "dtype: float64" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "precip_var = precip.var()\n", "precip_var" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "We then use these moments to estimate $\\alpha$ and $\\beta$ for each month:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "slideshow": { "slide_type": "fragment" } }, "outputs": [], "source": [ "alpha_mom = precip_mean ** 2 / precip_var\n", "beta_mom = precip_var / precip_mean" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "slideshow": { "slide_type": "slide" } }, "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", "
alpha_mombeta_mom
Jan2.9534071.531684
Feb3.0438661.346249
Mar4.6177701.077920
Apr4.2936940.979219
May3.5261991.226724
Jun2.9809651.299403
Jul4.0176240.969593
Aug2.9997661.122522
Sep2.3093831.462581
Oct2.4856161.050243
Nov3.6925110.998206
Dec3.2190701.297344
\n", "
" ], "text/plain": [ " alpha_mom beta_mom\n", "Jan 2.953407 1.531684\n", "Feb 3.043866 1.346249\n", "Mar 4.617770 1.077920\n", "Apr 4.293694 0.979219\n", "May 3.526199 1.226724\n", "Jun 2.980965 1.299403\n", "Jul 4.017624 0.969593\n", "Aug 2.999766 1.122522\n", "Sep 2.309383 1.462581\n", "Oct 2.485616 1.050243\n", "Nov 3.692511 0.998206\n", "Dec 3.219070 1.297344" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "estimates = pd.DataFrame({'alpha_mom': alpha_mom, 'beta_mom': beta_mom})\n", "estimates" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "We can use the `gamma.pdf` function in `scipy.stats.distributions` to plot the ditribtuions implied by the calculated alphas and betas. For example, here is January:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from scipy.stats import gamma\n", "\n", "xvals = np.linspace(0, 10)\n", "yvals = gamma.pdf(xvals, alpha_mom[0], beta_mom[0])\n", "precip.Jan.hist(bins=20, density=1)\n", "plt.plot(xvals, yvals)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Looping over all months, we can create a grid of plots for the distribution of rainfall, using the gamma distribution:" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "axs = precip.hist(density=1, figsize=(12, 8), sharex=True, sharey=True, bins=15, grid=False)\n", "\n", "for ax in axs.ravel():\n", " # Get month\n", " m = ax.get_title() \n", " # Plot fitted distribution\n", " x = np.linspace(*ax.get_xlim())\n", " ax.plot(x, gamma.pdf(x, alpha_mom[m], beta_mom[m]))\n", " label = 'alpha = {0:.2f}\\nbeta = {1:.2f}'.format(alpha_mom[m], beta_mom[m])\n", " ax.annotate(label, xy=(10, 0.2))\n", " \n", "plt.xlim([0, 15])\n", "plt.tight_layout()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Maximum Likelihood\n", "==================\n", "\n", "**Maximum likelihood** (ML) fitting is usually more work than the method of moments, but it is preferred as the resulting estimator is known to have good theoretical properties. \n", "\n", "There is a ton of theory regarding ML. We will restrict ourselves to the mechanics here.\n", "\n", "Say we have some data $y = y_1,y_2,\\ldots,y_n$ that is distributed according to some distribution:\n", "\n", " \n", "$$Pr(Y_i=y_i | \\theta)$$\n" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Here, for example, is a **Poisson distribution** that describes the distribution of some discrete variables, typically *counts*: " ] }, { "cell_type": "code", "execution_count": 36, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'Pr(y)')" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "y = np.random.poisson(5, size=100)\n", "plt.hist(y, bins=int(np.sqrt(len(y))), density=1)\n", "plt.xlabel('y'); plt.ylabel('Pr(y)')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "The product $\\prod_{i=1}^n Pr(y_i | \\theta)$ gives us a measure of how **likely** it is to observe the set of values $y_1,\\ldots,y_n$ given the parameters $\\theta$. Maximum likelihood fitting consists of choosing the appropriate function $l= Pr(Y|\\theta)$ to maximize for a given set of observations. We call this function the *likelihood function*, because it is a measure of how likely the observations are if the model is true.\n", "\n", "> Given these data, how likely is this model?" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "In the above model, the data were drawn from a Poisson distribution with parameter $\\lambda =5$.\n", "\n", "$$L(y|\\lambda=5) = \\frac{e^{-5} 5^y}{y!}$$\n", "\n", "So, for any given value of $y$, we can calculate its likelihood:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "0.041303093412337726" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def poisson_dens(y, lam): \n", " return np.exp(-lam) * (lam**y) / (np.arange(y)+1).prod()\n", "\n", "lam = 6\n", "value = 10\n", "poisson_dens(value, lam)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "12.157642033131616" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(poisson_dens(yi, lam) for yi in y)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "8.268378723048146" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lam = 8\n", "sum(poisson_dens(yi, lam) for yi in y)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "We can plot the likelihood function for any value of the parameter(s):" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "lambdas = np.linspace(0, 15)\n", "x = 5\n", "plt.plot(lambdas, [poisson_dens(x, l) for l in lambdas])\n", "plt.xlabel('$\\lambda$')\n", "plt.ylabel('L($\\lambda$|x={0})'.format(x));" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "How is the likelihood function different than the probability distribution (or mass) function? The likelihood is a function of the parameter(s) *given the data*, whereas the PDF returns the probability of data given a particular parameter value. Here is the PMF of the Poisson for $\\lambda=5$." ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "lam = 5\n", "xvals = np.arange(15)\n", "yvals = [poisson_dens(x, lam) for x in xvals]\n", "plt.bar(xvals, yvals)\n", "plt.xlabel('x')\n", "plt.ylabel('Pr(X|$\\lambda$=5)');" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Why are we interested in the likelihood function? \n", "\n", "A reasonable estimate of the true, unknown value for the parameter is one which **maximizes the likelihood function**. So, inference is reduced to an optimization problem." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Going back to the rainfall data, if we are using a gamma distribution we need to maximize:\n", "\n", "$$\\begin{align}l(\\alpha,\\beta) &= \\sum_{i=1}^n \\log[\\beta^{\\alpha} x_i^{\\alpha-1} e^{-x/\\beta}\\Gamma(\\alpha)^{-1}] \\cr \n", "&= n[(\\alpha-1)\\overline{\\log(x)} - \\bar{x}\\beta + \\alpha\\log(\\beta) - \\log\\Gamma(\\alpha)]\\end{align}$$\n", "\n", "(*Its usually easier to work in the log scale*)\n", "\n", "where $n = 2012 − 1871 = 141$ and the bar indicates an average over all *i*. We choose $\\alpha$ and $\\beta$ to maximize $l(\\alpha,\\beta)$.\n", "\n", "Notice $l$ is infinite if any $x$ is zero. We do not have any zeros, but we do have an NA value for one of the October data, which we dealt with above." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Finding the MLE\n", "\n", "To find the maximum of any function, we typically take the *derivative* with respect to the variable to be maximized, set it to zero and solve for that variable. \n", "\n", "$$\\frac{\\partial l(\\alpha,\\beta)}{\\partial \\beta} = n\\left(\\frac{\\alpha}{\\beta} - \\bar{x}\\right) = 0$$\n", "\n", "Which can be solved as $\\beta = \\alpha/\\bar{x}$. However, plugging this into the derivative with respect to $\\alpha$ yields:\n", "\n", "$$\\frac{\\partial l(\\alpha,\\beta)}{\\partial \\alpha} = \\log(\\alpha) + \\overline{\\log(x)} - \\log(\\bar{x}) - \\frac{\\Gamma(\\alpha)'}{\\Gamma(\\alpha)} = 0$$\n", "\n", "This has no closed form solution. We must use ***numerical optimization***!" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Numerical optimization alogarithms take an initial \"guess\" at the solution, and iteratively improve the guess until it gets \"close enough\" to the answer.\n", "\n", "Here, we will use Newton-Raphson algorithm:\n", "\n", "
\n", "$$x_{n+1} = x_n - \\frac{f(x_n)}{f'(x_n)}$$\n", "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Which is available to us via SciPy:" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "from scipy.optimize import newton" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Here is a graphical example of how Newton-Raphson converges on a solution, using an arbitrary function:" ] }, { "cell_type": "code", "execution_count": 43, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "Text(1.4706070287539936, -0.2, '$x_{n+1}$')" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# some function\n", "func = lambda x: 3./(1 + 400*np.exp(-2*x)) - 1\n", "xvals = np.linspace(0, 6)\n", "plt.plot(xvals, func(xvals))\n", "plt.text(5.3, 2.1, '$f(x)$', fontsize=16)\n", "\n", "# zero line\n", "plt.plot([0,6], [0,0], 'k-')\n", "\n", "# value at step n\n", "plt.plot([4,4], [0,func(4)], 'k:')\n", "plt.text(4, -.2, '$x_n$', fontsize=16)\n", "\n", "# tangent line\n", "tanline = lambda x: -0.858 + 0.626*x\n", "plt.plot(xvals, tanline(xvals), 'r--')\n", "\n", "# point at step n+1\n", "xprime = 0.858/0.626\n", "plt.plot([xprime, xprime], [tanline(xprime), func(xprime)], 'k:')\n", "plt.text(xprime+.1, -.2, '$x_{n+1}$', fontsize=16)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "To apply the Newton-Raphson algorithm, we need a function that returns a vector containing the **first and second derivatives** of the function with respect to the variable of interest. In our case, this is:" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "slideshow": { "slide_type": "subslide" } }, "outputs": [], "source": [ "from scipy.special import psi, polygamma\n", "\n", "dlgamma = lambda m, log_mean, mean_log: np.log(m) - psi(m) - log_mean + mean_log\n", "dl2gamma = lambda m, *args: 1./m - polygamma(1, m)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "where `log_mean` and `mean_log` are $\\log{\\bar{x}}$ and $\\overline{\\log(x)}$, respectively. `psi` and `polygamma` are complex functions of the Gamma function that result when you take first and second derivatives of that function." ] }, { "cell_type": "code", "execution_count": 45, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# Calculate statistics\n", "log_mean = precip.mean().apply(np.log)\n", "mean_log = precip.apply(np.log).mean()" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Time to optimize!" ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "3.518967915239979" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Alpha MLE for December\n", "alpha_mle = newton(dlgamma, 2, dl2gamma, args=(log_mean[-1], mean_log[-1]))\n", "alpha_mle" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "And now plug this back into the solution for beta:\n", "\n", "
\n", "$$ \\beta = \\frac{\\alpha}{\\bar{X}} $$\n", "
" ] }, { "cell_type": "code", "execution_count": 47, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "0.842616075484142" ] }, "execution_count": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "beta_mle = alpha_mle/precip.mean()[-1]\n", "beta_mle" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "We can compare the fit of the estimates derived from MLE to those from the method of moments:" ] }, { "cell_type": "code", "execution_count": 54, "metadata": { "scrolled": false, "slideshow": { "slide_type": "slide" } }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "dec = precip.Dec\n", "dec.hist(density=True, bins=10, grid=False)\n", "x = np.linspace(0, dec.max())\n", "plt.plot(x, gamma.pdf(x, alpha_mom[-1], beta_mom[-1]), 'm-')\n", "#plt.plot(x, gamma.pdf(x, alpha_mle, beta_mle), 'r--')\n", "plt.plot(x, gamma.pdf(x, alpha_mle, beta_mle), 'r--')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "For some common distributions, SciPy includes methods for fitting via MLE:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "from scipy.stats import gamma\n", "\n", "ahat, _, bhat = gamma.fit(precip.Dec, floc=0)\n", "ahat, 1./bhat" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "fragment" } }, "source": [ "Note that SciPy's `gamma.fit` method fits a slightly different version of the gamma distribution, which has to be transformed to match ours." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Kernel density estimates*\n", "\n", "In some instances, we may not be interested in the parameters of a particular distribution of data, but just a smoothed representation of the data at hand. In this case, we can estimate the disribution *non-parametrically* (i.e. making no assumptions about the form of the underlying distribution) using kernel density estimation." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# Some random data\n", "y = np.random.random(15) * 10\n", "y" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "from scipy.stats import norm\n", "\n", "# Create an array of x-valuese``````````````````````````````\n", "x = np.linspace(y.min()-1, y.max()+1, 100)\n", "\n", "# Smoothing parameter\n", "s = 0.4\n", "\n", "# Calculate the kernels\n", "kernels = np.transpose([norm.pdf(x, yi, s) for yi in y])\n", "plt.plot(x, kernels, 'k:')\n", "plt.plot(x, kernels.sum(1))\n", "plt.plot(y, np.zeros(len(y)), 'ro', ms=10)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "SciPy implements a Gaussian KDE that automatically chooses an appropriate bandwidth. Let's create a bi-modal distribution of data that is not easily summarized by a parametric distribution:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "# Create a bi-modal distribution with a mixture of Normals.\n", "x1 = np.random.normal(0, 2, 50)\n", "x2 = np.random.normal(4, 1, 50)\n", "\n", "# Append by row\n", "x = np.r_[x1, x2]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "plt.hist(x, bins=10, density=True)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "from scipy.stats import kde\n", "\n", "density = kde.gaussian_kde(x)\n", "xgrid = np.linspace(x.min(), x.max(), 100)\n", "plt.hist(x, bins=10, density=True)\n", "plt.plot(xgrid, density(xgrid), 'r-')" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "## Bootstrapping*\n", "\n", "Parametric inference can be **non-robust**:\n", "\n", "* inaccurate if parametric assumptions are violated\n", "* if we rely on asymptotic results, we may not achieve an acceptable level of accuracy\n", "\n", "Parmetric inference can be **difficult**:\n", "\n", "* derivation of sampling distribution may not be possible\n", "\n", "An alternative is to estimate the sampling distribution of a statistic *empirically* without making assumptions about the form of the population.\n", "\n", "We have seen this already with the kernel density estimate." ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Non-parametric Bootstrap\n", "\n", "The bootstrap is a resampling method discovered by [Brad Efron](http://www.jstor.org/discover/10.2307/2958830?uid=3739568&uid=2&uid=4&uid=3739256&sid=21102342537691) that allows one to approximate the true sampling distribution of a dataset, and thereby obtain estimates of the mean and variance of the distribution.\n", "\n", "Bootstrap sample:\n", "\n", "
\n", "$$S_1^* = \\{x_{11}^*, x_{12}^*, \\ldots, x_{1n}^*\\}$$\n", "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "$S_i^*$ is a sample of size $n$, **with** replacement.\n", "\n", "The NumPy function `permutation` can be used to generate a random sample of some data without replacement:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "np.random.permutation(titanic.name)[:5]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Similarly, we can use the `random.randint` method to generate a sample *with* replacement, which we can use when bootstrapping." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "random_ind = np.random.randint(0, len(titanic), 5)\n", "titanic.name[random_ind]" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "We regard S as an \"estimate\" of population P\n", "\n", "> population : sample :: sample : bootstrap sample\n", "\n", "The idea is to generate replicate bootstrap samples:\n", "\n", "
\n", "$$S^* = \\{S_1^*, S_2^*, \\ldots, S_R^*\\}$$\n", "
" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Compute statistic $t$ (estimate) for each bootstrap sample:\n", "\n", "
\n", "$$T_i^* = t(S^*)$$\n", "
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "n = 10\n", "R = 1000\n", "# Original sample (n=10)\n", "x = np.random.normal(size=n)\n", "# 1000 bootstrap samples of size 10\n", "s = [x[np.random.randint(0,n,n)].mean() for i in range(R)]\n", "_ = plt.hist(s, bins=30)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Bootstrap Estimates\n", "\n", "From our bootstrapped samples, we can extract *estimates* of the expectation and its variance:\n", "\n", "$$\\bar{T}^* = \\hat{E}(T^*) = \\frac{\\sum_i T_i^*}{R}$$\n", "\n", "$$\\hat{\\text{Var}}(T^*) = \\frac{\\sum_i (T_i^* - \\bar{T}^*)^2}{R-1}$$\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "boot_mean = np.sum(s)/R\n", "boot_mean" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "boot_var = ((np.array(s) - boot_mean) ** 2).sum() / (R-1)\n", "boot_var" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "Since we have estimated the expectation of the bootstrapped statistics, we can estimate the **bias** of T:\n", "\n", "$$\\hat{B}^* = \\bar{T}^* - T$$\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "boot_mean - np.mean(x)" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Bootstrap error\n", "\n", "There are two sources of error in bootstrap estimates:\n", "\n", "1. **Sampling error** from the selection of $S$.\n", "2. **Bootstrap error** from failing to enumerate all possible bootstrap samples.\n", "\n", "For the sake of accuracy, it is prudent to choose at least R=1000" ] }, { "cell_type": "markdown", "metadata": { "slideshow": { "slide_type": "slide" } }, "source": [ "### Bootstrap Percentile Intervals\n", "\n", "An attractive feature of bootstrap statistics is the ease with which you can obtain an estimate of *uncertainty* for a given statistic. We simply use the empirical quantiles of the bootstrapped statistics to obtain percentiles corresponding to a confidence interval of interest.\n", "\n", "This employs the *ordered* bootstrap replicates:\n", "\n", "$$T_{(1)}^*, T_{(2)}^*, \\ldots, T_{(R)}^*$$\n", "\n", "Simply extract the $100(\\alpha/2)$ and $100(1-\\alpha/2)$ percentiles:\n", "\n", "$$T_{[(R+1)\\alpha/2]}^* \\lt \\theta \\lt T_{[(R+1)(1-\\alpha/2)]}^*$$" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "s_sorted = np.sort(s)\n", "s_sorted[:10]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "s_sorted[-10:]" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true, "slideshow": { "slide_type": "slide" } }, "outputs": [], "source": [ "alpha = 0.05\n", "s_sorted[[int((R+1)*alpha/2), int((R+1)*(1-alpha/2))]]" ] } ], "metadata": { "celltoolbar": "Slideshow", "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.9.9" }, "rise": { "auto_select": "first", "autolaunch": false, "enable_chalkboard": true, "start_slideshow_at": "selected", "theme": "black" } }, "nbformat": 4, "nbformat_minor": 1 }