{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Parameter estimation by optimization\n", "> A Summary of lecture \"Statistical Thinking in Python (Part 2)\", via datacamp\n", "\n", "- toc: true \n", "- badges: true\n", "- comments: true\n", "- author: Chanseok Kang\n", "- categories: [Python, Datacamp, Data_Science, Statistics]\n", "- image: images/scatter-with-polyfit.png" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "\n", "sns.set()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Optimal Parameter\n", "- Parameter values that bring the model in closest agreement with the data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### How often do we get no-hitter?\n", "The number of games played between each no-hitter in the modern era (1901-2015) of Major League Baseball is stored in the array ```nohitter_times```.\n", "\n", "If you assume that no-hitters are described as a Poisson process, then the time between no-hitters is Exponentially distributed. As you have seen, the Exponential distribution has a single parameter, which we will call $\\tau$, the typical interval time. The value of the parameter $\\tau$ that makes the exponential distribution best match the data is the mean interval time (where time is in units of number of games) between no-hitters.\n", "\n", "Compute the value of this parameter from the data. Then, use ```np.random.exponential()``` to \"repeat\" the history of Major League Baseball by drawing inter-no-hitter times from an exponential distribution with the τ you found and plot the histogram as an approximation to the PDF." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "nohitter_times = np.array([ 843, 1613, 1101, 215, 684, 814, 278, 324, 161, 219, 545,\n", " 715, 966, 624, 29, 450, 107, 20, 91, 1325, 124, 1468,\n", " 104, 1309, 429, 62, 1878, 1104, 123, 251, 93, 188, 983,\n", " 166, 96, 702, 23, 524, 26, 299, 59, 39, 12, 2,\n", " 308, 1114, 813, 887, 645, 2088, 42, 2090, 11, 886, 1665,\n", " 1084, 2900, 2432, 750, 4021, 1070, 1765, 1322, 26, 548, 1525,\n", " 77, 2181, 2752, 127, 2147, 211, 41, 1575, 151, 479, 697,\n", " 557, 2267, 542, 392, 73, 603, 233, 255, 528, 397, 1529,\n", " 1023, 1194, 462, 583, 37, 943, 996, 480, 1497, 717, 224,\n", " 219, 1531, 498, 44, 288, 267, 600, 52, 269, 1086, 386,\n", " 176, 2199, 216, 54, 675, 1243, 463, 650, 171, 327, 110,\n", " 774, 509, 8, 197, 136, 12, 1124, 64, 380, 811, 232,\n", " 192, 731, 715, 226, 605, 539, 1491, 323, 240, 179, 702,\n", " 156, 82, 1397, 354, 778, 603, 1001, 385, 986, 203, 149,\n", " 576, 445, 180, 1403, 252, 675, 1351, 2983, 1568, 45, 899,\n", " 3260, 1025, 31, 100, 2055, 4043, 79, 238, 3931, 2351, 595,\n", " 110, 215, 0, 563, 206, 660, 242, 577, 179, 157, 192,\n", " 192, 1848, 792, 1693, 55, 388, 225, 1134, 1172, 1555, 31,\n", " 1582, 1044, 378, 1687, 2915, 280, 765, 2819, 511, 1521, 745,\n", " 2491, 580, 2072, 6450, 578, 745, 1075, 1103, 1549, 1520, 138,\n", " 1202, 296, 277, 351, 391, 950, 459, 62, 1056, 1128, 139,\n", " 420, 87, 71, 814, 603, 1349, 162, 1027, 783, 326, 101,\n", " 876, 381, 905, 156, 419, 239, 119, 129, 467])" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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OwsWLPAs0rl69Wq2bNmC2+0mLCyMRYsWcfjwYV588UWampro1asXL730Ehs2bGDAgAGsWbOGF198kTfffBOAu+++m3vuuYdrrrmGJUuW8Nlnn+FyuRg5ciRz587Fbrfz5ZdfsmTJEo4cOUJTUxOTJ09mwoQJ7Nixg4yMDC699FI+//xzGhsbSUtL49prr/Vqf2vH1dTUkJaWxqefforNZuOmm27igQce8CySeKonnniCf/zjHxw5coTf/va3JCYmsnHjRjZv3sx9993n6XdwcDAffPAB9fX13H777WzcuJGvv/66xX4sWbKEnj17Ultby/r160lNTeWbb77Bz8+PIUOG8PDDD3eqdbMuSOd4mX6R07z++uvmjjvuaPUYt9ttfvOb35j9+/cbY068E2fw4MGmoqLCvPfee2bw4MHm448/NsYY89vf/tbzDpmKigozZMgQc/jwYbN//34TFxdnKisrjTHGfPbZZ+bGG280tbW1Zt68eZ73X5SWlppZs2aZpqYmrzYcPHjQXHnlleZ///d/jTHGvP322yYyMtIcP37cvPrqq2bWrFnG5XIZY4x58cUXzb333muMMebxxx83aWlpxhhjUlJSzHPPPWeMMSYxMdHceOON5quvvjLV1dXmhhtuMMePHzcpKSnmv//7v40xxjQ2Npo5c+aYp556yrhcLhMTE2P27t1rjDGmurrajBs3znz44YeeMfjkk0+MMcY888wzJjEx8bRxbO24uXPnmkceecS43W5z/PhxM2XKFM+YnOrKK680zzzzjDHGmI8//tgMHTrUNDQ0mFdeecVMmzbttH4fPHjQDB8+3BhjztiPQYMGmX/961/GmBPvIpkyZYpnLFJTU83XX3/dbJvk/KE7Fulw5pTFH44ePeq5Wzh27Bjjxo3jgQce4L/+678oKCjgtdde48svv8QY47mb+fGPf8zPf/5zAC677DKCg4Pp3r07ffv2pVevXnz33XcUFRVRWlrK3Xff7bmWzWbjwIED3HbbbTz00EPs3r2bkSNHsmDBgmZ/K77ooouIiYkBYNSoUQB89dVXvPnmm+zZs4df/epXAJ53cpzqtttu48UXX2T8+PGUlZURFxdHYWEhvXv35qabbqJ79+4UFBSwZ88eXn75ZQDq6+uBE68tOHDggOfu6/uyTz75hMsvv5xLLrmEwYMHA/Dzn/+cV199tdnxbum4bdu28cILL2Cz2ejevTt33nknzz77LNOmTWv2PHFxcQAMHjyYhoYGjh492uxxpzpTP/r37++ZDr322mvJyMhg8uTJREREcNdddzFgwICzuo50HAWLdLhhw4axf/9+qqqquPjiiwkKCiInJwc4Md1SVVXFsWPHuOOOO7j11lsJDw/nV7/6FX//+989odS9e3evczY3feN2uxk5ciSZmZmefd9++y1Op5NBgwaxefNmCgsL2b59OytXrmTjxo2EhoZ6nePUsHG73fj7++N2u7n33nuZNGkSAA0NDc0+V/l+La233nqLG264gYiICF544QV69OjhCSy3281jjz3G5ZdfDpx4Ta3NZqO4uJjg4GDP2MCJacTg4GA++ugjAgMDPfu/X5a9OS0dd+qy9m63m8bGRt544w0ef/xx4MSqu3/5y1+8xvj7Oi1d71TfT4+11I+ePXt69l966aW8/vrr7Nixg/fee4977rmHhx9+mNGjR5/VtaRjaKJSOlxISAhJSUnMnDmT4uJiz/5Dhw7xwQcf4OfnxzfffMPRo0eZNWsWo0ePZseOHTQ0NOB2u8/6OiNHjuTdd9/lyy+/BOCtt97il7/8JfX19Tz44IPk5eURGxvLokWLCAoK4sCBA6ed48iRI55nIlu3biUwMJABAwYwatQoXn75Zc9v7Y899hhz584FoFu3bp53nAcEBHDdddfx5JNPcuONN3L99dfz0UcfsXPnTm666SbgxJ3Q2rVrMcbQ0NDA9OnTef755xk4cCCBgYGe/yB/++23xMXFsXfv3rYOebNGjRrF888/77luVlYWERER3HLLLeTk5JCTk+MJlbNxcr/tdjtNTU0YY9rUj/Xr1zNv3jxGjRpFcnIyo0aN4pNPPrGkv+I7umOR88Ls2bP5n//5Hx588EHq6uqoqamhd+/exMTEkJiYSEBAAP/2b//GuHHj6N69O1deeSVXXHEF33zzzWl3Ky254oorePjhh3nggQcwxmC321m9ejW9evXivvvuIzU1lQ0bNtCtWzduvfVWrrvuutPO0a9fP7Zs2UJmZiY9evTgiSeewG63M3HiREpKSvj3f/93bDYb/fv3Z9myZQCMGDGCOXPm8Mgjj/CHP/yB2267jS1btjBixAgCAwMZNGgQvXv3JiAgAIDU1FSWLFlCfHw8LpeLiIgI7r33Xvz9/Vm1ahVLlizh6aefprGxkZkzZ3LttdeyY8eOH/z/wYIFC1i8eLHnujfddJPn9cvtcXK/58+fz7Bhw4iNjWXdunVn3Y/x48fz/vvvExMTQ48ePejfvz+TJ0/+oV0VH9PqxiIiYilNhYmIiKUULCIiYikFi4iIWErBIiIillKwiIiIpRQsIiJiKQWLiIhYSsEiIiKW+j+0UZWXAqCpcwAAAABJRU5ErkJggg==\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Seed random number generator\n", "np.random.seed(42)\n", "\n", "# Compute mean no-hitter time: tau\n", "tau = np.mean(nohitter_times)\n", "\n", "# Draw out of an exponential distribution with parameter tau: inter_nohitter_time\n", "inter_nohitter_time = np.random.exponential(tau, 100000)\n", "\n", "# Plot the PDF and label axes\n", "_ = plt.hist(inter_nohitter_time, bins=50, density=True, histtype='step')\n", "_ = plt.xlabel('Games between no-hitters')\n", "_ = plt.ylabel('PDF')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Do the data follow our story?\n", "You have modeled no-hitters using an Exponential distribution. Create an ECDF of the real data. Overlay the theoretical CDF with the ECDF from the data. This helps you to verify that the Exponential distribution describes the observed data." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "def ecdf(data):\n", " \"\"\"Compute ECDF for a one-dimensional array of measurements.\"\"\"\n", " # Number of data points: n\n", " n = len(data)\n", "\n", " # x-data for the ECDF: x\n", " x = np.sort(data)\n", "\n", " # y-data for the ECDF: y\n", " y = np.arange(1, n + 1) / n\n", "\n", " return x, y" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'CDF')" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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o0ePxpYtW6DT6ZyP8df3DgB8//33GDp0KMLDwwFUNQN99NFHPvv+8b6IaqHLrdDmy86fP4+nnnoKS5YswYQJEwAAN954I7Kzs51NAps2bcLIkSMbXakuICAAt9xyCzZv3gwAWLdunU/U38cff4xNmzZh/fr1SEpKwl133YVXX3212XUwatQorFu3DkBVyNxyyy0ICAjwzItqRXfeeSe+//57FBcXQ1EU7Ny5E+PGjeN7p1r//v2RkZGBsrIyCCGwfft23HbbbT77/vGpBXI2btyIDz74wLlC28yZMz1dpDaxaNEifPnll7j66qud+x566CFcc801ePXVV1FZWYlRo0bhhRdegCRJOHr0qGaluldffRUGgwFnz57F/PnzUVBQgG7duuHNN99EWFiYB19Z61q7di327t2L1157rdl1cPHiRcyfPx+nT59GaGgolixZgquuusrTL6lVrFmzBp988gnsdjuGDRuGlJQU7Nmzh++dasuWLcPatWsREBCAgQMHYuHChcjOzvbJ949PBQIREbWczzQZERHRlWEgEBERAAYCERFVYyAQEREABgIREVVjINAVW7NmDe6//37ExcVh9OjReOSRR7B//35PF8vpzJkzGDx4cLP/Lj09HW+//bYbSuQ5/fr1a3DKhG+++cY502nt111SUoLExMQ2LSN5js+MVCbPePPNN/Hjjz/irbfeQo8ePQAAu3fvxuOPP461a9eie/fuHi5hyx08eBBFRUWeLkabuPvuu3H33XcD0L7uoqIiHDx40JNFozbEQKAWy8/Pxz/+8Q9s27ZNM1XB0KFDMX/+fJSXlwMAduzYgQ8++AA2mw2FhYW49957MWfOHOzZswdvvvkmunXrhuzsbAQFBWHWrFn47LPPkJ2djdjYWCxYsABA1Zz977//Pux2OwIDA/H8889j8ODBOHbsGJKTk2Gz2SCEwNSpU5GQkFCvrKqqIjk5GYcOHYJer0dKSopzQsD3338faWlpUFUVPXr0wMKFC5GTk4OVK1dCURR06NABX3zxBVatWoVevXrhgw8+wMqVK7Fjxw4AwB//+Ec88sgjuOmmm7B48WJkZmbCbrdj6NChmDdvHvR6PY4dO4bFixfj4sWLUBQF06dPx9SpU7Fnzx6kpqaiZ8+e+P333+FwOPDiiy/i5ptv1pTf1eNKSkrw4osv4ujRo5AkCSNGjMCzzz7rnGStrqVLl2L//v24ePEiHn30USQkJGDt2rXYunUrnnzySefrDg0Nxc8//4yKigpMmjQJa9euxYkTJxp9HYsXL0ZwcDBKS0uxYsUKJCcn4+TJk5BlGQMGDMBLL73klfP3UC1tPN02+ZBt27aJyZMnu3yMqqriD3/4g8jOzhZCVK1bERUVJQoKCsQPP/wgoqKixKFDh4QQQjz66KPOdR0KCgrEgAEDRE5OjsjOzhbx8fGisLBQCCFEZmamGDZsmCgtLRUvvPCCc5753NxcMWfOHKEoiqYMp0+fFn379hX/+te/hBBC7Ny5U4wcOVJUVlaKr776SsyZM0fY7XYhhBArV64Ujz32mBBCiHfeeUe8+OKLQggh5s+fLz777DMhhBAJCQli2LBh4vjx46K4uFjcfvvtorKyUsyfP198+umnQgghHA6H+POf/yyWLVsm7Ha7iIuLE//5z3+EEEIUFxeL8ePHi19++cVZB4cPHxZCCPHRRx+JhISEevXo6nHz5s0TL7/8slBVVVRWVooZM2Y466Suvn37io8++kgIIcShQ4fEDTfcIGw2m/jyyy/FrFmz6r3u06dPi0GDBgkhxGVfR//+/cWZM2eEEFVz/s+YMcNZF8nJyeLEiRMNlom8B68QqMVEnUHuVqvV+e28rKwM48ePx7PPPov/+7//Q3p6OjZt2oRjx45BCOG8erjqqqtw/fXXAwCuvvpqhIaGwmAwoEuXLujQoQOKiorw448/Ijc3F3/84x+d55IkCadOncKYMWPw/PPP48CBAxg6dChSUlIa/BbasWNHxMXFAQCGDx8OADh+/Dh27NiBgwcP4r777gMA59z3dY0ZMwYrV67Evffei7y8PMTHxyMjIwNhYWEYMWIEDAYD0tPTcfDgQaxZswYAUFFRAaBqSvJTp045r3Zqjh0+fBi9e/dG9+7dERUVBQC4/vrr8dVXXzVY34097rvvvsM///lPSJIEg8GAhx56CP/4xz8wa9asBp8nPj4eABAVFQWbzQar1drg4+q63Ovo1q2bs9nw5ptvRmpqKqZPn46YmBg8/PDD6NWrV5POQ57DQKAWi46ORnZ2Ni5cuIDOnTsjJCQE69evB1DVLHHhwgWUlZVh8uTJGD16NG655Rbcd999+Prrr51hYjAYNM/ZUDOHqqoYOnQo3nrrLee+8+fPw2w2o3///ti6dSsyMjKwe/duvPfee1i7di0iIyM1z1E3JFRVRUBAAFRVxWOPPYZp06YBAGw2W4P9BjVz/Hz77be4/fbbERMTg3/+858ICgpyBo2qqnj77bfRu3dvAFXLJkqShHPnziE0NNRZN0BVc1toaCh+/fVXBAYGOvfXTKPckMYeV3daalVV4XA48M033+Cdd94BUDXb5ocffqip45q/aex8ddU0IzX2OoKDg537e/bsiW3btmHPnj344Ycf8Mgjj+Cll17CXXfd1aRzkWewQY9aLCIiAomJiXjmmWdw7tw55/6zZ8/i559/hizLOHnyJKxWK+bMmYO77roLe/bsgc1mg6qqTT7P0KFDsWvXLhw7dgwA8O233+Kee+5BRUUF/vSnP2Hz5s2YMGECFi5ciJCQEJw6darec1y8eNHZ5r99+3YEBgaiV69eGD58ONasWeP8lvz2229j3rx5AACdTudcK9doNOLWW2/Fu+++i2HDhuG2227Dr7/+in379mHEiBEAqq48PvnkEwghYLPZ8MQTT+Dzzz/Htddei8DAQOcH6fnz5xEfH4///Oc/za3yBg0fPhyff/6587yrV69GTEwM7r77bqxfvx7r1693hkFT1H7der0eiqJACNGs17FixQq88MILGD58OJ577jkMHz4chw8fbpXXS+7DKwS6InPnzsWGDRvwpz/9CeXl5SgpKUFYWBji4uKQkJAAo9GIO+64A+PHj4fBYEDfvn3Rp08fnDx5st7VQWP69OmDl156Cc8++yyEENDr9Xj//ffRoUMHPPnkk0hOTsaqVaug0+kwevRo3HrrrfWeIzw8HGlpaXjrrbcQFBSEpUuXQq/X4/7774fFYsEDDzwASZLQrVs3vPbaawCAIUOG4M9//jNefvll/M///A/GjBmDtLQ0DBkyBIGBgejfvz/CwsJgNBoBAMnJyVi8eDEmTpwIu92OmJgYPPbYYwgICMD//u//YvHixfj73/8Oh8OBZ555BjfffDP27Nlzxf8PUlJSsGjRIud5R4wY4VwutCVqv+4FCxYgOjoaEyZMwPLly5v8Ou69917s3bsXcXFxCAoKQrdu3TB9+vQrfankZpztlIiIALDJiIiIqjEQiIgIAAOBiIiqMRCIiAgAA4GIiKoxEIiICAADgYiIqjEQiIgIAPD/AVgLTCGNna8bAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create an ECDF from real data: x, y\n", "x, y = ecdf(nohitter_times)\n", "\n", "# Create a CDF from theoretical samples: x_theor, y_theor\n", "x_theor, y_theor = ecdf(inter_nohitter_time)\n", "\n", "# Overlay the plots\n", "plt.plot(x_theor, y_theor)\n", "plt.plot(x, y, marker='.', linestyle='none')\n", "\n", "# Margins and axis labels\n", "plt.margins(0.02)\n", "plt.xlabel('Games between no-hitters')\n", "plt.ylabel('CDF')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### How is this parameter optimal?\n", "Now sample out of an exponential distribution with $\\tau$ being twice as large as the optimal $\\tau$. Do it again for $\\tau$ half as large. Make CDFs of these samples and overlay them with your data. You can see that they do not reproduce the data as well. Thus, the τ you computed from the mean inter-no-hitter times is optimal in that it best reproduces the data." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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5JNP0r9//06Je9WqVbz00kv4fD4mTJjA4sWL2bp1a8zc++eff57Vq1djNpsZNWoUDz74IAUFBd3+/k+ZMoWXX36Z/v37s2XLlojc7866jrrYN2zYwJNPPsngwYPDtt11113dNvaOiquEIIQQov3ipspICCFEx0hCEEIIAUhCEEIIUUsSghBCCEASghBCiFqSEESHrVq1iuuuu44ZM2Zw6aWX8vOf/5zvvvuuq8MKOXLkCGeffXab37dx40aefvrpKETUdYYNG0Z5eXmj9e+//35oNNj6111TU8PcuXM7NUbRdeKmp7LoGn/605/44osveOqpp0LjvmzZsoVf/OIXrF69mr59+3ZxhO23fft2qqqqujqMTnHJJZdwySWXAOHXXVVVxfbt27syNNGJJCGIdjt+/Dh///vfee+998KGcxg3bhwLFy7E5XIB8OGHH/Lcc8/h9XopLy/nqquu4u6772br1q386U9/Ijc3l4KCAmw2G7fddhuvvPIKBQUFTJs2jQceeAAIzmvw17/+FZ/PR0JCAr/97W85++yz2bdvH4sWLcLr9aKUYvbs2cyZM6dRrLqus2jRInbs2IHJZGLx4sWh0Sr/+te/sn79enRdp1+/fjz44IMUFRXx2muvEQgESEpK4p///CcrVqxg4MCBPPfcc7z22mt8+OGHAPzsZz/j5z//Oeeccw5Llixhz549+Hw+xo0bx3333YfJZGLfvn0sWbKEyspKAoEAN954I7Nnz2br1q0sXbqUAQMGsHfvXvx+Pw899BBjx44Ni7+l/WpqanjooYfYvXs3mqZx0UUXcc8994QGWWvo2Wef5bvvvqOyspJbbrmFOXPmsHr1at59911++ctfhq47JSWFr7/+GrfbzZVXXsnq1as5cOBAs9exZMkSEhMTcTgcLF++nEWLFnHw4EEMBgMjR47k4Ycf7pbj94h6OmucbRF/3nvvPXX11Ve3uI+u6+qnP/2pKigoUEoF560YMWKEKisrU5999pkaMWKE2rFjh1JKqVtuuSU0d0RZWZkaOXKkKioqUgUFBWrWrFmqvLxcKaXUnj171IQJE5TD4VD3339/aJz5kpISdffdd6tAIBAWw+HDh9XQoUPV//3f/ymllPrkk0/UpEmTlMfjUW+88Ya6++67lc/nU0op9dprr6lbb71VKaXUM888ox566CGllFILFy5Ur7zyilJKqTlz5qgJEyao/fv3q+rqanXBBRcoj8ejFi5cqF5++WWllFJ+v1/95je/Uc8//7zy+XxqxowZ6vvvv1dKKVVdXa0uv/xy9c0334Tuwc6dO5VSSr344otqzpw5je5jS/vdd9996ve//73SdV15PB518803h+5JQ0OHDlUvvviiUkqpHTt2qDPPPFN5vV71+uuvq9tuu63RdR8+fFiNGTNGKaVOeh3Dhw9XR44cUUoFx/y/+eabQ/di0aJF6sCBA03GJLoPKSGIdlMNOrnb7fbQt3On08nll1/OPffcw3//93+zceNG3n77bfbt24dSKlR66N+/P2eccQYAp5xyCikpKVgsFnr37k1SUhJVVVV88cUXlJSU8LOf/Sx0Lk3TOHToEFOnTuW3v/0t27ZtY9y4cSxevLjJb6G9evVixowZAEycOBGA/fv38+GHH7J9+3auvfZagND8Aw1NnTqV1157jauuuorS0lJmzZrF5s2bSU1N5aKLLsJisbBx40a2b9/OqlWrAHC73UBw2PNDhw6FSjt123bu3MngwYPp27cvI0aMAOCMM87gjTfeaPJ+N7ffxx9/zD/+8Q80TcNisXD99dfz97//ndtuu63J48yaNQuAESNG4PV6sdvtTe7X0MmuIzc3N1RtOHbsWJYuXcqNN97I+PHjuemmmxg4cGCrziO6jiQE0W6jR4+moKCAiooK0tPTSU5OZs2aNUCwWqKiogKn08nVV1/NpZdeyrnnnsu1117Lhg0bQsnEYrGEHbOpag5d1xk3bhxPPfVUaF1hYSFZWVkMHz6cd999l82bN7Nlyxb+8pe/sHr1anJycsKO0TBJ6LqO2WxG13VuvfVWbrjhBgC8Xm+T7QZ14yB99NFHXHDBBYwfP55//OMf2Gy2UKLRdZ2nn346NPZNdXU1mqZx7NgxUlJSQvcGgtVtKSkpfPvttyQkJITW1w2j3JTm9ms4HLOu6/j9ft5//32eeeYZIDja5gsvvBB2j+ve09z5GqqrRmruOhITE0PrBwwYwHvvvcfWrVv57LPP+PnPf87DDz/MlClTWnUu0TWkQk+0W3Z2NnPnzuWuu+7i2LFjofVHjx7l66+/xmAwcPDgQex2O3fffTdTpkxh69ateL1edF1v9XnGjRvHpk2b2LdvHwAfffQRV1xxBW63m1//+te88847zJw5MzS71aFDhxodo7KyMlTn/8EHH5CQkMDAgQOZOHEiq1atCn1Lfvrpp7nvvvsAMBqNoblyrVYr5513Hn/+85+ZMGEC559/Pt9++y1ffvklF110ERAsebz00ksopfB6vdxxxx28+uqrDBo0iISEhNAHaWFhIbNmzeL7779v6y1v0sSJE3n11VdD5125ciXjx4/nkksuYc2aNaxZsyaUDFqj/nWbTCYCgQBKqTZdx/Lly7n//vuZOHEi9957LxMnTmTnzp0RuV4RPVJCEB2yYMEC3nrrLX7961/jcrmoqakhNTWVGTNmMGfOHKxWKxdffDGXX345FouFoUOHMmTIEA4ePNiodNCcIUOG8PDDD3PPPfeglMJkMvHXv/6VpKQkfvnLX7Jo0SJWrFiB0Wjk0ksv5bzzzmt0jIyMDNavX89TTz2FzWbj2WefxWQycd1111FcXMyPf/xjNE0jNzeXxx577NvhIwAAAOJJREFUDIALL7yQ3/zmN/z+97/n3//935k6dSrr16/nwgsvJCEhgeHDh5OamorVagVg0aJFLFmyhLy8PHw+H+PHj+fWW2/FbDbzX//1XyxZsoT/+Z//we/3c9dddzF27Fi2bt3a4d/B4sWLeeSRR0Lnveiii0JTnrZH/et+4IEHGD16NDNnzmTZsmWtvo6rrrqKzz//nBkzZmCz2cjNzeXGG2/s6KWKKJPRToUQQgBSZSSEEKKWJAQhhBCAJAQhhBC1JCEIIYQAJCEIIYSoJQlBCCEEIAlBCCFELUkIQgghAPj/vcehqbX6x+8AAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot the theoretical CDFs\n", "plt.plot(x_theor, y_theor)\n", "plt.plot(x, y, marker='.', linestyle='none')\n", "plt.margins(0.02)\n", "plt.xlabel('Games between no-hitters')\n", "plt.ylabel('CDF')\n", "\n", "# Take samples with half tau: samples_half\n", "samples_half = np.random.exponential(tau / 2, 10000)\n", "\n", "# Take samples with double tau: samples_double\n", "samples_double = np.random.exponential(tau * 2, 10000)\n", "\n", "# Generate CDFs from these samples\n", "x_half, y_half = ecdf(samples_half)\n", "x_double, y_double = ecdf(samples_double)\n", "\n", "# Plot these CDFs as lines\n", "_ = plt.plot(x_half, y_half)\n", "_ = plt.plot(x_double, y_double)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Linear regression by least squares\n", "- Least squares\n", " - The process of finding the parameters for which the sum of the squares of the residuals is minimal" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### EDA of literacy/fertility data\n", "In the next few exercises, we will look at the correlation between female literacy and fertility (defined as the average number of children born per woman) throughout the world. For ease of analysis and interpretation, we will work with the illiteracy rate.\n", "\n", "It is always a good idea to do some EDA ahead of our analysis. To this end, plot the fertility versus illiteracy and compute the Pearson correlation coefficient. The Numpy array ```illiteracy``` has the illiteracy rate among females for most of the world's nations. The array ```fertility``` has the corresponding fertility data." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('./dataset/female_literacy_fertility.csv')\n", "fertility = np.array(df['fertility'])\n", "illiteracy = np.array(100 - df['female literacy'])" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def pearson_r(x, y):\n", " \"\"\"Compute Pearson correlation coefficient between two arrays\n", " \n", " Args:\n", " x: arrays\n", " y: arrays\n", " \n", " returns:\n", " r: int\n", " \"\"\"\n", " # Compute correlation matrix: corr_mat\n", " corr_mat = np.corrcoef(x, y)\n", " \n", " # Return entry[0, 1]\n", " return corr_mat[0, 1]" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8041324026815345\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot the illiteracy rate versus fertility\n", "_ = plt.plot(illiteracy, fertility, marker='.', linestyle='none')\n", "\n", "# Set the margins and label axes\n", "plt.margins(0.02)\n", "_ = plt.xlabel('percent illiterate')\n", "_ = plt.ylabel('fertility')\n", "\n", "# Show the Pearson correlation coefficient\n", "print(pearson_r(illiteracy, fertility))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear regression\n", "We will assume that fertility is a linear function of the female illiteracy rate. That is, f=ai+b, where a is the slope and b is the intercept. We can think of the intercept as the minimal fertility rate, probably somewhere between one and two. The slope tells us how the fertility rate varies with illiteracy. We can find the best fit line using ```np.polyfit()```.\n", "\n", "Plot the data and the best fit line. Print out the slope and intercept. (Think: what are their units?)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "slope = 0.04979854809063418 children per woman / percent illiterate\n", "intercept = 1.8880506106365575 children per woman\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot the illiteracy rate versus fertility\n", "_ = plt.plot(illiteracy, fertility, marker='.', linestyle='none')\n", "plt.margins(0.02)\n", "_ = plt.xlabel('percent illiterate')\n", "_ = plt.ylabel('fertility')\n", "\n", "# Perform a linear regression using np.polyfit(): a, b\n", "a, b = np.polyfit(illiteracy, fertility, deg=1)\n", "\n", "# Print the results to the screen\n", "print('slope =', a, 'children per woman / percent illiterate')\n", "print('intercept =', b, 'children per woman')\n", "\n", "# Make theoretical line to plot\n", "x = np.array([0, 100])\n", "y = a * x + b\n", "\n", "# Add regression line to your plot\n", "_ = plt.plot(x, y)\n", "plt.savefig('../images/scatter-with-polyfit.png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### How is it optimal?\n", "The function ```np.polyfit()``` that you used to get your regression parameters finds the optimal slope and intercept. It is optimizing the sum of the squares of the residuals, also known as RSS (for residual sum of squares). In this exercise, you will plot the function that is being optimized, the RSS, versus the slope parameter ```a```. To do this, fix the intercept to be what you found in the optimization. Then, plot the RSS vs. the slope. Where is it minimal?" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0, 0.5, 'sum of square of residuals')" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYwAAAEMCAYAAADXiYGSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdeVxU5f4H8M8MMOz7OsMuyqIou0uCJmiCC5pZkmmZmZbW9daF1iskLeZSpmX5K+12S8vUm+JOKirhjoCigijKIsO+yQ4zc35/cJ0rJXiAmTkzzPf9evl6yTxz5ny/jM53zvOc53l4DMMwIIQQQh6Bz3UAhBBCNAMVDEIIIaxQwSCEEMIKFQxCCCGsUMEghBDCChUMQgghrFDBIIQQwoou1wEoW21tE2Sy3k81sbY2QXV1oxIiUl+Us3bQtpy1LV+gfznz+TxYWho/tE1lBSM8PBwCgQD6+voAgNjYWISFhSErKwvx8fFoa2uDo6Mj1q5dC2trawDosY0tmYzpU8G4f6y2oZy1g7blrG35AsrJWaVdUhs3bkRSUhKSkpIQFhYGhmEQFxeH+Ph4JCcnIzg4GOvWrQOAHtsIIYSoHqdjGNnZ2dDX10dwcDAAICYmBkeOHHlkGyGEENVT6RhGbGwsGIZBUFAQ3nzzTZSWlkIkEsnbraysIJPJUFdX12ObhYWFKsMmhBACFRaM7du3QygUor29HR9//DESExMxadIkpZ/X2tqkz8fa2poqMBLNQDlrB23LWdvyBZSTs8oKhlAoBAAIBALMnTsXr776Kp5//nmIxWL5c2pqasDj8WBhYQGhUNhtW29UVzf2afDH1tYUlZUNvT5Ok1HO2kHbcta2fIH+5czn87r9oq2SMYzm5mY0NHQGzzAMDh06BB8fH/j6+qK1tRXp6ekAgB07diAqKgoAemwjhBCieiq5wqiursbrr78OqVQKmUwGDw8PJCQkgM/nY82aNUhISOhy6yyAHtsIIYQ83LnrZUjJuIT35gUp/LV5A30DJeqSYo9y1g7alrM25cswDOK/vwBDAz2891xgn16D8y4pQgghyndbfA8llU2YPMpVKa9PBeMh9qXdwaEzd7gOgxBCeiX1shgCPT7GBTgq5fWpYDxEWU0zfjqUgw6JlOtQCCGElZY2CS7kVGCkjz2MDPSUcg4qGA8R5idCY0sH0m9Uch0KIYSwciGnHG0dUozzEz36yX1EBeMhvF0sILQxxqks8aOfTAghaiD1cikcbYzhITJT2jmoYDwEj8fD5FGuyCuuQ2l1E9fhEEJIj4orGnGn9B7C/ETg8XhKOw8VjG5EhLhAh8+jqwxCiNpLvSyGrg4Pj/k6KPU8VDC6YWGqjwBPW5y5WoYOiYzrcAgh5KHaO6Q4e7UMgZ62MDFUzmD3fVQwejD+v4PfGXk0+E0IUU+X8irR3CbBeCUOdt9HBaMHPm6WsDE3wKmsEq5DIYSQh/rjshi2FgbwcrVU+rmoYPSAz+NhvL8IuUV1KKtp5jocQgjpoqymGblFdQgbIQJfiYPd91HBeITQ4ULo8HlIvUyD34QQ9XIyswQ6fB7CRghVcj4qGI9gbqIPv8E2OJ1dComUBr8JIeqhvUOK09mlCPC0hbmJvkrOSQWDhfH+IjQ0dyDzZhXXoRBCCAAg/UYFmlolmOCv/MHu+6hgsDDMzQrWZjT4TQhRHycyS2BvZQRvFQx230cFgwU+n4dxfkJcL6hFRS0NfhNCuFVU3oD8knuY4K/cmd1/RgWDpdARIvB4neu1EEIIl05liaGrw8djw1Uz2H0fFQyWLE314edhgz+uiGnmNyGEMy1tEpy5VoaRPnZKn9n9ZyovGF999RW8vLyQl5cHAPDy8sL06dMxY8YMzJgxAzdu3JA/NyUlBZGRkZg0aRL+/ve/o6WlRdXhdhEe6IiG5g5cyqvgNA5CiPY6n1OOtnYpHlfSJkk9YVUwzp07h+LiYgBARUUF3n77bbz77ruorOzdkhnXrl1DVlYWRKKuo/o7duxAUlISkpKS4OXlBQBoamrCihUrsHnzZhw9ehTGxsbYunVrr86naEPdrWBnaYgTGTT4TQhRPYZhcDKzBE62Jkpdxrw7rArGypUroaOjAwBYvXo1JBIJeDweVqxYwfpE7e3tSExMREJCAqtBmtTUVPj6+sLNzQ0AEBMTg8OHD7M+nzLweTxMCHDEzbv1KK5o5DQWQoj2uVPagKLyRkwIUO1g9326bJ5UXl4OkUgEiUSCtLQ0pKSkQE9PD2FhYaxPtGHDBkRHR8PZ2fkvbfPnz4dUKsW4cePw+uuvQyAQoLS0tMuViEgkQmlp7wecra1Nen3Mfba2pn95bMaEIdiTehvncioQOEy1A06q8LCcBzrKeeAbKPluP34Thvo6mDZ+8CO3YVVGzqwKhomJCaqqqnDz5k14eHjA2NgY7e3tkEgkrE6SmZmJ7OxsxMbG/qXt5MmTEAqFaGxsRFxcHDZt2oQ33nijd1n0oLq6ETIZ0+vjbG1NUVnZ8NC2kT72SEkvxtRRLjAyYPUr1Ag95TxQUc4D30DJt6m1A6mZJRjr64CmhlY0NbR2+9z+5Mzn87r9os2qS2revHmYPXs2YmNj8dxzzwEAMjIyMGjQIFYBXLx4Ebdv30ZERATCw8NRVlaGl156CWlpaRAKO7+lm5iY4Omnn0ZGRgYAQCgUQiz+3/pNYrFY/lyuTQh0RFuHFGevlXEdCiFES5zJ7tybZ7y/6ge772P19Xjx4sWYNGkSdHR04OLiAgCwt7fHRx99xOokixcvxuLFi+U/h4eHY/PmzbC3t0draysMDAwgkUiQnJwMHx8fAEBYWBg+/PBDFBQUwM3NDTt27EBUVFRv81MKd6EZ3IWmSMm4i/BAR076Egkh2oNhGJzMKsEgkRlcHbjrXmPdn+Lu7t7jz31x+/ZtxMfHg8fjQSKRICAgAMuXLwfQecWRmJiIJUuWQCaTwcfHB++//36/z6ko4YFO2HowBzeK6lQ6NZ8Qon1yi+pQWt2MhVN8OI2j24Ixfvx4Vt+cT5482euTpqSkyP++f//+bp83ceJETJw4sdevrwoh3nbYcfwmUjJLqGAQQpTq+KW7MDHUw0gfO07j6LZgrF27VpVxaByBng7CRohwNL0YtQ1tsDRVzfLChBDtUl3fisyblYgc5QKBng6nsXRbMEaOHKnKODTS4wEiJF8oQuplMWaE9r+LjhBC/uxEZudE4QkczOz+M9ZjGDk5OUhPT0dtbS0Y5n+3qd4fc9BGdpZG8B1kjVNZJZg6xhW6OrQ0FyFEcdo7pEi9LEbAEFvYmBtyHQ6722p//fVXPPvsszh37hy+++475OXl4V//+heKioqUHZ/amxDoiLrGdmTR5kqEEAU7n1OOxpYORAQ5cR0KAJYFY8uWLdiyZQs2bdoEAwMDbNq0CRs2bICu7sCZtNZXIwZZw9rMACkZd7kOhRAygDAMg+OX7sLRxhjeLhZchwOAZcGorq5GcHBw5wF8PmQyGcaPH48TJ04oNThNwOfzMCHQEblFdbhbSetLEUIUI7/kHorKGxEe5KQ2c71YFQwHBwfcvdv5DdrNzQ3Hjx9Heno69PRUuxa7uhrnJ4JAl49j6XSVQQhRjGOXimGor4sxw+y5DkWOVcFYtGgR8vPzAQBLly5FXFwcXnjhBSxbtkypwWkKE0M9jB7mgLPXytDY0sF1OIQQDVfb0IZLNyoRNkIIA4H6dP2zimTWrFnyv48fPx4XLlxAR0cHjI2NlRaYppkY7ITUy+L/3jHlxnU4hBANdiqrBDIZgwmB3N9K+yBWVxgymazLH11dXRgaGkImo61K73OyNYGPqyVSMkogkdLvhRDSNxKpDKeyxBjuYQ17SyOuw+mC1RXG0KFDux10ycnJUWhAmmxSsDM2/ucKMvIqMdJHffodCSGaIz23AvVN7WpzK+2DWBWM48ePd/m5srIS3377LSZMmKCUoDTViMHWsLMwxLH0u1QwCCF9cvzSXdhbGmKYuxXXofwFqy4pR0fHLn/8/f2xevVqbNmyRdnxaRQ+j4eIICfcKqnHndJ7XIdDCNEwd0rvIV98D+FBTuCrya20D+rzWhaNjY2oqalRZCwDQugIIQwEOjiWXsx1KIQQDXM0vRgGAh2M9VWPzeL+jFWXVFxcXJcxjNbWVly8eBHR0dFKC0xTGerrInS4ECcyS/D0hMGwMKFVbAkhj1ZzrxUXcyoQEeSktls/s4rK1dW1y8+GhoaIiYnBY489ppSgNF1EkBOOX7qLk5klmBnGbhtbQoh2O55xFzKGwUQ1HOy+j1XBeO2115Qdx4Bib2WE4R7WOJnZOSdDT5dWsSWEdK+1XYJTmWIEedrCxoL7VWm7023B2L17N6sXmD17dq9O+NVXX+HLL7/E/v374enpiaysLMTHx6OtrQ2Ojo5Yu3YtrK2tAaDHNnU3KdgZn/2ahQs55Rg7XD37Iwkh6uF0dhma2yR4YqQL16H0qNuCkZSU1OXnjIwM2NjYQCgUorS0FFVVVQgMDOxVwbh27RqysrIgEokAdK7GGBcXh1WrViE4OBhff/011q1bh1WrVvXYpgmGullCZGOMo+nFeMzXQW0WDyOEqBeZjMHR9GJ4iMww2NGc63B61G1fyU8//ST/4+npibi4OJw6dQo7duzAqVOn8NZbb8HLy4v1idrb25GYmIiEhAT5h2d2djb09fXlK+HGxMTgyJEjj2zTBDweDxODnVBU3oi84jquwyGEqKnLt6pQUduCSSHOXIfySKw61/ft24f58+d3eWzevHl/uQrpyYYNGxAdHQ1n5//9UkpLS+VXGwBgZWUFmUyGurq6Hts0xWPDHGBqpIfD52mjKULIwyVfLIa1mT6CvGy5DuWRWA1629jYICUlBZMmTZI/duLECVhZsZuJmJmZiezsbMTGxvYtyn6wtjbp87G2tqb9Pv/0MA/8nJyLFikDFwezfr+esikiZ01DOQ986prvreI65BXX4aXoYXCwV2x3lDJyZlUw/vnPf+Jvf/sbtm7dCgcHB5SWluLWrVvYsGEDq5NcvHgRt2/fRkREBACgrKwML730EubPnw+xWCx/Xk1NDXg8HiwsLCAUCrtt643q6kbIZMyjn/gntramqKxs6PVxfzbKywa7jvOxIzkXL07x6ffrKZOictYklPPAp875/no0FwYCHQQMslZojP3Jmc/ndftFm1WX1NixY3H06FHExMRg6NChePbZZ3Hs2DGEhoayCmDx4sVIS0tDSkoKUlJS4ODggK1bt2LRokVobW1Feno6AGDHjh2IiooCAPj6+nbbpklMjQQIHS7E2WtlqG9s4zocQoiauD9RL2yESG0n6v0Z6yitrKwwc+ZMhZ6cz+djzZo1SEhI6HLr7KPaNM0TIc44mVmC4xl3MWucB9fhEELUgHyiXrD6TtT7s24LxksvvYStW7cCAObOndvtbaHbt2/v9UlTUlLkfw8MDMT+/fsf+rye2jSJvZURAj1tcSKjBFNHu0FfoMN1SIQQDj04Uc9WjSfq/Vm3BePBq4mnn35aJcEMZJNHueBSXiX+uCLGxGD1v32OEKI8aVdKOyfqhaj3RL0/67ZgTJ8+Xf73J598UiXBDGSDHc0x2NEcv18sxoRAR+jwabkQQrSRRCpD8oXizs8EJ/WeqPdnrD61Dhw4gPz8fADA7du3MW/ePDz//PPyxwg7k0e6oKq+FRl5VVyHQgjhyMXcClTfa0XUaM26ugBYFowvvvgC5uadlXDNmjUYPnw4QkJCsHLlSqUGN9AEDLGBnaUhjpwvBMP0/lZfQohmYxgGh88VQWRjDL/BNlyH02usCkZNTQ1sbGzQ1taGS5cu4Y033sCyZcuQm5ur7PgGFD6fh8khzrhT2oCbd+u5DocQomLZt2twt7IRUaNc1HJHvUdhVTCsrKxQWFiI1NRUDB8+HAKBAG1tbfQtuQ8eGy6EiaEejtByIYRoncPnCmFpqo9RQ+25DqVPWM3DWLp0KWbNmgUdHR2sX78eAHD27Fl4e3srNbiBSF9PB+GBjth3ugDiqiaIbIy5DokQogL5JfW4UVyHmPDB0NXRzJteWEU9a9YspKWl4dSpUxg7diwAwM/PD59//rlSgxuoIoKcINDj4/C5Qq5DIYSoyKFzhTA20MU4f9Gjn6ymWJe51tZWJCcn47vvvgMASCQSSKVSpQU2kJkaCTDezxFnr5Wjqq6F63AIIUpWWt2ErJtVCA90goFAM5YBeRhWBePChQuIjIzE/v378fXXXwMACgsL8cEHHygztgFt8khn8HjAkQs0lkHIQHf4fBH0dPmI0KBlQB6GVcH45JNP8MUXX2Dr1q3Q1e2sjn5+frhy5YpSgxvIrMwMMHa4A1Ivl9KihIQMYLUNbTh7tQyhI4QwMxJwHU6/sCoYJSUlGDNmDADI15TS09OjLql+ihrlCqlMht/Ti7kOhRCiJEcvFoNhOifuajpWBcPDwwN//PFHl8fOnDkDT09PpQSlLeytjBDibYcTGSVobu3gOhxCiII1tXbgRFYJRvrYadQig91hNfryzjvvYMmSJXj88cfR2tqK+Ph4pKSkyMczSN9NGe2KCzkVOJ5RgumPuXEdDiFEgU5klKCtXYrIUZp/dQGwvMLw9/fHvn37MHjwYDz11FNwcnLC7t27MWLECGXHN+C52JtihIc1jl4sRls7dfERMlC0tkvw+8VijPCwhou9em4R21uPvMKQSqVYsGABtm7dipdfflkVMWmdaWPc8Mm2S0i9LMakEFr6nJCB4GSmGI0tHZg+1o3rUBTmkVcYOjo6uHv3LmQymSri0UqDnczh6WyBIxeKIJHS75kQTdfWIcWR84UY5mYJD5FmLWHeE1ZdUsuWLcMHH3yAkpISSKVSyGQy+R+2li5diujoaMycORNz585FTk4OACA8PByRkZGYMWMGZsyY0WVwPSsrC9HR0Zg8eTIWLlyI6urqXqanOaaNcUVtQxvOXC3jOhRCSD+lZolxr7kD08e6cx2KQrEa9P7nP/8JAEhKSpI/xjAMeDye/IP/UVavXg1T085+vGPHjuG9997Dnj17AAAbN278yx1XDMMgLi4Oq1atQnBwML7++musW7cOq1atYnU+TTPM3Qqu9qY4dK4QocOF4PM1byVLQgjQIZHi8PlCeLtYwNPZgutwFIpVwTh+/Hi/T3S/WABAY2Njt3uE35ednQ19fX0EBwcDAGJiYhARETFgCwaPx8PUMa74eu9VXMgpx+hhDlyHRAjpgz+ulKKusR0vTxvKdSgKx6pgODo6KuRk77//Pk6fPg2GYbBlyxb547GxsWAYBkFBQXjzzTdhZmaG0tJSiET/W6TLysoKMpkMdXV1sLAYWFX7vkAvWzjaGGP/mQKM9LGnqwxCNIxEKsOhc4UY7GgOb1dLrsNROJWugvXxxx8DAPbu3Ys1a9bgu+++w/bt2yEUCtHe3o6PP/4YiYmJWLduncLOaW1t0udjbW1VfyvcvCk+WP1jOnJL7mF8oOrXneEiZ65RzgOfqvJNPleImnttWD4nEHZ2Zio5Z3eUkTMnyybOnDkT8fHxqK2thVAoBAAIBALMnTsXr776KgBAKBRCLBbLj6mpqQGPx+v11UV1dSNkst5v9GRra4rKyoZeH9dfQ4SmcLQ1xvYjOfB2NFPpVQZXOXOJch74VJWvRCrDjt9z4S40hZOVAae/4/7kzOfzuv2i3e1dUvX1ittCtKmpCaWlpfKfU1JSYG5uDn19fTQ0dCbFMAwOHToEHx8fAICvry9aW1uRnp4OANixYweioqIUFpO64vN4mDHWHaXVzbiQU851OIQQls5fL0dVfSumP+b+yDFaTdXtFcaECROQkZEBAFiwYAF++OGHPp+kpaUFy5cvR0tLC/h8PszNzbF582ZUV1fj9ddfl9+q6+HhgYSEBAAAn8/HmjVrkJCQgLa2Njg6OmLt2rV9jkGTBHrZwtHWGPtO01gGIZpAJmNw4EwBXOxM4DfYmutwlKbbgmFoaIi8vDx4eHjgypUrYBjmoXt48/mPnsphY2ODnTt3PrRt79693R4XGBiI/fv3P/L1B5r7Vxl0xxQhmuFCTjnKa1uw7EnfAXt1AfRQMJYtW4ann34a7e3tAIChQ7veItbbeRikd+gqgxDNIJXJsO90ARxtjRHgact1OErVbcGYO3cunnnmGVRVVSEqKgoHDhyQFwmifA9eZZzPKccYusogRC2du1aOsppmLHvSF/wB/vnY411Surq6cHBwwJ49exQ2F4OwF+hlC6f/XmWMoqsMQtSORCpDUtoduNibIHCAX10ALNeScnR0xMaNGxEeHo7hw4cjIiICGzdulHdXEeXg83iIHuuO8ppmnKc7pghRO2nZpaiqb8WscYO0oveF1TyMtWvX4sqVK0hMTIRIJIJYLMbXX3+NxsZGvPfee8qOUavRVQYh6qlDIsX+0wXwcDTD8EED986oB7G6wjhy5Ai++eYbhIaGYtCgQQgNDcVXX32Fw4cPKzs+rffgVcbZa7SSLSHq4mSWGLUNbZgVph1XFwDLgvGw22l7epwoVqCXLVzsTZCUdof2yyBEDbS1S3HwbOeKtD5uVlyHozKsCkZkZCReffVV/PHHH8jPz0dqaiqWLVumFTOv1QGfx8NT4z1QVd+KU1niRx9ACFGqlIy7uNfUjifHDeI6FJViNYYRFxeHb775BomJiaioqIC9vT2mTJmCpUuXKjs+8l++7lbwdLbA/jMFCB0uhL5Ah+uQCNFKLW0SHDpXiOGDrDHEaWCunN0dVgVDIBBg+fLlWL58ubLjId3g8XiYPd4Dn2y7hKPpxZj2mBvXIRGilY6mF6OpVYInxw2s3fTYYNUlRdTDYCdz+HlY4/D5IjS2dHAdDiFap7GlA8kXihDoaQs3B26XL+cCFQwNM2u8B1rbJDh8vpDrUAjROskXitDaJsXMUO27ugCoYGgcZzsTjBpmj+Ppd1HX2MZ1OIRojbrGNhy9WIyRQ+3hZNf3jdk0GRUMDTQz1B1SGYP9pwu4DoUQrbEv7Q6kMkbr7ox6EOt5GDt37sTzzz+P6dOnAwAuXryIQ4cOKTU48nB2lkYY5ydC6mUxKmqbuQ6HkAGvtLoJqZdLMSHAEXYWhlyHwxlWBWPDhg3YvXs35syZI985z8HBAVu2bFFqcKR708e6QYfPw94/7nAdCiED3m+nbkOgx8e0sW5ch8IpVgVjz5492Lx5M6ZOnSqfAu/k5ITi4mKlBke6Z2Gij4nBzjh/vRzFFY1ch0PIgHWrpB6X8ioROcoFZkYCrsPhFKuCIZVKYWxsDADygtHU1AQjIyPWJ1q6dCmio6Mxc+ZMzJ07V77x0p07dzBnzhxMnjwZc+bMQUFBgfyYntoIEDXaBYb6uth9Mp/rUAgZkBiGwe4Tt2BmLMDkEBeuw+Ecq4Ixbtw4rFq1Sr6cOcMw2LBhAyZMmMD6RKtXr8a+ffuwd+9eLFy4UL7KbUJCAubOnYvk5GTMnTsX8fHx8mN6aiOAsYEepj3mhuzb1bh2p4brcAgZcC7fqkbe3XrMCHWn1RXAsmC89957qKioQFBQEBoaGhAQEACxWIzY2FjWJzI1NZX/vbGxETweD9XV1bh+/TqmTZsGAJg2bRquX7+OmpqaHtvI/0QEOcHG3AC/ptyCTEaLQRKiKDIZg92n8mFvZYSwEUKuw1ELj1wahGEY1NbWYuPGjaivr0dJSQmEQiFsbXu/u9T777+P06dPg2EYbNmyBaWlpbC3t4eOTmfl1tHRgZ2dHUpLS8EwTLdtVlbaszrko+jp8jH7cQ9sTrqG01dLETZCxHVIhAwIadmlEFc1YelMX+jq0AwEgEXB4PF4mD59OjIyMmBtbQ1r675vFPLxxx8DAPbu3Ys1a9aoZG0qa+u+T7CxtTV99JPUwBQbE5zIFCMprQBTQj1goM9qibCH0pScFYlyHvh6m29zaweS0u7Ax80KkaGaud+FMt5jVp8sPj4+uHPnDjw8PBRy0pkzZyI+Ph4ODg4oLy+HVCqFjo4OpFIpKioqIBQKwTBMt229UV3d2KeuGltbU1RWNvT6OK7MGueOVdsysP3wdUSP7duyBZqWsyJQzgNfX/L9LTUftQ1tWPqkL6qqNO8uxP68x3w+r9sv2qwKxsiRI/Hyyy/jySefhIODQ5dqO3v27Ece39TUhHv37sk/7FNSUmBubg5ra2v4+PjgwIEDmDFjBg4cOAAfHx95l1NPbaSrIU4WCPKyxeFzRRjvJ4K5iT7XIRGikarrW5F8oRijh9rDQ2TOdThqhVXByMjIgKOjIy5cuNDlcR6Px6pgtLS0YPny5WhpaQGfz4e5uTk2b94MHo+HDz74AO+88w6+/vprmJmZYfXq1fLjemojfzX7cQ9k3azC3rQ7eCHSm+twCNFI/znVeZv6U+MV06MykPCYAb7PqrZ0Sd3387E8HL90FytfHNnrBdI0Nef+oJwHvt7kmy+ux8c/XsK0x1wxa5zmFgxldUn1euifYRjIZDL5H6Jeose6w0hfFz8fy6M91wnpBYZh8OvxWzA3FiBqlCvX4aglVl1S5eXlSExMRHp6Ou7du9el7f6MbaIeTAz18OS4Qdj2ex4y8ioR5GXHdUiEaISLuRW4VVKPBVHeMOzHnYYDGasrjISEBOjp6eGHH36AkZER9uzZg/DwcKxcuVLZ8ZE+GO8vgqOtMX5NuYUOiZTrcAhRe+0dUuw6kQ9nOxOEDqdJet1hVTAyMzPxySefwMfHBzweD97e3vj444/x/fffKzs+0gc6fD7mRgxBVX0rjlygBSIJeZTD54tQfa8VMRFDwOdr3pwLVWFVMPh8PnR1Oy/RzMzMUFNTAyMjI5SXlys1ONJ3Pm5WCPK0xcGzBahtoJ35COlOVV0LDp0rRIi3HXxcLbkOR62xKhh+fn44deoUACA0NBR///vf8dprr8HX11epwZH+eSZ8MGQyYNfJW1yHQoja+jXlFng8YE74YK5DUXusCsaaNWsQEhICoHMhwlGjRmHIkCH47LPPlBoc6R9bC0NEjnLGuWvluHW3nutwCFE71+7U4FJeJaaOcYOVmQHX4ag9VrcCmJmZyf9uYGCAZcuWKS0golhTRp05cB8AACAASURBVLsi7Uopth/Nw4oXgql/lpD/kkhl+PlYHuwsDBE50pnrcDQCq4KxYcOGbttUsYAg6TsDgS5iIoZgc9I1nMgsQUSQE9chEaIWjqXfRWl1M/42ewT0dGmvCzZYFYyysrIuP1dWVuLixYuYOHGiUoIiihXibYfUy2L8lnobwd52MDfW7m0mCalrbMO+03cwwsMa/oNtuA5HY7AqGKtWrfrLY6mpqTh48KDCAyKKx+Px8NwkT8RvvYBdJ25h0bShXIdECKd2nriFDokMz0YM4ToUjdLnXUFCQ0Nx7NgxRcZClEhobYzIUS44c7UMN4pquQ6HEM5cL6jBuWvlmDLaFfZWRlyHo1FYXWEUF3ed/NXS0oIDBw70em8Kwq1pj7nh3LVybPs9DwkvhtAuYkTrdEik+Cn5BuwsDDF1DK0X1VusCsakSZPA4/Hki9kZGhrCx8cHn376qVKDI4qlr6eDuZOG4Mv/ZONY+l1EjnLhOiRCVOrQuSKU17bgzTl+EOjRQHdvsSoYubm5yo6DqEjAEFv4eVgjKe0ORvrY0b3nRGuU1zTj4NkCjPSxg69737ea1mbUJ6GF5k7yBMMw2PY7LYFOtAPDMPjp9xvQ0+Ujhga6+4zVFcb48eNZbYJ+8uTJ/sZDVMDWwhAzwwZh54lbuHSjEsHetAQ6GdjOXy/H9YJazHvCExa0fXGfsSoYzz//PPbu3Yv58+dDJBJBLBZj27ZtmDlzJq0npaEmhTjh/PVybDuaBx83Sxgb6HEdEiFK0djcjh0pt+AuNMXj/o5ch6PRWBWMPXv2YOvWrbC3t5c/Nm7cOCxatAgLFy585PG1tbV46623UFRUBIFAAFdXVyQmJsLKygpeXl7w9PQEn9/ZO7ZmzRp4eXkBAFJSUrBmzRpIpVIMGzYMq1atgqGhYV/yJH+iw+djQZQ3Pvx3OnaduIUFUT5ch0SIUmzddw2NzR1442k/Whqnn1iNYVRUVMDIqOv9yr1Z3pzH42HRokVITk7G/v374ezsjHXr1snbd+zYgaSkJCQlJcmLRVNTE1asWIHNmzfj6NGjMDY2xtatW9nmRVhwdTDFEyHOSL1cSnMzyIB07U4Njl0sQtRoF7g6mHIdjsZjVTDCw8Px6quv4vTp08jPz0daWhqWLVuG8PBwViexsLDAqFGj5D/7+/tDLBb3eExqaip8fX3h5uYGAIiJicHhw4dZnY+wNyPMHbYWBvjhyA20d9DufGTgaG2X4IfDuXC0NUH0WDeuwxkQWHVJrVy5El9++SUSEhJQUVEBW1tbREVF4bXXXuv1CWUyGX755ZcuxWb+/PmQSqUYN24cXn/9dQgEApSWlkIkEsmfIxKJUFpa2uvzWVub9PqY+2xtteMbyevPBCD+27PYcfQGnp+ifcuGaMv7/CBtyPnbvdmoaWjFp8+HQiS04DoclVPGe8yqYOjr6yM2NhaxsbH9PuGHH34IIyMjzJs3D0DnnVVCoRCNjY2Ii4vDpk2b8MYbb/T7PPdVVzdCJuv9raO2tqaorGxQWBzqzMnKEGN9HfCfE7cw1NlCqy7dtel9vk8bcr55tw4H/riN8CAnDHW3HvD5/ll/3mM+n9ftF21WXVLnzp2TLw9SWVmJt99+G++++y4qKyt7Fcjq1atRWFiIL774Qj7IfX95ERMTEzz99NPIyMiQP/5gt5VYLKalSJQoZuIQWJgIsOXgdXRIZFyHQ0ifdUik+OFwLqzM9PHU+EFchzOgsCoYK1euhI5O5zT6Tz/9FBKJBDweDytWrGB9ovXr1+Pq1avYtGkTBILO5bXr6+vR2toKAJBIJEhOToaPT+fdOmFhYcjOzkZBQQGAzoHxqKgo1ucjvWNsoIdlT/ujpLIJ+8/c4TocQvps3+kClFY344UobxgIWHWiEJZY/TbLy8shEokgkUiQlpaGlJQU6OnpISwsjNVJbt68ic2bN8PNzQ0xMTEAACcnJyxatAjx8fHg8XiQSCQICAiQb8hkYmKCxMRELFmyBDKZDD4+Pnj//ff7mCZhY+RQB4wd7oBDZ4sQMMQW7kKzRx9EiBrJF9fj0LlChA4X0vIfSsCqYJiYmKCqqgo3b96Eh4cHjI2N0d7eDolEwuokQ4YMwY0bNx7atn///m6PmzhxIm3SpGLPRgzB9YJabD2Yg4QFwbQTGdEYbR1SbDmQAytTfVr+Q0lYdUnNmzcPs2fPRmxsLJ577jkAQEZGBgYNov7BgcbIQA8vRHpDXNWEpLQCrsMhhLXdJ/NRXtOMhVOHwsiAuqKUgdVvdfHixZg0aRJ0dHTg4tK5JLa9vT0++ugjpQZHuDHCwxqhI4Q4fL4QAUNs4OFoznVIhPToekENjl+6i4lBTvBxteQ6nAGL9Wq17u7u8mJx/+f7s7LJwBMTPgRWpvr47sB1tLaz63okhAvNrRJ8fygH9lZGeOpxD67DGdBoeXPyUEYGulg0bSgqa1vwy7GbXIdDSLd+OZ6H2oY2LJrmA33aFEmpqGCQbnm5WCJqtCv+uFKKSzd6N+eGEFW4dKMSp7PLMHWMKzxE1HWqbN0WjOPHj8v/3tHRoZJgiPqZGeYOV3tT/PtILmob2rgOhxC5mnut+OFwDtwcTBE91p3rcLRCtwUjLi5O/vcHFw4k2kVXh4/F0UPR3iHF94dyIKMd+ogakMkYfLf/OiRSBkuih0FXhzpLVKHbu6RsbW2xbds2eHh4QCqV4ty5cw/dznPMmDFKDZBwT2htjDkRQ/BT8g0cT7+LSSHOXIdEtNzBswW4UVyHl6b6wN7K6JHPJ4rRbcFYtWoVNm7ciB9//BEdHR147733/vIcHo/XpeuKDFyP+4uQnV+NXSfz4eViARd77VmgkKiXWyX1SEorwOih9njM14HrcLRKtwUjMDAQP/zwAwBg0qRJOHr0qKpiImqIx+PhxSne+OBfF/HN3quIXxACQ32aHEVUq7lVgm/3XYOVmT7mT/YCj0c76KkSq46/+8VCLBYjMzOzT/tSEM1naiTAkuhhqKxrxb+P5D60i5IQZWEYBj8m56LmXhuWRA+jLywcYPUbr6ysxBtvvIGsrCxYWFigrq4Ofn5++Pzzz7vs800GPk9nCzw5zh3/OXUb3i6WeDzAkeuQiJY4kVmCCzkVeGr8IFp9gCOsrjASEhLg7e2NCxcuIC0tDRcuXICPjw8SEhKUHR9RQ1GjXeHrboWfj91EUbl2bUxDuHFbfA+/HLuJER7WiBrtynU4WotVwbh06RLefvttGBl13o1gZGSEt956C5mZmUoNjqgnPo+HRdOHwsRQF9/svYqWNlo6hChPY0sHvtmbDQsTfSyaNhR8GrfgDKuCYW5ujvz8/C6P3b59G2ZmtF+CtjL773hGRV0LfjhM4xlEOWQMgy0HrqOusR1Ln/SFiaEe1yFpNVZjGIsWLcKCBQswe/ZsiEQiiMVi/Pbbb/LNjoh28nKxxFPjPbD7ZD7chWaIHOXy6IMI6YVDZwtxJb8a857wpA291ACrgvHMM8/A2dkZBw4cwI0bN2BnZ4fPPvuMJu0RRI1yQUHpPew6eQvO9iYY5mbFdUhkgLheUIM9f9zG6KH2mEA3V6gF1veljRkzps8Fora2Fm+99RaKioogEAjg6uqKxMREWFlZISsrC/Hx8Whra4OjoyPWrl0La+vOrRV7aiPqgcfjYeFUH5RWN+P/kq4h/oVg2FgYch0W0XAVdS34Zu9VCK2N8XwkzbdQFypZgIXH42HRokVITk7G/v374ezsjHXr1oFhGMTFxSE+Ph7JyckIDg7GunXrAKDHNqJeDAS6eG3WcEhlDL7ak432DinXIREN1touwZf/uQIA+NtTw2EgoPkW6kIlBcPCwqLLAob+/v4Qi8XIzs6Gvr4+goODAQAxMTE4cuQIAPTYRtSPvZURFk8fiuLyRvyYfIMGwUmfdA5y50Bc1YRXZvjCzpLWiVInKi/dMpkMv/zyC8LDw1FaWgqRSCRvs7KygkwmQ11dXY9tFhYWrM9nbW3S51htbbVvvaT+5DzR1hSVDe34OTkXXm7WmDVhsAIjUx56n9XHz8m5yMirxKIZvnh8pOLmW6hrvsqkjJxVXjA+/PBDGBkZYd68eSpZn6q6uhEyWe+/7dramqKyUrsmpSki53B/IfIKa/DDgWswEfAR4GmroOiUg95n9XHpRgV++f0Gxvo6YIy3rcJiVNd8lak/OfP5vG6/aLMqGA0NDfjxxx+Rk5OD5ubmLm3ff/8960BWr16NwsJCbN68GXw+H0KhEGKxWN5eU1MDHo8HCwuLHtuI+uLzeHhpqg+q61vwf/uv4d3nguDqoH3f7kjvFJY1YMuBHAwSmdEgtxpjVTCWL18OqVSKSZMmQV9fv08nWr9+Pa5evYpvv/0WAoEAAODr64vW1lakp6cjODgYO3bsQFRU1CPbiHrT19PB354agQ9/TMfG/1zBP58PhqVp3/7dkIGvur4VX+y6DBPDzpsn9HRpX251xWNYjE4GBgbi/Pnz0NPr2yzLmzdvYtq0aXBzc4OBgQEAwMnJCZs2bUJGRgYSEhK63DprY2MDAD22sUVdUuwpOufiikZ8su0SHCyN8M5zgdAXqN8HAb3P3GpulWDVtkuoaWjFe/OC4Gjb9zHH7qhTvqqirC4pVgXj5Zdfxj/+8Q94e3v3KQAuUcFgTxk5Z92qwpf/uQL/wTZY9uRw8Pnq1dVA7zN3JFIZ1u+8jLziOrzxjB+GKmnSp7rkq0qcjmF8+umnePnll+Hn5/eXiXOvvfZan4Ii2sF/sA2ejRiCn4/dxE+/38DztOkNQec8q38fzkVOYS1emuqjtGJBFItVwVi/fj3Kysrg5OSExsZG+eP0H5+wMTHYGfVN7Th4thDmxgLMDBvEdUiEY0lpd3D6ahmix7ph7HAh1+EQllgVjIMHDyI5ORl2dnbKjocMULPGDUJ9Uzv2nS6AubEAEwKduA6JcOToxWLsO12AscMdMCPUnetwSC+wKhjOzs7Q1aXp+aTveDweXoj0QmNzB7b9ngdTIwGCvekLiLY5nV2KX47fRKCnLRZEeVMvhYZhVQVmzJiBpUuXYt68eX8Zw6AVawlbOnw+lswYhs9+zcK3+6/ByECX+q61SGZeJf51KBc+rpZYEj0UOnyVrExEFIjVXVLh4eEPP5jHw/HjxxUelCLRXVLsqSrnptYOrN6egYraFrzxjB+8XCyVfs7u0PusGjkFNVi/6zKc7UwRG+MPQ33V9VjQe9w7/b5LKiUlpU8nJuRhjA30EBsTgNU/Z+CLXVfwjzn+GOxkznVYREluldRj42/ZsLc0whvP+Km0WBDFomtCwgkzYwHing2AhYkA63dl4bb4HtchESW4ebcOn/2aBXNjAd6c409brGo4VqV+/Pjx3Q5OnTx5UpHxEC1iYaKPuGc7rzQ+/zULcc8G0LpTA0hecR3W77oMC2MB3pobSMvDDACsCsbatWu7/FxZWYkff/wRU6ZMUUpQRHtYmRl0Fo3tGVi3IxNvzvGnvZsHgLziOqzfeRkWpvp469kAKhYDBKtB74eprKzEokWLkJSUpOiYFIoGvdnjMufKuhas/SUTjS0dWD57hMoGwul9VrwbRbX4YtcVWJp2XkFyXSzoPe6dnga9+zyGIRAIcPfu3b4eTkgXthaGeHdeECxN9bF+52Vk367mOiTSB5dvVWH9zsuwMtPHW3O5LxZEsVh1SW3YsKHLz62trTh16hTGjRunlKCIdrI01cfbzwXi8x1Z2Lj7CpZED6PJfRrk7NUybD2YA2c7E7zxjB/MjAVch0QUjFXBKCsr6/KzoaEhXnzxRcyYMUMpQRHtZWYkwFtzA7B+12V8k3QVC9q9ETZC9OgDCad+v1iMHcdvwtvFAq8/NYJunR2gWL2rq1atUnYchMgZGejhH3P8sWnPVfzrUC6q61sxI9SdlpFQQwzDYM8ft3HgTCGCPG2xOHoobYA0gLEawzh37hyKi4sBdA52v/3223j33XdRWVmp1OCI9jIQ6GL57BEIHS7EvtMF2HowBxKpjOuwyAM6JDJ8fzAHB84UYpyfEK/O9KViMcCxKhgrV66Ejk7nP4RPP/0UEokEPB4PK1asUGpwRLvp6vDx4hRvPBnmjjNXy7B+52U0t3ZwHRYBcK+5Het2ZOL01TLMCHXHC5Hearc5FlE8Vl1S5eXlEIlEkEgkSEtLQ0pKCvT09BAWFsb6RKtXr0ZycjJKSkqwf/9+eHp6Auhcp0ogEMj3Co+NjZW/blZWFuLj47ts0frnxQ/JwMbj8TB9rDtszA3x/aEcfLItA397ajjsLI24Dk1rlVQ2YsPuK6hvascrM4ZhpI891yERFWF1hWFiYoKqqipcvHgRHh4eMDY2BgBIJBLWJ4qIiMD27dvh6Oj4l7aNGzciKSkJSUlJ8mLBMAzi4uIQHx+P5ORkBAcHY926dazPRwaWMb4OeHOOP+ob25D4Qzqu5NNtt1zIvl2NT7ZdQodEhrfnBlKx0DKsCsa8efMwe/ZsxMbG4rnnngMAZGRkYNAg9junBQcHQyhkv7NWdnY29PX1ERwcDACIiYnBkSNHWB9PBh4fV0vELwiBjbkBNuy6jH2n70DWt3mnpJdkDIN9aXfwxc7LsDU3xIoXgjFIRDPytQ2rLqnFixdj0qRJ0NHRgYuLCwDA3t4eH330kUKCiI2NBcMwCAoKwptvvgkzMzOUlpZCJPrf7ZRWVlaQyWSoq6uDhYWFQs5LNI+thSHenR+EH4/kYu8fd1BY1oCXpg6FkQHdxqks95rb8d3+67h2pwZjhtnj+cne0BfQ4LY2Yv2/zN3dvcef+2r79u0QCoVob2/Hxx9/jMTERIV2PXU3xZ0NW1vtWwhPU3J+98VR2J92G1v3XcPHP11C7LwgePZxORFNyVmR2Oacc6cGq39Kx72mdrz2tB+eGOWqkbc303usGJx/LbvfTSUQCDB37ly8+uqr8sfFYrH8eTU1NeDxeL2+uqC1pNjTtJzHeNvB2liA7/ZfQ9zGPzAjzB1TR7v26m4dTctZEdjkLJMxOHKhCHtSb8PazADvzQuCq4MpqqoaVRSl4tB73DtKWUtKEZqbm9HQ0JkUwzA4dOgQfHx8AAC+vr5obW1Feno6AGDHjh2IioriLFainjydLbBy4UgEe9tiT+ptrPklEzX3WrkOS6OV1zbj0+0Z2H0yHwFDbBC/IISWnScA+rFabW999NFH+P3331FVVQVLS0tYWFhg8+bNeP311yGVSiGTyeDh4YF//vOfsLPrXD8oIyMDCQkJXW6rtbGx6dV56QqDPU3OmWEYnLlahm1H86DD4+HZiUPwmK/DI7tPNDnnvuouZ4ZhcCKzBDtP3IIun4/nnvDE6KH2GtkF9SB6j3unpysMlRUMrlDBYG8g5FxR24wtB3Nw6249fFwt8UKkV49zNgZCzr31sJwr6lrw05FcXCuoha+7FV6c4jNgVpql97h3+r2nNyGaws7SCO88F4hTWWLsPnkLK7ZewIxQdzwR4gxdHdqR+M86JFIcPleEg+cKwefzMH+yFx73F2n8VQVRDioYZMDh83iYEOAI/8E22H40D7tP5uPctTLMiRiCYW5WXIenNrJvV2P773moqGtBiLcdYiKGDJirCqIcVDDIgGVpqo/XZg3HpRuV+DXlJj7bkYURHtZ4ZsJgiGyMuQ6PM4Vl97B1bzYyb1bB3soI/4jxp0JKWKGCQQa8IC9bjPCwwrFLd3HgTAHit17AeH8Rose6adX9+VX1LUj64w7OXiuDQE8Hs8YNwuSRLtDTpa46wg4VDKIV9HR1EDXKFWOHC7Ev7Q5OZoqRll2KyaNcMX6EENbmBlyHqDS1DW04fK4QJ7NKAPAQPc4DE/yEMDWiHfFI71DBIFrFzEiAeU94YVKwMw6eK8ThswU4fLYAY3wdMHW0K+ytBs4quEXlDUi+UIwLOeVgGCB0hAOix7rDy8NW6+4aIopBBYNoJXsrIyyc4oMXo33x86EcnLosxukrpRg2yAqP+zvCb7A1dPia11UjkzG4eqcav18sxvWCWujr6WBCgCMmhjjDzsKQ6/CIhqOCQbSanaURnnvCE9Mec8WJzBKkXhbjq9+yYWmqj7ARQoQOF8JGAz5oK+pakHalFKezS1Hb0AZzEwGeGj8Ijwc4wthAj+vwyABBBYMQAOYm+pgZNgjTx7rhyq1qnMgqwf7TBdh3ugCDRGYY6W2HQC9b2JirT/GoqmtB+o1KXMwtx53SBvAADBtkhZiIIQgYYkPzTojCUcEg5AE6fD4CPG0R4GmLqroWnM8px8WcCuxIuYUdKbfgaGOM4R7WGOZmBQ9HMxgIVPdfqKVNgnxxPa7erkH27WqUVjcDAFwdTDH7cQ+M8rEf0IP3hHtUMAjpho2FIaaOccPUMW4oq2nG5VtVuJJfjaMXi3HkfBH4PB6c7U0wWGQOZ3sTONuZQGRtrJC9IlrbJSipasLdikYUVTQi/249iisbwTCArg4PXs4WGOcnQoCnLY1NEJWhgkEICw5WRnAY6YLJI13Q2i7BrZJ63Cyux827dUi7Woq2DKn8uebGAthYGMDazACmRgKYGunB2EAPerp86OnwwefzIJXJIJEy6JDI0NjSgcaWDjQ0t6O6vhWV9a2419Qufz19gQ4GCc0w/TE3DHY0xxAnC9rAiHCCCgYhvWQg0IWvuzV83a0BdG5fWlXXguKKRoirmlBZ34qquhYUlDWgobkDLW2SR76mob4OTA0FsDY3gJ+HNWwsDOFkYwxHOxPYmBuAT2s7ETVABYOQfuLzeLCzNIKdpRGCvP7aLpHK0NwqgUQqQ4dEBqmMga4OD7o6fOjq8GFkoEsD1EQjUMEgRMl0dfgwM6ZZ1UTz0dcaQgghrFDBIIQQwopKCsbq1asRHh4OLy8v5OXlyR+/c+cO5syZg8mTJ2POnDkoKChg1UYIIUT1VFIwIiIisH37djg6OnZ5PCEhAXPnzkVycjLmzp2L+Ph4Vm2EEEJUTyUFIzg4GEKhsMtj1dXVuH79OqZNmwYAmDZtGq5fv46ampoe2wghhHCDs7ukSktLYW9vDx2dzglIOjo6sLOzQ2lpKRiG6bbNyop2BiOEEC4M+Ntqra1N+nysNu3Gdh/lrB20LWdtyxdQTs6cFQyhUIjy8nJIpVLo6OhAKpWioqICQqEQDMN020YIIYQbnN1Wa21tDR8fHxw4cAAAcODAAfj4+MDKyqrHNkIIIdzgMQzDKPskH330EX7//XdUVVXB0tISFhYWOHjwIPLz8/HOO+/g3r17MDMzw+rVqzFo0CAA6LGNEEKI6qmkYBBCCNF8NNObEEIIK1QwCCGEsEIFgxBCCCtUMAghhLBCBYMQQggrVDAIIYSwolUFg82S6VKpFCtXrsTEiRMxadIk7Nq1i1Wbuupvzps2bcLUqVMRHR2NWbNm4Y8//lBh9H3T35zvu337Nvz8/LB69WoVRN0/isj50KFDmD59OqZNm4bp06ejqqpKRdH3TX9zrq6uxuLFizF9+nRERkbigw8+gETy6P3XucQm57S0NMyaNQu+vr5/+bfb788wRovMnz+f2bt3L8MwDLN3715m/vz5f3nOnj17mIULFzJSqZSprq5mwsLCmOLi4ke2qav+5pyamso0NzczDMMwOTk5TFBQENPS0qK6BPqgvzkzDMNIJBJm3rx5zJtvvsl8+umnKou9r/qb85UrV5ioqCimoqKCYRiGuXfvHtPa2qq6BPqgvzl/9NFH8ve2vb2dmT17NnPw4EHVJdAHbHIuKChgrl27xnz++ed/+bfb388wrbnCYLtk+qFDh/D000+Dz+fDysoKEydOxJEjRx7Zpo4UkXNYWBgMDQ0BAF5eXmAYBnV1dapNpBcUkTMAfPvtt3j88cfh5uamyvD7RBE5//DDD1i4cCFsbW0BAKamptDX11dtIr2giJx5PB6ampogk8nQ3t6Ojo4O2NvbqzwXttjm7OrqiqFDh0JX969LBfb3M0xrCkZPy6n/+XkikUj+s1AoRFlZ2SPb1JEicn7Q3r174eLiAgcHB+UG3g+KyDk3NxdpaWlYsGCByuLuD0XknJ+fj+LiYjz33HN48skn8fXXX4NR40UgFJHz0qVLcefOHYSGhsr/BAUFqS6JXmKb86Neoz+fYVpTMEj/XLhwARs2bMBnn33GdShK1dHRgRUrVmDlypXy/5jaQCqV4saNG/jXv/6Fn376CampqUhKSuI6LKU6cuQIvLy8kJaWhtTUVKSnp6t1j4E60JqC8eBy6gC6XTJdKBRCLBbLfy4tLZV/o+6pTR0pImcAyMzMRFxcHDZt2qT2C0D2N+fKykoUFRVh8eLFCA8Px7///W/s3LkTK1asUGkevaGI91kkEiEyMhICgQAmJiaIiIjAlStXVJdELyki523btiE6Ohp8Ph+mpqYIDw/H+fPnVZdEL7HN+VGv0Z/PMK0pGGyXTI+MjMSuXbsgk8lQU1ODY8eOYfLkyY9sU0eKyPnKlSt44403sHHjRgwbNkzlOfRWf3MWiUQ4f/48UlJSkJKSghdeeAHPPPMMPvzwQy7SYUUR7/O0adOQlpYGhmHQ0dGBc+fOwdvbW+W5sKWInJ2cnJCamgoAaG9vx9mzZzFkyBDVJtILitj2od+fYf0YsNc4t27dYmbPns088cQTzOzZs5n8/HyGYRhm0aJFzJUrVxiG6bw7Jj4+nomIiGAiIiKYHTt2yI/vqU1d9TfnWbNmMaNGjWKio6Plf3JzcznJha3+5vygjRs3asRdUv3NWSqVMp988gkTGRnJTJkyhfnkk08YqVTKSS5s9TfnwsJCZsGCBcy0adOYqKgo5oMPPmA6Ojo4yYUtNjlfvHiRCQsLYwICAhh/f38mLCyMSU1NZRim/59htLw5IYQQVrSmS4oQQkj/UMEghBDCChUMQgghrFDBIIQQwgoVDEIIIaxQwVCRL7/8ErGxsZyc0eOR1wAADr9JREFU+80338SxY8ce+bzw8HCcOXPmoW3p6eld7tfu6bnnz5/HuHHj+hYsIX3Q07/PB//vicViBAQEyCe/qZv29nZERkaiurqa61AeigrGAJebm4vc3FxERET063WCg4ORnJysoKiIqm3evBmff/4512H0WU9fUAD2/z5FIhEyMzPly77Mnz9fqdsU3L17F15eXqyXTRcIBHjqqafw3XffKS2m/qCCMcD9+uuvmD59Ong8HtehAIBa7zegzrH116lTp5R+1TeQf3/dUcaVyvTp07Fnzx60t7cr/LX7iwqGgn377bcICwtDQEAAJk+ejLNnzz70ecePH8fUqVMRHByM+fPnIz8/X94WHh6O//u//8OUKVMQEhKCd999F21tbfL2EydOYMaMGQgODkZMTAxyc3O7jSc1NRUhISFdHtu5cyeioqIQEBCAKVOm4Nq1a/K2nJwcTJ8+HUFBQfj73/8uP29P3Uytra145513EBISgilTpiA7O7tLe3h4OL799ltMnz4d/v7+kEgkKC8vx+uvv47Ro0cjPDwcP/74o/z5X375JZYvX4633noLAQEBmDp16l9e80FeXl748ccfERERgVGjRmH16tWQyWTy9t27dyMqKgohISF46aWXUFJS0uXY7du344knnsATTzzxl9d+++238f333wMAysvL5c8HgMLCQowcOVK+quvOnTsxadIkjBw5Eq+88grKy8sfep6AgAB88cUX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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Specify slopes to consider: a_vals\n", "a_vals = np.linspace(0, 0.1, 200)\n", "\n", "# Initialize sum of square of residuals: rss\n", "rss = np.empty_like(a_vals)\n", "\n", "# Compute sum of square of residuals for each value of a_vals\n", "for i, a in enumerate(a_vals):\n", " rss[i] = np.sum((fertility - a * illiteracy - b) ** 2)\n", " \n", "# Plot the RSS\n", "plt.plot(a_vals, rss, '-')\n", "plt.xlabel('slope (children per woman / percent illiterate)')\n", "plt.ylabel('sum of square of residuals')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## The importance of EDA: Anscombe's quartet\n", "- Do graphical EDA first" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [], "source": [ "df = pd.read_csv('./dataset/anscombe.csv')\n", "x = np.array(df.iloc[1:, 1].astype('float'))\n", "y = np.array(df.iloc[1:, 2].astype('float'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear regression on appropriate Anscombe data\n", "For practice, perform a linear regression on the data set from Anscombe's quartet that is most reasonably interpreted with linear regression.\n", "\n" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "1.332842584002276 -0.9975310550934406\n" ] }, { "data": { "text/plain": [ "Text(0, 0.5, 'y')" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Perform linear regression: a, b\n", "a, b = np.polyfit(x, y, deg=1)\n", "\n", "# Print the slope and intercept\n", "print(a, b)\n", "\n", "# Generate theoretical x and y data: x_theor, y_theor\n", "x_theor = np.array([3, 15])\n", "y_theor = a * x_theor + b\n", "\n", "# Plot the Anscombe data and theoretical line\n", "_ = plt.plot(x, y, marker='.', linestyle='none')\n", "_ = plt.plot(x_theor, y_theor)\n", "\n", "# Label the axes\n", "plt.xlabel('x')\n", "plt.ylabel('y')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Linear regression on all Anscombe data\n", "Now, to verify that all four of the Anscombe data sets have the same slope and intercept from a linear regression, you will compute the slope and intercept for each set. The data are stored in lists; ```anscombe_x = [x1, x2, x3, x4]``` and ```anscombe_y = [y1, y2, y3, y4]```, where, for example, ```x2``` and ```y2``` are the x and y values for the second Anscombe data set." ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [], "source": [ "x1 = df.iloc[1:, 0].astype('float')\n", "x2 = df.iloc[1:, 2].astype('float')\n", "x3 = df.iloc[1:, 4].astype('float')\n", "x4 = df.iloc[1:, 6].astype('float')\n", "\n", "y1 = df.iloc[1:, 1].astype('float')\n", "y2 = df.iloc[1:, 3].astype('float')\n", "y3 = df.iloc[1:, 5].astype('float')\n", "y4 = df.iloc[1:, 7].astype('float')\n", "\n", "anscombe_x = [x1, x2, x3, x4]\n", "anscombe_y = [y1, y2, y3, y4]" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "slope: 0.5000909090909095 intercept: 3.0000909090909076\n", "slope: 0.5000000000000004 intercept: 3.000909090909089\n", "slope: 0.4997272727272731 intercept: 3.0024545454545453\n", "slope: 0.49990909090909064 intercept: 3.0017272727272735\n" ] } ], "source": [ "# Iterate through x, y pairs\n", "for x, y in zip(anscombe_x, anscombe_y):\n", " # Compute the slope and intercept: a, b\n", " a, b = np.polyfit(x, y, deg=1)\n", " \n", " # Print the result\n", " print('slope:', a, 'intercept:', b)" ] } ], "metadata": { "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.7.6" } }, "nbformat": 4, "nbformat_minor": 4 }