{ "metadata": { "name": "", "signature": "sha256:9a2bd2bda2b748c0c59470699902b4cdc25b6591df0475ece5168f61fdb29bd1" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Statistical Data Modeling\n", "\n", "Some or most of you have probably taken some undergraduate- or graduate-level statistics courses. Unfortunately, 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.\n", "\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": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "import statsmodels.api as sm\n", "\n", "# Set some Pandas options\n", "pd.set_option('display.notebook_repr_html', False)\n", "pd.set_option('display.max_columns', 20)\n", "pd.set_option('display.max_rows', 25)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "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)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nqbj/B4FiJaZ5ASuTAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 2 }, { "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 \u2018best fit\u2019. 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": {}, "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](http://upload.wikimedia.org/wikipedia/commons/1/16/Poisson_pmf.svg)" ] }, { "cell_type": "markdown", "metadata": {}, "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": {}, "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": {}, "source": [ "***e.g. normal distribution***\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": {}, "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", "collapsed": false, "input": [ "precip = pd.read_table(\"data/nashville_precip.txt\", index_col=0, \n", " na_values='NA', delim_whitespace=True)\n", "precip.head()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 3, "text": [ " Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\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 1.65\n", "1872 2.32 2.11 3.14 5.91 3.09 5.17 6.10 1.65 4.50 1.58 2.25 2.38\n", "1873 2.96 7.14 4.11 3.59 6.31 4.20 4.63 2.36 1.81 4.28 4.36 5.94\n", "1874 5.22 9.23 5.36 11.84 1.49 2.87 2.65 3.52 3.12 2.63 6.12 4.19\n", "1875 6.15 3.06 8.14 4.22 1.73 5.63 8.12 1.60 3.79 1.25 5.46 4.30\n", "\n", "[5 rows x 12 columns]" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "_ = precip.hist(sharex=True, sharey=True, grid=False, figsize=(10,6))\n", "plt.tight_layout()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 4 }, { "cell_type": "markdown", "metadata": {}, "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", "$$x \\sim \\text{Gamma}(\\alpha, \\beta) = \\frac{\\beta^{\\alpha}x^{\\alpha-1}e^{-\\beta x}}{\\Gamma(\\alpha)}$$\n", "
\n", "\n", "![gamma](http://upload.wikimedia.org/wikipedia/commons/thumb/e/e6/Gamma_distribution_pdf.svg/500px-Gamma_distribution_pdf.svg.png)" ] }, { "cell_type": "markdown", "metadata": {}, "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": "code", "collapsed": false, "input": [ "from IPython.display import IFrame\n", "IFrame('http://en.wikipedia.org/wiki/Gamma_distribution?useformat=mobile', width=600, height=350)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", " \n", " " ], "metadata": {}, "output_type": "pyout", "prompt_number": 5, "text": [ "" ] } ], "prompt_number": 5 }, { "cell_type": "markdown", "metadata": {}, "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", "\n", "Let's deal with the missing value in the October data." ] }, { "cell_type": "code", "collapsed": false, "input": [ "precip.Oct.ix[1960:1970]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "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" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "precip.fillna(value={'Oct': precip.Oct.mean()}, inplace=True)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 7, "text": [ " 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", "1876 6.41 2.22 5.28 3.62 3.40 5.65 7.15 5.77 2.52 2.68 1.26 \n", "1877 4.05 1.06 4.98 9.47 1.25 6.02 3.25 4.16 5.40 2.61 4.93 \n", "1878 3.34 2.10 3.48 6.88 2.33 3.28 9.43 5.02 1.28 2.17 3.20 \n", "1879 6.32 3.13 3.81 2.88 2.88 2.50 8.47 4.62 5.18 2.90 5.85 \n", "1880 3.74 12.37 8.16 5.26 4.13 3.97 5.69 2.22 5.39 7.24 5.77 \n", "1881 3.54 5.48 2.79 5.12 3.67 3.70 0.86 1.81 6.57 4.80 4.89 \n", "1882 14.51 8.61 9.38 3.59 7.38 2.54 4.06 5.54 1.61 1.11 3.60 \n", "1883 3.76 7.90 3.98 9.12 4.82 3.82 4.94 4.47 2.23 5.27 3.11 \n", "1884 7.20 8.18 8.89 3.51 3.58 6.53 3.18 2.81 2.36 2.43 1.57 \n", "1885 6.29 2.00 2.33 3.75 4.36 3.72 5.26 1.02 5.60 2.99 2.73 \n", "1886 5.18 3.82 4.76 2.36 2.10 7.69 1.90 5.50 3.68 0.51 5.76 \n", "1887 5.13 8.47 3.36 2.67 3.43 2.31 3.77 2.89 6.85 1.92 2.29 \n", "1888 6.29 3.78 6.46 4.18 2.97 4.68 2.36 7.03 3.82 2.82 4.33 \n", "1889 3.83 1.84 2.47 2.83 5.30 5.33 2.74 1.57 6.81 1.54 6.88 \n", "1890 8.10 10.95 8.64 3.84 4.16 2.23 0.46 6.59 5.86 3.01 2.01 \n", "1891 6.15 6.96 10.31 2.24 2.39 6.50 1.49 3.72 1.25 0.84 6.71 \n", "1892 2.81 2.73 4.10 7.45 4.03 5.01 5.13 3.39 4.78 0.25 3.91 \n", "1893 1.27 4.88 3.37 4.11 7.31 4.74 2.12 1.92 6.43 3.68 2.97 \n", "1894 4.28 8.65 2.69 4.05 2.53 3.55 5.45 2.43 3.07 0.53 1.92 \n", "1895 5.71 0.98 5.09 3.07 2.05 2.90 7.14 1.40 6.69 1.57 2.14 \n", " ... ... ... ... ... ... ... ... ... ... ... \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", "1876 0.95 \n", "1877 2.49 \n", "1878 6.04 \n", "1879 9.15 \n", "1880 3.32 \n", "1881 4.85 \n", "1882 1.52 \n", "1883 4.97 \n", "1884 3.78 \n", "1885 2.90 \n", "1886 1.48 \n", "1887 5.31 \n", "1888 1.77 \n", "1889 1.17 \n", "1890 4.12 \n", "1891 4.26 \n", "1892 6.43 \n", "1893 3.50 \n", "1894 2.81 \n", "1895 4.09 \n", " ... \n", "\n", "[141 rows x 12 columns]" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's calculate the sample moments of interest, the means and variances by month:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "precip_mean = precip.mean()\n", "precip_mean" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 8, "text": [ "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" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "precip_var = precip.var()\n", "precip_var" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "The history saving thread hit an unexpected error (OperationalError('disk I/O error',)).History will not be written to the database.\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 9, "text": [ "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" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We then use these moments to estimate $\\alpha$ and $\\beta$ for each month:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "alpha_mom = precip_mean ** 2 / precip_var\n", "beta_mom = precip_var / precip_mean" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "estimates = pd.DataFrame({'alpha_mom': alpha_mom, 'beta_mom': beta_mom})\n", "estimates" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 11, "text": [ " 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\n", "\n", "[12 rows x 2 columns]" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "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(normed=True, bins=20)\n", "plt.plot(xvals, yvals)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 12, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Looping over all months, we can create a grid of plots for the distribution of rainfall, using the gamma distribution:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "axs = precip.hist(normed=True, figsize=(12, 8), sharex=True, sharey=True, bins=15, grid=False)\n", "\n", "for ax in axs.ravel():\n", " \n", " # Get month\n", " m = ax.get_title()\n", " \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", " \n", " # Annotate with parameter estimates\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.tight_layout()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nhFLdeeSRR5g3bx4rV67EZrPx6KOPAlfWncjISNatW9c+gfr2229vfyL5ve99j927dzN//nz27t3L\nd7/73QHHFAp6Wqi77VVptlBZVk/myJR+/78qnJ7N+TO1mOtaPBcOA+FWd3q67jz00EM0NjZy0003\nsWjRIr73ve8NOKZwYBhGvxNcuCucnsXRg+VBMXzMH8Kt7vR03XEXLMOnVbB80bZs2WLMmDEj0GFc\n4WC5uduFVwGeWJXPtGxZPNVdSUkJX/nKV/joo48CHUrQ27dvH9dcc82A/xJ4q+50931PaWllaWsr\nG5ITO23rax340//sZN6ycYweN2xAsYYjqTu95626A76vP+6eWJWP+bNKAOZfO67f5/rX+sMMHZ7A\n1Qvy+n2McCJ1p/eCse54crm2idee28V93188oJtnwzD441PbuP4r08gckeLFCEOX1J3e62vdkR4s\n4XXB8vRAeEdSq434tL4PZ+pK/sQMio9IVrnuSN0Jf5Wll8kaObCbu4KpmYMyI1pPpO6Er/KSy2T1\ncYHhriilGD85QxYd7kDqjm9IA0t4VW5uLtu3bw90GMKLklptJPRjvkhX8gvTKT5ahSGLDncidSf8\nGYZBZalziOBA5IxJw1zXwqWaRi9FFtqk7oQ3bwwPbCMP+a4kdcd3pIHVDxEOg0SLlariGk4crhw0\n43lLSkqYN29en/b585//TGVlpY8ictqxYweLFy9m/vz5PPfcc12WMZvN3HHHHcyYMYPly5dfsTDe\nSy+9xIoVK1iyZAk/+MEPfBprKEq0eK8HKy09kejoSCrL671yvFARrHXn29/+NhMmTOgxthMnTrB8\n+XKysrL4zW9+0/55aWkpN954I3PnzuWGG27g1Vdf9Wms4aC5roWo6AgSkmIGdByTSTFhyuDoxQrl\nurNx40YWLFjAwoULue2229i3b1/7tt5ct4RThRcbWFkjU2hptg6KhxPhWnemTZvG/PnzWbRoEcuW\nLfNprAMhDaw+iLPamFdSw+JzF5h6oY6K49XseK+Yf7x2kFaLLdDhBSVfV1a73c7999/Pyy+/zPvv\nv88rr7xyRTaZNq+//jojR45k3759PProo+2L2F26dImnn36a9evXs2XLFk6dOsWWLVt8Fm/IMQzn\nEMGh3ktrmz8xnVNHZIiGJ/640N1+++389a9/7bHM0KFD+eUvf9lp4ceoqCgee+wxdu7cyYsvvsgj\n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\n9pymvja+K/CJEye44oorunXN3//+dyoq+jZN6v3338+YMWM6je3FF19k3rx5rYsj9+zZA/j3c1i8\neDHz58/n6quv5tFHH+3TWONNbXUTpcerGTOpe6O/SSlWJk4vYMv6Y30TWJSJ5boD/sQXV155JVdf\nffVFm0R++OGHLFiwgCuvvJI//vGPfRprNOvuFMHTdS6+9dahSz5O17layySn2khKtnLudH1fhBwz\n4rXuTJ48mSuvvJKSkhIWL17cp7FGs+DOhvM1zZxocHfY6dATSqkBO00w1usO+Nc9ZWdns3z58tZj\nDQ0NrQkuZs+ezaZNm/oy3B6TBhZwYHfPpge2SEyyMnbyELZvPBnGqOJDf1TWL3zhC7z44oudlhk2\nbBhvvvkma9euZeHChTz44IMA2O12Xn/9ddasWcMbb7zBc889x5EjR/o03nhRUdfMqvePkF2cxd5z\nTd2+IV4+dxh7t5fT1OjquvAAFC1155133mHXrl2sW7eOn/70p9x3330AeL1eHnjgAZ555hnef/99\nnnvuOfbv39+n8UarcGcRbOFfh1UV9veNd9Fed8D/4L98+XJWr17NqlWr+jTWaBbc2VBV4+RnH57q\nsNOhp2SaYOiipe6A/x7zox/9iEWLFl2Uev1b3/oWc+fOZfXq1axbt67DvRwjbcA3sAyfwcHdp0Oe\nHtjR1I7k4my2fHSCrSeqw9LrEq18Ph8PPPAAU6ZM4c4778Tp9I/abd++nauvvppZs2Zx0003UVlZ\nyWuvvcb27du59957WbBgAU6nk1/84hcsXryYRYsW8atf/SosMc2ZM6d1M7yOzJw5E4fDv0ZoyZIl\nlJWVtZ5LSvKPXDY0NOD1erFawzsHPF6V1zSzZ2spL5x39eiGmOKwUzw+h+0fnejjSKNDrNadFStW\ncOuttwIwffp0amtrOX36NFu2bKGoqIjCwkISEhK46aabWLFiRVjiijWeJg8uc/gXihdIogsgvurO\nmTNnWs9HSxbnqGAYJHh9fdJRkTc0nfIBOIIFsVt3wL8h8Q033EBW1oWMw7W1tWzYsIHbb78dAIvF\n0vpsF226/E3WNG2+pmlbNU37RNO0B9o5/wVN03YEPv6madqEUK+NBhWlNVhtFrJyUkIq39HUjh9u\nKKVUKR7+x+6w9bpEowMHDnDNNdewceNGfD4fK1euxO12c//99/PUU0+xceNGli5dynPPPceyZcuY\nMmUKf/zjH/nggw+w2+18+ctfZtWqVaxcuZKtW7fy9ttvX/I9/vGPf1BSUnLJxxe/+MWw/AxPP/00\n119/fetrn8/HvHnzGDNmDHfffTcFBQVh+T7x7tzxKposZuqtPZ8zP2NeEds2nMDt9oYxsugUq3Wn\nvLyc/Pz81td5eXmUl5dTUVHR7vGBxhxYI+Xtg0xcBcMz/euwBviDeLzVHfCPYC1btoySkhKefvrp\nHn+PeGHxGXiVwuiDepRbkMaZ8jo8A3BfuVitO2VlZaxYsaJ1s+2WTIfHjx8nKyuL++67j7lz5/Lg\ngw/S1NTU4+/TlyydndQ0zQw8CSwGSoFNmqat0nV9b1CxI8B8XddrNE37V+BPwOwQr424Q3vOMOqy\n7ie3aM8JRxKjq+opdfRsLVcscDgcfOpTnwLg5ptv5t1332XUqFGcPHmydVNEr9dLYeGFlN3BDwfb\ntm3jL3/5CwcPHqS2tpZ9+/ZxzTXXXPQ9PvvZz3a5k3hPrV27Fl3XL/ojYTKZWLt2LSdOnOD/t3ff\n0XFd96Hvv2caymDQAaKSAAvYu1jUSHVTkmUlsrVlOVbc5Ovr+Ob5OolzYyXPulkv79mxnWfnydG1\nlxxJlpu8nViWbEm2RdlXklUskmKvYicBAgQJEB2Ycs77YwbQEESfcqb8PmvNAmZwZp8Ncn44Z7ff\nVkqxYcMGVqxYkZDzZ5KO05c4782JqYyyygKq64vY/04zq6aQ5j2dpXPsZPsN/kQ8IRNXngsScGNY\nVJqHZUFXxwDFZZl7XZlMJsbOiy++SFVVFYcPH+a+++6jqamJq6++Ou7nTxduMzGjVwCenPc2HK6Z\nPfnISSZJ19h56KGH+PKXvzzSsBquUzAYZOfOnfzN3/wN3/jGN/irv/ornn322ZGR4lQyYQMLWA8c\n1VqfBFBKPQ3cDYw0krTWb0Yd/zzwf0/1vang3JlLXHV9Y1zK6sjz4DZNfEOBuJSXLizLoqSkhFde\neWXMn0cHyN/93d/xxBNPsGTJEh566KGR4epoP/vZz/j2t799xeuNjY08+eSTM67n/v37+cIXvoDW\nmqKioit+Pnv2bG699VZef/11aWBNQee5Hi7lxj6dct31jfz65/tYsa4ehyO79uNIh9iprq6mubl5\n5HlLSws1NTUEAoHLXm9ubqampmZG50hn7pCJO3fsUVyP02B3S88Vr/tDU+tJNwwjMk2wI6sbWGNJ\n19iprq4GoKoqvO574cKF3HnnnezYsSOrG1iekEkgAdNshw0nusi2BtZY0iF2du/ezYMPPghAR0cH\nW7duxe12s2bNGkpLS9myZQsA99xzDz/96U/TsoFVC0RnbjgLbJjg+P8CPDvD9yadZVm0tXRPef+e\nSRkGLQV51PSk5nBlPHR3d/P8889zyy238POf/5wPfehDLFiwAIDnnnuOu+66i2AwyLFjx1i0aBEF\nBQW0t7cDMDQ0RG9vL7Nnzx4Z/r3//vuvOMe9997LvffeG9d6nz17lo997GN85zvfYe7cuSOvX7x4\nEZfLRVFR0UgQf/WrX43ruTPR0GCAga4Buuu8MZdV21BCXr6bowfaaFo282QzqS5dY+f222/nscce\n44Mf/CDbtm2jsLCQyspKSktLOX78OKdPn6aqqopnnnmGxx57LK7nTgce08SdN3YDq2MgyD9uPXHF\n6w/fMvVOveENh5etzd6py5kWO/39/YRCIXw+HxcuXGDr1q185Stfieu50407ZE1rq4PpqpldzLGD\n7QkrP1Wla+zs3Llz5PvPfe5zbNmyhdtvvx0IN9y2b9/OmjVreOmll9i8eXNczx0vk32apzwvRCl1\nI/BR4O+n+167dHUO4PY48fpim+YUrcWXR3XvIOYUeyjTiWEYLFiwgBdffJENGzZgGAa33XYbbreb\nH/7whzz66KOsX7+ezZs3j6TNfOCBB/ja177GDTfcAMDnP/95brnlFj71qU9x6623xqVeDz74IFu2\nbOHYsWMsW7aMH/3oRwA8+eSTI70nX/va1+js7OSv//qvL0uL29rayt133z2Svn049Wcmm8oePJNp\nPnWJwsqCuMyXNwyDddc3su21K29EM0U6x86tt97K0qVLufbaa3nooYdGeipdLhePPPIIDzzwADfe\neCN/9md/lrLZnBLJEzJx507WVzlz9Vm+4XAmxs758+e588472bRpEw8++CCf/exnuemmm+JSr3Tl\nSeAUQQg3sM5lWSbBdI6diTz66KN86UtfYt26dZw7d4577rknLvWKN2OiufVKqY3A/9Rab4k8/xJg\naq3/edRxK4D/BG7XWh+dznuHvfzyy9aaNWvi8CtN3eG9rRzY1cKfPjD18+5u6eGLLxyd8JirWjq4\n4Ya53LYpPlMPRWZ65513uPnmm2NuoUw3dsb7DH/9jvmsrPFNqYzXfnuE871+vttx5XTY6ZQzzAyZ\nPPaNV7nnz9dSUT2994rsE6/YgenFz1ix03Cpj811Pr7fe2Wn2sO3NI47gjXW62PFjmVafPufXuaT\nX7g+rp2BIjvZFTvjGY6pOZf6yAmZHCm7/PM/k+vJWCzL4tH/5/c88LmrKSzOi7k8kX2mGzuTdRds\nBxYopRqUUh7gPuC56AOUUrMJN64+Oty4mup77dbW0hW/6YFRmn15NB88P/mBQqSp5pOdlMQxdhxO\nB8vW1rJnm+wlJ9KLZ4I1WPFgOIyRaYJCZCq3aRJI4BRBwzDC+2Flabp2kXwTfpq11kHgk8AzwA7g\nca31QaXUZ5RSn4kc9mWgFPiOUmqnUurtid6boN9jRtqau5lVG/8GVps3l67Wbnq6rlwMKES6CwZN\n2lq6KaqK70jT8qvqOLj7HAF/5qdsF5nDEzJx5yVuiiBAfWMpp49fTOg5hLCTJ2QlZC+5aNk4TVDY\nZ9Krgtb6FWD1qNe+G/X9g8CDU31vqrAsK9zAqimktWdoyvtWTSX7k+kwmDWvnAO7Wtiwee6kxwuR\nTtqauygp9+LyxPemsrA4j5rZxRze18qyNbWTv0GIFDBRFsF4mT23lL3bzyb0HELYKVGbDEerqS/m\n1d8cTug5hBiW2G63FNZ9aRCny0FBYS7HprCuathUsz/VLK5k3yvHWL+pcSTlpRDpaHQHxMm9reSU\ne8ftbBgvNXVhrovuweAVr8/yeaiKrC1Zsb6et185Lg0skTbC+2AltoFVUV1If6+f3u5BCgpzE3ou\nIeJpsg7s4euIZ4ZTBCcqP/raAjCrrpD21l6CgRAut3Pa5xJiOrK2gdXWnJj1V8OKqnwYGLScvkTt\nnJKEnUeIRGvr8V/WAbGqtZNzBXn819DYCXImSk093sL+4Yvg3KZytj67n/bWHiriPAVRiETwmInN\nIgjgcIT3wzpzooPFK7NvrzGRvkZfP0Yb7rR2h0z8MxjBmqj86GsLgMfjoqzCS1tLt9yXiYRL7Hhs\nCjvfkpj1V8MMw2Dp2lr2v9M8+cFCpAvLongwQGeCpkSFk13UsXebTIcSacCyImuwEjuCBVA/t5Qz\nxzsSfh4h7OAJmQSSsNG8JIwRyZK1DazWeG4wPI4lq2o4sq+NYEAW7YvM4A2ECDoc+F2Jm16x/Kpa\nDu5uISBxI1KcM7LNicOV+Evp7LllnJYGlshEloXLtBK+BgvCCWPOnJA4EomXlQ2skQQXtUUJPY+v\nKJfKah/HDmXf7uEiM5UM+hM2ejWsqCSfWXVFvLuvLaHnESJW4cxnjqSssy2fVcDQQECy04qM4zIt\nQg4jLhvXT6a2oYSWU5cwp5CwTIhYZGUDq7d7CAMoKEz8po1LVtdwYFdLws8jRDIUDwa4lOAGFsCK\nq+pkTyyR8twhE38C9+6JZjgM6iRdu8hAniTGUb7XQ2FxLm0t3Uk5n8heWdnAamvuorK2MCm9jk3L\nqjh7ooP+vqmlgRfCLsPZ/0Y/orMFhkewPAmvy7xFlXS099F5oS/h5xJipjwzXJg/U7NlHZbIQG4z\n8Snao4WnCco6LJFYWZlFsK2lm6oEr78a5slx0dhUweE951h99ZyknFOImZgo+x9ATjCE07ToT0J6\nW6fLweLVNex7p5nrb2tK+PmEmAlPsm8M55ax/Q8nk3Y+IZLBEzIJJHiT4Wh1jaXsf6eZ9Zumtu2O\nEDORpSNY3VQmqYEFMk1QZIaioQBduW5I0r5uyyNZOE1z7HTwQtgt2SNYZZVeAv4QXZ0DSTunEInm\nDllJmyIIUNdYQvOpTrm2iITKzgZWS+ITXERrmF9GV+cAHTLdSaSxAn+QHk/yBr3LZ/nwFeVy8t0L\nSTunyE4d/YHLHn3+qWWwTHYDyzCMSLp2WYclMkeyR4K9BTl4fTm0n5N1WCJxsq6B1ds9iBkyKSzO\nTdo5HU4Hi1dWc2CnjGKJ9FXgD9KbxAYWwLK1dezbIXtiicT67DOHLnscvdg/pfclu4EF4f2wJF27\nyCQz3WQ4FpKuXSRa1jWw2lrC0wOTkeAi2pLVtRzY1YIlQ9IiTflsaGAtWlHFqaMXR5LEtPYMjZmI\no7VnKKn1EpmlcyB42cOcYgbnZGY/Gzac6MKy5FoiMoPbTM4mw9Hq50qiC5FYWZfk4kJbLxVVvqSf\nt7Lah9vtpPlUJ3WNpUk/vxCxcJgWucEQfe7k/snIyXUzb3ElB3e1sPbaBtp6/HzxhaNXHPf1O+ZT\n5Uv8tgtCRLOj572k3ItlWVy62E9JuTep5xYiEdymRTDJHRX1jaVsffYAlmlhJLlxJ7LDpHdLSqlN\nwLcixz6mtX5k1M8XAU8Aq4G/11r/S9TPTgLdQAgIaK3Xx6/qM9PR3kvtnJKkn9cwDJauqWH/zhZp\nYIm04w0E6Xe5krIR5GjL1tbyu18dZM01koVTpJZkrx2B8LWkYUE5J45ckAaWyAhO0yKYgEbO8NYj\n43HnuWhv66GyOnlJz0T2mLCBpZRyAo8DtwDNwDal1Fat9cGowy4Cfwn8yRhFWMANWuuUmeja0d7H\n8rV1tpx7yaoanvzX17np/YtxexKf6lqIeAmvv7LnM1vfUErAH6KtuRuS3MspxLgsK7IGK/mdDo1N\nFezbcVY6HURGcCWogTXe1iPDPlFVyNkTHdLAEgkx2d3KeuCo1vqk1joAPA3cHX2A1rpda70dCIxT\nRsqMvVqWReeFfkoq7On1KyjMpaq+iKMH2mw5vxAzFV5/5bbl3IbDYNmaOvZul2QXInnGWu8Xvem2\nM7IGKmTDqO6c+WU0n+okEJhatkMhUpnLNJM+RRCgpLaQM8dlHZZIjMk+0bXAmajnZyOvTZUF/E4p\ntVMp9enpVi7eBvrCbcB8r8e2OixbXcu+d5ptO78QM2FHBsFoy9bWcnhvKyG5oRRJMrzeL/rhD72X\nWMITssLrr2xoYOXmuamI9L4Lke4SNYI1mZLaIs6e7JDkYyIhJmtgxfqpu1ZrvRL4CPCQUur6GMuL\nSceFPkrK85OeQTDavCWVtDV309M1aFsdhJiuZO+BNZqvKJeaOcW0HZU9sURqsCODYLTGheWcOCzx\nINKfy7QIjdPAGl5HNd4jelR5unILcsjJc9PeNv46LSFmarI7pmagPup5PeFRrCnRWp+LfD2olHqG\n8JTD16ZbyXjpaO+l1KbpgcPcbicLl1dxYGczG26YZ2tdhJiK4FAQl2kx6LJ3/dOKdfX8/qV3IT/f\n1noIAfZkEIzW2FTBr36yC1hsWx2EiJVlWTgti+A4Hd+TraN6+JbGmM7fGEkYI+uwRLxNdnXYDixQ\nSjUopTzAfcBz4xx7WXQopfKVUr7I9xXAHcDeGOsbk44LfZSmQNalpWtq2P9Oi+xjItJCf0d/eHqg\njSO/AHObyhnoHsTrD9paDyHAngyC0Sqrffj9IS5NcVNkIVJRKBAKr2O06frSuLCCE4fbbTm3yGwT\njmBprYNKqU8Cz/BemvaDSqnPRH7+XaVUFbANKARMpdTngSVAJfBzpRSEMw1+U2v928T9Kpdr7Rmi\nrcd/2Wsnz3RRs3jWFWk7Yxlinonq+mIsLFrPdlFdX5zUcwsxXSMNLJs5nA5qF8+i7t0ODpcnfy87\nIaJ5bB7BGk7XfvxIO2uulmyCIj2F/CFb1l8Nq28s5VdP72JoMEBOrj2JnERmmvSuSWv9CuE9rqJf\n+27U961cPo1wWC+wKtYKztRYG5Je29zNs0EHfYcvzxoT6xDzdIX3xKpl345maWCJlNff0W/r+qto\nNUsqqd7ZzLulBZiyOaSwUbIaWGN1FgLM8nlobCpn/84WaWCJtBUK2NvAcnuc1Mwp4eS7F1m4vMq2\neojMkxp3TUlgWBa5wRD97tTYf2rJqhqeeuQNbrxzEa4UqZMQY+nvGEiJESyA/KI8enLcVPYP0VqQ\na3d1RBbzhEx63YmPi7E6CwG+fsd8muaX8Zuf7yMYCMl1RKSlkD80boKLZJnbVM6JI+3SwBJxlRp3\nTUmQFwgx5HRiJWme72Q7iAPkl3vZ+odTrLqqlipfTlLqJcS0WBb9nf30VpfaXZMRZ3151HUPSANL\n2MptmgRs2GQ4Wl6+h4oqH2dOdNDYVGFrXYSYifAIlr0JlBqbKnj71RNYlmVrlmmRWbKmgeUNBOlL\nYg/fZJlvAGYNWdS/doLqhRXSwBIpKSdk4nA6bF3MP9p5bw6LL3STFwgykIQRBCHG4gpZtt8YQvjm\n8MSRC9LAEmkp5A+Nm0EwWUrKvbjcTtpbeySboIgb+68OSeINhOhLkWlOw857c8L16pQsUCI1+fxB\n8ktTKy26ZRi0REaxhLBLKoxgQWQ/rCOSBU2kJ7vXYA1rbCqXbIIirrKmgZWf5BGsqbAMg2ZfLmf3\ntdldFSHGVJCCDSyAM4V51PYM4DBlqwNhD7dpEUiBEaxZ1YUE/CEunu+1uypCTJvdWQSHDY8ECxEv\n9l8dksTrD9GfgtOJmn15nDt8nmAgZHdVhLhCuIGVZ3c1rjDgdtGV46aqd9DuqohsZFm4TDMlGliG\nw6BpaRWH97baXRUhpi0UCBFKgTiqn1vK+XPdDA4E7K6KyBD2f6qTJNlrsKZqwO2isKKAI/tlFEuk\nnlQdwQI4U5TP7O5+kA27RZI5Ih850/6OdwAWrqjiyD5pYIn0E0yRESy320ntnBJOHb1od1VEhki9\nIZ0EcIdMDAtbN4WcSO2yKva8fYYlq2rsrooQIwzLwhsIkleSeiNYABfyPCw0LYqGpMdRJJfbNMMJ\nLlIk41hNfTGDAwEunu+lrLLA7uqILKL3tHHi4tjrYVfV+qgq8Ez4/lSZIgjD0wQlXbuIj6xoYOUH\ngvR7nClzMRytoqGEY384wYW2XspnycVRpIbhrQ2crtQb+QXAMDhTlMfsLkl2IZLLbZoEUuSmEN6b\nJnhkXytX3zTf7uqILLKzuYcdzWNvSZPrdkzewEqRJBcQThjzx1fY1JWnAAAgAElEQVSOY5kWRorU\nSaSv1BzSGUPItOjsD0zp0TMUvOy93kCIvhRcfzXM4XSwbG0te7efsbsqQowoCATp86Ro4yqipSCP\n8oEhhvr8dldFZBF3KDUSXERrWl7FYZkmKNJMOE17asRSSZmXPK+b5tOX7K6KyACp2+oYpc8f4h+3\nnqCtd/IbqU+vr6Es3z3y3OtPzfVX0ZZfVcePHn2T625twp3iN7UiO3j9IXpTuGMCIOh00OrN5ez+\nVtYvKLO7OiJLuFIkRXu02tnFDPYH6GjvpbRCZkKI9BBOcpE615lFy6s5tOccdQ0ldldFpLnU6DaY\noo6BABf7J38MBs3L3pcfSM0MgtGKS/OpmV3MgZ3NdldFCCCSGCbF9o4by5miPJr3txEKmZMfLEQc\nuM3U2GQ4muEwWLB0Fof3SsIkkT5SaQ0WRBLG7G3FlOuJiFFqXSESxJsGU50ArrqukR2vn8KSvX1E\nCkjVzJuj9Xrc5BfncXiPTI8SyeEOpUaK9tEWLpNsgiK9pNIaLAhPE/QV53LmRIfdVRFpbtLuaaXU\nJuBbkWMf01o/Murni4AngNXA32ut/2Wq700Gw7LIC4bod6V+T3xdYwluj5PjR9qZt6jS7uqIbGZZ\neP2pvXYxWsOaWt5+9TiLV1VjpGgyG5E53KaVclMEAWrnlNDf55dpgiJthEewUquzYtGKag7taWXO\n/HK7qyLS2ISfaqWUE3gcuAdYC3xKKbV41GEXgb8EvjGD9yZcXjCE3+nATKEekvEYhsHa6xrY/oeT\ndldFZLmckEnIYRBM0a0NRiubXYzDYXD8cLvdVRFZIFU2GR4tnE1QpgmKNGFZKTdFEGDh8ire3d9G\nKCjTBMXMTXaFWA8c1Vqf1FoHgKeBu6MP0Fq3a623A6M3o5n0vcmQn0a98BAO7M4LfbS1dNtdFZHF\nCtIgMUw0wzBYv2kub79ywu6qiCwQniKYWjeFwxYur+LQnnNYsgG3SHEOC3CAZdOsA4/TYHdLzxWP\nE/1Bcotz2bn3nC31EplhspZHLRCdO/wssGGKZcfy3rhJl3Ukw5xOB2uumcOO109yx70r7K6OyFLe\nQIjeNEhwEa1p2Sxee+kIZ092SgYokVBu00rI6O7wDV80/zQX29c2lBAKmZw700XN7OJ4Vk+IuHKZ\nJk4b7886BoL849axO+Xq/ZC3p5WrVtcmuVYiU0x2BxVLF1hKdJ/lp+GN4op19XzvG6/S0zWIryjX\n7uqILOT1B22Nm9aeIdp6rtySYaKbTYfTwbrrG3n71ePUNaxNZPVElkvURsNj3fA9fEvjtMowDIMV\n6+rZs+2MNLBESnNZFs4UTUDW5s2h/UQHgUAIdxp10ovUMVkXXDNQH/W8nvBI1FTE8t64SbcRLIDc\nPDeLV1Wz861TdldFZCm7M2+29fj54gtHr3j4QxP32yxbU0tbczftrT0THidELFwpuNFwtKVranh3\nfxtDg6Nn7guROpymhStF78/8LieFlQWckHW9YoYmu0JsBxYopRqUUh7gPuC5cY4d3Z03nfcmTH4g\nRH+ajWABrL2mgb3bzjI4IBdIkXzeQHqtXRzmcjtZc80ctr0qa7FE4rhNM6UTwHgLcmhYUM6BXbKG\nRKQul5m6I1gAsxaUc2iPxJCYmQmvEFrrIPBJ4BlgB/C41vqgUuozSqnPACilqpRSZ4AvAP+glDqt\nlCoY772J/GVGc5ombtNkMIUvhOMpLstn7qJKdrx+0u6qiCzjCpk4TIuhNIwbgFUb6jlxpJ3OC312\nV0VkIsvCZVopm+Ri2Ip19ex5+4wkuxApK7wGK3U78mbNK+fU0Yv09QzZXRWRhib9ZGutXyG8x1X0\na9+N+r6Vy6cCTvjeZMoPhOh3uyBN98W5+qZ5/OjRN1lzzRzy8j12V0dkiYJAkH6PM23jJifXzdpr\nG/jDS+9y1/2r7K6OyDAuy8I0DNsyn03V7LmlBPwhWs92UV0va7FE6hkZwUrRbOjuXBdNy6rYu/0s\nG2+cZ3d1RJpJ3a6DOEjH9VfRikvzWbB0FtteO8Gm9y20uzoizbzT3M2lgeBlr80qmLyh7vUH6U3h\nXsWxjM6+5plbxonXT7L/yAWWNslmkSJ+3KHU2GR4rIyDALN8Hqp8ORgOg+Xr6tj99hlpYImUNNLA\nGrS7JuNbvXE2z/zgHdZvasSRprM6hD3S6y5qmkZGsNLYxhvn8dQjb7D22ga8BTl2V0ekkZ/samP3\nud7LXrtlfgnvayqb8H3eQIi+NFu3OFb2tbr8XHwvH5UGloirVNlkeLwU01+/Yz5VvvC1YtmaWh7/\n5mvceOcicnLdya6iEBNyWlY4TftgyO6qjKuyppDC4lyOHjxP07Iqu6sj0oj9V4kE8vpDaT2CBVBY\nnMeildWyaF8kjTfNNhkeT7Mvj/7uQU4fu2h3VUQGcYdMgim+/mqY15fDnPnlHJRkFyIF2b0P1lSt\n3jiHnW+dtrsaIs1kdAMrPxBM+xEsgI03zGXfjmZ6u1N4HF1kjIJAMO1GsMZiGQbzN8zm1d8ckYX+\nIm7cZmqnaB9t1YZ6drxxEtOUGBCpJdWzCA5bsHQWHe19XGiT7T/E1KXPVWKaLMuKpJpO/eCdTEFh\nLkvX1PDH/33c7qqIDOcwLTwhkwFX+scNhNPsmqbFu/vb7K6KyBAu0ySQRmsx6ueWkpfv4cjeVrur\nIsRl0qWB5XQ5WLGuTkaxxLSkz1Vimvz9AUyDlN6rZDo2bJ7Hob2tsoGqSChvIEi/y5XyGdKmyjAM\nrr9tAa/95gjBYIqmqhJpxZ0GKdqjGYbBxhvn8ebvj2HJKJZIIS7TSospggAr19dzeE+rbN4tpiwz\nWh9j6Ls0kJYbpY4nv8DDNTfN43e/PCjTnUTCeANB+pLcozicDS364Q/FrzHU2FRBaWUB216VEWAR\nu/AarPS6dDY2leNyO3j3gIzkitThMk1caTCCBeGZRHPml7H/neaR11p7hq64dkU/WmX/rKyWOS2Q\nUfo7B+hPk56RqVq5vp49289yeE8ri1ZW210dkYHCiWGS+2dhrGxoD9/SGNdz3HzXYn7w7TdYtKKa\nknJvXMsW2cVtWgy402cEC8KjWFffNJ83Xj7KgqWzMDJkhFqkN2cajWABrL22gV8+vYsV62fjcjlo\n6/HzxReOjnt8dEZPkX3SqxtuGvovDWTEQv1oDqeDWz6whP/94iH8Q8HJ3yDENNkxgpUMhcV5rN88\nl63PHZARYBETd4qkaZ+ueYsqsCyL44fb7a6KEEB40+50WIM1rGZ2MRVVPva8LWuxxOQyqwUSpe9S\n+oxgjbdh5FhmleYze14Zb/7+GJu3yObDIr4K/EFOFGfmCM/aa+ZwYFcLh/acY/HKGrurI9KUO2Sm\n1RqsYYZhsPGGebz5u2PMXVgho1jCdumS5CLadbcu4D+e2M6ytXV2V0WkuIxtYPVfGqCvID1uFMfb\nMHIsX79jPpu3LOTJf/0Dy9bUUlZZkODaiWxhhkzygsmfIpgsDqeD2/5kKb/44U4amyrIzZONV8X0\nuUwrrbIIRmtaOos3Xj7KyXcv0NhUYXd1RJZL9X2wxu78NiisLuT53xyhbnWtLfUS6SEj76Qs02Sw\nZ4j+kkK7q5IQXl8OV980j98+s4/7HlyPI00v9iK1DHQOMOByYqZh7/xUVdcXM39xJa/++jC3/eky\nu6sj0pDbTL8kF8MMh8G1t8znlRcPM3teGU65dgibGJaFwwKHK3U/g+N1fucHLNa/fYaSpkobaiXS\nRep+smPg7/WT483JmFTTY1m9cQ5Op4M/vjK1kS8hJtN7oY/unMwf1dm0pYlTRy9yZJ/sCySmzx1K\nrzTtoy1YOouCwlzeeeOU3VURWcxpWgQdRlpOVe13u2jz5tKyu8XuqogUNukIllJqE/CtyLGPaa0f\nGeOYrwB3Av3Ax7XWhyKvnwS6gRAQ0Fqvj1/Vx+fvHiS/ODcZp7KN4TC4/d4V/ODbb9CwoIzq+mK7\nqyTSXN+FPrpzMnJQ+zI5uW7e/+GVPPPUO8yqLaKoJM/uKok0YZomTit8Y5iuDMPg5g8s5sf/6y0W\nrajGV5TZ10qRmlxmesfR8RIvjYfO45lVjN+VutMchX0mHMFSSjmBx4F7gLXAp5RSi0cdcwewUmu9\nAvg88GTUjy3gBq316mQ1rgD8XYPkF2f+TZOvKJebP7CE5/UeySooYtZ3sY8eT+aPYEF4quBV1zfy\n/E93Y8Zxzy2R2UJDofDoVRr2ukcrKfOyauNsfv/8QburIrKUyzIJGuk7iWrI5aRiYQVNHb12V0Wk\nqMk+3euBo1rrk1rrAPA0cPeoYz4AfB9Aa/1HoFgpNSvq50m/Eg11D+LNkl7phcurqGso4Xe/kgul\niIFl0X+xn54sGMEatu66Bjw5Lt54efx9TISIFhwKpu36q9HWb57L+ZYeThyRtO0i+dJ9BAugfm0d\nxYMByvtlQ2FxpcmuFLXAmajnZyOvTfUYC/idUmqnUurTsVR0OsJTBLOjgQVw0/sXc/ZEJ4d2n7O7\nKiJNeQMh3PnujLl5nIrwNNvl7HunmVNHL9hdHZEGgkNBAs70vikc5nY7uemuxbz83EGCgZDd1RFZ\nxmVahNK8geV0O9lfUciS9m5cMhNCjDLZ3dRUd+QcL0qu1VqvBD4CPKSUun7KNYuBv3sIbxY1sDw5\nLj7wkVW8/MsDtJy+ZHd1RBryDQUoKE+PbQ3iobVniN0tPRzt9rPwpgU8+5PdvL6vjdYe6YkU4wsO\nBdNyk+HxzF1YQWWNj1d/c8Tuqogs48yAESyAzjwP5705LLw4tb1MRfaY7ErRDNRHPa8nPEI10TF1\nkdfQWp+LfD0IPEN4ymFCOU2TUCBEToEn0adKKZU1hWz50HKe/dFOLnX0210dkWYK/UG8ZdnTwGrr\n8fPFF47yxReO8pU97ewoyON3ejenzslFUowvOLwGK4Pc9qfLOHbwPIf3SlZNkTyuNN7uYLR3Swso\nkamCYpTJPt3bgQVKqQallAe4D3hu1DHPAX8OoJTaCFzSWrcppfKVUr7I6xXAHcDeuNZ+DEVDQXJL\n8tIy9Wes5i2qZMPmRn7+/R0MDgTsro5II4VDAbxZNII12jlfHmd9+ez61UFJGCPGFRwKEsywvaNy\n89zc9ZFVbH12Px3tsmBfJEcmrMEaFnI4ZKqguMKEVwqtdRD4JOHRpx3A41rrg0qpzyilPhM55gVg\nj1JqL+F07p+IvL0KeE0ptYtwcoxvaq1/m6DfY0TRoJ+8ioJEnyZlrbmmgTnzynjux7sISaCLqbAs\nfP5gVjewAE4U51NU5eO5H++U2BFjyrQpgsOqaou47rYmnv3RLvx+6WAQiecyLUIZ1BHemeehzZvL\nivNdGNZUV9eITDZpyjCt9SvA6lGvfXfU878D/m7Ua8eBVXGo47QUDwbIz+IGFsCNdy7i2R/v4pc/\n3sX771+FK4V3Shf2ywuahAwDd152pGgfl2GwcNNcTv7+KL/6yW7u/PBKiR1xmdBQMOOmCA5bsa6O\n5lOdbP3FAW6/d3lWzgIRyeMyLQYz7O/rkbICVrVeYtGFHg6W++yujrBZZn26LYuioQB5FdndE+9w\nOvjA/aswHAa/+MEOAn7JECXG5xsKZFV69ok4HAZ33b8KwwHPPLVDpguKywT9qT+C5XEa7G7pueJx\nomNgzNeHE7sYhsGtdy+lva1Hti4QCee0zIyZIjjMMgz2zCqieCjA7C5ZC5/tMuquKj8QIuQwcOdn\nV4KLsThdDu768Ep+/Z/7+M8nt3PPx9bikZtoMYZCf5DuLNlgeCpcLgfv//AqXvrFfn72+Dbu+dha\n8uRvigCCg6GUT9PeMRDkH7eeuOL1h29pHPP1r98xnypfDgBuj5MPffwqfvq9t3E6HWy8cV7C6yuy\nU3gNVmp3VsxEyOFgZ1Ux65s7OH/8ItTISFa2yqhPd/FQgEs5mX2jOF7v5FiP8/0Bbv/QcsoqC9D/\nvo0+SUEtxuAbCtAtje/LOBwGt/3pUmrnlPDTx96m+9KA3VUSKSDoz5yNhsfj9eWgPrWO/Tub+eMr\nx+2ujshQmZTkYrRBl5NdVcUc+N1RTh+/aHd1hE0y6q6qeDBAV25m9zSP1zs5luGeyVvuXsLrW4/y\nw0ff5P0fXkntnJIE11Kkk0J/kJ4M75iYCcMw2Hz7Qry+HH746Jts+eBy5i6ssLtawkbBoSABb+bH\nSkFhLupT6/np997G4TBYd32j3VUSGSaTG1gA3TluVmxZyC9/sptb715C07Iqu6skkiyjGlhFgwHO\n+rJng+GpMgyD625dQHV9Ec/+cCcbbpjLmmvmyCJmgScYwrAsBjMs9XS8GEb45rKqrojnf7qbZWtq\nuebm+Tjk3ysrBYeCBHzZ8X/vK8pFfWodP/v3bXR3DnDDHYtwZlhSAmEfl2kSyvDR4NK6Yj70iat4\n5qkd9Pf6WbVxtt1VGtHaM0Rbj3/cn8/yeUamDouZyZgGlss0yQuGZLF+lOHphCMK81jzweVsf/EQ\nBw63s2jzPDyRzHESTNlpZPRKGtsTqm8s5YH/dg0v6D3ox7ex5YPLKS7Nt7taIskyNU37eAqL8/iz\nv7iaF362B/3v27jr/pUUFObaXS2RATJ9BGvYrJpCPvxfNvAfT2ynt2eIa2+ej5ECv3dbj58vvjB+\nMpvotZliZjKmNVI4GM6EZsmN4ojxphM6vF7mt/dy+sntHC0poNmXy9fvXCDBlIV8QwG6PRnzZ+AK\nV3QyRPinuc/VcG/fgtsWcmpXM9//9hvMXlnD+k2N1JbIqHk2cJgWWGBm2CVmrBgpzHXRPfheBs25\nNy/g+LYzPPVvb3L3R1bJNHMRM6dpEcyS+7Xi0nzu/8wGnvvRTn52qpMtH1pOYbFcNzJdxtxZZUOC\ni3gxHQZHynycK8hlyYVuanoH6L3YL9luslDhUJC2gsztkZ4oo9p0jO7ty60oZtHeNs4dPs+d9yxj\nzvzymOsqUpvbNHHluDJutHesGBkv4+Dfbp7Lsz/cycIVVVx36wJycuWaK2bAsnBZ2TGCNcxbkMN9\nn97AtleP84N/e5Mb7ljIklU1slQjg2XMXIfiwQCX5I/9tPTkuPljTSmt3ly2P7OX53+6m4vne+2u\nlkgSd8ikdNBPh8TNtA26w1mimq5t5KVfHODpx/7IqaMXsSzL7qqJBHGbVriBlcUqGkr5+H+/jmDA\n5PFv/oEDu1rkMy+mzWlZhAwj4zorJuNwGGy4YR73fuIq3n7lBM/+aCedF/rsrpZIkMy4WkQ2GN6X\nU2h3TdKPYXCmKJ+/+OASgic7ePqxt5k9t5QNN8ylslr+PTNZXXc/5/Nz8LucdlclbVU0lnLTxnoO\n7jnHy88dIDffzYbNc2lcWIEji3pns4ErZOLKkVjJ93p43z3LaDl9ia3PHWD3H0+z4YZ5NDaVS2+8\nmJJsWX81nsqaQh743NVs/8NJfvydt1iwdBYbb5wn0wYzTEY0sLyBEAGHQ24UY+DyuFh7wzxWXz2H\nnW+d5uff30FBYS7Lr6pj0YpqcnIz4qMiIgzLYnb3ADuqi+2uStpzOB0sXV3L4pU1HNnXypu/P8ZL\nz+5n2do6lq2tlWQYGWJkiqAAoGZ2MR/97EYO723ltd8e4dVfH2bdpkYWrajGKVk2xQScpkUoixtY\nAC63k403zmPlhnq2vXaCpx55g0Urq1m1oZ7yWbJcIxNkxNVCpgfGLnqhc+6CCjbOK+fC6U5272nl\n9y8comxOCZWNpZTNKaGsKPeyBdATkeyEqam6d5Aej4tej8RNvDgcBotWVLNoRTXtrT3s3X6WHz36\nJmWVBcxbXMn8xZWUlHvtrqaYIbdp4cxxQ8jumthnzKQxlT6u/8hqThy5wFtvnOblXx1i1vxyqprK\naVpQRrVkHRSjZPsIVrS8fA+b3reQNVfPYddbp/mPJ7ZTWJzHinV1NC2vwpPBSagyXUb8zxUN+emS\nBBcxGX8DYxeeqhIqOoeobD5JyUvvUlbjY9uASWeum+4c94SZGyXVZ+qxLIuGS30cLpNeskSpqPJx\n0/sXs2nLQk4dvcDxQ+08/djb5OS6aFhQTl1DCbUNJXgLJDbSRW4wFB7B6s/eNUcTJY355/0XISeX\nvHIXVWe7qT50nn15LpYsr2L2vDLqG0vxyAigILytTjCLtjuYioLCXK67rYlrbp7P8cPt7Nl2lt/9\n6iC1DaXMW1jB3EUVMoUwzUz6104ptQn4VuTYx7TWj4xxzFeAO4F+4ONa60NTfW+sHKZFyUCAM4Uy\nDSdR/C4nzYX5NBfm4zQt/qKpmJy3zrD4wiD5gRDdOS66c9z0eFz0eFz0eSRdfiq7ePoSlmFwMc9j\nd1UynsvlYN6iSuYtquSWDyyhtaWb08cusndHM7/5+T7yCzxU1xVTUe2jstpHRVUh+QXy/5JqyvuH\nmN3VT+WNc2HXeburk9IG3C5OlBRwotjLl9dX4+rsZ/sfTvKrp3czq6aQ6tnFzKoppKq2iKLSPFm3\nlYVcVvakaJ/IuJv9Fucz79YmlgIn373A/sPtvPLbI7hzXBRV+Siq9lFcVUjj7CJqJ2h0TbSZ8HS3\nKhHTN2EDSynlBB4HbgGagW1Kqa1a64NRx9wBrNRar1BKbQCeBDZO5b2x8vqDrDjfRXdO+MZeJF7I\nYVDaUMrho11AuCeqaDCAzx+kvH+Ixkt95AVDDLqc9LucHHr1OKHZRfiK8igoyqWwKJd8ryclNtob\nbbKdzaOl89THU7uaOVWUn3UZnOxmOAyq64qoritiw2YwTYsLbT20tXTT3tLDsYPnaW/twTAMSsrz\nKSnzUlyWj684F19hLr6i8MPtccpNaRKV9Q+x7HwXO6tK2CxTPKfOMPBVFLByZTUbb5hHwB+i+VQn\n5850cWj3OV558TD+oSClFV5Kyr2Uloc/74XFefiKcvH6ciRRTIaSKYJhk232+/AtjfzLu5cAB1SX\nUhAIUnRxkOLmHoqHTuEzTUrKvJRVeimrLKCoNJ+i4jwKS8LXjInKn+5WJWL6JmuVrAeOaq1PAiil\nngbuBqIbSR8Avg+gtf6jUqpYKVUFNE7hvTNjWdT2DLKgo4d3S300+3LlZtEmQYeDi/k5XMx/r7Hh\nMC3ygiHyA0Gu9eXQ0d7PqWMd9HYN0tM1yOBAgNw8N/kFHvK8HvLy3eTmucnJdZOb58KT48Kd48Lj\nceL2OHG7nbg8TlwuJy63A5fLgTPycDkdGA4jLjeck/2xi5a2Ux97BunrGOBcpSS3sJvDYVBZXRjO\n1rk2/JplWfT3+bl0sZ/OC31cutjPmeMd9HQNhuOnexAIZ3LLL8ghL384biKxk+vGk+PE43HhyQnH\nj8sdfrjdDpwu53vx43TgdBpxi59MVNo/xPLzXeysKqZL1vnGxO1x0rCgnIYF7+0Z19/rp+NCH52R\nx+G9rfRErhMD/f7w59zribpWeMjJdZGT6yYnz/Xe59x9+Wfd5XLgcjvDn3OHkZIdetnKYVrkBULS\nwJouw6DX46bX46Y5kuD5q7c1Uud2cLGtl4vtfZw6eoHuzkG6Lw3Q1zOEK8fF1SELv9OB3+kg4DAI\nOBwEHQbnD51nVu8gIYdB0GEQMsIP0zAwHQZBf5BgIITT5ZDrwwxN1sCqBc5EPT8LbJjCMbVAzRTe\ne5mfP7Vj3J+FTItr+wMETQvTH8IMhKjcsoiFRVcOjy6p9NI1xSQMIv5Mh0FfZKrgnNW1rBy1gXEo\nZDLQ52egL0B/3xAD/QGGBoMMDgQYGgjQ0zWE3x8kMBTCHwnyQMCMfA0RCprhRyj81bLA6TRwOB04\nHEb4EfneMMIjB47ITeTw1/AWHAZEvhoG9AdM1nWGb2CJ/D0ZvdrCivxgxy/2cTjHdVm7/r3vjcu+\njHp1ROOK+M1BHyt2FvYHaAiaWCELKxgKx83ZC8xeV491biBu5xbxYxgG3oIcvAU51M4pGfMYvz9I\nf6+fgT4//X3+y2Knv2+Iro4Q/qEg/qEgAX84ZoJBk6A//HU4doKRrwDOqJiJjiPDYeAwDAwHk8bP\ncP3D37/3GgYYRI597xe9ok/ssvhJYuwA3D14eTwc+PUhAkGTFee72FVVTFeuTNtMhPyCcOOpruHK\nz3ooaNLXO0R/33uf9YG+AEODAXq6BmhvjfqM+4P4/SGCw5/1yPXCDJmEQtbI59rpHHV9GO/z7Xjv\nMz7yWYfLvh/5XI98z8iHeMLrwhhPr7h9neSGNpbb3Ybl8b1ZnnfqAnXBsaebeQ+cY+eBc6w+34fT\ntMgPhHCbJgMuJ8dKCuJaj2zkdDmprPaNuaWOGTLZfryTr/72GDkhE0/IDO/lZ5rkBk26W3uo6hvE\naVq4TAuHZeG0LBxm+OurT1zkVdMKx4/TwOG4Mn4uj6GoOBp1bZgwfmKMnSueplDsGBNtEqiU+iCw\nRWv96cjzjwIbtNZ/GXXML4Gvaq1fjzzfCvwPoGGy90Z7+eWXs3flsMhaN998c8xXO4kdkY3iETsg\n8SOyj8SOEDMzndiZbASrGaiPel5PeCRqomPqIse4p/DeEfEKeCGyjcSOEDMn8SPEzEjsCDG+yRpY\n24EFSqkGoAW4D7h/1DHPAf8NeFoptRG4pLVuU0pdnMJ7hRBCCCGEECJjTDiRXWsdBD4JPAPsAB7X\nWh9USn1GKfWZyDEvAHuUUnsJp2T/xETvTdhvIoQQQgghhBA2m3ANlhBCCCGEEEKIqZOttIUQQggh\nhBAiTqSBJYQQQgghhBBxMlmSi6RQSm0ivH7LBTymtX4kxvLqgaeASqAdeFJr/WQc6ukknPjjrNb6\nrjiU5wUeBVYAOcAntdZvxVjmpwmvg8sBXtNa//cZlPE4cCdwXmu9PPKaD/gBMBc4Bjygte6Nscyv\nA+8HBoBXgYe11l2xlBn1s78Gvg6Ua607Yi1TKfUJ4HNALvC81vp/xFKmUmoJ8DXCWTfPAH87kzWK\n6RI7kbIlflIkfiR2JHaQ2JHYkdiZSXkSO3LfNqX4sX0EKzeD+/IAAAT/SURBVPLhfxy4B1gLfEop\ntTjGYgPAF7TWS4EPAV+NQ5kAnwcOcOX+szP1KPCK1no14WCNKQmIUqoUeAi4FVgHNCml3jeDop4A\ntox67f8E3tBarwDeAv4hDmX+FlgKXAV4gS/FoczhP9a3AqemWd6YZSqlbgQ+AlyttV4GfCMO9fwy\n8JTWehXw48jzaUmz2AGJn1SKH4kdiR2JHYkdiZ3pk9iR+7YpxY/tDSxgPXBUa31Sax0AngbujqVA\nrXWr1npX5PsLwDagJpYylVJ1wB3A94htM+jh8oqA67XWj0fqGZxOL8A4BiJ1KwLygHygc7qFaK1f\nG+N9HwC+H/n++8CfxFqm1volrbWptTaB3xDuFYi1ngD/L/C30ylrkjI/C3wl8vlEa90ehzK7gDKl\nlAMoG+PnU5EWsQMSP6RY/EjsSOxI7EjsjPHzqZDYkdiR+7YpxE8qTBGsJTzUNuwssCFehSul5hNu\nbcc0hAt8E/giUBhzpcIagXal1JOEewLeBP4PrfXATAvUWg8opT4LnASGgP9Pa/12HOoKMEtr3Rb5\nvg2YFadyh32a8B/BmCil7iY8FWCPUir2WoUtADYppb4B9BDuaXsnxjK/CLwNfJXwPnHrZ1BGusQO\nSPykfPxI7EjszLRAiR2JnRjrNUJiJ7tiBzI3flJhBCtheeKVUgWEe1e+oLXui6Gc9xOeh7mTOPSC\nRLgIDwf/Z+RrDnBvLAUqpSqA/wUsARqAq5VSd8ZWzStprS3i+P+mlPp7oEdr/bMYy8knPNT+cNTL\n8fj/chGew3wt4WHm6Q41j+Vx4BHCvSDfAf59BmWkfOxEypL4iZKK8SOxEz8SOxI7SOzMiMROdsVO\npJyMjZ9UaGA1A/VRz+sJ94jERCnlJhwEP9RaPxtjcdcAH1BKnQB+AtyklHoqxjLPAhe11r+M9H78\nBLg9xjLXA29prY9qrS8CPwM2xVjmsDalVBWAUqoaOB+PQpVSHyc8hP/ROBQ3j/AfqN2R/6s6YIdS\nqjLGcs8CT2utB7TWvwQWKaVyYyzzOsKbbwcJB+lM/p/SIXZA4gdSP34kdiR2YiGxI7ETE4mdrIwd\nyOD4SYUpgtuBBUqpBsJDbvcB98dSoFLKIPzL79dafyvWCmqtHyLcwkYptRn4G631n8dYZqtS6qhS\nagPh+cZ3AltjrOprwL9GFk32EQ78f42xzGHPAR8D/jny9RexFqiU2kJ4yHWT1now1vK01nuJGgKP\nBOtaPY1sNOP4BXCHUupFwn8Mj8Whvr8nPD/6p4Tnr780gzJSPnZA4icipeNHYkdiJ8aqSuy8V7bE\nzjRJ7GRn7EBmx4/tDSytdVAp9UngGd5L+RlTVhbCQ4IfBfYopXZGXvuS1vrXMZY7LF7DrB8jnJq0\nHNgLTDmF5Fi01t1KqX8i/G+ZD/ya8AdiWpRSPwE2E17Md4ZwppT/C/iBUmoPkXSfMyyzPFLmw4Sz\nz3iArZF5t29qrf8ilnpqrZ+IOmTa/0/j/O7fA/4NOEQ429F/nWGZ5VFl/hPwD0qph4B9hP99pyVN\nYwckfmyPH4kdiR0kdiR2JHZmQmJH7tumFD+GZSVsOq0QQgghhBBCZJVUWIMlhBBCCCGEEBlBGlhC\nCCGEEEIIESfSwBJCCCGEEEKIOJEGlhBCCCGEEELEiTSwhBBCCCGEECJOpIElhBBCCCGEEHEiDSwh\nhBBCCCGEiJP/H3SisuAqZ+qTAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 13 }, { "cell_type": "markdown", "metadata": {}, "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": {}, "source": [ "Here, for example, is a **Poisson distribution** that describes the distribution of some discrete variables, typically *counts*: " ] }, { "cell_type": "code", "collapsed": false, "input": [ "y = np.random.poisson(5, size=100)\n", "plt.hist(y, bins=np.sqrt(len(y)), normed=True)\n", "plt.xlabel('y'); plt.ylabel('Pr(y)')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 14, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nbeIAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "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": {}, "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", "collapsed": false, "input": [ "poisson_like = lambda x, lam: np.exp(-lam) * (lam**x) / (np.arange(x)+1).prod()\n", "\n", "lam = 6\n", "value = 10\n", "poisson_like(value, lam)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 15, "text": [ "0.041303093412337726" ] } ], "prompt_number": 15 }, { "cell_type": "code", "collapsed": false, "input": [ "np.sum(poisson_like(yi, lam) for yi in y)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 16, "text": [ "12.681664407577044" ] } ], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "lam = 8\n", "np.sum(poisson_like(yi, lam) for yi in y)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 17, "text": [ "8.058131431782682" ] } ], "prompt_number": 17 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can plot the likelihood function for any value of the parameter(s):" ] }, { "cell_type": "code", "collapsed": false, "input": [ "lambdas = np.linspace(0,15)\n", "x = 5\n", "plt.plot(lambdas, [poisson_like(x, l) for l in lambdas])\n", "plt.xlabel('$\\lambda$')\n", "plt.ylabel('L($\\lambda$|x={0})'.format(x));" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 18 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "lam = 5\n", "xvals = np.arange(15)\n", "yvals = [poisson_like(x, lam) for x in xvals]\n", "plt.bar(xvals, yvals)\n", "plt.xlabel('x')\n", "plt.ylabel('Pr(X|$\\lambda$=5)');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 19 }, { "cell_type": "markdown", "metadata": {}, "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": {}, "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^{\\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 \u2212 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": {}, "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": {}, "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": {}, "source": [ "Which is available to us via SciPy:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from scipy.optimize import newton" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 20 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here is a graphical example of how Newton-Raphson converges on a solution, using an arbitrary function:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# 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)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 21, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 21 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "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)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 22 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "# Calculate statistics\n", "log_mean = precip.mean().apply(np.log)\n", "mean_log = precip.apply(np.log).mean()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 23 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Time to optimize!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "# Alpha MLE for December\n", "alpha_mle = newton(dlgamma, 2, dl2gamma, args=(log_mean[-1], mean_log[-1]))\n", "alpha_mle" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 24, "text": [ "3.5189679152399647" ] } ], "prompt_number": 24 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And now plug this back into the solution for beta:\n", "\n", "
\n", "$$ \\beta = \\frac{\\alpha}{\\bar{X}} $$\n", "
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "beta_mle = alpha_mle/precip.mean()[-1]\n", "beta_mle" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 25, "text": [ "0.84261607548413797" ] } ], "prompt_number": 25 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can compare the fit of the estimates derived from MLE to those from the method of moments:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "dec = precip.Dec\n", "dec.hist(normed=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--')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 26, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAX0AAAECCAYAAAASDQdFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XeYVNX9x/H3nZmd7b0vLNKWGlFEiRULlgQT+Yl6bGgE\nY4gRNYkmdpOYWBJjx4aKmgaeRIkmkmggxoYKCCpVylK3995m5v7+mHXdZctsnTuz8309jw977z13\n5rvr7mfPnnvuuYZpmgghhAgNNqsLEEII4T8S+kIIEUIk9IUQIoRI6AshRAiR0BdCiBAioS+EECHE\n4auBUmoW8Ghr2+e01k8cdnwucA9gAnnAL7XW63tzrhBCCP/qsaevlLIDy4B5wAzgaqXU5MOardZa\nH6W1Phr4HfBQH84VQgjhR76Gd2YCu7XW+7TWLcAKYG77Blrrunab8UBjb88VQgjhX76Gd0YAB9tt\nHwK+eXgjpdT5wCNADN5efa/PFUII4T++evq9WqNBa71Saz0auA74+0CLEkIIMTR89fTzgOx229l4\ne+xd0lq/opRaopSKb23X63PXrFkjiwAJIUQ/zJ492+htW1+hvwHIUUqNBvKBi4FL2zdQSo0DcrXW\nplJqDtCgta5SSvk893DHHHNMb+sWQggBbNy4sU/texze0Vq7gIXASuBTYJnWertSapFSalFrswuA\nzUqpTcCFtF6s7e7cPlUnhBBiUBmBsrTymjVrTOnpCyFE32zcuLFPwztyR64QQoQQCX0hhAghEvpC\nCBFCJPSFECKESOgLIUQIkdAXQogQIqEvhBAhREJfCCFCiIS+EEKEEAl9IYQIIRL6QggRQiT0hRAi\nhEjoCyFECJHQF0KIECKhL4QQIURCXwghQoiEvhBChBAJfSGECCES+kIIEUIk9IUQIoRI6AshRAiR\n0BdCiBAioS+EECFEQl8IIUKIhL4QQoQQCX0hhAghEvrDmLvKTcOWBky3aXUpQogA4bC6ADFw7jo3\ndWvraNrdRNOuJhp3NdK0qwlPnQd7gp3w8eGMWjqKsNQwq0sVQljMZ+grpWYBj7a2fU5r/cRhxy8H\nft66uRW4T2u9pfXYPqAacAMtWuuZg1e6ADBdJnsv2YvZbBJ5dCQRUyKInxtP+PhwwrLCwA2FDxSy\n6/RdjHpuFDEnxFhdshDCQj2GvlLKDiwDzgTygPVKqdVa6+3tmuUCs7TWVUqp7wHPA8e3HjOB07TW\n5YNfugBvoBsOg3F/H4dhNzo3cEDmnZlEfzOa/VftJ/W6VFIXp2LYumgrhBj2fPX0ZwK7tdb7AJRS\nK4C5QFvoa60/atf+TeDew15D0mWIVP+nmooVFeS8k9N14LcTd1YcOWty2L9gP3Uf15H9ZDaORBnd\nEyLU+LqQOwI42G77UOu+7vwAeL3dtgn8Vym1SSl1Tf9KFF1pPtTMwcUHGfV878fqnSOdjHtzHM7R\nTnadvov6jfVDXKUQItD4Cv1eT/tQSp0OzAfuaLf7JK31UcBlwO1KqVP6XqI4nKfZw/4F3qGamOP7\nNkZvc9oYcd8IMu/JJPfiXJoPNg9RlUKIQOQr9POA7Hbb2Xh7+x0opaYBS4HztNaVX+3XWhe0/rsd\nWIl3uEgMUMEvC3CkOkhdnNrv10g4L4G069M4cO0BmdIpRAjxFfobgByl1GillBO4GHijfQOl1Cjg\nVWC+1np3u/1RSqnY1o9TgTnA5sEsPhRVvlFJ9apqsp/KHvDF2NTrvL80Sp4sGYzShBBBoMfQ11q7\ngIV4e+mfAsu01tuVUouUUotam90NJAHPtI7dr2vdnwG8r5T6DFgBPKK1fntIPosQ0ZTbRN7NeRyx\n7AgcCQO/CGvYDUY9PYqSJSU0bG4YhAqFEIHOMM3A+NN+zZo15jHHHGN1GQHL0+xh11m7SL4imZTv\npwzqa5e/Uk7JYyXk/DcHW4TcpC1EMNm4cSOzZ8/u9Z/98hMeJKr/VY09xk7y1cndtrHt3w/9+CWe\nqBIJnxhOwT0FAylRCBEEJPSDRPnycpKuTMIwuvmF7nYTc/HFxM2YQeTdd2Nfvx48nl69tmEYjHx4\nJFVvVFHzv5pBrFoIEWgk9INAS2EL9Z/UE/+deDBNjLy8zo3sdqo/+oi6l1/GDA8n+vrriT/ySCJv\nvx1cLp/v4Uh0kP1ENgcXH8RV4bu9ECI4SegHgYq/VhB3bhzh698n9swzibrttq4bGgbuI4+k8Y47\nqP74Y2pee42Wc84BR+8u+saeHkv8d+I5dNMhAuVajxBicEnoBzjTNKlYUcGIMeuJXryYxsWLqXvp\npV6d65k4Edepp/bp/TJ/kUnj9kYqX6v03VgIEXQk9ANcw+cNGLWVJL1wF3XPPUfL+eeDbej+t9ki\nbYx8ZCQF9xTgaerdNQEhRPCQ0A9w5cvLmZD0As3nnovrhBMG50V9DN3EHB9DxOQIyl4qG5z3E0IE\nDAn9AOZp8lD5WiWe2xbRcNddg/KaRn4+sWedhVFY2GO7zLsyKX6kGHeNe1DeVwgRGCT0A1j129VE\nTI7AdvYMiIsblNc0s7JomTOH2PPOw8jP77Zd5NRIYk+LpeQpWaJBiOFEQj+AVSyvIOnSpEF/3caf\n/pSmyy8ndt48qO9+eeX029Ipfa4UV6lM4RRiuJDQD1AtxS3UfVRH/Hfjh+T1m268Efc3vkHkr3/d\nbZvwI8JJvDCRooeKhqQGIYT/SegHItOk8q+VxM2Jwx5jH7K3qX/wQcLefrvH8f20n6ZRoStoPiDr\n7gsxHEjoB6CIBx4g7MmlQzK0056ZmEj12rWYGRndtglLCyPl6hQKf9vzhV8hRHCQ0A8w9q1bcS59\ngTLbKUSfGD30bxge7rNJ6uJUalbX0LBNll8WIthJ6AeYyFtvpXDa9URfPmHAD0kZLPY4O2k3plF4\nr/T2hQh2EvoBxLZ7N/Zdu9i77TQSL0m0upwOkhcm07C5gbpP6qwuRQgxABL6AcS5fDk1x84lfGI0\n4WN8D7sMBfu6dV3ut0XYyLg1g4J7CmQxNiGCmIR+ADETE8mrPdu6Xn5TE9GLFxP2+utdHk68OBFX\nqYvad2v9XJgQYrBI6AeQxh9eR+mmNOK/PTRz830KD6fuySeJuuUWjOLiTocNu0HajWkUP9b5mBAi\nOEjoB5CGLQ04RzhxJA/8oef95T7uOJovuYTIu+/u8njChQk07Wqi/rPu7+QVQgQuCf0AUvdhnX+m\nafrQcNNNhL33HvZNmzodszltpF6XKr19IYKUhH4Aqf2olugTrA99YmNpuOUWwp99tsvDSVckUftB\nLU17mvxcmBBioCT0A4TpMan7qI6YE2OsLgWA5vnzqX/88S6P2WPspCxMoXiJ9PaFCDYS+haz7dxJ\nzEUX0bijEXuinbDMMKtL8rLbwens9nDKD1Koer2KlsIWPxYlhBgoCX2LhS9fjnvKFOrW1hFzQmD0\n8nvDkewgUSVS8oysty9EMJHQt5LbjVNrmi65hNq1tQFxEbcvUq9LpfyP5bir5elaQgQLCX0LOd55\nB09mJu5Jk7w9/ZMCuKfv7hzszmwncWfFUbqs1IKChBD9IaFvofDly2m+9FKa9zRjhBmEZQfIeP7h\n3G5iTz8dW25up0OpN6RS+mwpnkaPBYUJIfrKuruAhrnCmiaKanp48IjbzTG79/LFzb/EtaoUjg7n\ni4LBWd4gPdZJRuwgrt1jt9Mydy6Rv/oVdS+/3OFQ5JRIIo+KpGJFBclXJQ/eewohhoTP0FdKzQIe\nbW37nNb6icOOXw78vHVzK3Cf1npLb84dzopqmvnZqt09N7riIfiwlEveMMgdY7JuVfWgvPeDc8YP\nbugDjddeS/w3v4n9449xH398h2NpP07j4HUHSboiCcMeGMtBCyG61uPwjlLKDiwD5gEzgKuVUpMP\na5YLzNJaHwW8BTzfh3MFMDYX9o6xugofoqJouPNOou68Ezwdh3Jijo/Bkeag6o0qi4oTQvSWrzH9\nmcBurfU+rXULsAKY276B1vojrfVXP+1vAiN7e66AhApwuKAk1epKfGu+6CJwuQj75z87HUu7MY3i\nx4tl2WUhApyv0B8BHGy3fah1X3d+AHy1Lm9fzw1J43IhdwwQDKMiNhsN99+Pmdr5N1Tc2XF46j3U\nrZWHrAgRyHyN6fe626aUOh2YD5zY13ND2Zhcg9yxwfOlcp1wQpf7DZtByg9TKHm6JLCnngoR4nz1\n9POA7Hbb2Xh77B0opaYBS4HztNaVfTk31EQ11rNgzZ/btsfuhb1jLSxoECVdnETdJ3U05cpCbEIE\nKl89/Q1AjlJqNJAPXAxc2r6BUmoU8CowX2u9uy/nhqJjcj/nuN0beXH25cRWQ3QdFKZbXdXgsEXZ\nSP5eMiXPljDytyN9nyCE8Lsee/paaxewEFgJfAos01pvV0otUkotam12N5AEPKOU2qSUWtfTuUP0\neQSNmbs3si7nGODrWTvmMLpFLuXqFCp1Ja5Kl9WlCCG64HOevtb6XWD6Yfuebffx94Hv9/bcUDdz\n10buuehnAIzd652fH6yMykpsBw7gnjatbV9YZhhx34qj/A/lpN2QZmF1QoiuDKM+ZuBLri4jtbqU\nHSNzABizF3KDeDzfvmUL0QsWgKtjrz7l2hRKl5ZitgTvLzQhhisJfT+auXsjn447Go/NTlQdJFRC\nfpbVVfWf6+ST8YwcifOVVzrsj5oWhXOMk8o3Krs5UwhhFQl9P9o0ZhpLz7oS8PbyD4wCj93iogao\n8dZbifj976Gl48NUUn+USslTJXKzlhABRkLfjwoT09mdOQ5oHc8Povn53XGdcAKeMWNw/uUvHfbH\nnROHu8pN3Sdys5YQgURC3yJjc4N7PL+9hltvJeKhhzqM7Rs2g9QfplL6lKy1L0QgkdC3QEQDpJbA\nwWEyld09cya1r74Kjo6TwRIvSaR2bS1N++RmLSEChYS+BY7Y7w189zB6moEnJ6fTPnuMnaQrkih9\nVnr7QgQKCX1/ME3vf62OOGCwf7Rl1fhVyvdTqHilQp6jK0SAkND3g6kHd7Dk+Z+3bWflQ15W8F/E\n7Q3nCCexZ8ZS9nKZ1aUIIZDQ94uZuzayO+Prp6RkFkBBpoUF+VnqtamUPleK6QqNX3RCBDIJfT+Y\nuetT1o2fAUBkPUTVQdlwfZxsczMRv/lNh5k8UdOjcGY7qfqHPFlLCKtJ6A+x8OZGphz6kk1jvevT\nZBZAYebwWmStA6cTx8cf43z11Q67U6/13qwlhLDWcI2egHH0vi3sGJFDQ3gkAFkFwb30Qm803nwz\nEQ8/DO6vL97GfTsOV5mLunVys5YQVpLQH2JjivfzyYRj27az8g3yM4f32Lbr1FMxExIIe/31tn2G\n3SBlUYr09oWwmIT+EFtx8gUsO+Pytu3M/OHf08cwaLj5ZiJ//3vweNp2J12WRO37tTQfaLawOCFC\nm4S+Pxjep57bXZBWAoUZFtfjB64zz8SMjcX++edt++yxdpIuT6LkWentC2EVCX0/SiuBygRocVpd\niR8YBjVvvol7esdn6KT8IIWKFXKzlhBWkdD3o5AY2mnP0XmdCedIJzGnxlD+53ILChJCSOj7UVa+\nQX6I3Inbk9QfpVL6bCmmW74WQvibhP4QcVRWcMyezzvsyyqA/BC6E7c70cdG40h3UPWm3KwlhL9J\n6A+RxI8/5NIP/vb1DtO75k5IDe/04Ksnawkh/EtCf4jEbd7E1uzJX29Xg2lATayFRVko8q67cPzv\nf23b8efG01LQQt0GuVlLCH+S0B8isZs/Z2v2pLbttl6+YV1NVnJPm0bE737XtsS04TBIXZRK6dOy\n1r4Q/iShPxRaWojdvpVt2RPbdoX60E7z+edjKynB8cEHbfuS5idR878amg/KzVpC+MswenZT4LBv\n305j1gjqIqLb9mUVGGyd4p/ZKk67wef5NX55r/bSY51kxIZ3fdDhoPGnPyXiwQepPeUUAOxxdpIu\nS6Lk6RJG3DfCj5UKEbok9IeA6XBwaP7CDvuy8uE/Z/rn/csbXPxq9V7/vFk7D84Z333oA80XXUTE\ngw/iWLsW14knApDywxR2nrKT9J+n40iQb0chhpoM7wwBz5QpFFx0Wdu2swniq6Ak1cKiAoHDQeNt\nt2HLzW3b5RzhJO5bcZQtkydrCeEP0rXyg8xCKEoDj93qSqzXfNFFnfalLk4l94JcUn+Uii1C+iFC\nDCWfoa+UmgU82tr2Oa31E4cdnwS8CEwH7tBaP9Tu2D6gGnADLVrrmYNXevAIueUX+ihySiSRR0ZS\n8UoFyd8bro8UEyIw9NitUkrZgWXAPGAGcLVSavJhzcqA64Hfd/ESJnCa1np6qAY+eJdfKJDlF3qU\ndkMaJU+WYHrk6yTEUPL1t/RMYLfWep/WugVYAcxt30BrXaK13gC0dPMaIToz/Wuh8LSsgYo+KRpb\nrI3qf1VbXYoQw5qv0B8BHGy3fah1X2+ZwH+VUpuUUtf0tbhgFL5kCbbdu9u2DQ9kFEJBCKyh32em\nCXXeO3INwyBtcRrFTxRbXJQQw5uv0B/o39onaa2PAi4DbldKnTLA1wtspknEkiXg/HrB/JRSqI2B\nxkgL6wpQYStXEv2DH7Rtx383Hlexi7qPZWkGIYaKr9DPA7LbbWfj7e33ita6oPXf7cBKvMNFw5aR\nlwemiSf76y9ZZgEUyMqaXWqZMwfHZ5+1PV3LcBik/iiV4iXS2xdiqPgK/Q1AjlJqtFLKCVwMvNFN\n2w5j90qpKKVUbOvHqcAcYPMA6w1ojg0bcM2Y0fZ4RJA19HsUEUHjj39MxP33t+1KuiyJ+nX1NO5s\ntLAwIYavHqdsaq1dSqmFeHvpX03Z3K6UWtR6/FmlVAawHogDPEqpG4EpQBrwmlIKvDN8HtFavz10\nn0rXGlv891i+sPUbaDp6Oo0t7rZxsawC+OSbfish6DRdeSURjz+Off163Mcdhy3KRvLCZEqeLCH7\nsWzfLyCE6BOf8/S11u/inYPfft+z7T4upOMQ0FdqgaMHWuBANLs9PP7hIfZVNPjl/e5e/SGvnbeQ\nLf/cxZUzvGM6Wfny4JQehYfTcNNNRN5/P7WvvQZAyvdT2DFzBxm3ZxCWHmZxgUIML8P+jtyDVY3s\nLvNP6D92+hVsSxhHQ1kDmBBdC85mqEj0y9sHrebLL8dwu8HjAZsNR4qDhAsSKF1aSuZd8htTiMEk\n97wPok/HT6ch/OtpOm2PRwz5OxV8CAuj6eqrwfb1t2PqdamUvVyGu8p/w3NChAIJ/SEU6mvoD0T4\n6HDizo6jdKk8ZEWIwSShP4QyC2TmzkCk/SSNkqUluGukty/EYJHQH0JZ+TJHfyAiciKIPTVWll0W\nYhBJ6A+VZpPkMihKt7qQIOPxEPbWW23P0k37aRolT5fgrpPevhCDQUJ/EEzP/YK79e867DP2tVCR\nCC6ZcdhnEffdR9iqVYB32eXomdGUv1xucVVCDA/DfsqmP0zbv5XqyJgO+2y5zRSGWC9/sJ7Nm7zo\nx4y5514+P+pk74ye78VQdV0h+d92QnjX/ZQen88rhGgjoT8Iph7Yzn+OOr3DPmNPC8UhFvqD9mxe\n8whebIS3fruM1UedBsCCZIMvf53L2hO7PsXX83mFEF4yvDNQpsk3Duxg66hJHXbbclsoSpOZO/1i\nGDx9zgJ++NaL2N0uAFbPNjntfwZ2l8W1CRHkJPQHKL2qBLvHTX5ixwXzjb0tchF3ANblzKAoIY2z\nP3sHgIOjoDgNZnxqcWFCBDkJ/QGadGint5ffbmVNuwuMfBclqRYWFuwMgzsvu523jz6jbdfq2SZn\nvGNgk4k8QvSbjOkP0LtTT+KTCTM67EspBTPTjtsh6TQQFTEdFy3aNwYqEmD6Jvj0WIuKEiLISU9/\noAyDRmfHx2KlF4M51tnNCWIgVp9pcsZ/DQyP1ZUIEZwk9IdAehF4xsoE/aGwZxzUR8NRn1tdiRDB\nSUJ/CKQVGZgS+kPDgH+fY3LO2zK2L0R/SOgPgfRi6ekPtgl5u7jltUcB2DMeypNg5jqLixIiCEno\nD0BCbSV2d8fups3deiH3CAn9wbQ/bRSnbP+YI/dvBeBf3zI5c41BWLPFhQkRZCT0B+A3y+/l+J3r\nO+xLLoOqeCBCvrSDqSksnGfOuYob3lwKpsmhbNg3Gk760OrKhAgukkz9ZZpMzNvFjpETOuxOL4Ki\nNItqGuZWHXMW0Y11zNq2FoC3zjY59T2DyHqLCxMiiEjo91NGZTEtdidlsUkd9qcXQ1FGNyeJAfHY\n7CyZcw2L//U8drebkjTYMhVOe1eeRylEb0no99OkvF3sGDG+0/70IkPW3BlCayfO5OMJx5JU611q\nefWZJt/8BCiWRXmE6A0J/X6alLeLL0fkdNqfXiQPThlShsHD511HSbx3jYuqBFh/LPBMhbV1CREk\nJPT7yeF28cXoqR32GR7vzJ1iGdP3q3dON+HtOppym6wuRYiAJ6HfT0vmXMNHE2d22JdUDrUx0CIr\nMPhVfTRwRTyF9xdaXYoQAU9CfxDJ0I6Froin9oNaGjY3WF2JEAFNQn8QpRfLdE1/i6+r4hv7t0GU\njfSb0in4dYHVJQkR0CT0B1F6kUFRuszc8afs0jx++8dfYq+tIenKJJr2NFHz34E/p1eI4crnevpK\nqVnAo61tn9NaP3HY8UnAi8B04A6t9UO9PXe4SS+CD7t5hqsYGluOmMK6nBlMe+ZxbA8/QNa9WeTd\nlsfEDyZihMn8fSEO12NPXyllB5YB84AZwNVKqcmHNSsDrgd+349zg9KsrR92WnPH8EBasczcscKS\nOdeQ+fe/Ytu5k7hz4nCOclK6tNTqsoQISL6Gd2YCu7XW+7TWLcAKYG77BlrrEq31BqClr+cGo4Ta\nSn75ym9x2zp+6RIqoS4amiIsKiyElcUmsf+a64i67TYMIOu+LIoeKaKl6PBvSSGEr9AfARxst32o\ndV9vDOTcgDUxfzc7RuR0eCYueId2pJdvnbzLrsJWUIB982YiciJIuixJLuoK0QVfoT+Qq5LD8oqm\n3IkbmMywMKrXrME9bRoA6TenU/NODfWfympsQrTnK/TzgOx229l4e+y9MZBzA9akQzu9Pf3DpBfL\nmjuWi/z6WcX2ODuZd2WSd0sepkf+vwjxFV+hvwHIUUqNVko5gYuBN7ppe/hUib6cGzS8C61JTz8Y\nJKpEsEHFclmXR4iv9DhlU2vtUkotBFby9bTL7UqpRa3Hn1VKZQDrgTjAo5S6EZiita7t6tyh/GSG\nmuHx8MHk4zmYctilCVNm7gQiw2Yw4rcj2HvZXuK/G489zm51SUJYzuc8fa31u3jn4Lff92y7jwvp\nOIzT47nBzLTZeGju4k77EyqhyQkNURYUJbplFBQQNT2TuLPjKPpdEVm/ybK6JCEsJ3fkDoL0YiiW\noZ3AUlND3OmnY9u2jYw7Myh/pZzGLxutrkoIy0noD4L0IiiU0A8ssbE03H470TfcQFiiQfpN6eT9\nPA/TlIu6IrRJ6A+CtCKDYllzJ+A0X3EFZkwM4U8/Tcr3U3DXuSl/udzqsoSwlM8xfeFbejF8eqzV\nVYQ2p93g8/zOC61F3HYvMy49j83HnUbD3VkcWpDPoSNtkDk43/rpsU4yYsMH5bWE8AcJ/V4aW7iP\nbxzYxhsz53Q8YLZO15SZO5Yqb3Dxq9V7uzx26cmXcPTP7+SWK3/J7JkwevF+Xlhodp5k3A8Pzhkv\noS+Cigzv9NKxezYx+dDOTvvjqsHlaH16kwhIr5x8Pvdd8BMA3jkNYmtgxqfW1iSEVST0e2nyoZ1d\nL78gD04JeB6bnaroeO/HdtDK5DtvGsRVWVyYEBaQ0O+lid3ciZtWJNM1g01+Fnx0PMxbaQzTFaKE\n6J6Efi+EtzSRXZbPnozRnY5lyNOygtKa2SbJZXD0Z1ZXIoR/Sej3wriCvexPzabF4ex0TC7iBh+7\n20122X5eUSbn/cMgutbqioTwHwn9XihKSOWxcxd1PmBCRiEUZPq/JtF/OQV7eObZm2iMK2XDsXD+\n3+WxiiJ0SOj3QllcMutzjum0P6ESmp0ycyfY7Bg5gb+dcB73rLif1bNdZBbAUTLMI0KEhP4AZBZA\nYYbVVYj+WDb7cuweD5d9+Ap/udTk/143SC6zuiohhp6E/gBkytBO0PLY7Nx96W1c8sGrJLq38Z8z\nTeb/ycDusroyIYaWhP4AZBYYFGTKzJ1gVZSQxgPzfsLcdatYeyJUJMJ33pTxfTG8SegPQEYhFMjw\nTlD73zdO5t4LbwID9EUmk7fDkZutrkqIoSOh78NNry9h2r6tnfY7WiC5TJ6WNSwY3t59YyT86XKT\nea8ZJMn4vhimJPR9OH3LB5TFJnban1YMZcngliXrhpVD2d4bty7/i4zvi+FJQr8HKVWlhLc0kZfU\n+WqtXMQdvj44Carj4NxVMr4vhh8J/R5MPbiDrdmT2v78b08u4g5PdreL+/58D2u+VcrUrTB1i9UV\nCTG4JPR70Bb6XcgskIu4w5Hb7mBPxhju+esveOXiJi54zSC12OqqhBg8Evo9mHrwy25DX5ZfGL5e\nmD2fwoQ0rlz3MKu+5WHhi7I+jxg+JPR7cOv8u9kwfnqn/dG14HBBVbwFRYmhZxjco37G+MK9TGz4\nK59Pg6teNnC0WF2YEAMnod+DmqhYmsM6r6yZUdi6/IJc5xu2Gp2R3PS9e7js/b+RP2kLlfGgtIHh\nsboyIQZGQr8fMgtkaCcUFCWms3DxEjYfMZlXLjZJqoCz/yO/6UVwk9Dvh8wCg8IMmbkTCooS0jBt\nNlxh8OJVJtM3wYwNVlclRP9J6PeDzNEPTXUxsGyBybmrDMbusboaIfpHQr8Ldreb8ObGLo8ZHu/T\nsgrlubghqTgd/nyZyfw/y1ROEZx8LiKglJoFPNra9jmt9RNdtLkfOBeoB67SWu9o3b8PqAbcQIvW\neubglT50JuXt5JaVj3Hljc90OpZSCjWx0BRhQWHCcmGuZq5775f8e9aNXPN8BpzZAllWVyVE7/XY\n01dK2YFlwDxgBnC1UmryYW3mAEdpracBNwIvtTtsAqdpracHS+CD96as7SMndHlM5ueHthaHk3UT\nZvCDdT8ZpIZvAAAQpUlEQVTj0+PL4OoCmg80W12WEL3ma3hnJrBba71Pa90CrADmHtbmPOBlAK31\nJ0CCUqr94EfQTXfo+U5cQ+7EDXErTr6Af08/k4Ubb8J5fiN75u6h+aAEvwgOvkJ/BHCw3fah1n29\nbWMC/1VKbVJKXTOQQv1p6oEdbB01uctjmYVQKGvuhLznz7qSN2eczfSVC8i8sI495+2h+ZAEvwh8\nvkK/t+nWXW/+JK31UcBlwO1KqVN6XZlFYutrSK4pZ2/aqC6Py5o74it/OP1SDlyzmAz7alKuSZHg\nF0HBV+jnAdnttrPx9uR7ajOydR9a64LWf7cDK/EOFwW0zMoiPpp4HB6bvdOx8EaIrYHSFAsKEwGp\n4MJLabz1VlJ/lErywmTvUE+eBL8IXL5m72wAcpRSo4F84GLg0sPavAEsBlYopY4HKrXWRUqpKMCu\nta5RSqUCc4AbBrX6IbAzazy3z7+7y2MZRVCUBqZMdBVdSFucBh7YM3cP4/4+DufIzkt4CGG1HuNL\na+0CFuLtpX8KLNNab1dKLVJKLWptswr4Qim1Ge/UzgWtp2cA7yulPsN7AfgRrfXbQ/R5+EWGLL8g\nfEi7IY2UBSnsPmc39V/UW12OEJ34nKevtX4XmH7YvmcP274VuPWwfbnA0YNQY8DILJTlF4RvaRd6\nSPpyNdvnnc6op48g7qw4q0sSoo0MVPSBLLQmeqWlhYTNK5kx7WHyrt9F6QulVlckRBsJ/d4y5cYs\n0TvmyJHUrFqFPS2c4xJ+TM2SL8i/Kx/TI38lCutJ6Lcz5cAOkqvLujwWXwVuu3fRLSF8ioyk/umn\nafneZRxddy2O//6P/Vftx1MvC/ILa0not3PDqqWML9zb5TEZ2hF9Zhg0XXstdS88z0hVhhFhyFx+\nYTmfF3JDhd3tZmLeLraNnNjlcVlOWfSX65RT4JRTGGWalDxRwq7Zuxj58Ejiz5XnbQr/k55+q2n7\nt5KXnEVNVGyXx71r7siYrOg/wzBIuyGN0X8aTf4d+Ry65RCeRhnuEf4lod9q1ra1vDvlxG6Py0Vc\nMViij4tmwrsTcOzcwe6zNtO0u8nqkkQIkdAHME1mbV3Le1NO6PKw3eVdR784zc91iWHLHm9nzIT/\ncHTp9yk46x+Uv1JudUkiREjoAw63izePPZsvR+R0eTytGMqTwBXm58LEsNbwwAO0/OZWphm34bzj\nfvZfvZuWkharyxLDnIQ+4HKEsWz2fDC6Xiw0K1+GdsQQMAxaLriAmg/eJf3IXCa+fwX5M1dS9nKZ\nzOkXQ0Zm7/TCpC8Ndo2XH0IxNMysLOpe+xthK1cysj6B3JfLKV9RzsiHRhI5JdLq8sQwIz19H+wu\nmLATtk+xuhIxrBkGLfPmYZ9/BuPfGk+iSmTP3D0U3FMgN3SJQSWh78PYXChJ9T4MXQh/MGwGKQtS\nmPj+RJr3N/PliVup/HuFDPmIQSGh78PUbQZbp8gPm/C/sIwwjnjhCCaf+m9SFv8fxTP/RPXqKkxT\nvh9F/4V06Ec0N7D0qRuxu91dNzBhyjbYOtW/dQnRwcM/xXjkesY2PkHSld+h9OQ/UvdRrdVViSAV\n0qE/c9dGXI4w3PbOj0YE76wdl13m5wuL2e20XHQhdZ9/hPH4Txhd+STx53+LvRdukwe1iD4L6dk7\np/ZwQxbA1K0G26bQ/WPfhfAnu52WC+fRMu//sH3wMTE7Utl7yV4iJkaQ+qNUYmfHYtjkm1X0LGR7\n+jaPm5O3f8x7PSy94B3akfFTEWBsNjyzTiT1B6lM3jSZxEsSKby3kC9P+JLS54tx13UzXCkEIRz6\n3ziwnbLYRPKTur7rKqECEith/xF+LkyIPrCF20i6OImcd3IY+chI4p/6JcbY86heoGne32h1eSIA\nhWzoH5P7Be9NPanb41O2w/bJ4Ol6uF+IgGIYBjEnxhD2we9x3HYhaR8+RvyM6TRO+zG1v/0Qd5XL\n6hJFgAjZMf2XTr8Uh7v7H4SpWw0+Ol6GdkTPnHaDz/Nr/P6+6bFOMmLDOx+IisLz4wU03ngVxmdb\niHz4L0Q88SM2PvU0UeeMIFElEntaLIaj/2P/hTVNFNX4/0Ew3X7Ook9CNvQxDFyOrldQi2iAUQfg\n5Sv9XJMIOuUNLn61uuunrQ2lB+eM7zkADQNz+pHwx/tpMO8jp9xN5cpKih4o4uD1B4k/N564s2OI\nmRWLLaJvf84W1TTzs1W7B/gZ9J3Pz1n0SsgO7/Rk4pewdww0y/eXGA4MA0eyg5Tvp5CzOodxb4zD\nOcpJwy/+QfSIb+CavojGO17Fdaja6kqFH0jod0HuwhXDWUROBGk3pJG+dj71b/4N2/SxxLzyDInT\npmCMOZeahcupea8GT4Os+TMche7wTjdsbm9P/5/nWl2JEEPMMDCOn4px/FRc3EJ1UQXuF97GfSiW\nknsLadzWSORRkcScFEPMKTFEHROJLUpmNgS7kAv9nPw91IdHkpec1eXxsblQmgLV8sxqEWKM9EQc\nt19MApAAuGvd1K+rp/aDWgp+VcDoz24nImw/EzOmcFPCGDZMmsAnU8bSGOG0uvQhN5wuXodU6Ec3\n1nHn3x5i+cnzug39KdsMuSFLCMAeYyf2jFhiz/AuMeupfJm6VZ9R84+PmLJhE+ds+SdxrkP8K+Nh\nNh8xmcIMk6J0KMyAuhiLix9kw+nidciEfkJtJY+/cCtbRk3mraPP6LqRCVO3wbIF/q1NiGBgS4jC\ndtmJ5J92ZFsAxtY0kVFgJ7XEJKPI4KjPIaMI3HaYav6K2qhwDiVlsS89i13ZWWwdk0VFbFy3T6kT\nQ89n6CulZgGPtrZ9Tmv9RBdt7gfOBeqBq7TWO3p7rj+kVxSx5PlbWDPtVJ45+6puv+EyC8A0oCjd\nv/UJEaxqYsOpiYVdEwBa/0I2Ia4aTt58IZP37yO7tICz89dyyYf5xLrzeSv+jxSkxlOeCFUJJpUJ\nUJkAqQ1fsi8zicLkJDw2uXYwVHoMfaWUHVgGnAnkAeuVUqu11tvbtZkDHKW1nqaU+ibwEnB8b871\nh4iGOpY+8xNWnDSP5bMu7LHt1G2wVRZYE0HAqpvCAJrdPmb1GN5rYqtOnsKqkzs+cs7mhsQKk5Qy\nk8QKiK80GJsLCRUm5x9YQoyriDCqaLLFUxeWSE14En886l6q42zgrqFmAtiT7DiSHIQ1FMKIZIzo\n6CH8bIcfXz39mcBurfU+AKXUCmAu0D64zwNeBtBaf6KUSlBKZQBjenHukGuMjOanC+5lT8aYHtsZ\nHpiy1eCf35HxfBH4rLopDOAXZ/b8s9QTjx3KUgzKUr7a8/XP27M8ASbEV7eQXVRJVmkF6eUVVMfY\niK024IMGiv/dgKvchaesgRn5ijCqMDFwOeJxO+NxRSax96yl2OPs3v/i7djibNgjTWK2/AsSYzGS\n4yA5FiMlDiMtDkZlYITQcJOv0B8BHGy3fQj4Zi/ajACyenGuX3QV+FF13rtuRx0wGHUQsg9CeSLs\nG+3/+oQQrQyoig+jKj6VLRNS2x0wOXVOGuOyvn5uaT078dS7ceVVw4EyzPxyzNIaYtJjcFe7cVe5\nac5rxr3NjVlZR/yn/8TWVIetpR5bSx12dz2mCev4E7ZIG7YoG0akgS3ShiO8gal7fojHHo4ZFs6R\nNid/abFT74zjjQk347aDywFuh4nLDhjNnHTg7zQ7wmixO2h2OHA5HDSERbBu3Cm4bd7rHJ7Wf8HN\nmNJdtNjtuBx2mh123HY7TWFhFCam47F529I4+PdK+Ar93nZ7B+XXpG3i3E77Dk28iabo7E77R27/\nPeENh3ps7zFNrqyHFnfk1w1McB5wYavy0DQpjMbJYTTOdlI0KQx3sp1rBuMTAexy25sQQ84WZceZ\nkwg5iW37Irpt/Qom4G79r6V17zSPiafBg6feg9lg4qn34KlppnrHY1DbCHUNFBdW89GOQhwuk/Ik\nE4cbHC6wuw3CmyCiyUNmWTlhrmbsphuH24Xd48IkjPD8WdjdYPPQ9m+4q5HZpY9jw43NdGGYHmy4\ncRHJB5FLMUxvOzaVwrLBnT/uK/TzgPaJm423x95Tm5GtbcJ6cW4HG5b/opsjFV3subqHV/q6vb31\nv66E4yKcBtq+pC3dNOyPEnjgmEF8vb4oz7Xmva16XyvfO9Te18L3dhfuYmOhn97MDkx1Ak4gDkhn\nPDkAjO7QF/7q43BqWdTlS42nq956FJ/xZJftI9u1d1PFxo0b+1h8z3yF/gYgRyk1GsgHLgYuPazN\nG8BiYIVS6nigUmtdpJQq68W5bWbPnh06g2pCCGGRHgchtNYuYCGwEvgUWKa13q6UWqSUWtTaZhXw\nhVJqM97pmQt6OnfIPhMhhBA+GaYps1WEECJUyOVGIYQIIRL6QggRQgJi7Z1AWa6hP5RS2cAfgDSg\nBHhJa/2SpUX1Uevd0xuAQ1rr71pdT18opaKBp4BpQDiwUGv9sbVV9Z5S6hq818HCgfe11j+2uKQe\nKaWW4V1ypVhrfWTrvljgj8BYYA9whda61roqu9dN/Q8C3wEagPeAX2itq6yrsntd1d/u2E3Ag0CK\n1rq8u9ewvKffbrmGecAM4Gql1GRrq+qTFuAnWuupwIXAA0FWP8CNwDZ6f19GIHkKeFdrPR1v8AfN\nZAGlVBJwO3AWcBwwQSl1jrVV+fQi8K3D9t0FrNVaTwM+Bu70e1W911X9bwNTgWOBaOA2fxfVB13V\n/1Xn8yxgv68XsDz0abfUg9a6BfhquYagoLUu1Fp/1vpxKbAe793IQUEpNRKYAzxPkK06pJSKB07R\nWi8D74yxQO2hdaMB79c8HogEoujqppQAorV+n841ti3F0vrv//m1qD7oqn6t9X+01h6ttQd4C++9\nRgGpm68/wMPAz3vzGoEQ+t0t4xB0lFLj8fYYgmZ4AXgE+Bl0eQdJoBsDlCilXlJKbVFKPaeUivR5\nVoDQWjcA1wL7gELgQ631OkuL6p90rXVR68dFQDCvU3sN8LrVRfSFUmou3qHZL3rTPhBCPxiHFDpR\nSsXg/SvlJ1rrOqvr6Q2l1Hfwjg1uIsh6+a0ceIdFXm39Nxy4yNKK+kAplQo8DUwBRgMnKKWC+kGd\nWmuTIP2ZVkrdAdRorf9qdS29pZSKwjtE2H45gx5/lgMh9Huz1ENAU0qF4Q2eP2mtg6mXcCJwnlJq\nL7AcOEMp9QeLa+qLQ0CZ1vofrb3m5cC3La6pL2YCH2utd2uty4C/ArMsrqk/ilpX1kUplQkUW1xP\nnymlrsI7zDnf4lL6ahzeDsPnrT/HI4FPlVJp3Z0QCLN3erPUQ8BSShnAC8BWrfWjVtfTF1rr2/H2\nElBKnQrcrLW+0tqqek9rXaiU2t36HIf1eGc1rLa4rL54H3is9YJuHd5fWI9ZW1K/vAF8D/ht679/\nt7acvlFKfQvvEOcsrXWj1fX0hdZ6M+2G01qDf0ZPs3csD32ttUsp9dVyDV9N2QyaGRjASXh7B18o\npTa17rtNa/1vC2vqr2D8s/x7eKfMpgCbgVusLaf3tNbVSqnf4P3ejwL+DbxjbVU9U0otB04FkpVS\nB4G7gV8Df1RKfUHrlE0LS+xRu/pTWuv/Bd7ZOk5gtVIK4COt9Y+sq7J7XX39tdYvtmvi82dYlmEQ\nQogQEghj+kIIIfxEQl8IIUKIhL4QQoQQCX0hhAghEvpCCBFCJPSFECKESOgLIUQIkdAXQogQ8v/V\ngA6+IhxszAAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 26 }, { "cell_type": "markdown", "metadata": {}, "source": [ "For some common distributions, SciPy includes methods for fitting via MLE:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from scipy.stats import gamma\n", "\n", "ahat, _, bhat = gamma.fit(precip.Dec, floc=0)\n", "ahat, 1./bhat" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 27, "text": [ "(3.5189679152399753, 0.84261607548414119)" ] } ], "prompt_number": 27 }, { "cell_type": "markdown", "metadata": {}, "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": {}, "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", "collapsed": false, "input": [ "# Some random data\n", "y = np.random.random(15) * 10\n", "y" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 28, "text": [ "array([ 3.72458625, 8.02504424, 2.5152199 , 1.15249687, 3.69592197,\n", " 4.81974995, 7.21932052, 4.78104845, 2.67680421, 9.90455954,\n", " 8.162251 , 7.12880674, 6.79736262, 5.98943549, 7.99250998])" ] } ], "prompt_number": 28 }, { "cell_type": "code", "collapsed": false, "input": [ "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)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 29, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 29 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "# 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]" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 30 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.hist(x, bins=10, normed=True)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 31, "text": [ "(array([ 0.00940678, 0.02822033, 0.05644066, 0.13169488, 0.09406777,\n", " 0.1222881 , 0.1222881 , 0.23516943, 0.08466099, 0.05644066]),\n", " array([-4.36396175, -3.30089839, -2.23783504, -1.17477168, -0.11170832,\n", " 0.95135503, 2.01441839, 3.07748174, 4.1405451 , 5.20360846,\n", " 6.26667181]),\n", " )" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAECCAYAAADw0Rw8AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEEVJREFUeJzt3X+s3XV9x/HnXWvLkIIjQxrLZXRpN1FHpWydk9ChxW1W\nRw3Z3qRIFEqwMVPQTZhCIiEZYlIYuCbMWqxolqx5E9egoQlIWRhbVCi3gri67Q660JZWLEOuWumv\nuz/OKTtce8/33B/fe8799Pn4597v97y/38/7NO3rfs7nfr/f9g0PDyNJKtevdLsBSVK9DHpJKpxB\nL0mFM+glqXAGvSQVzqCXpMLNrCqIiKXAnc3a9Zm5dsTrHwSub27+APhcZj7dfG0H8DJwGDiYmUsm\nr3VJUifazugjYgawAbgEOA+4KiLOHlH2DLA0MxcBDwB3t7w2DFyYmeca8pLUHVUz+iXAYGbuAIiI\njcAKYPvRgsz8dkv9/cAtI87RN/E2JUnjVbVGPw94rmV7Z3PfaD4C3NeyPQw8HBHbIuLq8bUoSZqI\nqqDv+PkIEfEu4HLgxpbd5zeXdC4DboiIC8beoiRpIqqWbnYB/S3b/TRm9a8REecAXwLem5kvHd2f\nmc83v26PiE00loIePdZAW7Zs8aE7kjQOy5Yta7tEXhX0W4GFEXEWsBu4FFjZWhARZwJfBy7PzMGW\n/ScCMzJzKCJOA5YD17QbbPHixRXtSJJaDQwMVNa0XbrJzEPAKmAT8ASwoTk7Xx0Rq5tlnwVOBb7Y\nXIt/rLl/LvBoRHwP2AjckZkPju+tSJLGq69XHlO8ZcuWYWf0kjQ2AwMDlUs33hkrSYUz6CWpcAa9\nJBXOoJekwhn0klQ4g16SCmfQS1LhDHpJKpxBL0mFq/wfpiSVYc/QK+wdOlD7OKfPmcXcObNrH0ed\nM+il48TeoQNct3mwunCC1ixfYND3GJduJKlwBr0kFc6gl6TCGfSSVDiDXpIKZ9BLUuEMekkqnEEv\nSYUz6CWpcAa9JBXOoJekwhn0klQ4g16SCmfQS1LhDHpJKpxBL0mFM+glqXAGvSQVzqCXpMIZ9JJU\nOINekgpn0EtS4Qx6SSqcQS9JhTPoJalwM6sKImIpcGezdn1mrh3x+geB65ubPwA+l5lPd3KsJKl+\nbWf0ETED2ABcApwHXBURZ48oewZYmpmLgAeAu8dwrCSpZlUz+iXAYGbuAIiIjcAKYPvRgsz8dkv9\n/cAtnR4rSapf1Rr9POC5lu2dzX2j+Qhw3ziPlSTVoGpGP9zpiSLiXcDlwDvHeqwkqT5VQb8L6G/Z\n7qcxM3+NiDgH+BLw3sx8aSzHSpLqVRX0W4GFEXEWsBu4FFjZWhARZwJfBy7PzMGxHCtJql/bNfrM\nPASsAjYBTwAbMnN7RKyOiNXNss8CpwJfjIhtEfFYu2Nreh+SpFH0DQ/3xlL6li1bhhcvXtztNqRi\nPbl7iOs2D1YXTtCa5QtY9KY5tY+jhoGBAZYtW9bXrsY7YyWpcAa9JBXOoJekwhn0klQ4g16SCmfQ\nS1LhDHpJKpxBL0mFM+glqXAGvSQVzqCXpMIZ9JJUOINekgpn0EtS4Qx6SSqcQS9JhTPoJalwBr0k\nFc6gl6TCGfSSVDiDXpIKZ9BLUuEMekkqnEEvSYUz6CWpcAa9JBXOoJekwhn0klQ4g16SCmfQS1Lh\nDHpJKpxBL0mFM+glqXAGvSQVzqCXpMLNrCqIiKXAnc3a9Zm5dsTrbwa+ApwL3JiZt7e8tgN4GTgM\nHMzMJZPXuiSpE22DPiJmABuAi4BdwOMR8VBmbm8p2wd8HPjAMU4xDFyYmS9OUr+SpDGqWrpZAgxm\n5o7MPAhsBFa0FmTmC5m5FTg4yjn6Jt6mJGm8qoJ+HvBcy/bO5r5ODQMPR8S2iLh6rM1JkiauKuiH\nJ3j+8zNzEXAZcENEXDDB80mSxqgq6HcB/S3b/TRm9R3JzOebX7cDm2gsBUmSplDVVTdbgYURcRaw\nG7gUWDlK7WvW4iPiRGBGZg5FxGnAcuCaibUrSRqrtkGfmYciYhWN2fjRyyu3R8Tq5uvrImIu8Dhw\nMnAkIq4F3gK8EfiniIDGlTl3ZOaD9b0VSdKxVF5Hn5mP0LhGvnXfupbv9/Da5Z2jfgq8faINSpIm\nxjtjJalwBr0kFc6gl6TCGfSSVDiDXpIKZ9BLUuEMekkqnEEvSYUz6CWpcAa9JBXOoJekwhn0klS4\nyoeaSeOxZ+gV9g4dqHWM0+fMYu6c2bWOIZXAoFct9g4d4LrNg7WOsWb5AoNe6oBLN5JUOINekgpn\n0EtS4Qx6SSqcQS9JhTPoJalwBr0kFc7r6KU2puLGL4CTT5jJy784VOsYBw4fqfX86l0GvdTGVNz4\nBXDTRfO5+aFnax9DxyeXbiSpcAa9JBXOoJekwhn0klQ4g16SCmfQS1LhDHpJKpxBL0mFM+glqXAG\nvSQVzqCXpMIZ9JJUOINekgpX+fTKiFgK3NmsXZ+Za0e8/mbgK8C5wI2ZeXunx0qS6td2Rh8RM4AN\nwCXAecBVEXH2iLJ9wMeB28ZxrCSpZlVLN0uAwczckZkHgY3AitaCzHwhM7cCB8d6rCSpflVBPw94\nrmV7Z3NfJyZyrCRpklQF/fAEzj2RYyVJk6Qq6HcB/S3b/TRm5p2YyLGSpElSddXNVmBhRJwF7AYu\nBVaOUts3gWMlSTVpG/SZeSgiVgGb+P9LJLdHxOrm6+siYi7wOHAycCQirgXekpk/Pdaxdb4ZSdIv\nq7yOPjMfoXGNfOu+dS3f7+G1SzRtj5UkTS3vjJWkwlXO6KVeNWtGH0/uHqp1jAOHj9R6fmkqGPSa\ntl7cf4ibH3q21jFuumh+reeXpoJLN5JUOINekgpn0EtS4Qx6SSqcQS9JhTPoJalwXl4paVJNxf0N\np8+Zxdw5s2sdoyQGvaRJNRX3N6xZvsCgHwOXbiSpcAa9JBXOoJekwhn0klQ4g16SCmfQS1LhDHpJ\nKpxBL0mFM+glqXAGvSQVzqCXpMIZ9JJUOINekgpn0EtS4Qx6SSqcQS9JhTPoJalwBr0kFc6gl6TC\nGfSSVDiDXpIKZ9BLUuEMekkq3MxuN6CptWfoFfYOHah9nAOHj9Q+ho5fs2b08eTuodrHOX3OLObO\nmV37OHUz6I8ze4cOcN3mwdrHuemi+bWPoePXi/sPcfNDz9Y+zprlC46PoI+IpcCdzdr1mbn2GDW3\nAu8Dfg5ckZk/bO7fAbwMHAYOZuaSyWtdktSJtmv0ETED2ABcApwHXBURZ4+oWQ4sysxzgGuBe1pe\nHgYuzMxzDXlJ6o6qX8YuAQYzc0dmHgQ2AitG1FwMfBUgM78LvCEiTm95vW+ympUkjV1V0M8DnmvZ\n3tnc12nNMPBwRGyLiKsn0qgkaXyqgn64w/OMNms/PzMXAZcBN0TEBR13JkmaFFVBvwvob9nupzFj\nb1dzRnMfmfl88+t2YBONpSBJ0hSquupmK7AwIs4CdgOXAitH1HwD+BiwMSLeAbyUmXsj4kRgRmYO\nRcRpwHLgmkntXpJUqe2MPjMPAatozMafADZk5vaIWB0Rq5s1m4GnIuL7NC7DvLJ5+Fzg0Yj4Ho1f\n4t6RmQ/W9D4kSaOovI4+Mx8Bzh2xb92I7U8Dnx6x7xng7ZPQoyRpAnzWjSQVzqCXpMIZ9JJUOINe\nkgpn0EtS4Qx6SSqcQS9JhTPoJalwBr0kFc6gl6TCGfSSVDiDXpIKZ9BLUuEMekkqnEEvSYWrfB69\nps6eoVfYO3Sg1jEOHD5S6/kl9R6DvofsHTrAdZsHax3jpovm13p+Sb3HpRtJKpxBL0mFM+glqXAG\nvSQVzqCXpMIZ9JJUOINekgpn0EtS4Qx6SSqcQS9JhTPoJalwBr0kFc6gl6TCGfSSVDgfU9yBnT/5\nBTt/8kqtY5xxyuxazy/p+GXQd+C/9+3nlod31DrGp5aeyeknzap1DEnHJ5duJKlwBr0kFa5y6SYi\nlgJ3NmvXZ+baY9TcCrwP+DlwRWb+sNNjJUn1ajujj4gZwAbgEuA84KqIOHtEzXJgUWaeA1wL3NPp\nsZKk+lUt3SwBBjNzR2YeBDYCK0bUXAx8FSAzvwu8ISLmdnisJKlmVUE/D3iuZXtnc18nNW/q4FhJ\nUs2q1uiHOzxP30Qb6WW/8WsnsPr36/0Z9dunnchL+w/VOoak41NV0O8C+lu2+2nMzNvVnNGseV0H\nx77GwMBARTvdM7/m8+97tvH184trHujFZ+ofY6rGKWWMqRrH9zJmh/f8FwN76h+nblVBvxVYGBFn\nAbuBS4GVI2q+AXwM2BgR7wBeysy9EbGvg2NftWzZsqI/FUhSt7Rdo8/MQ8AqYBPwBLAhM7dHxOqI\nWN2s2Qw8FRHfp3Ep5ZXtjq3tnUiSjqlveLjTZXhJ0nTknbGSVDiDXpIK13NPr4yIK4G/AE4A7s/M\nv+5yS2MWEX8FrAF+PTNf7HY/nYqINcD7gf3AvwA3ZeZPuttVe9P5MRsR0Q98DXgj8AJwT2be09Wm\nxqF5F/xWYGdm/mm3+xmLiHg9cBdwDjAbWJWZ3+luV52JiKtp/E50NvBoZn5itNqemtFHxLuAy4A/\nyMy3Abd1uaUxa/7jfQ/wP93uZRweBN4K/C7weuAz3W2nvQIes3EQ+GRmvhX4M+Dz06z/o64F/p3O\n77vpJXcBj2TmuTTCflpcMBIRpwI30Mia3wN+KyL+eLT6XpvRfxS4tfnIBDLzhS73Mx5/C1wP3Nft\nRsYqM7919PuIeAD4QBfb6cSrj9kAiIijj9mYFv9YM3MPsKf5/Y8j4nEad5RPi/4BIuIMYDlwC/CX\nXW5nTCLiFOCCzPwwvHqlYE9/gm2xn8aNqqc0t08E/ne04p6a0QMLgaURMRARj0TEVNzeMWkiYgWN\nj69PdbuXSXA1vf/DqpNHdEwLEbGAxqepabFs0OIO4DrgSLcbGYf5wAsRcU9EPB0R6yPiV7vdVCcy\ncz+NifEOGpOFf8vMx0arn/IZfUR8C5h7jJdupNHPbwLnAxfRWLp599R1V62i/88Af9Syr+duAmvT\n/w2Z+c1mzY3AUGbeO6XNjd10XCr4JRFxEo2H/n0yM3/W7X46FRHvB36Umdsi4sJu9zMOM2kse/wN\njdBcB/w5jd+b9LSIOA34e+AtNGby90bE+zLz/mPVT3nQZ+Z7RnstIj4KbGz+tPpmRKyLiBMy8xdT\n12F7o/UfEW+jMUN4MiKg8SiIJyJiSWb+aApbbKvdnz9ARFxB46P4silpaGI6eURHT4uI1wFfB/4h\nM3v9E9RI7wQubj6q/ATg5Ij4WmZ+qMt9dWonsK9lgvOPwIeYBkFPY9nyO5k5CBAR9wJLgWMGfU/d\nMNW82/Z3gI/TeCO3ZeYF3e1qfCLiWeC8aXbVzZ8AtwNLM3Nft/upEhEzgf+g8UNpN/AYsHK63IEd\nEX00HvH948ycVuvbI0XEHwKfmoZX3Xwb+ATwOPB3wLbM/HJ3u6oWEScDAzRy8mfAvcAXMnPLsep7\nbY3+bhqfMn4IfJkev+qjQu/8BO3cWuAk4KGI2BYRd3W7oXYKeMzG+cDlwLubf97bmj9sp6vp+Hf+\nw8AXgP+k8fudjd1tpzOZ+TKNJadNwL8CTwL/PFp9T83oJUmTr9dm9JKkSWbQS1LhDHpJKpxBL0mF\nM+glqXAGvSQVzqCXpMIZ9JJUuP8D+QGGSdiQOPkAAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 31 }, { "cell_type": "code", "collapsed": false, "input": [ "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, normed=True)\n", "plt.plot(xgrid, density(xgrid), 'r-')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 32, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nQyLdAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 32 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Regression models\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", "collapsed": false, "input": [ "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')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 33, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nZhFnAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 33 }, { "cell_type": "markdown", "metadata": {}, "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": {}, "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": {}, "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", "collapsed": false, "input": [ "ss = lambda theta, x, y: np.sum((y - theta[0] - theta[1]*x) ** 2)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "ss([0,1],x,y)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 35, "text": [ "333.35000000000002" ] } ], "prompt_number": 35 }, { "cell_type": "code", "collapsed": false, "input": [ "from scipy.optimize import fmin\n", "\n", "b0,b1 = fmin(ss, [0,1], args=(x,y))\n", "b0,b1" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Optimization terminated successfully.\n", " Current function value: 21.375000\n", " Iterations: 79\n", " Function evaluations: 153\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 36, "text": [ "(-4.3500136038870876, 3.0000002915386412)" ] } ], "prompt_number": 36 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(x, y, 'ro')\n", "plt.plot([0,10], [b0, b0+b1*10])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 37, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAAECCAYAAAAB2kexAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAE1xJREFUeJzt3X2wXHV9x/F3SDC3CFURCBGhgYaWB0WMFQSGoKSkVVpk\nqHwdGFMqsUnLDNgM7ZAgWKf4B7QVsQxCrgLhYQp+GYeAnSmTig+JE6lkggYxSGGSKU+5ASwPwTxz\n+8ddIISbze7ds3t2z75f/9y95+6e/ZIJn5z7Ob89Z9zw8DCSpGrYo+wBJEnFMdQlqUIMdUmqEENd\nkirEUJekCjHUJalCJjTypIgYAH4MTAQ2Ad/JzK9HxD7AbcBhwBPArMzc0K5hJUn1NXSknpmbgE9k\n5rHAKcDsiDgcuBxYnpnHAA8Al7VtUknSbjVcv2Tmb2sP9wbGA5uBM4BbattvAc4sdDpJUlMaDvWI\n2CMifgEMAddl5v8CkzJzqPaUIWBSG2aUJDWomSP11zLzQ8BU4IKI+PBOPx8GvOaAJJVo3Fiu/RIR\n/wo8BfwN8PHMXBcRk4EfZuYRo73m/vvvN/AlaQxmzJgxrtHnNrr6ZT9gW2a+GBHvBT4JXATcC5wH\nXFX7urjefqZNm9boXJIkYOXKlU09v9H6ZTLwg1qn/u/A1Zl5P3AFcEJErAKOB77a1LtLkgrV0JF6\nZj4MvO0wOzNfwRUvktQ1/ESpJFWIoS5JFWKoS1KFGOqSVCGGuiRViKEuSRViqEtShRjqklQhhrok\nVYihLkkVYqhLUoUY6pJUIYa6JFWIoS5JFWKoS1KFGOqSVCGGuiRViKEuSRViqEtShRjqklQhhrok\nVYihLkkVYqhLUpdav2FL06+Z0MiTIuJg4FbgAOA5YFFmLoqIrwBfqG0DWJCZ9zU9hSTpDRu3buc7\nvxjie6uf50tHN/fahkId2ArMy8yfR8R+wC8j4r+BYeDqzLy6ubeVJO3steFhvv8/v+HmFc9y7Pv2\n5oazjuDJX/+yqX00FOqZuQ5YV3v8fEQ8CBxU+/G4pt5RkvQ2j6zbwPUPPM34PeDLf3woRx7wTgCe\nbHI/jR6pvyEipgJHAz8FTgIujIjZte8vzswXm92nJPWroVe28O0Hn+ZXQ68y+6Pv4xO//x7GjRv7\nsXJTJ0ojYm/gTkaqmFeB64FDgROA7cDXxjyJJPWRjVu3s2jFM1yw+FEOefcAN559FKdO3belQIcm\njtQjYk/gu8DtmXkPQGaur/34pYi4Dri9pWkkqeJG6833f+c7Ctt/o6tfxgE3Ao9k5jU7bJ+cmc9G\nxATgXODhwiaTpIrZVW9epEaP1E8CPgesioiHatsuBc6JiGOBLcBSYF7hE0pSjyu6N6+n0dUvP2H0\n/v0/ix1Hkqpjx/XmZx69PxdP/z0GJrT3M59Nr36RJNXX7t68HkNdkgrUid68HkNdkgrQyd68HkNd\nklpQRm9ej6EuSWNQZm9ej6EuSU0quzevx1CXpAZ1S29ej6EuSbvRbb15PYa6JO1Ct/bm9RjqkjSK\nbu7N6zHUJWkHvdCb12OoSxK91ZvXY6hL6mu92JvXY6hL6lu92pvXY6hL6ju93pvXY6hL6htV6c3r\nMdQlVV7VevN6DHVJlVbF3rweQ11SJVW5N6/HUJdUKf3Qm9djqEuqhH7qzesx1CX1vH7rzesx1CX1\nrH7tzetpKNQj4mDgVuAA4DlgUWYuioh9gNuAw4AngFmZuaFdw0oS2JvX0+ifwlZgXmYeDXwGuDIi\njgQuB5Zn5jHAA8Bl7RlTkkZ68yWPvcD5d61maMMWbjjrCGZNm2yg76ChI/XMXAesqz1+PiIeBA4C\nzgBOqT3tFuBHwPzix5TU7+zNG9N0px4RU4GjGTkyn5SZQ7UfDQGTCpxNkuzNm9TU7ywRsTdwJyNV\nzFu688wcBoYLnE1SH9u4dTuLVjzDBYsf5ZB3D3Dj2Udx6tR9DfTdaDjUI2JP4LvA7Zl5T23zUEQc\nWPv5ZGB98SNK6if25q1pdPXLOOBG4JHMvGaHH90LnAdcVfu6uPAJJfUNe/PWNdqpnwR8DlgVEQ/V\nti0ArgBui4hV1JY0Fj+ipKqzNy9Oo6tffsKuq5ozixtHUj9xvXnx/ESppI7zOi3tY6hL6ih78/Yy\n1CV1RCO9+fIlS1i6cCETNm9m28SJTJ87lxNnzixp4t5kqEtqq0Z78+VLlrBswQKuWrPmjW3z164F\nMNib4BkJSW3R7HrzpQsXcuUOgQ5w5Zo1LBsc7MS4leGRuqTCjaU3n7B586jbx2/aVPR4lWaoSypM\nK+vNt02cOOr27QMDRY5YedYvklpWxHVaps+dy/xDD33LtkumTOHkOXOKHrfSPFKXNGZFrjd//WTo\n/MFBxm/axPaBAabPmeNJ0iYZ6pLGpB3rzU+cOdMQb5GhLqkpXqeluxnqkhridVp6g6EuqS6v09Jb\nDHVJu+R1WnqPoS7pbezNe5ehLukN9ua9z1CXZG9eIYa61OfszavFUJf6lL15NRnqUp+xN682Q13q\nE/bm/cFQl/qAvXn/MNSlHtTovTztzftPQ6EeETcBpwPrM/ODtW1fAb4APFd72oLMvK8dQ0p6UyP3\n8rQ371+NHqnfDFwL3LrDtmHg6sy8uvCpJO3S0oUL3xLoMHIvz/mDg3zstNPszftcQ6GemcsiYsoo\nP/L3OKnDdnUvz5f3OoCL7nnM3rzPtdqpXxgRs4GfAhdn5osFzCSpjp3v5fnsuw/g2k/NYdUfTmPe\nB/a3N+9zrZRs1wOHAicA24GvFTKRpLpev5fnb98xwPUz/4pZX1zI41te5uLDtzR9X1BVz5iP1DNz\nfe3hSxFxHXB7MSNJqudjp53GzzdMZOYz49j3uSf4wM8Wcdp553gbOAEthHpETM7MZyNiAnAu8HBx\nY0kazRvrzSccyD/H+znygOnA58seS12k0SWNdwCnAPtFxJPAPwIfj4hjgS3AUmBe26aU+pzrzdWo\nRle/nDPK5psKnkUqVaMf6Okk15urWX6iVKKxD/R0ktdp0VgZ6hL1P9DT6VD3Oi1qhaEusesP9Izf\ntKljM9ibqwiGusTbP9Dzuu0DA21/b3tzFcm/ORJvfqBnR5dMmcLJc+a07T1fGx5myWMvcP5dqxna\nsIUbzjqCWdMmG+hqiUfqEm+eDJ0/OMj4TZvYPjDA9Dlz2tan25urXQx1qebEmTPbflLU3lztZqhL\nHWBvrk4x1KU2cr25Os1Ql9rE3lxlMNSlgtmbq0yGulQQe3N1A0NdapG9ubqJoS61wN5c3cZQl8bA\n3lzdylCXmmBvrm5nqEsNsDdXrzDUpd2wN1cvMdSlXSiyN+/GW+Wpmgx1aSdF9+bddqs8VZtneKSa\ndl3ffOnChVw5yq3ylg0OtrRfaTQeqUu0tzfvhlvlqX8Y6uprnVhvXuat8tR/Ggr1iLgJOB1Yn5kf\nrG3bB7gNOAx4ApiVmRvaNahUpI1bt3PnL4b4jw6sN58+dy7z1659SwVzyZQpTG/jrfLUvxo9Ur8Z\nuBa4dYdtlwPLM/PMiLgEuAyYX/B86nNFrxopY715p2+Vp/7WUKhn5rKImLLT5jOAU2qPbwF+hKGu\nAhW9auSX6zZw/QNPMWGPcR1fb96JW+VJ0FqnPikzh2qPh4BJBcwjvWHpwoVvCXQYWTUyf3CwqYAc\nemUL3/7Z0/xqvddpUfUVUiJm5jAwXMS+pNe1umpk49bt3LziGS5Y/CiHvGeAG88+ilOn7mugq9Ja\nCfWhiDgQICImA+uLGUkaMdZVIzuuN19f4HpzqRe0Ur/cC5wHXFX7uriQiaSasawaKbM3l7pBo0sa\n72DkpOh7I+JJ4MvAFcBtEbGK2pLGtk2pvtTMqhF7c2nEuOHhzlTh999///C0adM68l7qHzuvNz/7\nmEnWLKqUlStXMmPGjIaPUPxEqXqS1zeXRmeoq+fYm0u7ZqirZ9ibS7tnqKvrve06Lad4X1BpVwx1\ndS17c6l5hrq6kr25NDaGurqKvbnUGkNdXcHeXCqGoa5S2ZtLxTLUVRp7c6l4hro6zt5cah9DXR1j\nby61n6GutrM3lzrHUFdb2ZtLnWWoqy3szaVyGOoqlL25VC5DXYWwN5e6g6GultmbS93DUNeY2ZtL\n3cdQV9PszaXuZairYfbmUvcz1NUQe3OpNxjqqsveXOotLYd6RKwFXga2A1sz87hW96ny2ZtLvamI\nI/Vh4OOZ+ZsC9qWS2ZtLva2o+sXfxyvA3lzqfUUdqf8gIl4DvpmZ3ypgn+oge3OpOoooSU/KzA8B\n5wKXRsTJBexTHbBx63ZuXvEMFyx+lEPeM8CNZx/FqVP3NdClHtZyqGfms7Wvq4G7AU+UdrnXhodZ\n8tgLnH/XatZv2MINZx3BrGmTPREqVUBL9UtE7AWMz8xXImJ/4FPARYVMprawN5eqrdVOfRJwd0QA\nvAB8PTOXtDyVCmdvLvWHlkI9M9cAxxY0i9rA9eZSf/ETpRXlenOpPxnqFWRvLvUvQ71C7M0lGeoV\nYG8u6XWGeg+zN5e0M0O9R9mbSxqNod5j7M0l1WOo9wh7c0mNMNS7nL25pGYY6l3M3lxSswz1LmRv\nLmmsDPUuYm8uqVWGehewN5dUFEO9ZPbmkopkqJfE3lxSOxjqHWZvLqmdDPUOsTeX1AmGegfYm0vq\nFEO9jezNJXWaod4G9uaSymKoF8jeXFLZDPWCtNqbL1+yhKULFzJh82a2TZzI9LlzOXHmzDZNK6mq\nDPUWFdGbL1+yhGULFnDVmjVvbJu/di2AwS6pKS2HekRMB66p7etbmXlty1P1gCJ786ULF74l0AGu\nXLOG+YODhrqkprR09i4ixgM3AWcBHwFmR8SRRQzWrV4bHmbJYy9w/l2rWb9hCzecdQSzpk1u6UTo\nhM2bR90+ftOmMe9TUn9q9Uj9OODxzFwLEBF3Ap8GVre4367UrvXm2yZOHHX79oGBQvYvqX+0GuoH\nAU/u8P1TwPEt7rPrtHu9+fS5c5m/di1X7lDBXDJlCtPnzCnsPST1h1ZDfbiQKbpUp9abv96bzx8c\nZPymTWwfGGD6nDn26ZKa1mqoPw0cvMP3BzNytN7TylhvfuLMmYa4pJa1GuorgMMjYgrwDPBZ4JxW\nhyqT12mR1MtaCvXM3BYR5wN38+aSxp48Sep1WiRVQcvr1DPzx8CHC5ilFF6nRVKV9O0nSr1Oi6Qq\n6stQtzeXVFV9Fer25pKqri9C3d5cUr+odKjbm0vqN5UNdXtzSf2ocqFuby6pn1Um1O3NJakCoW5v\nLklv6ulQtzeXpLfqyVC3N5ek0fVUqNubS1J9PRHq9uaS1JiuD3V7c0lqXNeGur25JDWv60Ld3lyS\nxq5rQt3eXJJa1xWhbm8uScUoNdTtzSWpWKWEur25JLVHR0Pd3lyS2qujoX7hPb+2N5ekNhpzqEfE\nV4AvAM/VNi3IzPvqveYvPnCAvbkktVErR+rDwNWZeXWjLzh16r4tvJ0kaXdaPTvpIbckdZFWO/UL\nI2I28FPg4sx8sYCZJEljVDfUI+K/gANH+dGXgOuBfwJ+F/gX4GvA7KIHlCQ1rm6oZ+ZpDezjpYi4\nDrh9d09cuXJlo3NJksagldUvkzPz2YiYAJwLPFzv+TNmzLB/l6Q2a+VE6VURsQp4ANgTmFfMSJKk\nsRo3PDxc9gySpIJ4wRVJqhBDXZIqpO3XfomI6cA1tff6VmZe2+737FYRcTBwK3AAI5dXWJSZi0od\nqkQRMR5YATyVmX9e9jxliYh3At8EjgEmAudn5gPlTlWOiPhr4POM/Dksy8y/K3mkjomIm4DTgfWZ\n+cHatn2A24DDgCeAWZm5od5+2nqkXvuf9ibgLOAjwOyIOLKd79nltgLzMvNo4DPAlX3+5/FF4FeM\nXHKin30T+HFmfpiRYF9d8jyliIh9gUuB04CPAn8QEX9S7lQddTPwpzttuxxYnpnHMLIo5bLd7aTd\n9ctxwOOZuTYztwJ3Ap9u83t2rcxcl5k/rz1+HngQeF+5U5UjIt4PfAr4Nn18uYmIeBdwcmbeBJCZ\n2zLzpZLHKstGRv4uvAv4HWAv4P9KnaiDMnMZb//vPQO4pfb4FuDM3e2n3fXLQcCTO3z/FHB8m9+z\nJ0TEVOBoRv717UdfB/6BkU8k97NDgeciYhHwR4xccuOizNxY6lQlyMyNEfG3wFpgM/Bvmfmzcqcq\n3aTMHKo9HgIm7e4F7T5S7/dfq0cVEXsz8lvLvMx8tex5Oi0i/oyR3vAh+vgovWYCI1XDd2tfJwJn\nlzpRSSJif0YuP3IUMAU4ISJOL3WoLpKZwzSQqe0O9aeBg3f4/mBGjtb7VkTsycj/wLdn5j1lz1OS\nE4EzImINcAdwakTcWvJMZXkKeCEzv1c7Or8D+GTJM5XlOOCBzHw8M18A7gKmlzxT2YYi4kAY+RQ/\nsH53L2h3/bICODwipgDPAJ8Fzmnze3atiBgH3Ag8kpnXlD1PWTLzUkZOiBERpwB/n5l/We5U5cjM\ndRHxeEQcz8g5ltOB75c8VlmWAd+onTB9lZF/3L5R7kiluxc4D7iq9nXx7l7Q1lDPzG0RcT5wN28u\naezLM/s1JwGfA1ZFxEO1bbu9Y1Qf6Pea7jxGlrrux8g1lC4pd5xyZObLEfFVRvJiL+A+4IflTtU5\nEXEHcArw3oh4EvgycAVwW+2SLE8As3a3Hy8TIEkV4idKJalCDHVJqhBDXZIqxFCXpAox1CWpQgx1\nSaoQQ12SKsRQl6QK+X9bf0gmrdov7QAAAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 37 }, { "cell_type": "code", "collapsed": false, "input": [ "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)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 38, "text": [ "(0, 20)" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXAAAAECCAYAAADn84z1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFFxJREFUeJzt3X+Q3HV9x/FnTCA3IKCgiRSCiUCjpQGhFjAMhzX0OkA1\n2sjHglqmWO+gFYUW4cJom07LdIODOMoPLyoCOkXexYnYDjo3BoccDVokVBgrKswdEDUJ8sND4U4u\nuf6xm3iBy93t3u5+v9/d52PGuc33luzby97rvvfZ136+c8bHx5EkFc8rsh5AklQbA1ySCsoAl6SC\nMsAlqaAMcEkqKANckgpq3lSfTCktAm4BFgBPAjdFxE0ppQOALwNvAB4FPhARv270sJKk35nuDPxF\n4JKIOAZ4D1BKKb0J+ASwKSKOBb4LfLyxY0qSXmrKAI+IrRHxv5XbvwTuAw4D3gncXLnbzcC7Gjmk\nJOnlZrwGnlI6CjiG8hn3wojYVvnUNmBhA2aTJE1hRgGeUnol8FXKyyl7rHVHxDjg+/ElqcmmfBET\nIKW0D/A14CsRcUfl8LaU0usiYmtK6VBg+97++w0bNhjuklSDFStWzJnq89O1UOYAXwR+GBGfnvCp\nbwDnAWsrH78+1d9zwgknzGhYSaqn0bGd3HjfzxkYepZLO4/ghMMOzHqkGdu8efO095nuDPwU4P3A\ngymlByrHVgP/Anw5pfQglRrhLOaUpLp79KnnKX3nMRa/uoPPvfuNHNgx7YJD4Uz5/ygi7mHv6+Q2\nTyTlzo6d49z+0HZuf2g7PScdxoqjXs2cOVOuRBRW6/1IktS2tj33W666+zHmANeuXMrCA/bNeqSG\nMsAlFd74+DgbHnmGvu/9jLOPXcCqP1zA3Fe05ln3RAa4pEIbHhnjM//9BI89O0LpjCM58pD9sh6p\nadzMSlJh3b9lmAvWP8wh++/DdSuX7hHepVIpw8mawzNwSYVT5HpgPRngkgplpvXA3t7eJk/WfAa4\npEJop3rgTLkGLin3tj33Wy678xHue2KYa1cu5fSjD542vF0Dl6QMtWs9cKYMcEm5VGs9cFN/Pxv7\n+pg3Okpp1So6e3pY3tXV4GmzYYBLyp37twxz9cDjnLrkVVx22uvZd97MVns39fczsHo1awcHdx/r\nHRoCaMkQdw1cUm6Mju3khnu3cPXA41zaeQQXnnz4jMMbYGNfH6VKeK+pHCsNDjKwbl39h80Bz8Al\n5UI9dg+cNzo66fG5IyOzHS+XDHBJmapnPXBs/vzdt9dMfIyOjtkNmVMGuKTM1Hv3wM6eHnqHhnYv\nowBcvngxnd3ds5w0nwxwSU3XqHrgrhcqe9etY+7ICDs6Oujs7m7JFzDBAJfUZI3ePXB5V1fLBvZL\nGeCSmqbWeqAmZ4BLajh3D2wMA1xSQ7XDxYWz4ldSUkO4e2DjGeCS6q7dLi6cFQNcUt24e2BzGeCS\n6qKdLy6cFQNc0qxZD8yGAS6pZtYDs2WAS6qJ9cDs+RWXVBXrgflhgEuaMeuB+WKAS5qW9cB8MsAl\nTcl6YH4Z4JL2ynpgvhngkl7GemAxGOCS9mA9sDj8l5EEWA8sIgNckvXAgjLApTZmPbDYDHCpTVkP\nLD4DXGpD1gNbgwEutRHrga3FAJfahPXA1uO/oNTirAe2LgNcamHWA1ubAS61IOuB7cEAl3JuU38/\nG/v6mDc6ytj8+XT29LC8q2uv97ce2D4McCnHNvX3M7B6NWsHB3cf6x0aApg0xK0Hthf/daUc29jX\nR2lCeAOUBgcZWLduj2OjYzu54d4tXD3wOJd2HsGFJx9ueLeBac/AU0o3AmcB2yNiWeXYGuBvgCcr\nd1sdEd9q1JBSu5o3Orr79prK/wDmjozsPm49sH3N5F/6S8BngVsmHBsHPhURn2rIVJIAGJs/f9Lj\nOzo6rAdq+iWUiBgAnpnkUz5TpAbr7Omhd8kS4Hdn35cvXsyy8y/gsjsf4b4nhrl25VJOP/pgw7sN\nzeZ3rYtSSh8E7gX+ISKerdNMkip2vVDZu24dc0dGGOvo4KD3XcSXnj6Ys4890Hpgm6v1VY4bgCXA\nW4EdwNV1m0jSHpZ3dXH57bfzm5OXM3bhJ9m8cwGlM44kHbvQ8G5zNZ2BR8T2ys1fpZSuA75Sv5Ek\nvdT9W4b5r4d/yfmn72M9ULvV9CxIKR1a+TgPOBd4qJ5DSSqbWA/sW7vGeqD2MJMa4a3AacBrUkpP\nAP8EvC2l9Gbgt8BG4JKGTim1IeuBms60z4iIOGeSwzc2YBZJuHugZs4f6VKOuHugqmGASzng7oGq\nhQEuZczdA1UrA1zKkLsHajYMcBVGtfti55kXF1Y9GOAqhGr3xc4z64GqF39fUyHMdF/sPNuxc5zb\nfrCN3m8+ynuPW8gVb19seGtWfPaoEGayL3aeWQ9UIxjgKoSp9sXOM+uBaiQDXIXQ2dND79AQpcHB\nPfbF7uzuznKsKVkPVKMZ4CqEl+6LvaOjg87u7ty+gGk9UM1ggKswlnd1sbyri1KpRG9vb9bjTMp6\noJrJAJfqxHqgms1nmAonb2ff7h6orBjg0ixsfW6Uq+5+jFcwx3qgms5XVlQ4pVIp6xEYHx/n2z99\nmovu+AknH3EQa888yvBW03kGLlXJeqDywgBX4WS5Bm49UHligEszYD1QeeTpgwqn2Wvgjz71PB/+\n+o95+vkX+dy732h4KzcMcGkvpto9MA8vpEouoahwmrEGbj1QRWCASxPssXvgsgWsWjb57oF5ezOR\n2pNLKCqcRi1fDI+MceVdQ9z24DZKZxxJOm6hW78q1wxwiXI98IL1D3PI/vtw3cql03a7XQNXHriE\nosKp5/KF9UAVmQGutjWb3QNdA1ceuISiwpnt8oUXF1arMMDVVrY+N8rH7vwp9z0xzLUrl3L60QfX\ntPWra+DKA087VDi1LF/MtB4oFYkBrpbXiN0DXQNXHriEosKpZvmi2nqgVCQGuFrS6NhObrh3C1cP\nPM6lnUdw4cmH13XrV9fAlQcuoahwplu+8OLCahc+s9UymnlxYdfAlQcuoahwJlu+qFc9UCoSA1yF\ntsfFhRc17+LCroErD1xCUeHsWr7w4sJqd56Bq5Cyqgdu6u+ntGoV8+65h9KqVWzq72/K40qT8Qxc\nhTI6tpP3Xfxx9j3l3KbvHripv5+B1atZOzi4+1jv0BAAy7u6mjaHtItn4CqMXRcXfuHFnZlcXHhj\nXx+lSnivqRwrDQ4ysG5dU+eQdvEMXLn3snrgqn/LpGEyb3R00uNzR0aaPIlUZoAr1/J0ceGx+fN3\n314z4fiOjo6mzyKBSyjKqazqgVPp7Omhd8mSPY5dvngxp3Z3ZzSR2p1n4MqdvNYDd71Q2btuHXNH\nRtjR0UFnd7cvYCozBrhy5f4tw1w98DinLnkVl532+rpuQFUPy7u6DGzlhgGuXPDiwlL1pg3wlNKN\nwFnA9ohYVjl2APBl4A3Ao8AHIuLXjRxUzbGpv5+NfX3MGx1lbP58Ont6Gn7G6e6BUm1m8p3yJeCz\nwC0Tjn0C2BQR70opXQ58HHB7toJr9htVmrl7oNSKpl1gjIgB4JmXHH4ncHPl9s3Au+o8lzIw8Y0q\nuzTqjSruHijNXq2vEC2MiG2V29uAhXWaRxma+EaVNROO1/ONKnmsB0pFNeuX+CNiHBivwyzK2MQ3\nqkxUrzeqDI+MceVdQ9z24DZKZxxJOm6hV4aXZqHWAN+WUnodQErpUGB7/UZSVia+UWVN5Vi93qji\nxYWl+qv15f5vAOcBaysfv163iZSZRrxRxXqg1DhzxsenXv1IKd0KnAYcQvlM+x+B25lhjXDDhg3j\nJ5xwQj1nVhOUSqVZX/dxYj3wolMWWQ+UqrB582ZWrFgx5RrjtN9REXHOXj5l80STsh4oNYenRJpU\nrWffedo9UGp1BrjqYnx8nA2PPEPf937G2csWsGrZAhsmUoPla6cg5UY1V123HihlwzNwzUredw+U\nWpkBrklNtwZuPVDKngGuqrl7oJQP/r6rSU22Br5j5zi3/WAbvd98lPcet5Ar3r7Y8JYy5HefZsR6\noJQ/BrgmtWsN3HqglF8GuPYqrxcXllRmgGtSH73in3ly2SrrgVKOGeDaw6564KbHf0Xf31kPlPLM\nANduE+uBG75wlQ0TKef8DpW7B0oFZYC3OeuBUnEZ4G3KeqBUfAZ4G7IeKLUGA7zNuHug1DoM8Dbh\n7oFS6zHA24C7B0qtye/kFmY9UGptBniLsh4otT4DvMVYD5TahwHeQqwHSu3FAG8R1gOl9mOAF9zo\n2E6+eN/Pucd6oNR2DPACsx4otTe/4wvIeqAkMMALx3qgpF0M8IKwHijppQzwArAeKGkyBnjOWQ+U\ntDcGeE5ZD5Q0HQM8h6wHSpoJkyFHrAdKqoYBnhPWAyVVywDPmPVASbUywDNkPVDSbBjgGbEeKGm2\nDPAmsx4oqV4M8CayHiipnkyQJrAeKKkRDPAGsx4oqVEM8AaxHiip0QzwBrAeKKkZDPA6sx4oqVkM\n8DqxHiip2WYV4CmlIWAY2AG8GBEn1mOoorEeKCkLs02aceBtEfF0PYYpGuuBkrJUj1PFtkysXfXA\nOdYDJWWkHmfgd6WUdgLXR8Tn6zBTrlkPlJQXs61InBIRxwHnAleklE6tw0y5NTwyxpV3DXHbg9so\nnXEk6biFhrekzMwqwCPiF5WPPwLWAy37Iub9W4a5YP3DHLL/Ply3cqndbkmZq3kJJaW0HzA3Ip5L\nKb0WOBP4SN0mywnrgZLyajZr4AuB9SklgKeAayKivy5T5YT1QEl5VnMiRcQg8OY6zpIb1gMlFYGn\nlC9hPVBSURjgFdYDJRWNAY67B0oqprYPcHcPlFRUbRvg1gMlFV1bBrj1QEmtoK2Sy3qgpFbSNgFu\nPVBSq2n5ALceKKlVtXSAWw+U1MpaNsCtB0pqdS0X4NYDJbWLlgpw64GS2klLJJz1QEntqPABbj1Q\nUrsqbIBbD5TU7goZ4NYDJamAAW49UJLKChPg1gMlaU+FCHDrgZL0crlOQuuBkrR3uQ1w64GSNLXc\nBbj1QEmamVwFuPVASZq53AS49UBJqk7mAW49UJJqk2mAWw+UpNplkpjWAyVp9poe4NYDJak+mvZK\n4fj4ON/+6dNcdMdPOHnRQVx15lF7hHepVGrWKJLUEppyBm49UJLqryln4Besf5hD9t+H61Yu3Wt4\n9/b2NmMUSWoZTTkDtx4oSfXXlDPwmYS3a+CSVB3f7ihJBZWbAHcNXJKqk5sAlyRVJzcB7hq4JFUn\nNwEuSapObgLcNXBJqk5uAlySVJ3cBLhr4JJUndwEuCSpOpkH+Kb+fkqrVjHvnnsorVrFpv7+rEeS\npELI9BI4m/r7GVi9mrWDg7uP9Q4NAbC8qyujqSSpGDI9A9/Y10epEt5rKsdKg4MMrFuX2UySVBQ1\nn4GnlDqBT1f+js9HxGerfvDR0UmPzx0ZqXUsSWobNZ2Bp5TmAjcCfwH8EfDBlNKbqv17xubP3317\nzYTjOzo6ahlLktpKrUsoJwKPRMRQRLwIfBVYWe1f0tnTQ++SJXscu3zxYk7t7q5xLElqH7UuoRwG\nPDHhz1uAk6r9S3a9UNm7bh1zR0bY0dFBZ3e3L2BK0gzUGuDj9RpgeVeXgS1JNag1wH8GLJrw50WU\nz8IntXnz5hofRpK0N7UG+PeBo1NKi4GfA+8FzpnsjitWrJhT42NIkqZQ04uYETEGnA+sB+4HboyI\nH9VzMEnS1OaMj9dtOVuS1ESZ74UiSaqNAS5JBdWwzaxSSouAW4AFwJPATRFxU6Mer95SSh3A3cB8\nYAS4LSKuyXaq6lTeMft9YEtEvCPreaqVUhoChoEdwIsRcWK2E81cSml/4HrgWMrPofMj4rvZTjUz\nKaWllN+ct8sbgE9ExGcyGqlqKaUPAX9N+Ws/EBEXZzxSVVJKHwb+HngBuCYivjDZ/Rp5Bv4icElE\nHAO8ByjV8nb7rETECPAnEfFm4DTK2wUclfFY1foo8H/UsbffZOPA2yLi+CKFd8X1wN0RcTzlEC/M\ni/wR8ePK1/x4yltlPE+5sFAIKaWDgSuAPwX+GPj9lNKfZTvVzKWUDgIuovy1PwnoTikdOdl9G3YG\nHhFbga2V279MKd0H/B7FeiI/X7n5Sspfq8l338qhlNLhwJnAlZR/khdV4WqolW/AUyPiPNjd2vpV\ntlPV7HTg0Yh4Ytp75scLlJ83B1X+vB/wTHbjVG05sDkingFIKX2H8r5Tn3zpHZuyH3jlzPUYoBC/\nQu6SUnoF8ADl2S8u2JP4GuBjwIFZDzIL48BdKaWdwPUR8fmsB5qhJcCTKaWbgLcA9wIfiYgXMp2q\nNn8J/HvWQ1QjIl5IKV0IDFE+6fpMRPxPtlNVZSNwbUppCeXl2zOBuya7Y8NfxEwpvZLyetolEfGb\nRj9ePUXEzog4DjgK+NuU0vFZzzQTKaU/B7ZHxAMU8Ax2glMqX/9zgStSSqdmPdAMzaP8q/vXKh/n\nA2dnOlENUkr7Au8A/iPrWaqRUnotcAPwB8Bi4K0ppbMyHaoKlZy8GLgOuB0YAHZOdt+GBnhKaR/K\nT+KvRMQdjXysRoqIIeBOymvhRbAceGdKaRC4FXh7SumWjGeqWkT8ovLxR5TXYIuyDr4FeCoi/rNy\n1n0rcEbGM9XiDOD+iHgy60GqdCLw3Yh4JCKeovwDqDPjmapSee6cGRGnAM8CP57sfg0L8JTSHOCL\nwA8j4tONepxGSSm9JqX0qsrtQyg/mR/KdqqZiYgrImJRRCyh/CvwXRHxV1nPVY2U0n4ppQMqt19L\n+dfIonz9twKPpJROqizDnQV8O+OxanEO5R8+RTMAvCWldHBKaT7l791CXWw3pbSg8vEI4N3sZRmr\nkWvgpwDvBx5MKT1QObY6Ir7VwMesp0OBmytVvK3ApyJiQ8Yz1aqILZSFwPqUEsBTlKtURfomPI9y\njfY1lH/wXJ7tONWp1CBPBz6U9SzViojhlNK/Uv6tbT/gW8B3sp2qardXTiB/DZwXEcOT3cm30ktS\nQflOTEkqKANckgrKAJekgjLAJamgDHBJKigDXJIKygCXpIIywCWpoP4fzg7web66twkAAAAASUVO\nRK5CYII=\n", "text": [ "" ] } ], "prompt_number": 38 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "sabs = lambda theta, x, y: np.sum(np.abs(y - theta[0] - theta[1]*x))\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])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Optimization terminated successfully.\n", " Current function value: 10.162463\n", " Iterations: 39\n", " Function evaluations: 77\n", "0.00157170444494 2.31231743181\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 39, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 39 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "ss2 = lambda theta, x, y: np.sum((y - theta[0] - theta[1]*x - theta[2]*(x**2)) ** 2)\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))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Optimization terminated successfully.\n", " Current function value: 14.001110\n", " Iterations: 198\n", " Function evaluations: 372\n", "-11.0748186039 6.0576975948 -0.302681057088\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 40, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 40 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "ss3 = lambda theta, x, y: 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))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Optimization terminated successfully.\n", " Current function value: 4274.128398\n", " Iterations: 230\n", " Function evaluations: 407\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 41, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 41 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "import statsmodels.api as sm\n", "\n", "straight_line = sm.OLS(y, sm.add_constant(x)).fit()\n", "straight_line.summary()" ], "language": "python", "metadata": {}, "outputs": [ { "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: Sun, 23 Feb 2014 Prob (F-statistic): 0.00463
Time: 10:40:26 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| [95.0% Conf. Int.]
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
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 42, "text": [ "\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: Sun, 23 Feb 2014 Prob (F-statistic): 0.00463\n", "Time: 10:40:26 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| [95.0% Conf. Int.]\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", "Warnings:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] } ], "prompt_number": 42 }, { "cell_type": "code", "collapsed": false, "input": [ "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()" ], "language": "python", "metadata": {}, "outputs": [ { "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: Sun, 23 Feb 2014 Prob (F-statistic): 0.0191
Time: 10:40:27 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| [95.0% Conf. Int.]
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.
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 43, "text": [ "\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: Sun, 23 Feb 2014 Prob (F-statistic): 0.0191\n", "Time: 10:40:27 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| [95.0% Conf. Int.]\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", "Warnings:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] } ], "prompt_number": 43 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "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))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Optimization terminated successfully.\n", " Current function value: 7.015262\n", " Iterations: 663\n", " Function evaluations: 983\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 44, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAABJRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 44 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "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)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "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.7816583572 17.6759368019\n" ] } ], "prompt_number": 45 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Hence, we would select the 2-parameter (linear) model." ] }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "titanic = pd.read_excel(\"data/titanic.xls\", \"titanic\")\n", "titanic.name" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 46, "text": [ "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", "5 Anderson, Mr. Harry\n", "6 Andrews, Miss. Kornelia Theodosia\n", "7 Andrews, Mr. Thomas Jr\n", "8 Appleton, Mrs. Edward Dale (Charlotte Lamson)\n", "9 Artagaveytia, Mr. Ramon\n", "...\n", "1298 Wittevrongel, Mr. Camille\n", "1299 Yasbeck, Mr. Antoni\n", "1300 Yasbeck, Mrs. Antoni (Selini Alexander)\n", "1301 Youseff, Mr. Gerious\n", "1302 Yousif, Mr. Wazli\n", "1303 Yousseff, Mr. Gerious\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" ] } ], "prompt_number": 46 }, { "cell_type": "code", "collapsed": false, "input": [ "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)\")" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 47, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 47 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "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))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Optimization terminated successfully.\n", " Current function value: 277.621917\n", " Iterations: 55\n", " Function evaluations: 103\n" ] } ], "prompt_number": 48 }, { "cell_type": "code", "collapsed": false, "input": [ "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.])" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 49, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXwAAAEPCAYAAABBUX+lAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl8XFd9///XvXdmtO+StcuSLFne1yx2NhNCQiAhcViG\n0nwbft/+ulFKW9pf11/7/X77a0ko0DQlxLQFWkopLUMogTZACLHj2I73NbYsW/u+78uMZu695/fH\nkWTHqxJLGi2f5+ORR2xZ0nw0kt7n3M8594yhlEIIIcTiZ0a7ACGEEHNDAl8IIZYICXwhhFgiJPCF\nEGKJkMAXQoglQgJfCCGWCE+0C7jSa6+9JvtEhRDiXXjggQeMG/37vAt8gC1btkS7BCGEWFBOnDhx\n0/eRlo4QQiwREvhCCLFESOALIcQSIYEvhBBLhAS+EEIsERL4QgixREjgiwVldFT/J4R45+blPnwh\nrqWmxqSuTs9RSktdysrcWX/MycElIWHWH0qIWSeBL2bcbITk6CjU1Zm4rr6RsK7OJDfXndUgjsYA\ns9DIgLiwSOCLGTXTIdnTo/8fF3erlb0zszXAzERAzpeQlQFx4ZHAFzNmpkNy3z6LgwctAO66y6a0\n1J0KmPx8l2BQv1+0g2+6bjUgR0ehocGktTX6IRuNKy5x62TRVsxLPT1w8KCF4xh4vXDypEVqqsvd\nd9sUFtpUVRn80z/5+P73vdTUzPyPcUKCDlTTVJimorT01sJsdBQqK03Gxgxc16Cuzrxq8XlyQfpa\nC9M1NSZvvmnx8sseWlvN636Od1rTbCyAy8L6/CUz/EUk2pf6CQlQWGhz7pyJ68KWLepd1xIKQVKS\nQzhsUFtrYVlQW2uybp1LS4tFdbUHxzFobVVUVqprzi6vFTqTVwVxcW9/niZbR5mZl95WVuaSm6uv\nJG61pdTUZFBVZeI4Bjk5ivz8tx8KW1NjUl9vMDhoMDam32dyBj85WBgGuK5BRwekpSni4999Pbd6\ntTE5IF7+ORISpM0z30ngLxLR/kWbbDd85zsWJ054WLHCJRyOUFamrno/uHpQuvztk19Lf79JU5PJ\n8DD4fCavvgrx8eG3fdzkDDwYfPvnvDxAQyGIj1d0d+tZcUICrF3rsnGjQ1mZYt8+k8OH9XN3550u\n997rTtXU1GTQ0mKilHHd5/VmA+3oKLS26o+vrTXp73fZtMmeqrmnB+rrjYm6LZSC5GR3qk0yOVgY\nhiInx2F42MCyXEpL1dTnv9FjXy4h4VI7Zmzs7e2Yy99nOiYHxCs/71y2eaI9yVloJPAXgWj3U2tq\nTKqqDA4fNjl82EtdnYf6esXoqMHtt4eoqLj0flcOSj090NRk0tOj315Y6NDcrMPINMFxIClJB2ZM\njEVlpcX69S6Dgw4NDQZpadDXZ3LihPG2GfHk49TUWMTHu7S0mLz5pgfXNUhPV8TG2iQnK2JjHf7r\nvzycPat/Fbq6bFavDjMwYFJVBW1tJtnZivh495rP63QG2oYGkxMn9OevqLAZGTF5+WUfoAcer9el\nstKaaiE5jv4+hkLQ3w9tbVBaqp+XY8dMNmyYDHuXAwc8133sydo6Ogzi4xUpKYqSEn011NFhTK0F\n5Oe7NDVBc/Pk53LIzdWDyc1+hqIZtNGe5CxEEvjiloyOwt69Fn19utUQDive+94wtq0IhRSh0KX3\nm5zFgv5zW5vJ6dM6xMvKFGvX6mAOhSAchuFhA49H0d9v4vEoVqzQoffAAw7LltkMDcG5cxZe76We\n9mQLxrIclALTNImJgcZGA9s2MAyDgQEwJkrp7dX/1tGh21BxcRZtbdDdrRgctDh82MPgoMHjj0fe\nNguGSzNzpUAp45oDgp7d60Gjv99gYMDg/HkTxzEZGDA4dcrC7w+TlQX19Sbl5Q7DwyZDQ7plc+qU\nSWurRVMTtLeb5OUpUlMNamtN4uL05wuHIRR6+2NfPotvbTVxHNi40aGuziA11SU+Xk09B16vmloX\nMAzFqVMWlZUQG/vOglS3eRzq63UIl5Q4U7XM9MBwrZ+n3FyZ6d+MBP4icL1+6lyoq4NDhyzGx6G8\nPExKisHu3R6Kilze//4w+fmX3ndw0KCmRu+6yc93GBtTJCQoEhJcGhsNsrMhO1u3My5csKiuNsnM\ndMnOdohEDBzHpbxc0dmpd6qEQhCJQGysi1I6rJqa4PhxDwcOWHi9Lps3O9i2IibGoKLCoa3NIDvb\nobjYpqTEpbdXB1tWlkNammLFChulYHgYfvQjLx0dJjk5Lm+8YfHbv21PPa/nz+vQvXDBoLgYUlKc\n6z5HhqGIjzdobjbweAxcV8/O4+IMOjv1YFNUpMjIUNx1lwM4nDxp4boG4bDJiRMmxcUOQ0Mm1dUm\nw8MOGzY4OI7i1CmTYNAgL8+lvBxWr7768fv7dWsrMVGRnq5n7unpNrffrmseH1coZWEYuj1WX29R\nXq5w3ZtfLV69TmIQDOrvRUeHORXKJSXuVe29WzU0BC0t+me+oOD6z7+4ZM4C3+/3/xPwCNAVCATW\nz9XjLhVX9lPngl5MtEhPV4yOglJQV6cXJC9csOjoiCE/P8hjj+ke+9CQ/jilYHTUAAx+/nMPxcUu\nkYiisxMKClwcB8rLXS5edOnvN0lLcxkb0/+WmelSW6tbMyMj0NJi4PMpbNvgttsc6urgpz/10tho\nERurCIcj3HNPhDVrHPr6HMrK9Oy+u9ugvt5gfFyRmuoSChnYNoyMmBw9atLebtDYaBIfD319BoWF\nirQ0Xf+5cyY/+IEHMPB4XHbvNli5EsrKnKue+4QEXffp0yZKKVzXJT/f5Pvf9xKJGPj9Ybq7HfLy\nTNaseXtoKWUAiqwsh2DQID4eRkagudlg1Sr99qQkk5YW/bmOH/dQVKQHpcnZdlWVSVaWHkjDYd3a\niYuD7m6Ln/9c//q/7302GzY4nD9v0damr4C6uyErixsuDNfUGNTXm/T0QGysIiXFpa3NIDPTwLIU\nR46YgIll6e99bu7Vz8+tGBgwqazUE4jERAXMTegPhWwSYyxM44avJjgvzeUM/5+B54FvzeFjLilz\nfTkbDOreenq6g2XBsmUuSUnQ1ARpaS4+Hxw7ZlFYaNPTY9Hba5KS4pKRoRdb33zTIhiEnh6D+nqL\ncNglM1NRWKhn2dnZivFxF9vWu2Q6OkxGRgw6OgwaGz3094Ntw733RkhJ0cEcDptT7ZmuLpPYWA+D\ngy7nznnYvj1MXZ3F8LDua9fWKjZtGmdszKC/3yAjQ9HWZuI4HtLTFZs325w9a1FS4rBmjUNsrB7k\nDhwwqa21iEQMxsZMlNIBOj5ucOedkbft9AEoKlLk5ir27zcZGNBXLvn5+qpk3z6Te+5xSEmxqaqy\nePlli+xsl6Iil3DYwTQVa9ca/OhHXizL5UMfsunpUbz5psH69RbnznmIRPTzUFdnXrF4bRAK6VAq\nLlYkJ+sJQWenvgpqbdW//m++aRAX5/CTn3jJz3coKFCcOGGRn++yY8e1Z/ejo3D6tEVVlUlDg4nX\nC5mZ+jlKStJXbt3dFuHw5FqMcdXC+q3+7PX2GlNrDb29M/v5r+dM+zCff72RP9yxnE15SbP7YLNg\nzvbhBwKBfUD/XD2emH1xcVBcbNPfb9LSYnLqlJfMTN2SSU9XrF0bISHBpa9P99Szs11OnLA4f94g\nNlbR1aX7ysePe2hutujrMzl0yINl6YXOUEixfLmD47gUFDjU1Fi0tOie/LlzehdPVhb8/OdeTp7U\nIW6aLuvXR0hM1K2gu+4aJybGJS/PIRyG/fs9HD3qQSmDhgaD5GQYGjKIi9NXHfX1FjU1Fl1dFpbl\nsHatS06ObgXV1prU1+ug83phbEz33VescGlrs3j1VS+9vVc/T01NBgcP6kEiNhbGx/XA1durwzgt\nzeXFF3388IdeHEf36n/2M4v6eovxcZOBAcWKFS4DAyYHDniIiTHJzoZjxzwMD+vBLRzWVxKT20db\nWnT/PzFRz7hrayf76jogKyst+vv1c3jmjEk4bJCaqhgbMzl7Vi8gb9zoEgpdf3vr2bMmlZUeTp3y\n0NGhQ1+vBShM08XncyfWF5hay5nJn72cHEVMjP4vJ0fN6t3Yjqv41vF2nt7dwGfvKVqQYQ/Swxe3\nICEB4uJM9uzxkp7ukpwM/f16N0hfn24J7NsXw4kTujfd06NIS3NJTYW2NoN773V46y2L1FQd7PoK\nwaWvz6Cry6C52SQmRhEbqxc809MjJCRYjI/bvOc9+vErKw2CQe9Ey8glHLYoKnIZH7dJTnZJTTX4\n2c+8FBe7KGWSmqqorjYYGLB45JEwcXGQnKxD49gxD8nJegtndbXJww8rTp5UhEIeBgZMGhtdHnoo\nTFGRy+HDevfP+97nEAxCTo5DQYGD1/v250gvnho4jsHQkMGRIxZ33WXzyis++voMPv5xm85Og7g4\nhesaHD3qwbZh5UoXx3G4cEGvY7S2mgwP65vQmppM8vMd+vtNli1z6e83KCpyufNOPRvft8/izBmD\nmhqT/HxFWZkiKUmxerVDQYFebF671ubQIT37XrfO4fhxi9FRg9xcl7ExRUoKeL16Qfp6xseNiTDX\ni8dKQXq6mlob+OlPTd54Qz8h73//zPbvExLgrrscKiv1512zZvbWrbpHw3x+TyOWCS88sYqMeO/N\nP2ieksAX79roKPT360W9SEQvSmZkuHR2WuTkOOze7cXng4QEg337DIqLHZKSdA9/ZMQgK8shP1+3\nG3bv9hAMwrZtLvv3m9TXWwwO6q2WHR0Gb75p8Su/4pKWFqGvz8Orr/oIheA977FZsWKcsTGTUMgg\nMdHgwgWLigqFz6d3nGzYYGNZ8PrrHlaudMnJCTM8bJCc7GAYMDqqZ7iFhS5DQwYJCQrDUASDuv/c\n2WmSnq7wePTnKy52KSlx8HgUiYmKnh6T5GRFVpaittbCda9eoExIUASDeoH3rbfMie2ZFj/9qYcd\nO/QM/uBBvQ01JkaviRgGEzec6RvN4uKgs1P34TMy9E1trqtYvVrfgVxcrLe5Hj6s9+zHxRns2WPR\n0eGwaZOiqkovdOfmumzYYGMY4PEo4uP1Lp2ODn0X8JYtukUXDl8/SOPiYP16h74+PVjFx+uaP/AB\nm4ICuHABTp3yTKxD6D/39oavanfdirlYtzrUNMjf7mvi8TVZfHxjNpa58Pr2l5PAF7fEtmHFCofT\npz2UldkkJioaGyErS+8ayswE09Sz5nXrIgwNeaipsUhLcykuNikuhrNnDe67zyEnRy/cWpZuZ3i9\nip4ePTDExBjs2eNh506b733Px/CwQWKivgP1gQcitLV5WLbMndq1MTICqamQnAzHj3vp6DDYscPh\n9GmLwUH9MfHx4POBbevdQytW2BQWKtassenuNujvV9x5p8v+/QYjIwZlZQqlXAYHdSjn5rpUVxvc\ndZfDxYt60TQS0fcI5OZevniqePVVRXm5vgqorfVw+rTFyIjBunUO6ekOqal6h1B+PhMtLd32GhjQ\n2zeTkxVNTSbZ2S45OS7Ll9sMDxtkZUFBgf5aJ8XFKaqqLM6e9ZCaqvB4oK8PUlJM6uogNdXFMHR7\nx+dT1NXpdQbHAccx6erSV2Hx8Q5w7Zl5QgJs3GgzPMzEzN4lPh5uv10HsNcL2dku4+P6+5Gd7V51\n9TMTZivoI47LN462sb9hgD9/oIR1OYmz80BzTM7SEbckKcllbEzvcMnJccjLcwmHFU1NBo89FiEj\nwyYYVGzY4JCSAhcu6IXE5GSoqjInbtqyJnrI4LpM7KPX2yX7+kx8Pr1gOzpqAgaRiMHoqElnp0lb\nm0lWlstdd9l4PJCebrBmjUtamktsrN4aODRkEh9vcPKknrGnpiouXrQIBvWPv2XpnToxMbo10dWl\nt4hmZioqK/W2x1DIoL3dJCZGb2/s7zfp7TUpLtatmNpai3DYxLaNqcXTSUVFih07HDIzXXp6DIqK\nbDIz9d9zc3Wbxes1WbNG771fvlzxi79o88EP2qxZ47JsmcKyFNnZLhUVNh6PS3c33HefTVmZS1KS\nvqEqIUEfDbFunUN3t75qCYdNzp7VLanaWj2LB72OUF1tcv68bvtYlg72khJ9dIU+88ekrs667rk4\nPp+JxwNDQyamaVJRcekojdJSvfsnLc0hLc3hfe+zKS2d+Z+/2Ti3p3VwnN/9r4u0D4fZtXPVogl7\nmNttmf8O7AAy/H5/M/C/AoHAP8/V44vZkZKiZ7zLlyu6ukwOH/ZQXu5QV2dRXa3w+8OYponPpzh/\n3kNqqt6jPTCgt1WuWuVyzz02NTUmtq247TaXkRGD7GwXy3LJznZRChxHsWyZXuj9xV8c5zvfiSEY\nhCefDGOakJnpUlysaxof13fGgl5AHh/Xvelz5/RZNqapB5JwWLdNli1z8PkUTU0WaWkKpQy+/nUf\nDz0Uob7eorvbpKREEQoZGAaEQro15PO5FBY6HDrkJTFRtz4SExU5Oe5VC4iGoQea5GRFczNs2uSQ\nlmYTiSja2w0qKkzi411M02XVKndqC+imTS5NTSZJSS55eQYNDSb5+dDaqu8VWLNGb4e8fCZ+222K\nRx6JcPq03uKakqLIzrYZHPQQH69vhmtvN6ip0b/+6emKhx+OsGKF4vx5k9xcg5IS/bxfb+fh5I1d\n6el6APR6mdoxM/nvBQUOv/7r+vvg86kZvwFrNu603VPbx66DrTy5OYfH12RiLMCtlzcyZ4EfCAQ+\nMVePJeZGQgKkpYFhXFqMTErSN0YNDJhkZJh0dkJiol6Y7ezUO0FqakwSExVlZTqMLQvWrnXYtk33\nf7OyICtLb5EcGFCAvtO1pcXAcTzs2BGhqMhmaMigvd1gbMzittv0Xbig2xuNjRZdXbBli8vevSZ9\nffCxj0U4dsykqcnD8uUulqWwbd1uCocVXq9evG1u1jP1cFi3hCIR3b8vLHRYvvxS2ygzU/fm77kn\nQleXxZEjFuPjl2bblxsZMUlP13VlZ+vtlsPDBj4fnDjhweNxKCrSNyo1NekF8JQURUGBw8aNus6q\nKouYGItz56CiQu988fkU6en6BrjL20jbt9s4Dhw/bjE4CGVlxsRNZfrrammxyMjQAd3UZJGZGaG8\n3OHeex26u/W/T54fdL2QvvJ4his5jt6qCkxcQdi3/kM3YaaPEwlGHHYdbOFsxyjPPLyCssxbOJlu\nHpMevrglWVlQXOzQ22timgbFxS5VVRYJCQqfT/d3bVsxPq5YuVIvwK5Z41BU5OC6Lt/5TiwAH/1o\nhIIC/TljYhSrV9sMDemFyhMnvPT0KD7xiTCJiYqiIj1DHxnR/7muXry8+259INnJkxaZmbrH77oO\nn/xkCKVMbNulqcnLbbdFGB/X2zAdR58h09pqkpOjz/+JiXH58IcjvPmmRUGBYutWh7Q0l5UrFdnZ\nipQUm+FhfWzBiRM+Skp0q2blSr34OrmV8fLwWbZMt79yclyGh/URFLW1XvLyFBs2uHR36yue3Fzo\n6pocrBxaWixCId0iOXPGID7eZe1afYexXki+9vclNRW6u03y8vRzdeCAyUc+EqakRJGdrXcBnTun\nw3LlSn1FMTlYZGZCUZHeaXOjAL38eIb4+CsXqfVawqlTekDYvn3+npVf3xfkc7sbWJkZxws7K4j3\nWdEuadZI4ItbEhurd2zcfruNz+dSU2MRF6eDPjZW355/3302sbF6X3h2tgkohoehvd3Dxo16ZtjS\nou/YjIvTe9vHxuDYMR+Oo3djeDx6y+by5foOy5oai//+by8JCfrMluPHTYqL3YnHNqZqM019/kxz\ns4llGWzbpqZOnrz7bmdiUFAsW6bbP4WFDtu327zyipeVK3VbwuMx2LpV9+pHRy02bbI5ccIkLY2J\nowiMieOW1TW3Mk4efVFZaTI4aNDbaxIX5zIyYtLTo8jNtcnKUiQmQny83p9/eSehtFTR3q74yEci\njI3pK55QyMTr1T1/w7j2VYVS+jjl1FTdelu1yp0aVB991KagQD/3mzZdHcbTCeeUFMWWLXpgMIyr\nT0UNhfTnBq45CN6KmThORCnFy1W9/Mvxdn7tzjweLM+YmeLmMQl8cUsyM2HHDodDhyw6O3X4Dg7q\n/fN5eQ4rVjAVMvn5ipaWycVBRX09WJZONnVFSlZXm2zbZnPwoIfBQfjYxxy2bdPv89preodLTIze\nOjgyYtDZqRdKMzOvDoKyMkVRkW4n6HbHpRM6QyGTRx91JrZEGtx7r2L7dr1m4LouoG/QUsqYOq8n\nNlYPJq4LoFskxcUOwaB53RdLKStzJw4tMzl+XC+IlpXpbY2Gobc/5uTo1kR+/uThZjrIy8ourU9c\n8vZjBK58vMxM2L5df12g/zz5fZis51a2NOqBVlFXN3lWzrUGHGOq5WLOwvaQW/kaRsZt/nZ/M62D\n4zz7aDmFqbEzX+A8JIEvbtm997qsXu1SXw/f+IaX2Fjd+jAM2LBBv09NjUlzs94HvmKFy9q1+hjj\nQ4d0IGzbZk/t0S4ocDl5Uh/m9Qu/ECY93Z1qCUzuyAgG9UJxfb1ehC0tvbRQeq0guDwQ4uKgp+dS\n/zczU/HZz47j810anDZtujRobN+u2zSTjzM5qFRWmnR361ZOSore7rh5s3PdveaZmfqeg4EB/bnX\nrnVZt04fozD5MVeeyHmt+qfr3nsdVq92ph77Src6275R4M7VgX7v5nOe7xrl6d0NbCtK5o92LMfn\nWTqbFSXwxYzIzNRBumqVoq5OEYlARsbkkQWXFth8Pn37fXGxS26umgqky3d4rF6tcF2b2lqT2Fgo\nLn578K1Z404cC+zwvve55Ofr4Lz8l/+dBkF29ts/5lov7nH5552cscfF6VMtXVfP7m92e39ZmW7h\nTL6K1rtppbwTM3mj07XcqN5oHOh3I65SvHimi++91cXv3FPIPcWpN/+gRUYCX8yowkK9IAlQUHD9\n2+mDQairs/B4JndZGFO7TEC/MEhx8bXD4vKXHoRrB+eNTHf2ebMBJDPzUlvDMKb/ureTi6NLwXz5\nOvuDEb64t5GxsMtXHq8gO8kX7ZKiQgJfzKjkZDW1UDe5kHetgJ3OQVc3CotbDc2Zmn3Ot1msuNrJ\n1mG+sLeRh8rTeWpr7oI/HuFWSOCLGXOjhbxrBWO0XrTl8nrn0+cRM8txFd860c7PLvbxBzuK2JKf\nHO2Sok4CX8yomy3kTfd9hbgVXSNhntnTQKzHZNfOCtIW8AmXM0kCX8y4d9pPF2ImHWgY4O/2N/PR\n9cv46IZlC/KVqWaLBL4QYlEI2y5fO9LKoaYh/uKhUlYvk9nElSTwhRALXvNAiKf3NJCbFMNXn6gg\nMUai7VrkWRFCLGivVvfyj4fb+OTWXB5ZlbHoTricSRL4QogFKRhxeP5AMxe6x/jCB8soSZ/FF7Vd\nJJbOPcVCiEWjtneMT790Acs0+MrOCgn7aZIZvhBiwVBK8aPKHr59soNPbcvnvWXp0S5pQZHAF0Is\nCEMhm2f3NdE1Eua5D60kPyUm2iUtONLSEULMe+c6RvjNl6rISfLx3GMS9u+WzPCFEPOW4yq+e7qT\nH1Z289l7i9hWlBLtkhY0CXwhxLzUOxbhC683YLvwlZ0VZCUszRMuZ5IEvhBi3jnaPMTfvNHIB1dl\n8uTmnCV9wuVMksAXQswbtqv45rE2dtf28yf3F7MxLynaJS0qEvhCiHmhfXicZ3Y3kBzrYdfOClLj\n5ITLmSaBL4SIujfq+nn+zRY+vjGbD6/LkhMuZ4kEvhAiasZtl78/1MKJ1mH+6v2lVGTJCZezSQJf\nCBEVjf1BPre7geK0WHY9sYoEnxXtkhY9CXwhxJxSSvHKxT6+cbSNX749j4dXpssJl3NEAl8IMWdG\nww5fPtBMfV+QLz1SxvI0OfRsLsnRCkKIOXGxe4xPv1RFvNfk+ccrJOyjQGb4QohZpZTiP8928x+n\nO/nMXQXcV5oW7ZKWLAl8IcSsGQzZfGlvIwMhmy8/vpLcJDn0LJok8IUQs+JM+zCff72R+0vT+N+3\n5+GR4xGiTgJfCDGjHFfxbyc7+HFVD79/33JuL0yOdkliggS+EGLG9IyGeWZPI5YJL+xcRUaCHI8w\nn0jgCyFmxOGmQZ7d18Tja7L4+MZsOeFyHpLAF0Lckojj8o2jbeyrH+DPHyhhXU5itEsS1yGBL4R4\n11oHx3l6Tz2ZCT6++sQqkmMlUuYz+e4IId6VPbV97DrYypObc3h8TaYcj7AASOALId6RYMRh18EW\nznaM8szDKyjLjI92SWKa5GgFIcS01fcF+cwPL+K4ihd2VkjYLzAywxdC3JRSiperevmX4+382p15\nPFieEe2SxLsggS+EuKGRcZu/3d9M6+A4zz5aTmFqbLRLEu+StHSEENd1vmuUT/3gAmlxHr782EoJ\n+wVOZvhCiKu4SvHimS5efKuL376nkHuKU6NdkpgBEvhCiLfpD0b44t5GxsIuzz9eQXaSL9oliRki\ngS+EmHKydZgv7G3kofJ0ntqaK8cjLDIS+EIIHFfxrRPt/OxiH3+wo4gt+XLC5WIkgS/EEtc1EuaZ\nPQ3Eekx27awgLV5OuFysJPCFWMIONAzwd/ub+ej6ZXx0wzJMOR5hUZPAF2IJCtsuXzvSyqGmIf7i\noVJWL0uIdkliDkjgC7HENA+EeHpPA7lJMXz1iQoSYyQGlgr5TguxhLxa3cs/Hm7jk1tzeWRVhpxw\nucRI4AuxBAQjDs8faOZC9xh//YEySjPiol2SiAI5WkGIRa62d4xPv3QByzT4ys4KCfslTGb4QixS\nSil+VNnDt0928Klt+by3LD3aJYkok8AXYhEaCtk8u6+JrpEwz31oJfkpMdEuScwD0tIRYpE51zHC\nb75URU6Sj+cek7AXl8gMX4hFwnEV3z3dyUvnuvm9+4rYVpQS7ZLEPCOBL8Qi0DsW4QuvNxBxFS88\nUUFWgpxwKa4mgS/EAne0eYi/eaORD67K5MnNOXLCpbiu6wa+3+//S0ABkz896lrvFwgE/tcs1CWE\nuAnbVXzzWBu7a/r5k/uL2ZiXFO2SxDx3oxl+IZdC3gP4gU7gBLAFyAa+O6vVCSGuqX14nGd2N5Ac\n62HXExVfkKKdAAAgAElEQVSkxskJl+Lmrhv4gUDg/5r8s9/v/xrwS4FAIHDZ2z4GPDSr1QkhrvJG\nfT/PH2jh4xuz+fC6LDnhUkzbdHv4jwG/ccXbXgJeAH51RisSQlzTuO3yD4daOd46xF+9v5SKLDnh\nUrwz092H3wr8rt/vjwXw+/1xwGeAltkqTAhxSWN/kM/88AIjYZtdT6ySsBfvynRn+P83ekb/Ob/f\nXw2Uo/v5H56twoQQ+niEVy728Y2jbfzy7Xk8vDJdTrgU79q0Aj8QCJz0+/3lwDYgD2gH3gwEApHZ\nLE6IpWw07PDlA83U9QX54iNlFKfJoWfi1ryToxUmd+yoQCCwF4jx+/2Js1CTEEvexe4xPv1SFXFe\nk+cfr5CwFzNiWjN8v9+/HvgRkAjEobdj7gCeAj4+a9UJscQopfjPs938x+lOfuuuAnaUpkW7JLGI\nTLeH//fAPwJfAHom3vY68LVZqEmIJWkwZPOlvY0MhGy+/PhKcpPk0DMxs6bb0lkHvBAIBJwr3h4/\nw/UIsSSdaR/mUz+ooig1lmcfLZewF7NiujP8euB+4IeXve1B4OKMVyTEEuK4in872cGPq3r4/fuW\nc3thcrRLEovYdAP/z4B/8/v93wV8fr//q+ijFn5x1ioTYpHrGQ3z+T2NmCa8sHMVGQlyPIKYXdNq\n6QQCgf8G3gM4wF70gWoPBQKBV2avNCEWr8NNg3z6pQtsyU/imYfLJOzFnJjuLp3MQCBwEvjULNcj\nxKIWcVy+cbSNffUD/PkDJazLkZ3NYu5Mt6XT5Pf7Xwe+A/wgEAiMzl5JQixOrYPjPL2nnsx4H199\nYhXJsfJyFGJuTfcnbjm6Z/8p4O/9fv9/ocP/J4FAwJ6t4oRYLPbU9rHrYCtPbs7h8TWZcjyCiIrp\nHq3QjT4Z8wW/318MfAJ4GvhnIHPWqhNigQtGHHYdbOFsxyhPP7yC8kzZySyi550crTBp2cR/mUD/\nzJYjxOJR3xfkMz+8iO0qXthZIWEvom66i7Zr0bP6X0DfbBUAHg8EAkdmsTYhFiSlFC9X9fLNY238\n2p35PLQyI9olCQFMv4d/APg+8OvA69e441YIAYyM2/zt/mZaB8f52w+tpDA1NtolCTFluoGfHQgE\nxme1EiEWuPNdozy9u4E7i5L5ox3L8XneTcdUiNlz3cD3+/2/FAgE/nXir//D7/erK97FQB+V/E+z\nVp0QC4CrFC+e6eLFt7r47XsKuac4NdolCXFNN5rhfwKYDPxf4tJ5+FeSwBdLVn8wwhf3NjIWdnn+\n8Qqyk3zRLkmI67pu4AcCgQ9e9uf3zEk1QiwgJ1uH+cLeRh4qT+eXtubiMWVvvZjfprtL5++Af5Nd\nOULoEy6/daKdVy728gf3LWdrgZxwKRaGd3Jv90t+v38M+DfgO4FA4MIs1STEvNU1EuaZPQ3Eeky+\nunMVafFy6JlYOKZ7WubvAIXooxWKgEN+v/+43+///dksToj55EDDAL/10gW2FaXwuYdXSNiLBWfa\nM/yJvfevAq/6/f4/A74JfBH4m9kpTYj5IWy7fO1IK4eahvg/D5ayJjsh2iUJ8a5MO/D9fn8i8AR6\n98570K9p+9SsVCXEPNE8EOLpPQ3kJsXw1ScqSIyREy7FwjXdRdvvAR8ETqBPyfzkxIFqQixar1b3\n8o+H2/jk1lweWZUhJ1yKBW+605WjwO8HAoGm2SxGiPkgGHF4/s0WLnSN8tcfKKM0Iy7aJQkxI266\naOv3+z3A/wY6Z78cIaKrtneMT790AcuAr+yskLAXi8pNA3/iBU5OA3fMfjlCRIdSih+e6+aPf1LL\n/9icw+/ft5w4rxXtsoSYUdNt6Xwb/UpX/wEcBqZe5SoQCOyejcKEmCtDIZtn9zXRNRLmuQ+Vk58i\nJ1yKxWm6gf+H6LN0fnniv8uVzGhFQsyhcx0jPPN6A3cXp/Kn7y3GZ8kJl2Lxmu5LHBbPch1CzCnH\nVXz3dCcvnevms/cWsX15SrRLEmLWyaZiseT0jkX4wusNRFzFC09UkJUgJ1yKpWG6+/Cbr/NPKhAI\nFM1gPULMqqPNQ/zNG418cFUmT27OwZITLsUSMt0Z/i9d8ffNwCeBF2a2HCFmh+0qvnmsjd01/fzJ\n/cVszEuKdklCzLnp9vBfv+JNr/v9/n3A3wFfm+mihJhJ7cPjPLO7geRYD7ueqCA1Tg49E0vTrfTw\nB4G1M1WIELPhjfp+nj/Qwsc3ZvPhdVmYcjyCWMKm28P/S/S2zMnflmzgQeCns1SXELdk3Hb5h0Ot\nHG8d4q/eX0pFlpxwKcR0Z/iFvP01bUeBz3HpNW+FmDca+4N8bncDy9Ni2fXEKhJ8csesEDDNF0AB\nvgX8ZSAQ+J/AHwNB4G4gbbYKE+KdUkrx0wu9/D8v1/DE2iz+9P5iCXshLjPdGf4u4KGJPz8HxAIR\n4P8Dfm0W6hLiHRkNO3z5QDN1fUG++EgZxWly6JkQV5pu4OcGAoEmv9/vBd4PLAcs4NisVSbENF3s\nHuPpPfVsykvi+ccriPXI8QhCXMt0fzMq/X5/OXqWfyIQCAyj2zrLZq0yIW5CKcX33+ri/32llv95\nWx6/e0+RhL0QNzDdGf7Xgd1AHJduwrobOD8bRQlxM4Mhmy/tbWQgZPPlx1eSmxQT7ZKEmPemNR0K\nBALfQN9dWxEIBH4y8eYW4FdmqzAhrudM+zCf+kEVRamxPPtouYS9ENM07RuvAoFAzxV/vzjz5Qhx\nfY6r+M6pDl4+38Pv3VfEHYVywqUQ74SclikWhJ7RMJ/f04hhwAs7V5GRIMcjCPFOSeCLee9w0yDP\n7mvisTVZ/MLGbDnhUoh3SQJfzFsRx+UbR9vYVz/Anz1QwvqcxGiXJMSCJoEv5qXWwXGe3lNPZryP\nrz6xiuRY+VEV4lbJb5GYd/bU9rHrYCtPbs7h8TWZGHLCpRAzQgJfzBvBiMOugy2c7Rjl6YdXUJ4Z\nH+2ShFhU5LZEMS/U9wX5zA8vYruKF3ZWSNgLMQtkhi+iSinFy1W9/Mvxdn71jjweWpkR7ZKEWLQk\n8EXUjIzbPLe/mZbBEM8+Wk5hamy0SxJiUZOWjoiK812jfOoHF0iN8/Dlxyok7IWYAzLDF3PKVYoX\nz3Txvbe6+J27C7mnJDXaJQmxZEjgiznTH4zwxb2NjIVdvvJ4BdlJvmiXJMSSIoEv5sTJ1mG+sLeR\nB8vTeWprLh45HkGIOSeBL2aV4yq+daKdVy728gf3LWdrQXK0SxJiyZLAF7OmayTMM3saiPWYfHXn\nKtLi5YRLIaJJAl/MigMNA/zd/mY+sn4ZH9uwDFOORxAi6iTwxYwK2y5fO9LKoaYh/s+DpazJToh2\nSUKICRL4Ysa0DIb43O4GcpN87HqigqQY+fESYj6R30gxI35e3cc/HG7lqS05PLpaTrgUYj6SwBe3\nJBhxeP7NFi50jfLXHyijNCMu2iUJIa5DjlYQ71pt7xiffukClgFf2VkhYS/EPCczfPGOKaX4UWUP\n3z7ZwW9sy+eBsvRolySEmAYJfPGODIVsnt3XRNdImOc+VE5+ihx6JsRCIS0dMW3nOkb4zZeqyE7y\n8dxjKyXshVhgZIYvbspxFd893clL57r57L1FbF+eEu2ShBDvggS+uKHesQhfeL2BiKt44YkKshLk\nhEshFioJfHFdx1qG+NLeRj64KpMnN+dgyQmXQixoEvjiKrar+OaxNnbX9PPH9xezKS8p2iUJIWaA\nBL54m/bhcZ7Z3UBSjIddT1SQGicnXAqxWEjgiylv1Pfz/IEWPr4xmw+vy5ITLoVYZCTwBeO2yz8c\nauV46xB/9f5SKrLkhEshFiMJ/CWusT/I53Y3sDwtll1PrCLBZ0W7JCHELJHAX6KUUrxysY9vHG3j\nl2/L5eGKDDnhUohFTgJ/CRoNO3z5QDN1fUG++EgZxWly6JkQS4EcrbDEXOwe49MvVRHnNXn+8QoJ\neyGWEJnhLxFKKf7zbDf/cbqT37qrgB2ladEuSQgxxyTwl4DBkM2X9jYyELL58mMryU2OiXZJQogo\nkMBf5M60D/P51xt5T2ka/+u2XLyWdPGEWKok8Bcpx1V851QHL5/v4ffuK+KOQjnhUoilTgJ/EeoZ\nDfP5PY0YBrywcxUZCXI8ghBCAn/ROdw0yLP7mnhsTRa/sDFbTrgUQkyRwF8kIo7LN462sa9+gD97\noIT1OYnRLkkIMc9I4C8CrYPjPL2nnsx4H199YhXJsfJtFUJcTZJhgdtT28eug608uTmHx9dkyvEI\nQojrksBfoIIRh10HWzjbMcrTD6+gPDM+2iUJIeY52ZS9ANX3BfnMDy8ScRQv7KyQsBdCTIvM8BcQ\npRQvV/XyL8fb+dU78niwPF1aOEKIaZPAXyBGxm2e299My2CIv3m0nKLU2GiXdF2jo/r/CfI6KkLM\nKxL4C8D5rlGe3t3AnUXJ/OGOCnye+duJq6kxqavT9ZWWupSVuVGuSJNBSAgJ/HnNVYoXz3Txvbe6\n+J27C7mnJDXaJd3Q6CjU1Zm4rm4z1dWZ5Oa6Mxqy7ya438kgJAODWMwk8Oep/mCEL+5tZCzs8pXH\nK8hO8kW7pBsaHYVgEEzTZXzcwDTB41HXfb+4OB2qlwfstcL28rddK7hvFtDXG4QmXf5x8/XqRIiZ\nIoE/D51sHeYLext5sDydp7bm4pmHxyNcHrSVlQZ1dSaxsYr+fjh1yqSjw2DDBpfiYkVZmQ7+mho4\ne9akq8skJUWRn+8SDJooZRAXpwiFQCljKmxrakzq6/XXnpvr0NmpME0XpaChASIRg+Zm/Rq80w1o\nw1A0NJi0tk4Gu0Nurq67oQGU0jXU1ZmkprpTA9N0n4t3Q64qxFyRwJ9HHFfxrRPtvHKxlz+4bzlb\nC5KjXdI1XT4TjolxOHnSoqXFIjXVYXRU4TiK/Hxoa1McPgy5udDfrweGw4c9VFV5WLbMZdUqm9Wr\nHUIhk3PnDNauBde9FLYNDdDTY1BXZ5CWBgMDJqdPe0hOVtx9t41hODeduSck6MFgst6CApfmZgvX\nNTAMxalTFm+8AR0dJomJehBKTISODoNTp/THZGe75OZyzfC/1auC63389QYBGRzErZDAnye6RsI8\ns6eBGI/Jrp2rSI+fnydcXt4iCYWgttagrc3kzBmLVatsfD6T48e9dHaa3HmnzeBgiNdeMzl71kN9\nPWRlQXGxQ1OTyfnzFkNDBk1NFqtX21iWDXgwTZemJpOf/MTLiRMeNm2yGRmBixctxscNxsYMjh41\nKSy0p+q6euZ+KTzLytypwSAYhJYWhWkqDAOam01GRqC+3iIScUlMdEhIcEhJMRgZMaivN/nud33k\n5rps3OiycaMzdcVyozWLyWAOBvX/MzNv/FwC1NcbpKZCZ6f+OkIhWLHCZe1aXftst5ze7WAig9DC\nIYE/DxxoGOC5/c18ZH0W/g3ZmLO4t36mfjlDIejogP5+g9pak2XLXPLz4cQJk1DIIC4OamosKipM\njh0ziYlReL0G589bZGW5VFTYOI6LYRh4vS7t7ZCRYdLdbbJtm56RB4OKhARFX5/B6tU2huGZCvT0\ndAOPB1zXRSnjbTN3uHrBOBiEpiaTnh6Tjg4wDGhthYYGi6EhqK422LRJ1z84aOLzKVpbTQYGLKqq\nLAYHTRITbZKTFbm5zg2fv5oak4YGaG/Xg1pqqmL7dod773Wu+zGGoRgcNDh0yKKy0sKyDCIRuHDB\nxHXD5ObefHC5laCuqTGprNTP7Zo10x9MbjYIyWAwv0jgR1HYdvnakTYONQ3yFw+WsiZ7dn8rZmKG\nmJAACQkOtbUWfX0Gy5Y5FBR4OHPGwuu1yMtTjIy4jI3p0FQT67ajowrD0G2USASGh6GkxOXrX48n\nK0uxfr1NTo5NerpLJKIIh3X/PCZG0dpqcP/9ipwcxenTYFmQlAT19bBhg6KiQgdpc/PV9Y6OwsmT\nOiAbGy2Sk2H5cjhyBJYvd2lvd2lr81BW5jAwoMO+ttYgM9OdqNVg2TKXgQET23ZxHJeWFsjI0LP2\n0lKbxkYdwsuXK4JBJtYdFAcOeAkGDUzT5eBBWL3aIS7u8ufxUrvJMBRjYybJyRAO65ZSQYFLMAgH\nD3ooKHDp7IS0iZciNs1b+55e/nH5+S4nT5pT6yEDA8a0dleNjjK1xqLU1YOsLILPP3MW+H6//z7g\nuYnH/FogEHh+rh57PmoZDPG53Q3kJvnY9UQFSTGz+62YqS2T+pdcz0LHxiAhwaKryyUnxyAvz6Wz\n0yA318G2dY9+2TKXsTGDlhaD7m6L3l6T2lq44w6HYNBhdNRifBwSEhQ+H4yMwIEDXmzbJRi0qK01\nycrSAVddrdi+3cZx9HrAhg1w6JBBUdFk+Lpvm6W2t8Nbb1kcPapbRzU1Ftu22aSl2YBFe7vF6KhB\nWZnNmjUO//qvsWRlKdrbTfr7DbZvj3DhAmzdatPXp4iNhW9/O4aREYP77rO5664I3d0Wr7yiv3f3\n3OOQlORw7pxFRYXD2Bj09hp4vSau61JfD93dJj4fFBfrVlNZmUtqqksopJ9fw9DrHxcvmnR26pZO\nayt0dVlkZCjOn1cMD1ts2eLQ1KRbUmNj7+x7euXPwvnz+uud/HtHh0EwePNZeWOjQVWV/jz5+S4p\nKZd2Zc3FFl3xzs1J4Pv9fgv4J+B9QCtw1O/3/zwQCJyfi8efb35e3cc/HG7lqS05PLp6YZ1w2dkJ\nBw9aXLjgwXUVluWSlwf79lkopUhK0m2YtjZzIqRcfvADL2Vll4Lf6zWoqVFs2KDw+VwMA9LTdU+9\nocGko8MkKUlRVWVSUKC4cEG3XTZudKiu9uI4+s8dHbqO1FSDO+5wAZe4OP1cRiIu5855OHLEYv9+\nD2VlLiUlDrt3eygsDGNZFm+84SEYNLj99giu63DnnREAVqyA8XF9NVJcbJOQ4FBQoDhyxEdjowfb\nNti/36CwMMKePRajoyZKwU9+YvCJTzikpsL58wZbt9qcOeMhJsahtNTlpZcs+vst7rjDwTD0+w0M\nGNTVWZimSyhkcO6cQXu7vqrweBTV1fpqYmDApLlZcdttDgkJLl4vtLaaNDcbdHVdmqm/Gz6fXsy+\ncOHSbHzySuR6RkehstKitdWiv98gElE88oj9tkA3DDV1JWIYV2/RFXNvrmb4dwA1gUCgAcDv9/8H\n8DiwpAI/GHF4/s0WLnSN8tcfKKM04ya/VTPoyt0qpaXvfLZVU2PS2Kiorrbo79ctm8FB3YMvL3co\nLnbp6lKEwyaHD3tpaXEJhyEjw6W52cPQkEFRkUs4bJCd7eC6OqRiYiA/3yE9HdLTXWpq9IJwfLwi\nK8vF43HJyYGWFmNqJmoYNufP69lyOKwDNjbWwnH019faqjh6VM9cHcfg3DmTdetcli93KCyE737X\ng+MYxMQoTp/2kJcXobjYobLSwuuFggK9+2jDBpfRUYPYWL2Imp/vEAoZeDwKy4JIxKSpycR1dWh2\ndxt0dBjk5EB5eYR16yL095t8/es+lDLZuNHhwAEP+fkW/f06oJOSwHVNzpwxyc2NUFkZw8mT+ldz\n/XqbtLQIzc0GPh9UVVlkZiqU0gNbfLweKCf/fLkr73m43s/CmjV6sEyceM2ckhJn6uOv9zMSDOpZ\ne1ISxMYqRkcNkpIuPS7otx86pNtE27bZMrufB+Yq8POByzusLcCdc/TY80Jt7xif293A2uwEvrKz\ngjivNec1XL5b5d20curqTMJhlw0bHPbvN0hJcbn99ggdHR6OHrVoajK5994Ip07pWXwkYnDqlIf3\nvz/M7t1QXu5gWYpQyGDNGoeODsUjj4Tp6jLo7lYcOQJDQ9DZaZCYaPDe99rs2WOSnGwwOAhHj+qQ\nDof14u/DD4f55jd99PWZ3H+/zebNkakgDIf11UZnpyItzcUwdMuhsNChuxs8Hj14mCakpiqUMqmq\n8nLxosXIiMHmzQ5FRTavvurjzjsjnD9vcPfdDkeP6pn/tm02eXn65rLBQQOlwOtVtLcbtLaa5Ofr\nQaqtTS+8GoZBdbVFOGxQVKTbUoYBFy4YrF+viInRffCEBEVHh4lt66+jvd2kvBwcxyA11eHcOQ87\nd4axLMjPVyilyMjQAX35LLqmxuTQIT3gFRS4rF/vUFb29p+F1FT9szC5gyg31yEY1LuEDhy4ce89\nLg5ychT19Yr+foOUFKiq0vdNhEK6lrNnral2U329xZYt0tKJtrkK/CV7PaeU4keVPXz7ZAe/sS2f\nB8rSo1rPrf7COY5Jbq7DPfcoEhJcVqxQvPaah+Fhk/5+xVtvWdx3X4SREQ9JSS7Z2Q6mqUhOdqmo\n0K2T5mYfSUkOXq+H117zYtuwfbtNQ4PFxYueqX78iy/6KCtzOXXKw8aNJqmpcOqUQWIipKZCc7NB\ncbGip8fgrbcM1q83OXJEB9Xdd7sUFdmcPRuD67q85z02J054aGkxuP122LAhQnW1h4EBg1WrHAYG\nDI4csYiPNwiF9B78j35ULxr39upF1aoqc6IHr+ju1jPaZcsUW7c6OI7eMZSVBV6vw/Cw3jW0b5/F\n8eMWZWWK9naX+HiX1FS97//gQYP0dJemJkhJgR07HIaGIC9P0d6uF4zz8hRxcdDVpYM/N9dlfBw2\nb3YoKNCDTF2dDtWSEjW1a+f0aYOmJpOGBotz58B1I+Tm2jdcUG1o0IFdWWmRlQW5ueq6vfeEBH0l\nUFdn0NdnkJmpqK42GRkx2bhRDxAXLlhkZ4PXO/11ATG75irwW4HCy/5eiJ7lL2pDIZtn9zXRNRLm\nuQ+Vk58yf0+4vJnL2wC5uYr8fIe+PkV8vN6aGR+viI1VWJbeV5+Q4FJWZlNRYVNbazAyYnLokJey\nMpPeXouEhDBvvWUSiRgYBpw/72HDBpvxcZPqaoPMTB3CIyM6bA0DMjIccnNNRkZ0e8OydEAVF+st\nn9XVJh6P3iFz4YJJX5+ufeNGh4MHvdTVWaSnK+rqICvL4Y47InR3mxw9alFYCGvX6q8vI0O3mnp6\n4O67Hd580+SBBxx+/GMvtm0SFwf79pmsWWMTE6NIT9fbNH0+xciIyfi4wZo1imPHLBISoKhIcfiw\nyW232eTl6YDOyFATWz31LqNQyGD1ah34BQURHEdfCaWkOPT361aY16vweEyGhkxiY/WsPjfXveqO\n4KYmg/Z2kyNHPPh8BsnJamKb66UjLK7c/z88DPv3WygFfX0mjqNIS9Pf32sZHdXrDzk5ip4eOHHC\nS36+S3r6pauBFSv0TXWWNb11ATH75irwjwHlfr+/GGgDPg58Yo4eOyrOdYzwzOsN3L08lT99bzE+\na/6ecDldky2hCxdMXnvNYnxckZ7u8sADNj/+sZeUFJekJDh+3ENWFtg2jIwoTp+OpbNTb+PcutVm\n3TqbjAzo6oJQSIf34KDC63VZsULflBUfr3jqqTD//d8mjz6qOHrUi2Up1q+PMDJiMDAAsbEG8fEQ\nDCpKShxGRnRbJBjUC5m61WLi9To0N+srBKV0y2TtWpvxcYO8PAefz6SlRd8oFhOjj4goK3MZGNBb\nP7dudUhLc9i82aC6Wl/NrFjh0tOj20tDQwaJiS7r1jnExSlcV8+KT582uXjRw+AgbNnikJur68jP\nV6xfr2hp0W2dri6T3l6D2Fh9p292tm4FRSL6KkopRV6eTWys3uYaiei2yfXOFmppMcnLc8nIUHR3\nQ1mZQ3b2tQPXMPQV0qlTXmprPaxY4ZCR4Uych6RuuNajlEF3t4HPpwcOy1JUVLiMj+sdTdu2OQSD\negAoKZF2znwwJ4EfCARsv9//y8APuLQtc1Eu2Dqu4runO3npXDefvbeI7ctTol3SOzKdG2VaWkxs\n28QwXN54w0tsrMPOnYqUFIef/cxLJOKluhrS0/XulawsF8NwWLUqQl6ezZ49MaSm6p7uj38MfX0G\n99/vUFbmUF7usmwZ9PUp9u41eeophxdfjMHjUWzY4LJ3r5esLEVRkV7cffDBCI2NBpblkJ9vsn+/\nDvu7746QlqY4fdrE43HZvt2mqsoiPh42b7bJzla0tem7du+8U18BVFebPPCAzeCgorPTorLSJDvb\noLsbzp/38oEP6Buv+vpMSkpcOjs91NZarFjhkpxsoJTBxo0ucXG6F24YBj09MDqqe/qRiG7drF/v\nkpwMeXnuRN8fhoZMjh83GB2NEA6bEwMJjI2ZlJY6jI25pKRM7t7Rvf/WVotly/T35PKjJZQySExU\nfOADEerrDUpKFJs2XQrca+3/dxzdlqmttVi/PsJDD9mUlanr/hwkJOjF3u5ug85OlwcecMnPd0lO\ndtm4UV3zcDwRfXO2Dz8QCOwFNs/V40VD31iEv369gYireOGJCrIS5vcJl1ea7o0ysbF6wa6rS+8z\nz821eO01DyUlBitWKJRy8HoNbFuRnq5DJT3dJTdX8frrMWRl6eMXUlIcVq2y6e62cBwD0zTYsUMx\nMKCDsrIyBp/PobdX7wb5+c8tiooUGRkuvb2Khx5yqKmxSEuD0lKDsTHFpk0OHR16dr5qlSIzMzLR\nC3eIjdU3bd12m82pU/qmqGAQ+vrg9tvD1NV5+elPPdx/v4PrKlav1q2Qc+e8ZGcrDh9W/NEfhXFd\nOHPGmuh1K7xevWtlfNyYCrr+fr3gqpSBZekzgfLz9RbILVscli/Xy1r9/fDv/+7D5wPbNunstBgd\nhZUrdSC3t1usXq0mFmkdxsZMiotdXFcfUJecrGfTky4P85QUxaOPOhQVXR3ck1drwaAeIExTt8JS\nUlzuu89m/fqb/7xMfo477tALvUoZLF+uB47L6xHzh9xpO0OOtQzxpb2NfHBVJk9uzsGahydc3sh0\nb5SZDBT+//bOPTiq+7rjn32gpxEWEggEGMkIiVctEQy2IMaPxrGNnbZ4kpM6bdLE7iPJH47dSZ2O\n06TpTDpJOh07TiakbVzi8aS1ezxpxu3EjRsXT0JTsGsZ0thAhSRAlgBHvAIFAdrd2z/OFVoEAgQS\nd9h4TRsAAA1uSURBVLV7PjM7q9397b1n72q/99zzO+f8sHTC4uIML79cRCZjPXVqa1M0NMDOnQnm\nzg144YUkN99s2TK9vTGamjLs2WMeZX9/nEQiRjJpmS2WQx/Q1ZUgkxmaEL799hTd3RaemTUrzenT\nVrjU3x/n6NEEc+akSSSguNgmKo8dizFjRprp0zMsXhzQ1pbgwIEYNTUBmYxlwvT1xTlxIk4qZeGk\nqVOtdqCuLsPkySlWr4aengRbtyZJJi08de21MGuWZbU0NqbZtStNR0eMjo4kAwMQjwd0d8PChXZS\nNBEdSp+86aYU06bBokVDnm9lJdTU2LGJxQKmTAmYPDlDZ2eC4mIrUKury1BUFGPRogzl5dYwLpOx\nrqLxuBWlZYdeLjUbK7vaFyzf33r3XPr/jb3f5hIupbOoEy0u+FdIKhPwzBt72dBxmD+9vY6W2slR\nmzTuZHuHr7xCOGFr+fWHDpnYVVQE7NwZ4/jxJH19abq7k1RVpVm2bIDe3oClSzNMmZLmtdcmEY8H\nNDenqK8fijNXVMQZGAhYsiRDMplizZo0119vsfaurjgLFmR46604kyZZLP/wYZtMTSSgqiqgshJa\nWgabjkFfn00ONzVlqK+HuXPTtLfHws+TprFxgJoau6ppbbXWD+3tMe64Y4C2NisgWrUqzZEjJvjl\n5bBkCZw+HWPbNkilrMunnTRNpG+9NUVVlXm7lvJoXvmRIzbPANaeeeXKNNu22TjLiYfq6oB582IU\nFVnKZn19htmz4eTJoayclhZr7QznCu1ohPdK0nW9fcLEwgX/Cth37BRf2bCbycVJ1q1t4trS3Oxw\neSmMtjCrvNzCGL29cRobbTLSJkgthLF3b4KiIrjnngHa261Aav78NLfdlub9709TWQn79sGMGTAw\nYEK8cCFn9r1jBzQ2wsGDceJhueayZWmWLcvQ3R2jtzdGeXmclStTZ1ovlJYGlJaa4JSVWerkzp0J\ndu2KMX9+hmuusWyfigoT0EmT0mE+fIZ582LU11vcvbISZs+2NMu337bUy9ragLKygK6u5Jn0xsEJ\n0ng8Tnd3gng8YNGiNJ2ddqXQ0pKmpMR6BwUBJJM2p7FpU5zGRgvFdHUlWLUqdY7gzpyZPud4w5WJ\n84W4nG15+4SJhwv+ZfLTXYf55s96+HBzDfcvmTauHS6vFqMVk9JSqK+PsWlTgunTMzQ3n2bPnjjH\njgXceedpkklrpLZ8OQwMDDB3rmWgDInXkLBl76+hIcPBg3FefdVCPrW1NrHb32/e9cKFAdddFzBz\nZuqsdsgWDrLvYdasDD09cYqKYlRVxejosGKq+vqA6mpobraJU/scwRmPezCXHSxNs6YGtmyxEEo6\nHSceP7ukpKTEKok7O+PEYjBt2tkx9eJiuz916sLHcjQeuguqc7m44I+SU6kMf7u5l7beo3z5rutp\nmpZfv77RiEl5Odxwg8XU29oSvPtunNbWNPv3x9i3L8HMmQEtLQHFxWmCIHbe1Lzz7e/4cZsELCuz\n7Rw9GnDXXemz0grLy02Q6+qGe8ZDPfJ7e5PhcwFVVQFLl6bPVJU2NARnnWxGyiaprraTQFeXxdiz\nr3yG4t9x4vEUZWUB1dUB9fV2UrC5CGvjfOgQVFSYra2t6ayQzsT1iMeiXYdzdXHBHwV7Dvfzlxt2\nM7eyhHVrF1BedPXbI+Qag176e99rWTClpdZKYMeODEVF0NQUu6wQREnJkIAkEgELFpy/B/2FTiDD\n+8UMX4RkeH+ZkT/jyFc+2a9lb2vwBDLIjBl2wsm3dMXxCjE544ML/iUQBAEvtx/i6dd7eWh5LXc3\nVU2oDpfjzWC2B5iQHTgQZ+rUy4/rZnvOVVVp5s0biu+PhrEUo9GGWM7n/WafcPJJHPPps+Q7LvgX\n4cTpNE/97B26DvXz1/fNp67S68OvBmMl1lGKkXu/Tq7hgn8RYjGYObmIR2+5jpLkxG+PMN6MZVw3\nH0QyHz6Dkz+44F+E0kkJPn5jbdRmTCjcs3Wc3MQF3xkXXOgdJ/fwGIXjOE6B4ILvOI5TILjgO47j\nFAgu+I7jOAWCC77jOE6B4ILvOI5TILjgO47jFAgu+I7jOAVCThZevfnmm1Gb4DiOk3fEgiC4+CjH\ncRxnwuMhHcdxnALBBd9xHKdAcMF3HMcpEFzwHcdxCoSczNIRkQ8BXwIWAMtVNbK0HRFZDXwdO1bf\nUdVvRmVLaM964F7gl6r6a1HaMoiIzAGeBaYDfcAzqvpMpEYBIlIC/AQoBk4C/6SqT0ZrlSEiCeAN\noEdVP5AD9uwGjgJpYEBVV0RrEYhIObAOuAH7Dh9U1c0R2tMEPJ/11PXAF1T1GxGZBICI/AHwCewY\nbVTVR0Yam6se/i+AtcBPozQi/FGuB+4HlgEPichlrK46pnwXuDtiG4YzADyqqouBDwJfzYHjhKqe\nBG5X1RbgVuz7a4jYrEE+A2wDciVNLgBuU9WluSD2IeuAn6jqUkz0t0dpjKr+b3h8lmJ6cAL4QZQ2\nichU4HHgTmA50Cgid400PicFX1V3qGp71HYAK4AOVd2tqgPY2f03ozRIVTcCh6O0YTiqul9Vt4Z/\nHwD+G8iJZcJU9UT45zXYVdqpCM0BQERmA2uAp4FYxOZkkzO2iMgU4BZVXQ+gqilV/VXEZmXzPqBT\nVd+J2I5+7HubApQCZVxAH3IypJNDzAKyv9Ae4KaIbJkQhB70YiCyS+9sRCQObMFseiQHfqAATwJ/\nAlREbUgWAbBBRDLAOlX9TsT21AN9IvIMcCOwCXhYVfsjtWqI3wb+MWojVLVfRD4F7MacmW+o6usj\njY/MwxeRH4vIL85zizyemUWuXG5PCETkGuwq6FFVPR61PQCqmlHVZqAB+LSILI3SHhG5D5t/2UIO\nedTAqvA4fQR4XERuidieJBai+H54Xwx8KFKLQkSkCPgA8EIO2DIN+DawCKgDWkXk3pHGR+bhq+qd\nUe17FPQCc7Iez8G8fGcYIjIJ+3F+T1VfjNqe4ajqbhF5CYvlb4nQlJXAb4jIGqAEqBCRZ1X1YxHa\nhKruC++3i8gPsHDmxghN6gEOquq/AojIc8DHsOSAqLkHaFPVvqgNwb6nzaraASAiLwCrgR+eb/BE\nCOlE6QW9AcwXkTpgL/Bh4IEI7clJRCQG/D3wtqp+PWp7BhGRaiClqkdEpAr7oT4cpU2q+jg2yYaI\n3Ap8NmqxF5EyIKGqx0KPcQ3RH6f9ItIhIjdhc0L3Aq9EaVMWDwDPRW1EyEbgqXDy9jj2P/7USINz\nctJWRNaKyDvAzcAPReTforBDVVPAg9hMfBuwXlUjzRQIPZ3/wmbj3xGRT0RpT8gq4HeBO0RkS3jL\nhUyimVhc+udYvPUJVf2PiG0aTi6EDWuAjSKyFQvJPamq/x6xTQC/h4lXOzaf9vyFh48/Yaro+4B/\njtoWAFU9CnwZ06j/BH4OvDrSeG+e5jiOUyDkpIfvOI7jjD0u+I7jOAWCC77jOE6B4ILvOI5TILjg\nO47jFAgu+I7jOAXCRCi8cpxLImzx+9CV5tqHbQU+r6p3h49XAH+BVcl+VFX/5UptzdrXLKygaLGq\nZsZqu45zPtzDd/KJgLEpZHqcs6sVv4KVr08ZS7EHUNVerB14TvSJcfIbF3zHyUJEmoFGVc2u7r4O\nq26+nO1dylX0OuCxy9m+44wGD+k4eUfYzfCvGPKaFficqp4OX38MeAT4FfDnWMl+g6p2AXcAr2dt\nqxPrQviiiKSAauB3sPbGc4BfAl9T1b8Lx98GfA8rd/9jYJOIfBz4HPD7QCUWwvmkqg72LX8daBGR\nirBU3nHGBffwnXwjBvwZ1t+nOby1hs8R9vj5LPDrwHuA3xr2/gVA5+ADVZ0HdAP3qWpFeNJ4F2vm\nNRX4PLBuWNvlGqyl72rgj7BGZA9g/YYWh2O+lbWPE8C+rNccZ1xwwXfykY9g6w8fCFfgehr4aPia\nAD9S1e3hYhpPD3vvbKwz6oio6kuquktVB1T1eWxxjuz+8QngS+FKYCeBT2JXAZtVdT82J/DBcHGW\nQXqw0JHjjBse0nHykVqsu+kgbQwtuTgTyO4E+eaw9+7BOjOOiIjcg4WC5mNOUxmwIWvIu8NW1poL\nfFtEvpX1XAq7EtgXPp4d7ttxxg0XfCcf2Ystizco+jdii9mACWx2+OU9w967HQsHnRcRKcYWenkY\n+K6qpkVkI2ev25Aa9rZu4IuqqiNssww7EUXaetvJf1zwnXzkOeBBEfl++PhBbCIVbAL32dBL3865\nC328CnzmItv/P+AgUCIigq1zPGIPcuBvgMdEZC8W/pkKtGaleK4AtubYIt1OHuIxfCffCLAMmc3A\n/4S318LnUNUfAU8A64GXgcHlGE+Fr78F7AiXIDwHVT2FnRC+CHRgVw/DF+YYXgvwFPAP2HzBEUz0\nV2S9/mnga6P7mI4zenwBFKegCRd8fhEoGqx0FZFVwBcGK23Hef+1DFXa+o/RGVdc8J2CQ0TWAi9h\naZBPAIdU9f5orXKc8cdDOk4h8odYwdSPsVj8p6I1x3GuDu7hO47jFAju4TuO4xQILviO4zgFggu+\n4zhOgeCC7ziOUyC44DuO4xQILviO4zgFwv8DGdL9qz+jow0AAAAASUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "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": {}, "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": {}, "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 = \\beta_0 + \\beta_1 x_i + \\epsilon_i$$\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "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) = \\log\\left[\\frac{p}{1-p}\\right] = x$$\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here's a plot of $p/(1-p)$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "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)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 50, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 50 }, { "cell_type": "markdown", "metadata": {}, "source": [ "And here's the logit function:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(logit(unit_interval), unit_interval)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 51, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 51 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The inverse of the logit transformation is:\n", "\n", "
\n", "$$p = \\frac{1}{1 + \\exp(-x)}$$\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So, now our model is:\n", "\n", "
\n", "$$\\text{logit}(p_i) = \\beta_0 + \\beta_1 x_i + \\epsilon_i$$\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can fit this model using maximum likelihood. Our likelihood, again based on the Bernoulli model is:\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": {}, "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": {}, "source": [ "We can easily implement this in Python, keeping in mind that `fmin` minimizes, rather than maximizes functions:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "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))" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 52 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Remove null values from variables" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x, y = titanic[titanic.fare.notnull()][['fare', 'survived']].values.T" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 53 }, { "cell_type": "markdown", "metadata": {}, "source": [ "... and fit the model." ] }, { "cell_type": "code", "collapsed": false, "input": [ "b0 ,b1 = fmin(logistic_like, [0.5,0], args=(x,y))\n", "b0, b1" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Optimization terminated successfully.\n", " Current function value: 827.015955\n", " Iterations: 47\n", " Function evaluations: 93\n" ] }, { "metadata": {}, "output_type": "pyout", "prompt_number": 54, "text": [ "(-0.88238984528338194, 0.012452067664164127)" ] } ], "prompt_number": 54 }, { "cell_type": "code", "collapsed": false, "input": [ "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", "plt.xvals = np.linspace(0, 600)\n", "plt.plot(xvals, invlogit(b0+b1*xvals))" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 55, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nAAAAAElFTkSuQmCC\n", "text": [ "" ] } ], "prompt_number": 55 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "logistic = sm.GLM(y, sm.add_constant(x), family=sm.families.Binomial()).fit()\n", "logistic.summary()" ], "language": "python", "metadata": {}, "outputs": [ { "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", "
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.0
Method: IRLS Log-Likelihood: -827.02
Date: Sun, 23 Feb 2014 Deviance: 1654.0
Time: 10:40:31 Pearson chi2: 1.33e+03
No. Iterations: 6
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
coef std err t P>|t| [95.0% Conf. Int.]
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
" ], "metadata": {}, "output_type": "pyout", "prompt_number": 56, "text": [ "\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.0\n", "Method: IRLS Log-Likelihood: -827.02\n", "Date: Sun, 23 Feb 2014 Deviance: 1654.0\n", "Time: 10:40:31 Pearson chi2: 1.33e+03\n", "No. Iterations: 6 \n", "==============================================================================\n", " coef std err t P>|t| [95.0% Conf. Int.]\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", "\"\"\"" ] } ], "prompt_number": 56 }, { "cell_type": "markdown", "metadata": {}, "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": {}, "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": {}, "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", "collapsed": false, "input": [ "np.random.permutation(titanic.name)[:5]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 57, "text": [ "array([u'Ahlin, Mrs. Johan (Johanna Persdotter Larsson)',\n", " u'McCormack, Mr. Thomas Joseph', u'Reynaldo, Ms. Encarnacion',\n", " u'Cumings, Mr. John Bradley',\n", " u'Coutts, Master. Eden Leslie \"Neville\"'], dtype=object)" ] } ], "prompt_number": 57 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Similarly, we can use the `random.randint` method to generate a sample *with* replacement, which we can use when bootstrapping." ] }, { "cell_type": "code", "collapsed": false, "input": [ "random_ind = np.random.randint(0, len(titanic), 5)\n", "titanic.name[random_ind]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 58, "text": [ "308 White, Mrs. John Stuart (Ella Holmes)\n", "1004 McDermott, Miss. Brigdet Delia\n", "1126 Petranec, Miss. Matilda\n", "773 Dimic, Mr. Jovan\n", "945 Lam, Mr. Ali\n", "Name: name, dtype: object" ] } ], "prompt_number": 58 }, { "cell_type": "markdown", "metadata": {}, "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": {}, "source": [ "Compute statistic $t$ (estimate) for each bootstrap sample:\n", "\n", "
\n", "$$T_i^* = t(S^*)$$\n", "
" ] }, { "cell_type": "code", "collapsed": false, "input": [ "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)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAAECCAYAAAAB2kexAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAEiRJREFUeJzt3X+QXWV9x/H3EkyQumoV3KRih0Rs/VGjYAXBUegQpxI0\nRVu/rZ2mW+vYjlMttlNGpUmRgU6lTIvaasepIut2Bvr1BzHOpJ2WqEhN4y+QMCq1oTCKuDcUVDYQ\nsiS5/WMPELa5e87dvffu7pP365+9e86zm+/ee/LZZ5/7nOcZarfbSJLKcMxCFyBJ6h1DXZIKYqhL\nUkEMdUkqiKEuSQUx1CWpIMfWNYiIdwB/CuwDrsrMj0XEMDAOrAHuADZm5t6+VipJqjVrTz0inga8\nE3gZcAbwBxHxXGAzsCMz1wI7gU39LlSSVK9u+OUs4ObM/HHVE/8i8OvABmCsajMGXNC/EiVJTdUN\nv3wZ+PuIWA08DKxnOthHMrNVtWkBI/0rUZLU1Kw99cx8EHgX8GHg00yH/MEZbdqAaw1I0iIw1M3a\nLxHxl8DdwIXAOZk5ERGrgC9m5vM7fd327dsNfUmag3PPPXeom/ZNZr88KzP3RMTPA28EXgGsBkaB\nK6qPW+q+z2mnndZNXZJ01Lv55pu7/pom89Q/HRG7gOuA0cz8KXAZcGZ1/Azg8q7/ZUlSz9X21DPz\n1Uc4NokzXiRp0fGOUkkqiKEuSQUx1CWpIIa6JBXEUJekghjqklQQQ12SCmKoS1JBDHVJKoihLkkF\nMdQlqSCGuiQVxFCXpILUrtIolWxicj+tyamO50eGl7NyeMUAK5Lmx1DXUa01OcVF23Z3PH/l+lMM\ndS0pDr9IUkGabGf3NuAtwArgpsx8V0QMA+PAGuAOYGNm7u1rpZKkWrP21CPiGcDFwGuAlwO/EBG/\nCmwGdmTmWmAnsKnfhUqS6tUNv+wDhoCnAU8Gjgd+AmwAxqo2Y7i1nSQtCrOGembuA94O3AVMAF/J\nzK8CI5nZqpq1gJF+FilJaqZu+OVE4B+AFwInA2dGxOsOb5OZbaDdrwIlSc3VDb+cDuzMzN2ZeR/w\nKeBVQCsiVgJExCpgT3/LlCQ1UTf75Sbgg9Ubpg8C5wEfZHqcfRS4ovq4pZ9FSpKamTXUM/OBiLgc\nuJ7pN0n/Ffgi8DVgPCJ2UU1p7Heh0pHU3RH61OOO5YGHD3Q8P3XwUD/KkhZM7Tz1zLwGuGbG4Umc\n8aJFoO6O0EvWrebSG+6c9bxUEu8olaSCGOqSVBBDXZIKYqhLUkEMdUkqiKEuSQUx1CWpIIa6JBXE\n7eykWSxfNsSt90zO2sZ9TLWYGOrSLO7fd2DWO1LBfUy1uDj8IkkFMdQlqSCGuiQVxFCXpIIY6pJU\nEENdkgpSO6UxIn4RuO6wQ2uAzcAngPHq8zuAjZm5tx9FSpKaqe2pZ+Z/ZeapmXkq8DLgIaa3t9sM\n7MjMtcBOYFNfK5Uk1ep2+GUdsDszfwBsAMaq42O4vZ0kLbhuQ/23gGurxyOZ2aoet4CRnlUlSZqT\nxqEeEcuB1wOfmnkuM9tAu4d1SZLmoJue+nnANzPz3urzVkSsBIiIVcCeXhcnSepON6H+Zh4fegHY\nCoxWj0eBLb0qSpI0N41CPSJ+huk3ST972OHLgDMjYhdwBnB578uTJHWj0dK7mfkgcMKMY5M440WS\nFhXvKJWkghjqklQQQ12SCuJ2dlrUJib305qc6nh+6uChAVYzN3U/g3ucqpcMdS1qrckpLtq2u+P5\nS9atHmA1c1P3M7jHqXrJ4RdJKoihLkkFMdQlqSCGuiQVxFCXpIIY6pJUEENdkgpiqEtSQQx1SSqI\noS5JBTHUJakgjdZ+qXY++giwFlgBvAX4DjAOrAHuADZm5t4+1SlJaqBpT/0jwI2ZeSrTwX47sBnY\nkZlrgZ3Apv6UKElqqranHhFPA16VmaMAmXkA+GlEbADOrpqNAV8C3tOnOqVFa/myIW69Z7Lj+brl\ngeu+3qV51Y0mwy+rgXsj4hrgl4H/BC4ERjKzVbVpASN9qVBa5O7fd4BLb7iz4/m65YHrvt6ledWN\nJqF+LPBy4HLg7cBHgTcd3iAz2xHR7n15WurcIEIarCahfjdwX2Z+HiAirgV+F5iIiJWZORERq4A9\nfaxTS5QbREiDVftGaWZOALsj4oyIOAY4H9gOfB4YrZqNAlv6VqUkqZGm29mNAp8ETgBuA97N9C+E\n8YjYRTWlsS8VSpIaaxTqmfk94BVHOHVBb8uRJM2Hd5RKUkEMdUkqiKEuSQUx1CWpIIa6JBXEUJek\nghjqklQQQ12SCmKoS1JBDHVJKkjTtV+kvpjvBhOSnshQ14Ka7wYTkp7I4RdJKoihLkkFMdQlqSCN\nxtQj4i7gAeAg8Ehmnh4Rw8A4sIZqk4zM3NuvQiVJ9Zr21NvAOZl5amaeXh3bDOzIzLXATmBTPwqU\nJDXXzfDL0IzPNwBj1eMx3AVJkhZcNz31L0TELRHxturYSGa2qsctYKTn1UmSutI01F+ZmS8Bfhu4\nOCJedfjJzGwzHfySpAXUKNQz80fVx+8C1wOnA62IWAkQEauAPf0qUpLUTG2oR8Tx1UwXIuJEYD1w\nG7AVGK2ajQJb+lWkJKmZJj31EeCmiPgWcB1wVWb+G3AZcGZE7ALOAC7vX5mSpCZq56ln5p3AS49w\nfBJnvEjSouIdpZJUEENdkgpiqEtSQQx1SSqIoS5JBTHUJakghrokFcRQl6SCGOqSVBBDXZIKYqhL\nUkEa7VEqdTIxuZ/W5FTH81MHDw2wGkmGuualNTnFRdt2dzx/ybrVA6xGksMvklQQQ12SCmKoS1JB\nGo2pR8Qy4BvA3Zn5+mp7u3FgDXAHsDEz9/avTElSE0176hcC3wHa1eebgR2ZuRbYCWzqQ22SpC41\n2Xj6JKY3m/4YMFQd3gCMVY/HcFs7SVoUmvTUrwIuAg6fcDySma3qcYvpzaklSQts1lCPiNcBezLz\nFh7vpT9BZrZ5fFhGkrSA6t4oPQvYEBHrgeOAp0bEONCKiJWZORERq4A9/S5UOlotXzbErfdMdjw/\nMryclcMrBliRFrNZQz0zLwYuBoiIs4E/y8yNEfHXwChwRfVxS78LlY5W9+87wKU33Nnx/JXrTzHU\n9Zhulwl4dJjlMmA8InZRTWnsaVWSpDlpHOqZeSNwY/V4Eme8SNKi4x2lklQQQ12SCmKoS1JBDHVJ\nKoihLkkFMdQlqSCGuiQVxFCXpIIY6pJUEENdkgrS7dovOspMTO6nNTnV8fzUwUMdz0kaPENds2pN\nTnHRtt0dz1+ybvUAq5FUx+EXSSqIoS5JBTHUJakghrokFWTWN0oj4jimN8ZYATwM/HNmXhURw8A4\nsIZq56PM3NvvYiVJs5u1p56ZDwO/kpkvBc4G3hoRzwM2Azsycy2wE9jU90olSbVqh18y86Hq4VOA\nZcB+YAMwVh0fw63tJGlRqA31iDgmIm4FWsCHM/P7wEhmtqomLWCkjzVKkhqqvfkoMw8BL4mIk4Ft\nEfGVGefbEdHuU33qM+8YVd01MDK8nJXDKwZYkeaj8R2lmXlXRGxjemy9FRErM3MiIlYBe/pWofrK\nO0ZVdw1cuf4UQ30JmXX4JSJOiIinV4+fCZwH3AZsBUarZqPAln4WKUlqpq6nvgoYi4hlwATwt5m5\nPSK+BoxHxC6qKY19rlNSB8uXDXHrPZMdzzt8cnSZNdQz8zbgtCMcn8QZL9KicP++A1x6w50dzzt8\ncnRxlcbC+UaodHQx1AvnG6HS0cW1XySpIIa6JBXEUJekghjqklQQQ12SCmKoS1JBDHVJKoihLkkF\n8eYjqXB1a8N4V3FZDHWpcHVrw3hXcVkcfpGkghjqklQQQ12SCmKoS1JBat8ojYjnAJ8EngXcC1yT\nmddExDAwDqyh2v0oM/f2s1hJ0uya9NQfAf4kM18E/Abw/oh4AbAZ2JGZa4GdwKb+lSlJaqI21DNz\nIjO/VT3+X+DrwLOBDcBY1WwMt7eTpAXX1Zh6RJwCvIjpnvlIZraqUy1gpMe1SZK61DjUI+IpwHVM\nD8U8Yew8M9tAu8e1SZK61CjUI+JJwGeAf8rMz1WHWxGxsjq/CtjTnxIlSU3VhnpEDAEfB76dmR84\n7NRWYLR6PAps6X15kqRuNFn75ZXA7wC7IuKW6th7gcuA8YjYRTWlsT8lSpKaqg31zPwPOvfonfEi\nSYuId5RKUkEMdUkqiKEuSQUx1CWpIIa6JBXEUJekghjqklQQQ12SCmKoS1JBDHVJKoihLkkFMdQl\nqSCGuiQVxFCXpIIY6pJUEENdkgpSu0lGRFwNnA/sycwXV8eGgXFgDdWuRzM3o5YkDV6TnvongNfO\nOLYZ2JGZa4GdwKZeFyZJ6l6T7exuioiTZxzeAJxdPR4DvgS8p6eVqdbE5H5ak1Oztpk6eGhA1Uha\nDJpsPH0kI5nZqh63gJEe1aMutCanuGjb7lnbXLJu9YCqkbQYzDXUH5OZ7Yho96IYPVFdT9xeuKSZ\n5hrqrYhYmZkTEbEK2NPLojStriduL1zSTHMN9a3AKHBF9XFLzyqStKgsXzbErfdMdjw/MryclcMr\nBliRZtNkSuO1TL8p+syI+AHwF8BlwHhE7KKa0tjXKiUtmPv3HeDSG+7seP7K9acY6otIk9kvb+5w\n6oIe1yJJmifvKJWkghjqklQQQ12SCmKoS1JBDHVJKsi87yiVdHRzHvviYqhLmhfnsS8uDr9IUkEM\ndUkqiKEuSQVxTH0BubSupF4z1BeQS+tK6jVDvY/siUvz12TbRqdNPs5Q7yN74tL8Ndm20WmTjztq\nQ73dbvPjhw7M2ubpxx/LMUNDA6pIkuZvXqEeEa8GPlB9n3/MzL/rSVUDcOBQm7+56fv8930PHfH8\nc5/xZN551knc++AjHb/HU487lgce7vyLweEVyTtOB23OoR4Ry4CrgXXAD4GvR8QNmfndXhXXb5P7\nD/CTfUcO5QcePkBr7xTv/pc7On79JetWz3onncMrknecDtp8euqnA7sz8y6AiLgO+DVgyYS6pIVX\n15P3L97uzCfUnw384LDP7wbOmF85ko42dT15/+LtznxCvd2zKhbIG37pRO7v8Gbpzz75WPBNUklL\nzFC7PbdsjohXAO/LzNdWn78XOJSZV8xsu3379iX/C0CSFsK5557bVe9yPj31bwDPi4iTgXuA3wTe\n3IuiJElzM+cFvTLzAPD7wPXAN4Grl9LMF0kq0ZyHXyRJi49L70pSQQx1SSpIX9Z+iYg3Ae8Dng+8\nPDNv7tDuLuAB4CDwSGae3o96FkoXz8OSXW6hqYgYBsaBNcAdwMbM3HuEdndR6DXR5HWOiL8Czgce\nAn4vM28fbJWDUfdcRMQ5wOeA/6kOfSYzLx9okQMSEVcz/ZrvycwXd2jT+LroV0/9NuANwJdr2rWB\nczLz1JL+8x6m9nk4bLmFNwIvA94aES8YTHkDtRnYkZlrgZ3Apg7tirwmmrzOEbEeeEn1HF0IXDPo\nOgehi2v+xuo6OLXUQK98Anhtp5PdXhd9CfXMvD0zv9ewebHTHRs+D48tt5CZjwCPLrdQmg3AWPV4\nDLhglrYlXhNNXufHnqPM/Crw9IgYGWyZA9H0mi/xOvh/MvMm4MezNOnquljoMfU28IWIuCUi3rbA\ntSyUIy238OwFqqWfRjKzVT1uAZ0uylKviSav85HanNTnuhZCk+eiDZwVEd+OiG0R8cKBVbf4dHVd\nzGeVxn8HVh7h1MWZ+fmG3+aVmfmj6k+vbRFxe/Vba8nowfNQzJzSWZ6LPz/8k8xsR0Snn3vJXxMd\nNH2dZ/ZOi7k+DtPkZ7oZeA7wCDAKbAVO6WdRi1zj62LOoZ6Zr5nr1x72PX5UffxuRFzP9J9lS+o/\ncA+ehx8yffE+6jlM/yZecmZ7LiKiFRErM3MiIlYBezp8jyV/TXTQ5HWe2eak6lhpap+LzHxs2caI\n+DhwRUQ8IzPvH0yJi0pX18Ugdj464rhYRBwPLMvMyYg4EVgP/PEA6lkoncYHGy+3sMRtZbrHdUX1\nccvMBoVfE01e563AO4DrqrWVfnLYkFVJap+Lasx4T2a2gdcD+47SQIcur4u+3FEaEW8APgScAPwU\nuCUzz4uIn2N6+tL5EbEG+Gz1JfcBmZkf7XkxC6jJ81C1O5snTu/60ELV3C+dpjQeTdfEkV7niPhD\ngEd/zoh4P9NT1x4E3lLq0ht1z0VE/BHwduAAsAv4YGZ+c8EK7qOIuBY4m+mcaAGXAE+CuV0XLhMg\nSQVZ6NkvkqQeMtQlqSCGuiQVxFCXpIIY6pJUEENdkgpiqEtSQQx1SSrI/wEyp/pQy9up0QAAAABJ\nRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 59 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "boot_mean = np.sum(s)/R\n", "boot_mean" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 60, "text": [ "-0.26109460708189697" ] } ], "prompt_number": 60 }, { "cell_type": "code", "collapsed": false, "input": [ "boot_var = ((np.array(s) - boot_mean) ** 2).sum() / (R-1)\n", "boot_var" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 61, "text": [ "0.089079064843898145" ] } ], "prompt_number": 61 }, { "cell_type": "markdown", "metadata": {}, "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", "collapsed": false, "input": [ "boot_mean - np.mean(x)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 62, "text": [ "-0.011697963201919293" ] } ], "prompt_number": 62 }, { "cell_type": "markdown", "metadata": {}, "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": {}, "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", "collapsed": false, "input": [ "s_sorted = np.sort(s)\n", "s_sorted[:10]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 63, "text": [ "array([-1.21473328, -1.20296609, -1.14257574, -1.12029849, -1.09395259,\n", " -1.03641168, -1.03146359, -1.01978558, -1.00359632, -0.94009612])" ] } ], "prompt_number": 63 }, { "cell_type": "code", "collapsed": false, "input": [ "s_sorted[-10:]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 64, "text": [ "array([ 0.39140486, 0.39440803, 0.40575741, 0.40891146, 0.43260227,\n", " 0.43500618, 0.49686382, 0.54923955, 0.55645112, 0.59660475])" ] } ], "prompt_number": 64 }, { "cell_type": "code", "collapsed": false, "input": [ "alpha = 0.05\n", "s_sorted[[(R+1)*alpha/2, (R+1)*(1-alpha/2)]]" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 65, "text": [ "array([-0.84960042, 0.28246507])" ] } ], "prompt_number": 65 } ], "metadata": {} } ] }