{ "metadata": { "name": "", "signature": "sha256:f8d48e04873aeac395e4409ddbe1ddbb8bea0f15c7cb0b911777b444237b0006" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Frequentist Model Fitting" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- *Jake VanderPlas*\n", "- *ESAC statistics workshop, Oct 27-31 2014*\n", "- *Source available on [github](http://github.com/jakevdp/ESAC-stats-2014)*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Preliminaries" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "These lectures will use Python tools, but won't go into too much depth on the Python side of things. That said, we'll always start with a block something like this, which sets up our notebook for inline plotting." ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from scipy import stats\n", "\n", "# use seaborn plotting defaults\n", "# If this causes an error, you can comment it out.\n", "import seaborn as sns\n", "sns.set()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Simple Model Fitting: Straight Line Fit" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One of the most archetypical model fits you'll encounter is that of fitting a line to data.\n", "We'll use the following randomly-generated dataset and discuss how we might fit this:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from fig_code import linear_data_sample\n", "x, y, dy = linear_data_sample()\n", "plt.errorbar(x, y, dy, fmt='o');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nRU5ErkJggg==\n", "text": [ "" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can see these points have errors; for now let's ignore those errors and just look at the points themselves:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.plot(x, y, 'o');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\nYII=\n", "text": [ "" ] } ], "prompt_number": 3 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's think about what it takes to fit a straight line to this data." ] }, { "cell_type": "heading", "level": 3, "metadata": {}, "source": [ "Defining the Model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The first thing we must do is define our model. The *model* is usually some functional form which, as a function of various parameters, specifies what we **think** the data should look like.\n", "In this case, we'll use a standard linear model defined by a slope *m* and an intercept *b*:\n", "\n", "$$\n", "M(x;m,b) = m x + b\n", "$$\n", "\n", "For clarity, we'll try to write our models in this way: to the left of the semicolon is our data, and to the right of the semicolon are our model parameters.\n", "\n", "Now, examining our data above, we can quickly see that this model will **not** perfectly fit the data. So generally, what we're saying is that the data is distributed in some way around the model. For the most common assumption of normality, we're saying that\n", "\n", "$$\n", "y_i \\sim \\mathcal{N}[M(x;m,b), \\sigma]\n", "$$\n", "\n", "but we'll get into this later." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Defining a Cost Function\n", "\n", "In order to fit a model to data, we need some way of *quantitatively* measuring how well a model with given parameters fits the data. That is, given a set of data $\\{x_i, y_i\\}$ and some parameters $\\theta = \\{m, b\\}$, how well does the model fit? This is usually denoted via **Cost Function**, which tells us how far our model is from being ideal.\n", "\n", "Specify the cost function & minimize it with respect to the model parameters, and you have your best fit! The cost function will look like this:\n", "\n", "$$\n", "C(\\theta;\\{x_i, y_i\\}) = ??\n", "$$\n", "\n", "**Question: What are some cost functions we might use?**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Some ideas:\n", "\n", "#### Least absolute deviation\n", "\n", "$$\n", "C_{LAD} = \\sum_i \\left|y_i - M(x_i;\\theta)\\right|\n", "$$\n", "\n", "#### Least Squares\n", "\n", "$$\n", "C_{LS} = \\sum_i [y_i - M(x_i;\\theta)]^2\n", "$$\n", "\n", "#### Least absolute N-th power?\n", "\n", "$$\n", "C_{LN} = \\sum_i \\left|y_i - M(x_i;\\theta)\\right|^N\n", "$$\n", "\n", "#### Least hyperbolic cosine?\n", "\n", "$$\n", "C_{LHC} = \\sum_i \\cosh[y_i - M(x_i;\\theta)]\n", "$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We could literally use **any cost function we want**, though it's true that some have better properties than others, and are better motivated than others.\n", "Probably the most commonly-used cost functions are the first two here: least absolute deviation and least squares." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Trying it Out\n", "\n", "Let's quickly code these up and see what happens:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def model(theta, x):\n", " b, m = theta\n", " return m * x + b\n", "\n", "def least_abs_deviation(theta, x, y):\n", " return np.sum(abs(model(theta, x) - y))\n", "\n", "def least_squares(theta, x, y):\n", " return np.sum((model(theta, x) - y) ** 2)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 4 }, { "cell_type": "code", "collapsed": false, "input": [ "from scipy.optimize import fmin\n", "theta_guess = [0, 1]\n", "\n", "theta_LAD = fmin(least_abs_deviation, theta_guess, args=(x, y))\n", "theta_LS = fmin(least_squares, theta_guess, args=(x, y))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Optimization terminated successfully.\n", " Current function value: 62.478260\n", " Iterations: 110\n", " Function evaluations: 205\n", "Optimization terminated successfully.\n", " Current function value: 150.032670\n", " Iterations: 83\n", " Function evaluations: 156\n" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "xfit = np.linspace(0, 10)\n", "\n", "plt.plot(x, y, 'o')\n", "plt.plot(xfit, model(theta_LAD, xfit), label='Least Abs. Dev.')\n", "plt.plot(xfit, model(theta_LS, xfit), label='Least Sq.')\n", "plt.legend(loc='best');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The results of both cost functions are similar! But this doesn't mean they're equal.\n", "In particular, you may have noticed that **least squares** is used much more often than **least absolute deviation**. There are several reasons for this, but we'll see below that part of it is the equivalence with the likelihood." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Motivating our Cost Function: the Likelihood" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One way we can motivate the choice of cost function is to think of the problem probabilistically." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Likelihood of a single point\n", "\n", "Consider just a single point in our data, $(x, y)$. What are we **actually** trying to figure out?\n", "\n", "Well, one way of looking at it is this: we know that for each $x$, there exists some \"true\" $y$ which we'll call $y_{true}$. But in our observing process, we have some probability distribution which describes how **likely** we are to observe a particular $y$ given the true $y$" ] }, { "cell_type": "code", "collapsed": false, "input": [ "ydiff = np.linspace(-4, 4, 1000)\n", "plt.plot(ydiff, stats.norm.pdf(ydiff, 0, 1))\n", "plt.xlabel('$y - y_{true}$', size=18)\n", "plt.ylabel('$p(y|y_{true})$', size=18);" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\na5unHH8I+GMgCPyjtfbL052TDIKhMD0DY3T3jdLdP0p33yhdfaO0XR6irWuY4bHgu74+3e9l2YJ8\nllbmUV2Zz/KqAgIFmWoFEJGU4vF4WBjIZWEgl3u3LSIUDtPSMciZi/2cbuvnbNsADS292JZenn+r\n5cp5xfkZLCjJIVCURWlBJqUFkb9LCjLJy0pL2vfSuCoIgEeAdGvtLmPMbcCT0fswxqQB/x3YCgwD\ne40xPwJuBzKudU48chyHsYkQI2MhRseDDI8FGR4NMjA8Tv/QROTv4XEGhifoHxqnb2ic3sExrtWQ\n4/V4KCvKwiwuZEFpDgtKclhnysjyoYE0IiJX8Xm9LK3IZ2lFPvdE7xsZC9LSMcjAWAh7tpu2aGvr\n8TOX4cx7HyPd7yU/J52CnHTyo38m/52XnU52hp+sDD/Zmf4r/07zJ8b7cbwVBLuB5wCstfuNMVun\nHFsFNFlr+wCMMa8DdwI7gWevc857nLnYR3f3EKGwQ9hxCIcjf0KOgxN23n2/E1mgxwnzrvtDYYdg\nKMx4MMxEMEww+vd4MMREKPLvqX9Gx4OMjIUYGQsyMh685i/3a/H7vBTkpFFTVUBJQSYl+ZEKtTT6\nd6AwC7/v3d9oidisJyLilqwMPysWFRII5LGlpuTK/cOjQbr6Rq60yEb+jNDdP0r/0DhnLw0QCs/s\nzTzN7yU7w09mhp90v5f0NC/pfh/pfi9paT4yon9PHvP7vPi8HnxeLz6fJ/rv6W97PB68Hg8eT2T9\nBo8n8sExI91HIJA3bc54Kwjygf4pt0PGGK+1Nhw91jfl2ABQMM057/G7T74a28TT8HggM91PdoaP\novwMFmTkkJXuJyvDR1aGP/LvTD/52WnkZ6eTl5NOfnYaednpZKb7krZpSkQknmVn+lmcmcfi8mv/\nIg07DsOjQfqGxukfHKNveJzB4QlGxiItvyPR1t+p/x4ZC9I/FGJ8IjzjYiJWfvzkw9N+TbwVBP3A\n1P/9qb/Y+646lgf0TnPOe/z4yYeT/jfsTCrBRKbrS1zJfG2g60t0yX5904m3jo29wP0AxpgdwNEp\nx+qBWmNMkTEmnUh3wRvTnCMiIiIzEFfTDo0xHt6ZMQDwOLAFyLXWfskY8yDwX4gUMl+x1v7dtc6x\n1jbMc3QREZGEFlcFgYiIiLgj3roMRERExAUqCEREREQFgYiIiKggEBEREeJvHYJ5Y4xZCewDyqy1\n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\n", "text": [ "" ] } ], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Most commonly, we'll use a **normal (Gaussian) distribution** for this error.\n", "This can be justified in a number of ways (Central limit theorem, maximum entropy, etc.). So in effect, what we're saying is that $y$ is a random variable, which is distributed like\n", "\n", "$$\n", "y \\sim \\mathcal{N}[y_{true}, \\sigma^2]\n", "$$\n", "\n", "Given this (assumed) model for a single value of $y$, we can compute the probability of observing this point as follows:\n", "\n", "$$\n", "p(y|y_{true},\\sigma) = \\frac{1}{\\sqrt{2\\pi\\sigma^2}}\\exp\\left[\\frac{-(y - y_{true})^2}{2\\sigma^2}\\right]\n", "$$\n", "\n", "Here this should be read \"the probability of $y$ given $y_{true}$ and $\\sigma$ is...\"\n", "\n", "With this error distribution, we see that if our single observed point is far from the (unknown) true value, the probability is very low. If our single observed point is close to the true value, the probability is high." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### From Single Points to Two Points\n", "\n", "Above we've computed the likelihood for a single point: this is just a probability that we'd see this point given an (unknown) true value. How do we then combine this likelihood for multiple points?\n", "\n", "Essentially, we're asking **what is the joint probability of our points $y_1$ and $y_2$ given the true values $y_{1, true}$ and $y_{2, true}$?**\n", "In symbols, we want:\n", "\n", "$$\n", "p(y_1, y_2~|~I)\n", "$$\n", "\n", "where $I$ is shorthand for the information we're using (here the true values & errors).\n", "This is difficult to evaluate in general, but we can make one simplifying assumption that will change everything:\n", "\n", "**Assumption: $y_1$ is *independent* of $y_2$.**\n", "\n", "By the definition of independence, we can write\n", "\n", "$$\n", "p(y_1, y_2~|~I) = p(y_1~|~I) p(y_2~|~I)\n", "$$\n", "\n", "That is, independence lets us consider each measurement individually, and then multiply their probabilities together." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### From Two Points to $N$ Points\n", "\n", "You might see where this is going: if every single draw from our model is *independent* (that is, the random error in one point does not affect the random error in any other point), then we can compute the likelihood of the entire dataset very easily!\n", "\n", "$$\n", "p(\\{y_i\\}~|~I) = \\prod_{i=1}^N p(y_i~|~y_{i, true},\\sigma)\n", "$$\n", "\n", "This product of probabilities is known as the **Likelihood**. If we take the logarithm of this expression, the product turns into a sum, and we have the **log-Likelihood**, which is often denoted as follows:\n", "\n", "$$\n", "\\log L(\\{y_i\\}~|~I) = \\sum_{i=1}^N \\log p(y_i~|~y_{i, true},\\sigma)\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### So What?\n", "\n", "What we've created here is an expression, the **likelihood**, which depends on the data and our model for the true data.\n", "\n", "Above we've been talking about the \"true\" $y$.\n", "The problem is that we never actually know the true y! The true y (i.e. the best-fit model) is what we're trying to find.\n", "Given this formalism, it can be motivated that **the model which maximizes this likelihood is the model which best fits the data**. What this is saying is, essentially, the model which gives our observed data the highest probability is the most likely model.\n", "\n", "So: we need to maximize our likelihood (or equivalently, maximize our log-likelihood) by plugging-in the expression:\n", "\n", "$$\n", "y_{i, true} = m x_i + b\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Maximizing our Likelihood\n", "\n", "To do this, we'll start by plugging our Gaussian model into the log-likelihood. Doing this, we get the following:\n", "\n", "$$\n", "\\log L(\\{x_i, y_i\\}~|~\\theta, \\sigma) = \\frac{-N}{2}\\log(2\\pi\\sigma^2) - \\sum_{i=1}^N [(y_i - M(x_i;\\theta))]^2\n", "$$\n", "\n", "OK... now we notice something. The second term here is **exactly** the least-squares cost function we proposed before!\n", "\n", "$$\n", "\\log L(\\{x_i, y_i\\}~|~\\theta, \\sigma) = \\frac{-N}{2}\\log(2\\pi\\sigma^2) - C_{LS}(\\{x_i, y_i\\}~|~\\theta)\n", "$$\n", "\n", "And notice something else: the first term is basically a constant, which means that *maximizing the likelihood is **identical** to minimizing the sum of squares!*\n", "\n", "And this is one reason that least-squares fitting is so common: it follows from several assumptions:\n", "\n", "1. The error distribution of the observed points is Gaussian.\n", "2. The errors in observed points are independently drawn.\n", "3. The model which is most likely to have led to our data is the optimal model.\n", "\n", "**Question: what probability distribution for the data errors would lead to the least absolute deviation cost function?**\n", "\n", "**Exercise: use the maximum likelihood to derive the expression for determining the mean of a set of data points**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Closed-form Solution for Least Squares\n", "\n", "Above we've been using an iterative solver for our least squares/maximum likelihood solution, but there is a better way! It turns out that using matrix methods, the least squares / Gaussian maximum likelihood problem can be solved in closed-form.\n", "\n", "To do this, let's start by expressing our model as a matrix equation. We'll define the following two matrices:\n", "\n", "$$\n", "X = \\left[\n", "\\begin{array}{ll}\n", " 1 & x_1\\\\\n", " 1 & x_2\\\\\n", " 1 & x_3\\\\\n", " \\vdots & \\vdots\\\\\n", " 1 & x_N\n", "\\end{array}\n", "\\right]~~~~\n", "y = \\left[\n", "\\begin{array}{l}\n", " y_1\\\\\n", " y_2\\\\\n", " y_3\\\\\n", " \\vdots\\\\\n", " y_N\n", "\\end{array}\n", "\\right]\n", "$$\n", "\n", "The $X$ matrix here is sometimes known as the *design matrix*. This might look a bit strange, but if we now define the parameter vector $\\theta = [b, m]$, we see that the model can simply be expressed as a simple matrix-vector product:\n", "\n", "$$\n", "y_{model} = X\\theta\n", "$$\n", "\n", "we can write the likelihood as follows:\n", "\n", "$$\n", "L(x, y, dy~|~\\theta) = (2\\pi\\sigma^2)^{-1/2}\\exp\\left(-\\frac{1}{2\\sigma^2}\\|y - X\\theta\\|^2\\right)\n", "$$\n", "\n", "minimizing this with respect to $\\theta$ (by setting the derivative with respect to $\\theta$ to zero) gives:\n", "\n", "$$\n", "X^T(y - X\\hat{\\theta}) = 0\n", "$$\n", "\n", "which yields the maximum likelihood solution:\n", "\n", "$$\n", "\\hat{\\theta} = [X^TX]^{-1}X^Ty\n", "$$\n", "\n", "Let's give this a try:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "X = np.vstack([np.ones_like(x), x]).T\n", "\n", "theta_hat = np.linalg.solve(np.dot(X.T, X),\n", " np.dot(X.T, y))\n", "print(theta_hat)\n", "print(theta_LS)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "[-2.85195862 3.16960077]\n", "[-2.8519853 3.16960679]\n" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that the result is the same as our previous least squares solution... it's just **much** faster to compute!\n", "For good measure, let's again visualize this fit:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "xfit = np.linspace(0, 10)\n", "\n", "plt.plot(x, y, 'o')\n", "plt.plot(xfit, model(theta_hat, xfit), label='Least Sq.')\n", "plt.legend(loc='best');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAeMAAAFVCAYAAADc5IdQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt4VFWe7/93Va4kKZIAgXBNgCQblIuIAoqiiIo3bolK\n6LbnsWf6zHS3/aN7fjI9v3ZG+/RlpvuM2n3Gbo8zp/v0eHq6J4AQ7oJ4QVAUFUQUgZUESLgGQkhC\n7klV7d8fBASFJBVStSuVz+t5fJ5UpWrvb5Yhn1prr72Wy7ZtRERExDlupwsQERHp7RTGIiIiDlMY\ni4iIOExhLCIi4jCFsYiIiMMUxiIiIg6Lbu+blmVFAb8DcgAb+DbQDLwM+IG9wBPGGN0fJSIi0kUd\n9YwfAvzGmNuAfwT+GXgeeMoYMwNwAfOCW6KIiEhkazeMjTFrgL9pe5gJVAGTjTHb2p7bCNwdtOpE\nRER6gQ6vGRtjfJZlvQz8K/BnzveGL6gDkoNTmoiISO/Q7jXjC4wxj1uWNQj4EIi/5FseoLqj99u2\nbbtcro5eJiIiEhRzl6zhSqs/90+O5+VnZgfjlAGFXkcTuL4BDDPG/AJoBHzATsuy7jDGbAXuB97s\nsCKXi4qK2kDqkgClpXnUxkGmNg4NtXPw9cY2HpuRyr7SqsueS/XE8b0F44PSFmlpnoBe39Ew9Qrg\nBsuytgKbgO8D3wN+YlnWe5wP8xVdqFNERCRkluRPItUTd/FxqieO55+YTkZ6YKEZLO32jI0xjcDC\nK3zrzqBUIyIiEiSL8ybwwspPL34dTjp1zVhERKSny0j38PwT050u44q0ApeIiIjDFMYiIiIOUxiL\niIg4TGEsIiLiMIWxiIhIN6lrqafgwMqA39drZ1N//PFO1qwp5Cc/+eduPe6pU+WUlBQzffrtlz2/\nb99efv/7f8Pv99PQ0MBdd91Nfv5j3XpuERFxhm3b7Di5k1UlG6j3NrCYxwN6f1iEcWHJenaf/qxb\njzlp4Hhysx666veDtTznrl0fceRI2VfC+Ne/fpann/4pI0Zk4PV6+c53/pLJk6eQnZ0TlDpERCRw\nzy3dzf62lbrGZqayJH9Sh+8prz9FgSmkpPowsVGx5LWTPVcTFmHsBPtKi5QCu3fv4ne/ewm3283Q\nocP4u797iubmJn75y59TX1/HmTMV5OY+wvz5D1NY+AqbNm3A7XYzZsx1LF78//KnP71Mc3Mz48dP\nvCyQ+/Xrx8qVy3jggblkZWXz0kt/IDo6moaGBn72s6epqalh2LDhHD1axksv/SFUzSAiIm2eW7r7\nsiUz95VW8eSL21mcN+GKK3W1+Fp5rewtXi97G5/tY+KA63kkZx6p8SkBnzsswjg366F2e7GhYts2\n//Iv/8RLL/2BlJQUfv/7f2PjxvVY1hjuvns2d9wxkzNnKvje9/6G+fMfZuPGdTz55I8YM2Ysq1ev\nwLZtvvGNb16xZ/zjH/+c5csLeO65X3DixDHuuec+nnjiB6xa9QqZmaP4m795gpKSYp56aolDP72I\nSO+2/0trVwNU1TbzwspPef6J6Zf1mjOzm/AO+YwzjZWkxqXwSM48JqZd3+Vzh0UYh4vq6ioqKyt5\n+um/B6C5uZkpU6Zxyy3TWb68gG3b3iIhIQmfzwvAj370Y5Yu/RMnThxn3LgJ2LZ98b9LtbS0YMwB\nHn/8Wzz++Lc4d+4cv/jFT1i7tpCTJ08ydeo0ALKysklJSQ3tDy0i0kt0ZQj60vfuK62C6GZiRhyg\nPPUkNLi4qf80Fo17kPjouI4P0g7Npr5EcnIKAwcO5H/8j1/xm9/8O4899jiTJ99MQcGfGDduPE8/\n/TNmzpx1MWzXrVvNkiU/4re//d8UFRn27v0Ut9uN3++/7Lgul4uf/ewZjh49AkDfvn0ZNGgwsbFx\nZGVls2fPJwAcP36Mc+dqQvtDi4j0AhfC1AZsvhiCLiv/YsemsZlf7QyleuJYnDeB/aVniUo7SvyE\nd4gecBJ/XTJNn9/C3u2DrjmIoRf3jF0uFx999AHf+tZfXHzuxz/+Od///pMsWfJ9bNtPYmIS//AP\nP8G2bf7n/3yWbdveZuTIUSQkJNDa2sro0aN54olvkZCQSFraQK6/fjyJiYn88Y9/wLLGMmvWPQDE\nxMTw05/+gl/84qd4vV5cLhdjx17Pgw/Oxe/38y//8k888cR/Y9CgdNzu85+PXn99E42Njcydu8CR\n9hERiSQdDUHD+Z2dnnxxO1W1zcAXOzsdrztJ7NgPcHuqsX1RtJSOxXd6BOCCbtr0yXW1iUzdzO5t\ne2d21de//jB//nPgu1L2xv1JQ01tHBpq5+DrjW38V798iyul3YXAvaCsvPbizk7fWTCWvQ07ePPo\nNvy2H29lOq1HxkBr/MX3Xm1yV1qaJ6BbdnptzzhcBeuWKxGR3mxsZuplM6XhizC91IWdnfae2c8f\ni/6dyqYq+sen8mjOfP5j2VmqWi/vNXcX9YwjRG/8pBtqauPQUDsHX29t4ysNQX9ZdXMNK4rXsfv0\np7hdbmYNn8EDI+8mNir2sl7z1XrEF6hnLCIicgWL8yZcFqaX8tt+3jm+g7UHN9Hka2Jk3wwWjcll\naNLgi68J5n7ICmMREekVrhamR2tPUHBgJWW1R+kT3Yd8K5fpQ6bgdoXuhiOFsYiI9EpN3mY2HN7M\n28e247f93DToBvKy59A3tpumSAdAYSwiIr3OpxWfs7xoDVXN1Qzo05/8nAWM7e/cXgEKYxER6TWq\nmqp5pWgNe858TpQrivsyZzE74y5io2IcrUthLCIiEc/n97H1+HusP/Qazb4WslJGssjKJT1xkNOl\nAQpjERGJcGXnjlJgCjlae5zE6AQeGTOPaYNvCqt1HRTGIiISkRq9Taw79Brbjr2Hjc3U9MksyHoQ\nT2yS06V9hcJYREQiim3b7K74jBVFa6lpOceghDTyrVxyUkc7XdpVKYxFRCRiVDaeZXnRavZWHiDa\nFcWDI+/hnoyZxLjDO+7CuzoREZFO8Pl9vHX0HV49/Dot/lZyUrPItxYwKCHN6dI6RWEsIiI92qGa\nMgoOrOREfTlJMYnkW7lMSb8xrCZodURhLCIiPVJDawNrDm5k+4kPsbG5dfAU5mc9QGJMgtOlBUxh\nLCIiPYpt2+w6vYcVxWupbakjPWEgi8bkkZUy0unSukxhLCIiQffc0t3sb9tPeGxmKkvyJ3XpOBUN\nlSwrWsX+s0XEuKOZM+o+7h4xg+gwn6DVkZ5dvYiIhL3nlu5mX1sQA+wrreLJF7d3uCfwpbx+L28c\n2cam0jdo9XsZ2y+HhTkLSEvoH6yyQ0phLCIiQbX/kiC+oKq2mRdWftqp/YFLqg9TYAoprz+FJzaJ\nx7LnMnngxB41QasjCmMREQlL9a0NrC7ZwHsnPwLgtqHTmDfqfhJi+jhcWfdTGIuISFCNzUy9bJga\nINUTx+K8CVd8vW3bfFj+MYUl66lrrWdIYjqLxuQxKjkjFOU6QmEsIiJBtSR/Ek++uJ2q2mbgfBBf\nbXj6VEMFS80qiqpKiHXHMH/0A9w1/Hai3FGhLDnk2g1jy7JigD8AGUAc8HPgGLAeKGp72UvGmOXB\nLFJERHq2xXkTeGHlpxe//rJWv5fNZVvYXPoWXtvHuP5jeDRnPv379At1qY7oqGf8daDCGPMNy7JS\ngT3AT4DnjTG/Cnp1IiISETLSPVftDRdVlVBgCjndcIbk2L48nDOXSWnjI2qCVkc6CuNXgBVtX7uB\nVmAyYFmWNQ8oBn5gjKkLXokiIhKJalvqWFWygQ/Kd+HCxR3DplO6ezAvvnsG2HJN9yP3NO72vmmM\nqTfG1FmW5eF8MP8D8CGwxBhzB3AI+HHwyxQRkUhh2zbvnfiIn+14jg/KdzHcM5S/u+l7HPl4BAcO\n12EDNl/cj1xWXut0yUHnsm273RdYljUcKAReNMa8bFlWsjGmpu171wEvGGPu7uA87Z9ERESuydP/\n9h57SioAmJiVxs++favDFV3ZsXMn+d3OAvZXFBMfHcfCcXO4L/tOotxRzF2yhitFUv/keF5+ZnaH\nxw6zNghojL2jCVyDgM3Ad40xW9qe3mRZ1mJjzEfALGBnZ05UURH5n2yclJbmURsHmdo4NNTOgfvy\nClefFFfwF/9901VXuHKijVt8rbxW+iavH9mKz/YxccD1PJIzj9T4FM5WNpx/0VW6bX6/3WG9gbZB\nsKWlBXbOjq4ZPwUkA89YlvVM23M/AH5tWVYrcBL460CLFBGR7nO1Fa7+6T934vOdTzgnr7/uryxi\nadEqzjRWkhqXwqM585iQdv1XXhfo/ciXneMaV/lyWrthbIz5PvD9K3zrtuCUIyIi3cXr+6Kreel6\n0IH22rqqprmWwpJ17Dz1CW6Xm7uG386DI+8lPjruiq8P5H7kSNPuBC4REQl/YzNTO/W6Cz3FYPPb\nft45voOfffAcO099Qkbf4fzwpsXkZc+5ahBfsDhvAqmeuE73iC+4UhsEegwndTiBq5vYugYUXLrO\nFnxq49BQO3fNl3uU1bXNV7wEm+qJ44///b6gtfHxupMUHCjk8Lky4qPimTv6Pm4fOg23K/h9v3Dq\nVaeleQKawKWesYhIBPhyjzLUPcVmXwurS17llx/9K4fPlTEpbTxPT3uSO4bdGpIghq73qsOBesYR\nQr2J4FMbh4bauftcrafY3W2898x+lhetprKpiv7xqTyaM59xA8Z22/F7okB7xtooQkQkQnW0HvS1\nqm6uYUXRWnZXfIbb5eaeEXfywMi7iY2K7fZzRTqFsYhIhGpvPehr4bf9bDv+PusObqLJ18zIvhks\nGpPL0KTB3X6u3kJhLCIinXa09jgFBwopqz1Kn+g+LLJyuXXIlJBdF45UCmMRkR7quaW7Ly52EexF\nPZq8zWw4vJktR9/FxuamQTeQlz2HvrGhX90qEimMRUR6oC8v/3jpoh7dvfzjnorPeaVoDVXN1Qzo\n0598awFj++V06zl6O4WxiEgPFIrlH6uaqlletIZPz3xOlCuK+zJnMTvjLmKjYrrl+PIFhbGIiFzG\n5/ex9dh21h3eTIuvhfiWNGoOWKz+IAaTubfX7DEcSrriLiLSAwVrUY+yc0d5dudvWFmynhhXNAPO\nTaXqkxvxNyX1uj2GQ0lhLCLSAy3Jn0Sq54t1ni8s6tHV68WN3kaWF63m2Z2/5WjdCaamT+bpaUs4\ndiCVL2/NG6o1rnsTDVOLiPRQ3bGoh23b7K74jBVFa6hpqWVgwgAWWbnkpGZ1Z6nSAYWxiEgPda2L\nelQ2nmVZ0Wo+rzxAtCuKB0fewz0ZM4lxfxEN17LHsHSewlhEpJfx+n28XvY2Gw6/Tqu/lZzULPKt\nBQxKSPvKa3vzHsOhpDAWEelFDtWU8cqu1RypOU5STCKLrFympN+Iy3X1fQ2Cvca1KIxFRHqFhtYG\n1hzcyLsnPgDg1sFTmJ/1AIkxCR2+N1hrXMsXFMYiIhHMtm12nfqEFSXrqG2pIz1xEN+d+hj9GeR0\naXIJhbGISISqaKhkqSnkQFUxMe5o5oy6j7tHzGBwWqr2jA4zCmMRkQjj9Xt548hWNpW+Savfy9h+\nOSzMWUBaQn+nS5OrUBiLiESQkurDFBxYSXnDaTyxSTyWPZfJAye2O0FLnKcwFhGJAHWt9awpeZX3\nTn6ECxe3D72FuaPuIyGmj9OlSScojEVEejDbtvmw/GMKS9ZT11rP0KTBLLJyGZmc4XRpEgCFsYhI\nD3Wq/jRLzSqKqg8S645hQdaDzBx2G1HuKKdLkwApjEVEephWXyuby7awuWwLXtvHuP5jeDRnPv37\n9HO6NOkihbGISA9SVFVCgSnkdMMZkmP78kjOPG5IG6cJWj2cwlhEpAeobaljVckGPijfhQsXdw6b\nzkOjZtMnOt7p0qQbKIxFRMKY3/az4+ROVpe8Sr23geGeoSyycsnoO9zp0qQbKYxFRMLUyfpTFBwo\n5GDNYeKiYnk4ey4zht6iCVoRSGEsIhJmWnytvFb6Jq8f2YrP9jExbRyPZM8lNT7F6dIkSBTGIiJh\nZH9lEUuLVnGmsZLUuBQWWvMZP+A6p8uSIFMYi4iEgZrmWgpL1rHz1Ce4XW5mDZ/BAyPvIT46zunS\nJAQUxiIiDvLbfraf+IA1BzfS6G0io+9wFll5DPcMcbo0CSGFsYiIQ47XnaTgQCGHz5URHxXPwpz5\n3DZ0Gm6X2+nSJMQUxiIiIdbsa2Hj4Td48+g2/LafGwdOIC97DilxyU6XJg5pN4wty4oB/gBkAHHA\nz4H9wMuAH9gLPGGMsYNbpohIZNh7Zj/LilZztqmK/vGpLLQWcH3/MU6XJQ7rqGf8daDCGPMNy7JS\ngT3AbuApY8w2y7JeAuYBq4Ncp4hIj1bdXMOKorXsrvgMt8vNvRkzuT9zFrFRsU6XJmGgozB+BVjR\n9rUbaAVuNMZsa3tuI3AvCmMRkSvy2362HX+fdQc30eRrZlRyBousPIYkpTtdmoSRdsPYGFMPYFmW\nh/PB/I/Ac5e8pA7QRQ4RkSs4WnucggOFlNUepU90H75m5XHLkJs1QUu+osMJXJZlDQcKgReNMQWW\nZf3LJd/2ANWdOVFamqdrFUqnqY2DT20cGj29nZtam1i2dz2vFr+FbdvcljGFv7ghj5T4vk6XdlFP\nb+NI09EErkHAZuC7xpgtbU/vtizrDmPMVuB+4M3OnKiiovaaCpX2paV51MZBpjYOjZ7eznsqPmd5\n0Wqqm2tI69OfhdYCxvbLobUWKmrD4+fq6W3cEwT6YaejnvFTnB+GfsayrGfanvs+8IJlWbHAPr64\npiwi0mtVNVWzvGgNn575nChXFPdlzmJ2xl3ERsU4XRoAzy3dzf7SKgAmZqexOG+8wxXJpVy2HZK7\nkmx9CgsufdINPrVxaFypnS8NkrGZqSzJn+REaVfk8/vYemw76w5vpsXXQlbKSBZZuaQnDnK6tIue\nW7qbfW3td0GqJ47FeRPISNdwdTCkpXlcgbxeswhEJKxdCBIbsIF9pVU8+eJ2ysqd/2BUdu4oz+78\nDStL1hPjjuaxsY/yg0nfDqsgBi5+kLlUVW0zL6z81IFq5Eq0ApeIhLX2guT5J6Y7UBE0eptYd2gT\n2469j43NtPSbWJD1IEmxiY7UIz2fwlhEpJNs22Z3xWesKFpLTcs5BiWkkW/lkpM62unS2jU2M/Wq\nw9QSHhTGIhLWwiVIKhvPsqxoNZ9XHiDaFcWDI+/hnoyZxLid/zPa0TX1JfmTePLF7VTVNgPQPzme\nZ79za8jrlKvTBK4IoclFwac2Do0rtfOlQZLqiQvp8LTP7+Oto++w4fDrtPpbyUnNIt9awKCEtJDV\n0J7OTs4qK6+9eI34mW9NIzkuKqR19jaBTuBSGEcIBUXwqY1D40rtfGmQdHYGcHfMwD5UU0bBgZWc\nqC8nKSaRvOw53DxoEi5XQH9ng+qvfvkWV/or3t6HFv0uB1+gYez8+IqISAcy0j0B9Ya/3Fu8MAO7\ns0He0NrAmoMb2X7iQ2xspg+ZwrzRD5AYk9Cl+kU6ojAWkYjT1RnYtm2z69QnrChZR21LHYMTB5Fv\n5ZKVMjKY5V6TcLmmLtdGYSwiAlQ0VLKsaBX7zxYR445m7qj7mDViBtFhMEGrPV+enBXqa+rSPcL7\nt0xEpAsC6S16/V7eOLKVTaVv0ur3MrZfDvnWAgb06R+qcq/Z4rwJl11Tl55HE7gihCZkBJ/aODS6\nq50701ssqT5MwYGVlDecpm+sh4ez53DjwIlhNUErGPS7HHyawCUiQvu9xbrWetaUvMp7Jz/ChYsZ\nQ29hzqj7SIjp40SpIgpjEYlMV5qBbds2H5Z/TGHJeupa6xmaNJhFVh4jk0c4VKXIeQpjEekVTjVU\nsNSsoqiqhFh3DAuyHmTmsNuIcmvxC3GewlhEIlqrr5XNZVvYXLYFr+1j/ICxPJI9n/59Up0uTeQi\nhbGIRKyiqhIKTCGnG86QEpfMI9lzmZg2LuInaEnPozAWkYhT21LHqpINfFC+CxcuZg67jYdG3Ut8\ndLzTpYlckcJYRMJeZ9eZ9tt+dpzcyeqSV6n3NjDcM5SvWXmM6DsslOWKBExhLCJhrbPrTJ+sP0XB\ngUIO1hwmLiqWh7PnMmPoLZqgJT2CwlhEwlpH60y3+FrZVPombxzZis/2cUPaOB7OnktqfIoD1Yp0\njcJYRHqs/ZVFLDWFnGk6S2pcCrGnJrDjwwR28HGXt00UcYLCWES6TXfsIfxlV1pnOiXFZuRNJfx2\nzxrcLjezRsygZNdADhyuu/iaQLdNFHGS2+kCRCQyXLi2awM2X4RhWXnX10C+NNzPs/EMP4H7uq3s\nP/c5mX1H8Pc3LSY36yHMJUF8wYXhbJFwp56xiHSLru4hfKnnlu5mf1kV2JAQH019k/fi91x9aokd\n+TnepGqi7XgW5szntqHTcLvUp5CeT2EsImHhy7OmLwax20v00INEp5fictm4zw3hmfv/kuS4vpe9\nP5BtE0XCjT5Siki3GJv51eUlAwnDK/Ws3cmniRv/LjGDD2M3x9NsJhN7/OavBDHAkvxJpHriLjv3\n809M1/Vi6RHUMxaRbrEkfxJ//ewWvL7ze6RHR7k6PTz9FTFNxGbsJ6rfKWy/i9YTI/GeyCI1MaHd\ncG9v28RABWMymsjVuGzbDsV5bG1kHVzaLDz41Mbt+/IwM3zRM+5M7/T8+88SNegIMcOKcEX58Nem\n0FJ6PXaj52JPNxSu9WcJd/pdDr60NE9AC6BrmFpEukV7E7g6Y+GDA0kY/wGxGfvBdhF9ciJ/P+V7\npEQPCPm132v9WUQCpWFqEXFUk7eJ9Yc38/bR7dh9bKLODSO6/Hq+P38KGemekPWGRZykMBaRbtGV\n2cx7Kj5nedFqqptrSOvTn3wrl9utGx0fQr3Wmdm63iyB0jXjCKFrQMGnNu7Yky9up6q2GaDda7xV\nTdUsL1rDp2c+J8oVxb0ZdzI74y5iomLCpp07+7N8WU+43hwubRzJAr1mrJ6xSJjpyb2qjmYz+/w+\n3j62nfWHN9PiayE7ZRT51gLSEweFutQOdXVmdncsfiK9j8JYJIx0drvAcNXeNd6yc0f5rwMrOVZ3\ngsSYBB7Nmc+09Mm4XAF1IEJG16sllBTGImEkEntVjd5G1h16jW3H3sfGZlr6TSzIepCk2ESnSwsK\nrQQmXaEwFpGgsG2b3RWfsaJoDTUttQxKSCPfyiUndbTTpQXVkvxJXb7eLL1Xp8LYsqypwC+NMTMt\ny5oErAOK2779kjFmebAKFOlNIqVXVdl4lmVFq/m88gDR7mgeGnkvd2fcSYy7d3z+786VwKR36PBf\nhmVZPwQeAy7sTzYZ+JUx5lfBLEykN+rpvSqf38dbR99hw+HXafW3YqVmkW8tYGBCmtOlhZSuN0ug\nOvMxtQTIBf6z7fFkIMeyrHmc7x3/wBjz1Y1ERaRLemqv6lBNGQUHVnKivhxPTBJfG5PHzYMmhe0E\nLZFw0qn7jC3LygQKjDG3WJb1OLDHGLPbsqyngFRjzN91cIiQ3MwsIqFX11LPf326hjcOvgPArFG3\n8fUJ80mKi8wJWiKdFPT7jFcZY2ravl4NvNCZN+kG8+DSTfzBpza+nG3b7Dr1CSuK11HbWsfgxEEs\nsvIYnZJJ4zk/jXStrdTOwac2Dr60tMBuRexKGG+yLGuxMeYjYBawswvHEJEerKKhkqWmkANVxcS4\nY5g36n7uGnE70b1kgpZIdwvkX86FoeZvAy9altUKnAT+uturEpGw5PV7eePIVjaVvkmr38t1/SwW\nWgsY0Kef06WJ9GidCmNjTClwa9vXe4DbgliTiISh4qpDLDWFlDecpm+sh29kz+XGgRM0QUukG2hM\nSUTaVddaz+qSV3n/5Ee4cDFj6K3MHT2bPtF9nC5NJGIojEXkimzb5oPyXawq2UBdaz1DkwbztTF5\nZPYd4XRpIhFHYSwiX3Gq/jQFppDi6kPEumPIzXqIO4dNJ8od5XRpIhFJYSwiF7X6WtlctoXNZVvw\n2j7GDxjLoznz6Ref6nRpIhFNYSwiAJizJSw1hZxuPENKXDKP5Mxj4oDrcblcPXqPZZGeQGEs0svV\nttSxsng9H536GBcuZg67jYdG3Ut8dDzQ8/dYFukJFMYivZTf9vP+yY9YXfIqDd5GRniGssjKY0Tf\nYZe9LhL3WBYJNwpjkV7oRF05S00hB2tKiY+K4+Hsudwx7FbcLrfTpYn0SgpjkV6kxdfKptI3ef3I\n2/htPzekjeeRnLmkxCVf9T2RsseySDhTGIv0Evsri1hqCjnTdJbUuBQWWvMZP+C6Dt/X0/dYFukJ\nFMYiEa6muZaVxWvZdXoPbpebWSNm8ODIe4mLiu30MXrqHssiPYXCWCRC+W0/2098wJqDG2n0NpHZ\ndwSLrFyGeYYEfKyMdI96wyJBpDAWCQPdfR/v8bqTFBxYyeFzR+gTHc/CnAXcNnTqNU/Q0v3GIsHh\nsm2741ddO1sbWQeXNgsPvmC18Zfv44UvJkgFeh9vs6+FVw+/zltH38Fv+5k8cCJ52XNIjusbVnW2\nR7/Lwac2Dr60NE9A25mpZyzisO66j/ezM/tYXrSGs01V9I/vx0JrAdf3t9p9TyA9Xd1vLBI8CmOR\naxAOw7bVzTW8UrSWTyo+w+1yc2/GTO7PnEVsBxO0tLKWSPjQHf4iXXQhzGzA5oswKysPbPhvbOZX\nN2HozH28ftvP20e387Mdz/FJxWeMSs7kRzf/gHmj7+8wiKH9nm531ikiHVMYi3RRoGF2NUvyJ5Hq\nibv4+MJ9vO31To/UHuPZnb/lleI1uF1uvjYmj7+98dsMSUoP6NzBrlNEOkfD1CJhoLP38TZ5m1h/\neDNvH92Ojc3Ng24kL/shPLFJAZ+zKytr6X5jkeDQbOoIodmRwfflNg7V7OIL9lTsZXnRGqqbaxjY\nZwALrQWM6Zd9TccMx5W19LscfGrj4NNsapEQCdUykWebqlhetIbPzuwj2hXF/Zl3MztjJjFRMdd8\nbPV0RcKDwljkGgQzzHx+H28f2876w5tp8bWQnTKKfCuX9MSB3XYOrawlEh4UxiLXIFhhVnruCAUH\nCjlWd4JTtRxOAAAY10lEQVTEmAQW5sxnavpkXK6ARr5EpIdQGIuEkUZvI2sPvsY7x9/HxuaWwTcz\nP+sBkmISnS5NRIJIYSwSBmzbZnfFZ6woWkNNSy2DEgayyMolO3WU06WJSAgojEUcdqbxLMuKVrGv\n0hDtjuahkbO5O+MOYtz65ynSW+hfu4hDfH4fbx7Zxqulb9Dqb2VMajYLrQUMTBjgSD3hsLSnSG+l\nMBZxwKGaUgoOFHKivhxPTBJfH/MwNw26wbEJWlqnWsRZCmOREGpobWD1wY1sP/EBALcNmcq80feT\nEJPgaF3akUnEWQpjkRCwbZudpz5hZfE6alvrGJKYzqIxuYxKznS6NBEJAwpjkSA73XCGZWYVB6qK\niXHHMG/0/cwaPoMod5TTpV3UlXWqRaT7KIxFgqTV7+WNsrfZVPYWXr+X6/pbLMxZwIA+/Zwu7StC\ntbSniFyZwlgkCIqrDlJgVnGq4TR9Yz08kjOPSWnjw3oFLa1TLeIchbFIN6prqWfVwQ3sOLkTFy5m\nDL2VuaNn0ye6j9OldUjrVIs4R2Es0g1s2+aD8l0UlqynvrWBYUlDWDQml8y+I5wuTUR6AIWxyDUq\nrz/NUlNIcfUhYqNiyc16iDuHTQ+rCVoiEt46FcaWZU0FfmmMmWlZVhbwMuAH9gJPGGPs4JUoEp5a\nfa28VraF18u24LV9jB9wHY/mzKNffKrTpYlID9NhGFuW9UPgMaCu7alfAU8ZY7ZZlvUSMA9YHbwS\nRcLPgbPFLDOrON14hpS4ZB7NmcfEtHFOlyUiPVRnesYlQC7wn22PbzTGbGv7eiNwLwpj6eE6uy5z\nbUsdK4vX89Gpj3HhYubw23ho5L3ER8eHslwRiTAdhrExptCyrMxLnrr03ow6ILkzJ0pL0/q2waY2\n7pqn/+29r6zL/Hcvvcc//uVUsoalAOC3/bx58F3+9Okq6lsaGJU6gr++6WuM6pfhVNkRTb/Lwac2\nDi9dmcDlv+RrD1DdmTdVVNR24VTSWWlpHrVxF+0prvjKc5U1Tfz09zt4/onpnKgrp8AUcqimlPio\nOB7JnseMYbfg9rnV5kGg3+XgUxsHX6AfdroSxrsty7rDGLMVuB94swvHEAl7tsvLmoMbeePIVvy2\nn6nDJjE34wFS4jo1GHQZbU8oIu1xB/DaCzOmnwR+YlnWe5wP8xXdXpVICI3N/Ors577p1cSP387m\nsi0kx/bl2xMe58npf93lIN5XWoXN+X9EF7YnLCtXz0REznPZdkjuSrI1JBJcGna6NhfXZY5pInFU\nMf7k47hdbu4afjsPjLyHuKjYLrfxX/3yLa70r0zrP1+ZfpeDT20cfGlpnoDWvtWiHyLA/5M7nl+/\ntRbvwH34o7xk9h3BIiuXYZ4hTpcmIr2Awlh6vWO1J3jleCHewUfoEx3PvNFzmD5kKm5XIFdxrk7b\nE4pIRxTG0ms1+1rYcHgzW46+i9/2M3ngRPKy55Ic1723fGh7QhHpiMJYeqXPzuxjmVlNVXM1A+L7\nsdBawHX9raCdT9sTikh7FMbSq1Q31/BK0Ro+qdhLlCuK2Rl3cV/mLGKjYoJ6Xm1PKCLtURhLr+C3\n/Ww99h7rD71Gk6+Z0cmZLBqTx+DEQU6XJiKiMJbId+TcMQrMSo7UHichug9fH/Mw0wbf1G0TtERE\nrpXCWCJWk7eJ9Yc28/ax7djYTEm/kdysh/DEJjldmojIZRTGEnFs22bPmc95pWgN1c01DOwzgHwr\nF6tfltOliYhckcJYIkplYxWvFK/mszP7iXZF8UDm3dybMZOYIE/QEhG5FgpjiQg+v48tx95lw6HN\ntPhbyU4ZxSIrl0GJA50uTUSkQwpj6fEO1xyhwKzkeN1JEmMSWGgtYGr6ZFyugJaGFRFxjMJYeqxG\nbyNrD27ineM7sLGZNvgmFox+kKTYRKdLExEJiMJYehzbtvn49KesKF7LuZZaBiUMZJG1gOzU0U6X\nJiLSJQpj6VHONFayzKxm31lDtDuah0bO5u6MO4hx61dZRHou/QWTHsHn9/HmkW28Wvo6rX4vY1Kz\nWWgtYGDCAKdLExG5ZgpjCXsHq0tZago5UV+OJyaJr4+Zw02DbtAELRGJGApjCVv1rQ2sOfgq2098\nCMD0IVOZP/p+EmISHK5MRKR7KYwl7Ni2zUendrOyeB11rfUMSUwn38pldEqm06WJiASFwljCyumG\nCpaZ1RyoKibGHcO80fcza/gMotxRTpcmIhI0CmMJC61+L2+Uvc2msrfw+r1c199iYc4CBvTp53Rp\nIiJBpzAWxxVXHaTAFHKqoYK+sR4eyZnHpLTxmqAlIr2GwlgC9tzS3ewvrQJgbGYqS/Indek4dS31\nrCrZwI7ynbhwMWPorcwdPZs+0X26s9yQ6q62EZHexWXbdijOY1dU1IbiPL1WWpqHULTxc0t3s68t\nbC5I9cSxOG8CGemeTh3Dtm12lO9iVcl66lsbGJo0mK+NySOz74hglNxtOmrj7mgbCd3vcm+mNg6+\ntDRPQEN77mAVIpFp/5fCBqCqtpkXVn7aqfeX15/mX3f/O3/av5xWXyu5WQ/x9zctDvsg7oxrbRsR\n6b00TC0h0epr5bWyt9hc9jY+28f4AWN5NGc+/eJTnS5NRMRxCmMJyNjM1KsOxV7NgbPFLDOrON14\nhpS4ZB7JmcfEAddH3AStrrSNiAhomFoCtCR/EqmeuIuPUz1xPP/E9CteE61tqePlz5fym09+R0Vj\nJTOH38bTU5/khrRxERfEEFjbiIhcSj1jCdjivAkXr4Neqdfnt/28f+IjVh18lUZvIyM8Q1k0Jo8R\nnmGhLjXkOmobEZEr0WzqCBEusyNP1JVTYAo5VFNKfFQcD42azR3DbsXt6vmDMOHSxpFO7Rx8auPg\nC3Q2tXrG0i1afC1sLH2TN45sxW/7uSFtPI/kzCUlLtnp0kREwp7CWK7Z55WGZWYVlU1nSY1LYaE1\nn/EDrnO6LBGRHkNhLF1W03yOlcXr2HV6D26Xm7tH3MEDI+8hLirW6dJERHoUhbEEzG/7eff4DtYc\n3ESTr4nMviNYZOUyzDPE6dJERHokhbEE5GjtCQrMSsrOHaVPdDz51gKmD5kaERO0RESc0uUwtizr\nY6Cm7eEhY8xfdU9JEo6avM28evh1thx7F7/tZ/LAieRlzyU5TvfQiohcqy6FsWVZ8QDGmJndW46E\no8/O7GOZWU1VczUD4vux0FrAdf0tp8sSEYkYXe0ZTwQSLMt6re0YTxljPui+siQcVDVV80rxWvZU\n7MXtcjM74y7uy5xFbFSM06WJiESUroZxPfCsMeb/WJaVDWy0LCvHGOPvxtrEIX7bz9Zj77Hu0Caa\nfS2MTs4k38plSFK606WJiESkLq3AZVlWLOA2xjS1Pf4AyDXGHL/KW0KyzJdcu0Nny/jfO/+LQ1VH\nSIxN4BsTc7lz5C2aoCUiEpiQrMD1TWAC8IRlWUOAvsDJ9t6gpdeC61qXt2v0NrH+0GtsPfYeNjY3\nD7qRvOyH8MQmUXmmvhsr7bm0hGBoqJ2DT20cfGlpgU1u7WoY/x/gPyzL2tb2+Jsaou6ZbNtmT8Ve\nXileS3VzDQP7DCDfysXql+V0aSIivUaXwtgY4wW+0c21SIhVNlaxvGg1eyv3E+2K4oHMu7k3YyYx\nmqAlIhJSWvSjF/L5fWw59i4bDm2mxd9KdsooFlm5DEoc6HRpIiK9ksK4lzlcU0aBKeR43UmSYhLJ\nt3KZkn4jLldAcw1ERKQbKYx7iYbWRtYe2sS7x3dgY3PL4JuZn/UASTGJTpcmItLrKYwjnG3bfHx6\nDyuK13GupZb0hIHkW7lkp45yujQREWmjMI5gZxorWWZWs++sIcYdzZxRs7l7xB1Eu/W/XUQknOiv\ncgCeW7qb/aVVAIzNTGVJ/iSHK7oyr9/Lm0e2sbH0DVr9Xsb2y2FhzgLSEvo7XZqIiFyBwriTnlu6\nm31tQQywr7SKJ1/czuK8CWSkh8/ORSXVh1lqCjlZfwpPbBKPZc1h8qAbNEFLRCSMKYw7af8lQXxB\nVW0zL6z8lOefmO5ARZera67nz/tX8N7JDwG4bchU5o2+n4SYBIcrExGRjiiMezjbtvno1G5WbV/P\nueY6hiSms2hMLqOSM50uTUREOklh3EljM1MvG6YGSPXEsThvgkMVwemGCpaaVZiqEmKjYpg/+gHu\nGn47Ue4ox2oSEZHAKYw7aUn+JJ58cTtVtc3A+SB2ani61e/ljbK32VT2Fl6/l+v7j+E7076OqzHO\nkXpEROTaKIwDsDhvAi+s/PTi104oqjrIUlPIqYYKkmM9PJwzj0lp4xmY1JeKRu3CIiLSEymMA5CR\n7nGsN1zXUk9hyXo+KN+FCxd3DLuVOaNm0ye6jyP1iIhI91EYhznbttlxcierDm6gvrWBYUlDWDQm\nl8y+I5wuTUREuonCOIyV159mqSmkuPoQsVGx5GY9xJ3DpmuClohIhFEYh6FWXyuvlb3F5rK38dk+\nJgy4nkdy5tIvPtXp0kREJAgUxmHmwNlilplVnG48Q0pcMo/mzGNi2jinyxIRkSBSGIeJ2pY6Vhav\n56NTH+PCxV3Db+fBkfcQHx3vdGkiIhJkCmOH+W0/75/8iNUlr9LgbWSEZxiLxuQywjPM6dJERCRE\nFMYOOlFXToEp5FBNKfFRcTySM48ZQ2/B7XI7XZqIiISQwtgBLb4WNpa+yRtHtuK3/UxKG8/DOXNJ\niUt2ujQREXGAwjjEPq80LDOrqGw6S7/4VBbmzGfcgLFOlyUiIg5SGIdITfM5VhavY9fpPbhdbu4Z\ncSf3j7ybuKhYp0sTERGHKYyDzG/7eff4DtYc3ESTr4mRfUewaEweQ5MGO12aiIiECYVxEB2rPUGB\nKaT03BH6RMeTb+UyfcgUTdASEZHLKIyDoMnbzKuHX2fLsXfx235uGnQDuVlzSI7zOF2aiIiEIYVx\nN/vszD6WmdVUNVczIL4fC60FXNffcrosEREJYwrjblLVVM0rxWvZU7GXKFcU92XcxezMWcRGxThd\nmoiIhDmF8TXy2362HnuPdYc20exrYXRyJovG5DE4cZDTpYmISA+hML4GR84d47/MSo7WHicxOoGH\nx8xl2uCbNEFLREQCojDugkZvE+sPvcbWY+9hYzMl/UZysx7CE5vkdGkiItIDKYwDYNs2eyr28krx\nWqqbaxiYMID8nFysfllOlyYiIj2YwriTKhurWF60mr2V+4l2RfHAyHu4d8SdxGiCloiIXCOFcQd8\nfh9bjr3LhkObafG3kpMymnxrAYMSBzpdmoiIRAiFcTsO15RRYAo5XneSpJhE8q1cpqTfiMvlcro0\nERGJIArjK2j0NrL24CbeOb4DG5tbBt/M/KwHSIpJdLo0ERGJQF0KY8uy3MD/AiYAzcC3jDEHu7Mw\nJ9i2zcen97CieB3nWmpJTxhIvpVLduoop0sTEZEI1tWe8Xwg1hhzq2VZU4Hn257rsc40VrLMrGbf\nWUOMO5o5o2Zz94g7iHZr8EBERIKrq0kzHdgEYIz5wLKsm7qvpNDy+X28eWQbr5a+Tqvfy9h+OSzM\nWUBaQn+nSxMRkV6iq2HcFzh3yWOfZVluY4y/G2oKmYPVpRSYlZysP4UnNonHsuYwedANmqAlIiIh\n1dUwPgdcuh9gh0GclhY+2wfWNdfzt8v+jZq4EgCSm7P59YK/ISm2Z0/QCqc2jlRq49BQOwef2ji8\ndDWMtwNzgFcsy5oGfNrRGyoqart4qu5j2zYfndrNf+5dhT+uGX9DEq2l11Nel8p3D73D4rwJZKT3\nzF/QtDRPWLRxJFMbh4baOfjUxsEX6IedrobxKuAey7K2tz3+ZhePEzKnGypYalZhqkqwbTfeIxbe\nUxlgn9/Uoaq2mRdWfsrzT0zvtnM+t3Q3+0urABibmcqS/EnddmwREYkcXQpjY4wNfKebawmKVr+X\nN8reZlPZW3j9Xsb1H8OuNwfib0kI6nmfW7qbfW1BDLCvtIonX9zeo3vfIiISHBG9119R1UF+8eGv\nWX94M4nRCXxr3Df49oRvMmbI0K+8NtUTx+K8Cd127v2XBPEFF3rfIiIil4rIm2jrWuopLFnPB+W7\ncOHijmHTmTNqNn2i4wFYkj+JJ1/cTlVtM3A+iLtzeFpERCQQERXGtm2z4+ROVh3cQH1rA8OThrBo\nTB4ZfYd/5bWL8yZc7KV2Z4/4grGZqZcNU0P3975FRCQyuGzbDsV57GDP3CuvP8VSs4ri6kPERsUy\nZ+S93DFsOlHuqKCetz2h7H1rdmTwqY1DQ+0cfGrj4EtL8wS0YEWP7xm3+Fp5rewtXi97G5/tY8KA\n63k0Zx6p8SlOlxb03reIiEQGR8P4Wm/9OXC2mKWmkIrGSlLjUngkZx4T064PRqldkpHu0bVoERHp\nkGNhfC23/pxrqWVl8Tp2nvoEFy7uGn47D468l/jouMuOr3t8RUSkJ3Ds1qau3Prjt/28e3wHP93x\nHDtPfUKGZzh/f/Ni8rLnfCWI95VWYQM2XwR9WbmukYiISPjpMdeMT9SVU2BWcqimjPioOB7JmceM\nobfgdn3180R7Qa9hYxERCTeOhXFnb/1p8bWwsfRN3jiyFb/tZ9LACTycPYeUuORQlisiIhI0joVx\nZxbe+LzyAMvMaiqbztIvPpWFOfMZN2Bsh8fWPb4iItKTODpMfbVbf6qba1hRvI7dpz/F7XJzz4g7\nuX/k3cRFxXbquFphS0REehJHwzgj3cPg/gnsL63ipy9/xJjMZKbc1szag5to8jUxsm8Gi8bkMjRp\ncMDH1j2+IiLSUzh+n/GF4WRXwjkOJbxPaVENce548q1cpg+ZcsUJWp2he3xFRKSncDSM95dWgdtL\n9NASotPLcLlsvGcGE3d2ArffOc3J0kRERELG0TB2p5wmOmMf7rgm/E0JtJReh//cAFyeuI7fLCIi\nEiEcCeOqpmpeKVpDbM7n2H4XrcdH4T0xGuwozXoWEZFeJ6Rh7PP72Hr8PdYfeo1mXwujk0dy9ONM\nmirP94Q161lERHqjkIVx2bmjFJhCjtYeJzE6gYfHzGPa4MkcHVqvWc8iItKrhSSM/+Pj5Wwqfhsb\nm6npk1mQ9SCe2CRAs55FRERCEsYbi7cwMGEAi6xcclKzQnFKERGRHiMkYfzouIe4dcCtxLh7zL4U\nIiIiIROSLRQfvv5BBbGIiMhVOLafsYiIiJynMBYREXGYwlhERMRhCmMRERGHKYxFREQcpjAWERFx\nmMJYRETEYQpjERERhymMRUREHKYwFhERcZjCWERExGEKYxEREYcpjEVERBwW8FZKlmW5gGNAUdtT\n7xtjnurWqkRERHqRruxrOBrYZYyZ293FiIiI9EZdCePJwFDLst4CGoG/NcYUdfAeERERuYp2w9iy\nrL8CfvClp78L/LMxZqVlWdOBPwFTglSfiIhIxHPZth3QGyzL6gN4jTGtbY+PGWOGBaM4ERGR3qAr\ns6mfoa23bFnWROBIt1YkIiLSy3TlmvEvgT9ZlvUA4AUe79aKREREepmAh6lFRESke2nRDxEREYcp\njEVERBymMBYREXGYwlhERMRhXZlN3SmWZbmB/wVMAJqBbxljDgbrfL2VZVkxwB+ADCAO+LkxZp2z\nVUUmy7IGAruAWVp1rvtZlvUjYA4QA/zWGPN/HS4porT9Tf49kAP4gf9mjDHOVhU5LMuaCvzSGDPT\nsqws4GXOt/Ne4AljTLuzpYPZM54PxBpjbgX+P+D5IJ6rN/s6UGGMmQHcB/zW4XoiUtuHnn8H6p2u\nJRJZlnUncEvb34s7gVGOFhSZ7gUSjTG3AT8F/snheiKGZVk/BH7H+Q4RwK+Ap9r+LruAeR0dI5hh\nPB3YBGCM+QC4KYjn6s1e4fxCLHD+/6fXwVoi2bPAS8BJpwuJUPcCn1mWtRpYB6x1uJ5I1Agkt+28\nlwy0OFxPJCkBcjkfvAA3GmO2tX29Ebi7owMEM4z7AucueexrGyaRbmSMqTfG1FmW5eF8MP+D0zVF\nGsuyHuf86MPmtqdc7bxcuiaN85vQPAx8G/izs+VEpO1APHCA86M8v3G2nMhhjCnk8o7QpX8j6jj/\n4addwQzHc4Dn0nMZY/xBPF+vZVnWcOAt4I/GmKVO1xOBvgncY1nWFuAG4P9aljXI4ZoizRlgszHG\n23Y9vsmyrAFOFxVhfghsN8ZYfPF7HOtwTZHq0qzzANUdvSGYYbwdeADAsqxpwKdBPFev1RYKm4Ef\nGmNedriciGSMucMYc6cxZibwCfAXxphTTtcVYd7l/JwHLMsaAiQClY5WFHkS+WK0sorzE+WinCsn\nou22LOuOtq/vB7a192II4mxqYBXnexPb2x5/M4jn6s2e4vwQyDOWZV24dny/MabJwZpEAmKM2WBZ\n1gzLsj7kfCfhux3NPpWAPQv8h2VZ73A+iH9kjGl0uKZIc+F39kngd20jD/uAFR29UWtTi4iIOEwT\nqkRERBymMBYREXGYwlhERMRhCmMRERGHKYxFREQcpjAWERFxmMJYRETEYf8/vJrNTTHm1pYAAAAA\nSUVORK5CYII=\n", "text": [ "" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Model Fitting with Errors\n", "\n", "The maximum likelihood formalism above gives us a natural means of including measurement errors in the dependent variables (i.e. $y$). We simply change the width of each individual Gaussian to reflect the (known) error in our data points!\n", "\n", "That is, we use\n", "\n", "$$\n", "\\log L(\\{y_i\\}~|~I) = \\sum_{i=1}^N \\log p(y_i~|~y_{i, true},\\sigma_i)\n", "$$\n", "\n", "note the $\\sigma_i$ at the end of the expression. From this, we can derive the weighted least-squares cost function:\n", "\n", "$$\n", "C_{LS}(\\{x_i, y_i, \\sigma_i\\}~|~\\theta) = \\sum_i \\frac{[y_i - M(x_i;\\theta)]^2}{2\\sigma_i^2}\n", "$$\n", "\n", "So already we've gained some insight about how to extend least-squares recipe into another regime!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But let's skip straight toward the closed form here. Based on some arguments we won't cover here, we'll start by defining an **error covariance matrix**:\n", "\n", "$$\n", "\\Sigma = \\left[\n", "\\begin{array}{lllll}\n", "\\sigma_1^2 & 0 & 0 & \\cdots & 0\\\\\n", "0 & \\sigma_2^2 & 0 & \\cdots & 0\\\\\n", "0 & 0 & \\sigma_3^2 & \\cdots & 0\\\\\n", "\\vdots & \\vdots & \\vdots & \\ddots & \\vdots\\\\\n", "0 & 0 & 0 & \\cdots & \\sigma_N^2\n", "\\end{array}\n", "\\right]\n", "$$\n", "\n", "we can write the likelihood as follows:\n", "\n", "$$\n", "L(x, y, dy~|~\\theta) = (2\\pi|\\Sigma|)^{-1/2}\\exp\\left[-\\frac{1}{2}(y - X\\theta)^T\\Sigma^{-1}(y - X\\theta)\\right]\n", "$$\n", "\n", "again minimizing this with respect to $\\theta$ gives:\n", "\n", "$$\n", "X^T\\Sigma^{-1}(y - X\\hat{\\theta}) = 0\n", "$$\n", "\n", "which yields the maximum likelihood solution:\n", "\n", "$$\n", "\\hat{\\theta} = [X^T\\Sigma^{-1}X]^{-1}X^T\\Sigma^{-1}y\n", "$$\n", "\n", "So this is very similar to our previous closed-form solution, except with some diagonal error matrices thrown in. Let's compute this:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "XT_Sigma_X = np.dot(X.T / dy ** 2, X)\n", "XT_Sigma_y = np.dot(X.T / dy ** 2, y)\n", "theta_LS_err = np.linalg.solve(XT_Sigma_X, XT_Sigma_y)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 10 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's use this with our full data + errors to find a fit to the data:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "plt.errorbar(x, y, dy, fmt='o')\n", "plt.plot(xfit, model(theta_LAD, xfit), label='Least Abs. Dev.')\n", "plt.plot(xfit, model(theta_LS, xfit), label='Least Sq.')\n", "plt.plot(xfit, model(theta_LS_err, xfit), label='Fit w/ errors')\n", "plt.legend(loc='best');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 11 }, { "cell_type": "markdown", "metadata": {}, "source": [ "All three results are very similar.\n", "\n", "But what if some of our data points have very large errors?" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from fig_code import linear_data_sample_big_errs\n", "x, y, dy = linear_data_sample_big_errs()\n", "plt.errorbar(x, y, dy, fmt='o');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 12 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's redo the fit now with and without the errorbars:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "theta_LAD = fmin(least_abs_deviation, theta_guess, args=(x, y))\n", "\n", "X = np.vstack([np.ones_like(x), x]).T\n", "\n", "theta_LS = np.linalg.solve(np.dot(X.T, X),\n", " np.dot(X.T, y))\n", "\n", "theta_LS_err = np.linalg.solve(np.dot(X.T / dy ** 2, X),\n", " np.dot(X.T / dy ** 2, y))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Optimization terminated successfully.\n", " Current function value: 173.046330\n", " Iterations: 120\n", " Function evaluations: 220\n" ] } ], "prompt_number": 13 }, { "cell_type": "code", "collapsed": false, "input": [ "plt.errorbar(x, y, dy, fmt='o')\n", "plt.ylim(-20, 40)\n", "plt.plot(xfit, model(theta_LAD, xfit), label='Least Abs. Dev.')\n", "plt.plot(xfit, model(theta_LS, xfit), label='Least Sq.')\n", "plt.plot(xfit, model(theta_LS_err, xfit), label='Least Sq. w/ errors')\n", "plt.legend(loc='best');" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "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\n", "text": [ "" ] } ], "prompt_number": 14 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Notice something interesting: the errors have a much larger effect on the least squares solution than on the Least Absolute Deviation solution! This is reflective of the well-known fact that the LAD solution is more robust to outliers than is the least squares solution." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Generalized Linear Models\n", "\n", "One of the powerful applications of the above formalism is its use in **generalized linear models**. Essentially, we can modify the $X$ matrix at will to quickly find closed-form solutions to a large number of problems. For example, we could fit a third-order polynomial model such as the following:\n", "\n", "$$\n", "y_{model} = \\theta_0 + \\theta_1 x + \\theta_2 x^2 + \\theta_3 x^2\n", "$$\n", "\n", "All that takes is to compute the above solution, but use the following $X$ matrix:\n", "\n", "$$\n", "X = \\left[\n", "\\begin{array}{llll}\n", " 1 & x_1 & x_1^2 & x_1^3\\\\\n", " 1 & x_2 & x_2^2 & x_2^3\\\\\n", " 1 & x_3 & x_3^2 & x_3^3\\\\\n", " \\vdots & \\vdots & \\vdots & \\vdots\\\\\n", " 1 & x_N & x_N^2 & x_N^3\n", "\\end{array}\n", "\\right]\n", "$$\n", "\n", "We could, of course, add any number of columns to make the polynomial as high as we'd like.\n", "\n", "Similarly, we could fit a periodic model to data such as this one:\n", "\n", "$$\n", "y_{model} = \\theta_0 + \\theta_1\\sin(\\omega x) + \\theta_2\\cos(\\omega x)\n", "$$\n", "\n", "For this, we use the following $X$ matrix:\n", "\n", "$$\n", "X = \\left[\n", "\\begin{array}{lll}\n", " 1 & \\sin(\\omega x_1) & \\cos(\\omega x_1)\\\\\n", " 1 & \\sin(\\omega x_2) & \\cos(\\omega x_2)\\\\\n", " 1 & \\sin(\\omega x_3) & \\cos(\\omega x_3)\\\\\n", " \\vdots & \\vdots & \\vdots \\\\\n", " 1 & \\sin(\\omega x_N) & \\cos(\\omega x_N)\\\\\n", "\\end{array}\n", "\\right]\n", "$$\n", "\n", "Note that for the model to be linear, we must **specify** $\\omega$. We could use the maximum likelihood approach to fit for $\\omega$ itself, but it will no longer be a linear model." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the morning breakout session, we'll explore the construction of some of these generalized linear models." ] } ], "metadata": {} } ] }