{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Linear Regression Tutorial\n", "\n", "\n", "Author: Andrew Andrade ([andrew@andrewandrade.ca](mailto:andrew@andrewandrade.ca))\n", "\n", "This is part one of a series of tutorials related to [regression](http://datascienceguide.github.io/regression/) used in data science. The cooresponding notes can be found [here](http://datascienceguide.github.io/regression/).\n", "\n", "In this tutorial, We will first learn to fit a simple line using Least Squares Linear Regression (LSLR), plot residuals, residual distribution, statistics approach to linear regression, horizontal residuals and end with total least squares linear regression.\n", "\n", "## Fitting a line using LSLR\n", "\n", "First let us import the necessary libraries and read the data file. You can follow along by downloading the dataset from here: TODO." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "from math import log\n", "from sklearn import linear_model\n", "\n", "#comment below if not using ipython notebook\n", "%matplotlib inline\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now lets read the first set of data, take a look at the dataset and make a simple scatter plot." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xy
0 10 8.04
1 8 6.95
2 13 7.58
3 9 8.81
4 11 8.33
5 14 9.96
6 6 7.24
7 4 4.26
8 12 10.84
9 7 4.82
10 5 5.68
\n", "

11 rows × 2 columns

\n", "
" ], "text/plain": [ " x y\n", "0 10 8.04\n", "1 8 6.95\n", "2 13 7.58\n", "3 9 8.81\n", "4 11 8.33\n", "5 14 9.96\n", "6 6 7.24\n", "7 4 4.26\n", "8 12 10.84\n", "9 7 4.82\n", "10 5 5.68\n", "\n", "[11 rows x 2 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#read csv\n", "anscombe_i = pd.read_csv('../datasets/anscombe_i.csv')\n", "anscombe_i" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "name": "stderr", "output_type": "stream", "text": [ "/usr/lib/pymodules/python2.7/matplotlib/collections.py:548: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n", " if self._edgecolors == 'face':\n" ] }, { "data": { "image/png": "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\nFFDpAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(anscombe_i.x, anscombe_i.y, color='black')\n", "plt.ylabel(\"Y\")\n", "plt.xlabel(\"X\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Luckly for us, we do not need to implement linear regression, since scikit learn already has a very efficient implementation. The straight line can be seen in the plot below, showing how linear regression attempts to draw a straight line that will best minimize the residual sum of squares between the observed responses in the dataset, and the responses predicted by the linear approximation.\n", "\n", "The coefficients, the residual sum of squares and the variance score are also calculated.\n", "\n", "Note: from reading the [documentation](http://scikit-learn.org/stable/modules/linear_model.html#ordinary-least-squares) this method computes the least squares solution using a singular value decomposition of X. If X is a matrix of size (n, p) this method has a cost of O($n p^2$), assuming that $n \\geq p$. A more efficient alternative (for large number of features) is to use Stochastic Gradient Descent or another method outlined in the [linear models documentation](http://scikit-learn.org/stable/modules/linear_model.html) \n", "\n", "\n", "If you do not know what BigO is, please read the background information from the notes (or take a algorithms course).\n" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "('Coefficients: \\n', array([[ 0.50009091]]))\n", "Residual sum of squares: 1.25\n", "Variance score: 0.67\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "regr_i = linear_model.LinearRegression()\n", "\n", "#We need to reshape the data to be a matrix\n", "# with only one column\n", "X = anscombe_i.x.reshape((len(anscombe_i.x), 1))\n", "y = anscombe_i.y.reshape((len(anscombe_i.y), 1))\n", "\n", "#Fit a line \n", "regr_i.fit(X,y)\n", "\n", "# The coefficients\n", "print('Coefficients: \\n', regr_i.coef_)\n", "\n", "# The mean square error\n", "print(\"Residual sum of squares: %.2f\"\n", " % np.mean((regr_i.predict(X) - y) ** 2))\n", "# Explained variance score: 1 is perfect prediction\n", "print('Variance score: %.2f' % regr_i.score(X, y))\n", "\n", "plt.plot(X,regr_i.predict(X), color='green',\n", " linewidth=3)\n", "\n", "plt.scatter(anscombe_i.x, anscombe_i.y, color='black')\n", "\n", "plt.ylabel(\"X\")\n", "plt.xlabel(\"y\")\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Residuals\n", "\n", "From the notes, we learnt that we use ordinary linear regression when y is dependant on x since the algorithm reduces the vertical residual (y_observed - y predicted). The figure below outlines this using a different method for linear regression (using a polyfit with 1 polynomial)." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from pylab import *\n", "\n", "# determine the line-fit\n", "k,d = polyfit(anscombe_i.x,y,1)\n", "yfit = k*anscombe_i.x+d\n", "\n", "# plot the data\n", "figure(1)\n", "scatter(anscombe_i.x,y, color='black')\n", "\n", "plot(anscombe_i.x, yfit, 'green')\n", "\n", "#plot line from point to regression line\n", "for ii in range(len(X)):\n", " plot([anscombe_i.x[ii], anscombe_i.x[ii]], [yfit[ii], y[ii]], 'k')\n", " \n", "xlabel('X')\n", "ylabel('Y')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let us plot the residual (y - y predicted) vs x." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAEPCAYAAABLIROyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHXlJREFUeJzt3Xt4VNW9xvFvLkAy4Y6KigqIQVQuSkBBEAZFRFRAbVGx\nilDPKY83EOuVowltVUS0YpVjFREVFD0VqQoqQhmgxaAEkGBFICAXxaRyCyGBkMmcP3aYXAgJE2Zm\n7T37/TxPHmbtzHRe02T9Zq2991ogIiIiIiIiIiIiIiIiIiIiIiIiIiJSyXQgF8iucOxZ4DvgG2AO\n0MRALhERibDLgIuoXACuBOLLHk8s+xIREQPia39KnS0D9lQ59gVQWvZ4BXBGBN9fRERqEMkCUJtR\nwHyD7y8i4mqmCsB4oBh4x9D7i4i4XqKB97wDGARccawntGvXLpCTkxO1QCIiMSIHOOd4nxztEcBA\n4EFgCHDwWE/KyckhEAg49is9Pd14BuU3n8Nt2ZXf/BfQLpQOOZIF4F1gOXAusB1rzv8vQEOsk8Gr\ngakRfH8REalBJKeAbqnm2PQIvp+IiITA5FVAMcvr9ZqOcEKU3xwnZwfld5o40wGOIVA2nyUiIscp\nLi4OQujXNQIQEXEpFQAREZdSARARcSkVABERl1IBEBFxKRUAERGXUgEQEXEpFQAREZdSARARcSkV\nABERl1IBEBFxKRUAERGXUgEQEXEpFQAREZeKZAGYDuQC2RWO/Rr4FvADXSP43iIiUotIFoA3sPYA\nrigbuB5YGsH3FRGR4xDJLSGXAW2qHFsfwfcTEZEQ6ByAiIhLRXIEcEIyMjKCj71er+v26hQRqY3P\n58Pn89X59ZHeE7gN8DHQqcrxxcADwKpjvE57Aos4iN/v5x//+Ad79+7l0ksvpVWrVqYjuVKoewKb\nHAHYdUN6EQnB4cOH6d+/P6tWrSIuLo5AIMCCBQvo2bOn6WhSi0ieA3gXWA6cC2wHRgFDyx73AOYB\nn0bw/UUkCmbNmkVWVhYFBQXs37+fgoICbrvtNtOx5DhEcgRwyzGOz43ge4pIlG3bto3CwsJKx37+\n+WdDaSQUugpIRE5Ijx49SE5ODrYTExNJS0szmEiOlwqAiJyQAQMGMH78eOrVqwfA+eefz3vvvWc4\nlRwPu56I1VVAIg5TXFxMgwYN0N+uOaFeBaQCICJhc+QqIDEj1AKgKSAREZdSARARcSkVABERl1IB\nEBFxKRUAERGXUgEQEXEpFQAREZdSARARcSkVABERl1IBEBFxKRUAERGXUgEQEXGpSBaA6UAukF3h\nWHPgC2ADsABoGsH3FxGRGkSyALwBDKxy7BGsAtAeWFTWFhERAyK9HHQb4GOgU1l7PdAXa2RwKuAD\nOlTzOi0HLeJATl0Oetu2bbz99tv4/X6GDRtGhw7VdUv2Z7f9ANpQuQDsAZpVeO/dFdoVqQCIOJAT\nC8CmTZtIS0vjQLMDBPYGSC5JZsmSJY7c1jLUAhDJTeFrEyj7qlZGRkbwsdfrxev1Rj6RiLjOfZPu\nI39cvtXIgAMc4KGHHmLRokVGcx0Pn8+Hz+er8+tNTAF5gZ+B04DFaApIJGY4aQSQnZtN51c6lx94\nEWtOAujatStZWVlGcp0Iu+8I9hEwouzxCGBulN9fRFxu857NxE2IC3b+T575JJ5JnmDn7/F4uOWW\nWwwmjJ5ITgG9i3XC9yRgO/AEMBF4H/gt8AMwLILvLyIS9NP+n2g7pS3F/mIA/jnyn/Q6qxcAnnwP\nEydOxO/3M3r0aMaNG2cyatRoU3gRCRs7TgHtLtpNx6kd2VmwE4BPb/2UgedUvUI9NjjpJLCISMQU\nFBfQ8/WerMtbB8DsG2dzU8ebDKeyFxUAEYkph0oOcdXMq1iydQkA/3vN/zK622jDqexJBUBEYoK/\n1M+wvw1jzndzAHjq8qd49LJHDaeyNxUAEXG0QCDA6E9G8+qqVwH4fc/fM+nKSUfmw6UGKgAi4kiB\nQIDHFj3GxH9NBGDUhaN4bfBrxMdpkePjpQIgIo4zeflkHvziQQAGnzuYD4Z9QGK8urNQ6ScmIo7x\n+qrXufPjOwHodWYvFt6+kKTEJMOpnEsFQERsb/gHw3l33bsAdDipA1/d+RWNGjQynMr57HqWRDeC\niThQuG8Ee/iLh5m0fFL5gQxsd6OZndhtOei6UgEQcaBwFYApmVMY+/nYYDvzt5lccsYltrzT2E50\nJ7CIONbsdbO55YPyhdjmD5/P1alXG0wU21QARMS4RZsX0f/t/sH2jCEzGHHhiBpeIeGgAiAixqze\nuZqur3YNtp++4mke6a2twqNFBUBEoi5ndw7n/OWcYPvei+/lxatfNJjInVQARCRq8g7k0XJyy2B7\nyLlDmHuz9oUyRQVARCJu/6H9NJ7YONju0rILa0avMZhIwFwBGAPciXW50mvAFEM5RCSCiv3FNPhT\ng2A7pV4KBY8VGEwkFZkoAB2xOv/uwGHgM+ATIMdAFhGJgNJAKQl/SKh87IlSrdBpMyYKQAdgBXCw\nrL0EuAF41kAWEQmzuAmVO/mSx0tIiE84xrPFJBMFYB3wJNAcqwhcA3xlIIeIhFHVjr9ofJEWarM5\nEwVgPfAMsAA4AKwGSqs+KSMjI/jY6/Xi9Xqjk05EQlK149/z8B6aJjU1lMZdfD4fPp+vzq+3w4Tc\nU8A24JUKx7QWkNhSaWkp8fHacASg4VMNOXD4QLD93d3f0eGkDhF9T60FVLNQ1wIy9Zt8Stm/ZwHX\nA+8YyiFyXL7++mvOOOMMEhMTadu2LWvXrjUdyZjur3UnbkJcsPNfNnIZgfRAxDt/CT9TI4ClQAus\nq4DuBxZX+b5GAGIb+/bto3Xr1uzbty94rEWLFmzfvp3k5GSDyaLrtg9vY+bamcH2+796n19f8Ouo\nZtAIoGZOWQ20j6H3FQnZunXrjup0iouL2bRpE506dTKUKnqeWPwEf1z6x2D7z1f9mbE9xtbwCnEK\n3QksUotTTjmFw4cPVzpWXFzMSSedZChRdFTcfhG0Xk8sUgEQqUVqaiqjRo1ixowZHDhwgJSUFMaM\nGcNpp51mOlpEfLrxUwa9MyjYHpQ6iHnD5xlMJJFih6uAqqNzAGIrgUCAhQsXMmDAABYvXhyTlyWv\n2rmKtFfTgu02TduwZcwWg4mOpnMANdOWkCIRFIsd0A97f6DtlLaVjgXS7fnfGIs//3ByyklgETFs\nd9FuWkxqUemYXTt+iQwVABGXOVhykOQnK1++qo7fnVQARFxCK3RKVSoAIi4QXK8nw/oq/p9i6iXU\nM5hI7EAFQCSGVV2oDfSpX8ppVSuRGBQ3Ia5S5/9U86eo/1R9ANq0acOmTZtMRRMbsevHAF0GKrZk\n98sQGz3diILi8i0Xv73rWwq3FtK3b18KCwsB678hNTWV77//3lTMOrP7z980p6wGKiJh1PP1nsRN\niAt2/kvuWEIgPcD5J5/PypUrK3WagUCAjRs3UlJSYiqu2ITOAYg42Ii5I3jrm7eC7fd+9R7DLhhW\n6TmtW7c+ag+Dpk2bkpioP3+30whAxIEm+CYQNyEu2PlPvnIygfTAUZ0/wMCBA7nmmmtISUmhcePG\neDweZs+eHe3IYkM6ByASAtNz0DPWzGDk30cG23d3v5uXBr1U6+sCgQDLly8nNzeXbt26cdZZZ0Uy\nZsSY/vnbnVPWAnoU+A3WXsDZwEjgUIXvqwCILZnqgD7f9DkDZw0Mtge0G8Dnv/k86jlMUwGomRNO\nArcB/gvoCnQCEoCbDeQQsY1Vq1bRsWNHmjZtyhVXXEFubi4Aq3euJm5CXLDzP7PxmQTSA67s/CX8\nTJwFysfaCtID+Mv+/dFADhFbyMvLo1+/fuTn5wOwdOlS+gzuw4ZBGyo9T+v1SLiZKAC7geeAbUAR\n8Dmw0EAOEVv48ssvyxtJUPJICRso7/zV8UukmJgCageMxZoKOh1oCNxqIIeILTRp0gR/vN9ap+dg\n+fGC3xeo85eIMjEC6AYsB3aVtecAlwKzKj4pIyMj+Njr9cbkDkwipYFS+i3pZ30kKuN51sPYMWNJ\nSUkxF0wcwefz4fP56vx6E1cBdcHq7Ltjfd6ZAXwFvFzhOboKSGwpnFehVF2obeppU9mxdQeXXHIJ\ngwcPDst7xBpdBVQzJ+wI9g3wFrAS6zLQVcCrBnKIGFG149/z8B6aJjU1lEbcTDeCiYTgRD6BVu34\nt47dyllNnHlDlikaAdTMCSMAEVep2vFn/XcWXU/raiiNSDkVAJEIafV8K37a/1OwPX/4fK5Ovdpg\nIpHKVABEwuyqmVexIGdBsP3KNa/wu26/M5hIpHoqACJhMubTMbz41YvB9kOXPsQzVz5jMFHs2LVr\nF2+//TYA2dnZdOrUyXCi2KCTwCIhqO4k5JTMKYz9vPxC/qEdhvLhTR9GO1rMysvLo3Pnzuzdu5dD\nhw7h8XiYN2+e7g2qhk4Ci0TJ3PVzuf6964Pt1OapbLh3Qw2vkLp48cUX2bVrV3AHs8LCQu677z7W\nrl1rOJnz1VQAPgXuArZEKYuII6zYsYIer/eodExLNkTOL7/8ctT2lXv37jWUJrbUtBbQdKyF2sYD\n9aITR8S+du7fCVCp8w+kB9T5R9jQoUPxeDzBdnJyMkOHDjWYKHbUNlfUEHgCuAp4Gzjymx4Ano9g\nLp0DENvIP5RPk4lNrEaG9aVOP7qmTZvG+PHjOXjwIDfddBMvvfQS9evXNx3LdsK9I1gD4GGs1Tpn\nYy3dcMSEUMOFQAVAjCv2F9PgTw0qHVPHL3YWzpPAA7E+5X8MXAQUnlAyEYcoDZSS8IeEyseeKD3y\nxyUSM2r6jV4GjAa+jVKWijQCMGT//v0kJyeTmOjOC8SqLttQ/D/F1EvQKTBxhnDuCdwHM52/GLBj\nxw4uuOACmjdvTkpKClOnTjUdKariJsRV6vz3P7qfQHpAnb/ENLuOaTUCiLJu3bqxZs0a/H4/AB6P\nh4ULF9KzZ0/DySLr5GdP5pfCX4Ltnx/4mZYNWxpMJFJ34RwBiItU7PwB/H4/K1asMJgosnpN70Xc\nhLhg57/hng0E0gPq/MVV3DnRK0dp0aIFeXl5wXZiYiKtWrUymCgybvvwNmaunRlsr7hzBRe3uthg\nIhFzTIwAzgVWV/jaB9xnIIdUMHPmTDweD40aNQKgd+/e3HDDDYZThc8Ti58gbkJcsPOfN3wegfSA\nOn9xNdPnAOKBH4GLge0VjuscgAFbtmwhMzOT4cOH4/f7iY93/gzhX1f+ldHzRgfb066bxm+7/tZg\nIpHICfeNYJE2AOtO495VjqsAGBQL2+599P1HDJk9JNjO6JtBujfdYCKRyHPaaqA3A+8YziAxYOfO\nndx+++2s/Hkle39VvlDYyAtHMn3IdIPJROzL5AigPtb0z/nAf6p8TyMAg5w2AvD7/bTv2p7NN2wO\nHkv8MZFdk3fRuHFjg8lEostJI4CrgSyO7vwByMjICD72er3a/EGqte/gPpo+0xSOnK9eDiwAT2MP\nWbdk0a9fP5PxRCLK5/Ph8/nq/HqTI4DZWHsOvFnN9zQCMMgJI4CDJQdJfjI52I5fF0/p38rXKkxJ\nSWHx4sV0797dRDwRI5xyI1gK0B+YY+j9xaFKSkuo/8f6wc6/X5t+BNIDjGo6ipSUFMC6i7lnz56k\npaWZjCpie6avAjoWjQAMsuMIIBAIcM5fzmHzHmueP7V5Kt/f831whc5AIMDMmTNZuXIlHTp04M47\n76RePa3jI+7itMtAj0UFwCC7FQDvDC9Lti4BICkxiYJHC0iIT6jlVSLu46STwCI1unXOrbyTXX6V\ncNH4IpISkwwmEoktKgBiOw98/gDPZ5bvOLr34b00SWpiMJFIbFIBENt49l/P8tDCh4JtLc0sElkq\nAGLcG6vfYNRHo4LtnPtyOLvZ2QYTibiDCoAYU3W9nm9Gf0Pnlp0NJhJxFxUAibplW5fRZ0afYHvp\nHUu5rPVlBhOJuJMKgETN2ty1dHmlS7D995v/zuBzBxtMJOJuKgAScZv3bKbdi+3KD2Rgq/sMRNzK\n+Tt+iG3lFuQSNyEu2PlP6j+JQLo6fhG70AhAwi7/UD5NJpZftz+uxzieu+o5g4lEpDoqABI2VVfo\nHN5pOLNumGUwkYjURAVATpi/1E/KUykc8h8CoG/rvvju8JkNJSK1UgGQOgsEAqT+JZWcPTkAtGvW\njo33bgyu0Cki9qYCIHXS781++H7wAdAgoQEFjxWQGK9fJxEn0V+shOQ3c37DrOzyeX2t0CniXKYK\nQFNgGnABEABGAZmGsshxeHDBg0z+cnKwrRU6RZzPVAGYAswHflWWIcVQDqnF5OWTefCLB4PtnQ/s\n5NSGpxpMJCLhYuJsXRNgNVDTco/aEcyguLg4ZqyewR1/vyN4LJwrdNptxzGRWOGEHcHaAv8B3gC6\nAFnAGKDQQBap4pMNnwAEO/81v1tDl1O71PAKEXEqEwUgEegK3AN8DbwAPAI8UfFJGRkZwcderxev\n1xu1gG70z23/5LI3ylfkXHLHEvq07lPDK0TENJ/Ph8/nq/PrTUwBnQp8iTUSAOiNVQCurfAcTQFF\nSXZuNp1fKV+Df+5NcxnSYUgNrzhxmgISiQwnTAH9DGwH2gMbgP7AtwZyuNoPe3+g7ZS2wfbrg19n\n1EWjaniFiMQaU7dsdsG6DLQ+kAOMBPZV+L5GABGSdyCPlpPL99mdeMVEHu79cFQzaAQgEhmhjgDs\nes++CkCYVV2h8/4e9/P8Vc8byaICIBIZTpgCkjravn07S5YsoXHjxgwcOJD69evX+ppDJYdIerL8\nTt2bO97Muze+G8mYIuIQKgAOkZmZyZVXXhlsp6amsnz5cpKSql+GwV/qp9HTjSgqKQKg91m9WTZy\nWVSyiogzaArIIc477zzWr18fbCcnJzNp0iTuueeeSs8LBAJ0eLkDG3ZtAODsZmez6d5NtlqhU1NA\nIpGhKaAYlZubW6ldVFTE9u3bKx3r/1Z/Fm1ZBEBifCJF44u0QqeIHJP2BHaIXr16VZrz93g89O3b\nF4ARc0cQNyEu2PkXPlbI4ccPq/MXkRrZZ16gMk0BVbFnzx6uu+46MjMz8fv9PPnkk+zrvo9JyycF\nn+OUFTo1BSQSGboMNMYVFRXh8Xggo/yY01boVAEQiQydA4hhS35YgvdNb7C96d5NtGvezlwgEXE0\nFQAHWLVzFWmvplU6FkjXJ2gROTGaArKx9b+s57yXzwu2v73rW84/+XyDicJDU0AikaEpoBiwbd82\nWr/QOtj+6s6v6N6qu8FEIhKLVABsJO9AHue+dC57D+4FYNHti7i87eWGU4lIrFIBsIF9B/eR9moa\nOXtyAJgzbA7Xn3e94VQiEutUAAwqOlyE900vX/34FQAzhsxgxIUjDKcSEbdQATDgsP8wQ98byvyN\n8wF4fsDz3N/zfsOpRMRtVACiqDRQyoi5I5i5diYAj/d5nD/0+4PhVCLiVqYKwA9APuAHDgMXG8oR\nFYFAgHGfj+OFFS8AcFe3u3hp0Eu2WqFTRNzHVAEIAF5gt6H3j5o/Lf0Tjy9+HICbLriJWTfMIiE+\nwXAqERGzU0Ax/fF36tdTuXv+3QD0P7s/84bPo35C7Tt4iYhEi6lOeDPWJvB+4K/Aa1W+79g7gf+1\n7V/0fqM3AF1P68qykcvw1PMYTmUvuhNYJDKccidwL2AncDLwBbAeqLRfYUZGRvCx1+vF6/VGL90J\n2LZvG2TA7sLdNEtuZjqOiMQwn8+Hz+er8+vtMA2TDhQAz1U45tgRAOgTbk0OHDhAw4YN9fMRiYBQ\nRwAmdgTzAI3KHqcAA4BsAzkkijZu3Ei7du1o0sTasOaDDz4wnEhETIwA2gIflj1OBGYBT1d5jkYA\nMSQQCHD22WezdevW4M/F4/GwevVq2rdvbzidSOxwwjmALcCFBt5XDMnPz+fHH3+sVBQTEhJYuXKl\nCoCIQdoUXiKuYcOGJCRUvvehtLSU008/3VAiEQEVAImChIQEpk2bhsfjoWHDhqSkpHDttdfSt29f\n09FEXM0OVwFVR+cAYtC///1vVq5cSatWrbj88su1FIZImIV6DsCuf4EqACIiIXLCZaAiImIDKgAi\nIi6lAiAi4lIqACIiLqUCICLiUioAIiIupT2Bw6i0tJQtW7aYjiEiclw0AgiT3bt3c9FFF9G5c2cA\nbrzxRkpKSgynEhE5NhWAMBk9ejTr16+nsLAQgM8++4yXX37ZcCoRkWNTAQiTrKwsiouLg+3CwkIy\nMzMNJhIRqZkKQJh06NCh0oqXSUlJdOzY0WAiEZGaaS2gMNmxYwc9e/YkPz+f0tJSOnbsyOLFi0lK\nSjIdTURcwkmLwSUAK4EdwHVVvue4AgDWtE9WVhYNGjQgLS3tqDXwRUQiyUkFYByQhrU/8OAq33Nk\nARARMckpq4GeAQwCpmHfaSgRkZhmqgD8GXgQKDX0/iIirmfiTuBrgTxgNeA91pMyMjKCj71eL17v\nMZ8qIuJKPp8Pn89X59ebmH55CrgNKAGSgMbAB8DtFZ6jcwAiIiFy0klggL7A74mRq4BERExyykng\nitTTi4gYYHoEcCwaAYiIhMiJIwARETFABUBExKVUAEREXEoFQETEpVQARERcSgVARMSlVABERFxK\nBUBExKVUAEREXEoFQETEpVQARERcSgVARMSlVABERFxKBUBExKVUAEREXMpEAUgCVgBrgH8DTxvI\nICLieiYKwEGgH3Ah0LnscW8DOSLmRDZptgPlN8fJ2UH5ncbUFFBh2b/1gQRgt6EcEeH0XyLlN8fJ\n2UH5ncZUAYjHmgLKBRZjTQWJiEgUmSoApVhTQGcAfQCvoRwiIq5lh03hHweKgMkVjm0C2pmJIyLi\nWDnAOaZD1OQkoGnZ42RgKXCFuTgiIu6UaOA9TwPexJp+igfeBhYZyCEiIiIiIqadiXVV0LfAOuA+\ns3HqJAFYDXxsOkgdNAX+BnyHdWVWD7NxQvYo1u9ONvAO0MBsnFpNx7oSLrvCsebAF8AGYAHl06V2\nVF3+Z7F+f74B5gBNDOQ6XtXlP+IBrItVmkc10fE7VvZ7sX7+64Bnoh3qRJ2KdXUQQEPge+A8c3Hq\nZBwwC/jIdJA6eBMYVfY4EXv/8VbVBthMeaf/HjDCWJrjcxlwEZX/iCcBD5U9fhiYGO1QIagu/5WU\nX104EeflB+uD6GfAFuxbAKrL3g/rw0O9svbJ0Q4VbnNx1gniM4CFWP9HOG0E0ASrA3Wq5lgfGJph\nFa+Pgf5GEx2fNlT+I14PtCx7fGpZ287aUP0naIDrgZnRi1InbTg6//9hrVJg5wIAR2d/H7g8lP8B\nOy8G1warwq0wnCMUfwYexBo6Ok1b4D/AG8Aq4DXAYzRRaHYDzwHbgJ+AvVjF2GlaYg3tKfu3ZQ3P\ntbtRwHzTIUI0BNgBrDUdpA5Sse6rygR8QLfaXmDXAtAQay56DFBgOMvxuhbIw5r/t8P9FaFKBLoC\nU8v+PQA8YjRRaNoBY7E+OJyO9Tt0q8lAYRAo+3Ki8UAx1rkYp/AAjwHpFY456W85EWsE3APrg+j7\ntb3AjgWgHvAB1tBxruEsobgUGIw1bHwXayj2ltFEodlR9vV1WftvWIXAKboBy4FdQAnWCchLjSaq\nm1ysqR+wLpnOM5ilru4ABuG8AtwO6wPEN1h/x2cAWcApBjOFYgfW7z1Yf8elQIuaXmC3AhAHvI51\nBcoLhrOE6jGsk0dtgZuBfwC3G00Ump+B7UD7snZ/rCtqnGI91iefZKzfo/44c42pjyg/eT0CZ30I\nAhiI9elzCNbKv06SjTXl1rbsawfWhyCnFOG5lJ8DaI+12OYuc3FC1xuraq3BmkpZjfUL5TR9ceZV\nQF2wPjk44RK+6jxE+WWgb1J+NYRdvYt1vqIYq/iOxDrpuBBnXAZaNf8oYCOwlfK/36nG0tXuSP5D\nlP/8K9qMfU8CV5e9HtaNtdlYIxevqXAiIiIiIiIiIiIiIiIiIiIiIiIiIiIihp2JdU14s7J2s7L2\nWcYSiYRBgukAIg6Qj3VX5TDgE2AK1s1aTlvoTERE6iAR6w7psVh3WurDk4iIi1yFtVSJk/aoEDkm\nuy0GJ2JnV2Otv9LJdBAREYmeC7H2WT0Ta7GzU2t+uoiIxII44EvKp37uwf5bHYqISBj8N9byu0fE\nYy23e5mZOCIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIiIuIK/w+SkiB07dxwYgAAAABJRU5ErkJg\ngg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\nBP4fL9kBTU7ty0gAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import pylab as P\n", "figure(1)\n", "scatter(anscombe_i.x,y, color='black')\n", "\n", "plot(anscombe_i.x, yfit, 'green')\n", "\n", "#plot line from point to regression line\n", "for ii in range(len(X)):\n", " plot([anscombe_i.x[ii], anscombe_i.x[ii]], [yfit[ii], y[ii]], 'k')\n", " \n", "xlabel('X')\n", "ylabel('Y')\n", "\n", "residual_error= anscombe_i.y - yfit\n", "error_mean = np.mean(residual_error)\n", "error_sigma = np.std(residual_error)\n", "\n", "\n", "plt.figure(2)\n", "\n", "plt.scatter(anscombe_i.x,residual_error,label='residual error')\n", "plt.xlabel(\"X\")\n", "plt.ylabel(\"residual error\")\n", "\n", "plt.figure(3)\n", "\n", "n, bins, patches = plt.hist(residual_error, 10, normed=1, facecolor='blue', alpha=0.75)\n", "y_pdf = P.normpdf( bins, error_mean, error_sigma)\n", "l = P.plot(bins, y_pdf, 'k--', linewidth=1.5)\n", "\n", "plt.xlabel(\"residual error in y\")\n", "plt.title(\"Residual Distribution\")\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As seen the the histogram, the residual error should be (somewhat) normally distributed and centered around zero. This [post](http://stattrek.com/regression/linear-regression.aspx#ReqressionPrerequisites) explains why.\n", "\n", "If the residuals are not randomly distributed around zero, consider applying a transform to the data or applying non-linear regression. In addition to looking at the residuals, one could use the statsmodels library to take a [statistical approach to ordinary least squares regression.](http://www.datarobot.com/blog/ordinary-least-squares-in-python/)\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/lib/python2.7/dist-packages/scipy/stats/stats.py:1293: UserWarning: kurtosistest only valid for n>=20 ... continuing anyway, n=11\n", " int(n))\n" ] }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
OLS Regression Results
Dep. Variable: y R-squared: 0.667
Model: OLS Adj. R-squared: 0.629
Method: Least Squares F-statistic: 17.99
Date: Sat, 02 Jan 2016 Prob (F-statistic): 0.00217
Time: 08:53:16 Log-Likelihood: -16.841
No. Observations: 11 AIC: 37.68
Df Residuals: 9 BIC: 38.48
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 3.0001 1.125 2.667 0.026 0.456 5.544
x 0.5001 0.118 4.241 0.002 0.233 0.767
\n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "\n", " \n", "\n", "
Omnibus: 0.082 Durbin-Watson: 3.212
Prob(Omnibus): 0.960 Jarque-Bera (JB): 0.289
Skew: -0.122 Prob(JB): 0.865
Kurtosis: 2.244 Cond. No. 29.1
" ], "text/plain": [ "\n", "\"\"\"\n", " OLS Regression Results \n", "==============================================================================\n", "Dep. Variable: y R-squared: 0.667\n", "Model: OLS Adj. R-squared: 0.629\n", "Method: Least Squares F-statistic: 17.99\n", "Date: Sat, 02 Jan 2016 Prob (F-statistic): 0.00217\n", "Time: 08:53:16 Log-Likelihood: -16.841\n", "No. Observations: 11 AIC: 37.68\n", "Df Residuals: 9 BIC: 38.48\n", "Df Model: 1 \n", "Covariance Type: nonrobust \n", "==============================================================================\n", " coef std err t P>|t| [95.0% Conf. Int.]\n", "------------------------------------------------------------------------------\n", "const 3.0001 1.125 2.667 0.026 0.456 5.544\n", "x 0.5001 0.118 4.241 0.002 0.233 0.767\n", "==============================================================================\n", "Omnibus: 0.082 Durbin-Watson: 3.212\n", "Prob(Omnibus): 0.960 Jarque-Bera (JB): 0.289\n", "Skew: -0.122 Prob(JB): 0.865\n", "Kurtosis: 2.244 Cond. No. 29.1\n", "==============================================================================\n", "\n", "Warnings:\n", "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n", "\"\"\"" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# load statsmodels as alias ``sm``\n", "import statsmodels.api as sm\n", "\n", "y = anscombe_i.y\n", "X = anscombe_i.x\n", "# Adds a constant term to the predictor\n", "# y = mx +b\n", "X = sm.add_constant(X) \n", "\n", "#fit ordinary least squares\n", "est = sm.OLS(y, X)\n", "est = est.fit()\n", "\n", "est.summary()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The important parts of the summary are the:\n", "\n", "- R-squared (or [coefficeient of determination](https://en.wikipedia.org/wiki/Coefficient_of_determination) which is the statistical measure of how well the regression line approximates the real data points.\n", "\n", "- Adj. R-squared (adjusted based on the number of observations and the degrees-of-freedom of the residuals)\n", "\n", "- P > |t| which is the P-value that the null-hypothesis that the coefficient = 0 is true. If it is less than the confidence level, often 0.05, it indicates that there is a statistically significant relationship between the term and the response.\n", "\n", "- [95.0% Conf. Interval] The lower and upper values. See [here](http://stattrek.com/regression/slope-confidence-interval.aspx?Tutorial=AP) for more details\n", "\n", "If these measures do make make sense to you, consider learning or revising statistics. http://onlinestatbook.com or http://stattrek.com/tutorials/ap-statistics-tutorial.aspx are great free resources which outlines all the necessary background to be a great statstician and data scientist. Both http://onlinestatbook.com/2/regression/inferential.html, and http://stattrek.com/regression/slope-confidence-interval.aspx?Tutorial=AP provide the specifics of confidence intervals for linear regression\n", "\n", "We can now plot the fitted line to the data and observe the same results as the previous two methods for linear regression.\n", "\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(anscombe_i.x, anscombe_i.y, color='black')\n", "X_prime = np.linspace(min(anscombe_i.x), max(anscombe_i.x), 100)[:, np.newaxis]\n", "\n", "# add constant as we did before\n", "X_prime = sm.add_constant(X_prime) \n", "y_hat = est.predict(X_prime)\n", "\n", "# Add the regression line (provides same as above)\n", "plt.plot(X_prime[:, 1], y_hat, 'r') " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we want to be even more fancier, we can use the [seaborn library](http://stanford.edu/~mwaskom/software/seaborn/examples/regression_marginals.html) to plot Linear regression with [marginal distributions](https://en.wikipedia.org/wiki/Marginal_distribution) which also states the pearsonr and p value on the plot. Using the statsmodels approach is more rigourous, but sns provides quick visualizations." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nuQJlGGj2/hFr/eMoc+DzP9yf3WOoGDFiFPfc8/v9Hv/Tn/6Y//iPXzBq1GheeOFZli37uPfv3J/7\nct5445eZNesMlix5h6997a/5xS/+t3cfB9q/w/HZjEo2m45pGr1/rqioOGDtL7/8Ao888tB+2wcN\nGsK//dvP99lWW1tPS0tL759bW1uoq6vf77mrVn3KzTff1vM6gxk4cCA7dmxn/PiJGIbBP/3T97jg\ngnmceeZZB6zpQMe2l1IKXd8/aP/5n7/Pzp37t7yvueYGLrzw4n221dXV0dr62XG0tbVQV1e3z2Mq\nKyuJRiNYloWu67S1tVJbW3/Y5x/q+J5//hnef/9dfvnLuw973GJflmFgdHWhaeUd3MqyCL3+KuE3\nP7us4j91FtXzLkaz2Q7xTAHZ3wvv9OmE33idxKaNeL5wkl+uJLyPUUvLHlatWsnkyVN45ZUXmTZt\nOkOHDicU6urdbhgGO3fuYMSIkSQScaqrazAMg5deen6fLtjP27WriZEjRzFy5CjWrl3D9u3bmDp1\nBn/5yxPMm3cJ4XCYFSuW8Td/8222bt1yTLWff/48zj9/3hE9dvz4CTQ17aC5eTe1tXW89tor/Mu/\n/Pt+jxs2bDhLl37I1KnT6ezsYMeO7QwcOAilFD/72U8YPnwEV199/T7PWbToT4DG/PlX77NdKcVH\nH31Ad3c3LpeTt99ezA9+8KP99nmgrvmDmT37TBYteoy5cy9g1aqV+Hz+fbq8IfsjMGPGTN5441XO\nPfd8XnjhWc48c84hn3+o43v//fd4+OGHuOuu+2QVvaOklMLoaC/7a9xWOk37oseJr16Z3aDrVF98\nGYFTTj30E8U+fNNPIPzG60SXL5PwFoc2dOgwnnzyMf7jP37C8OEjufzyK7Hb7fzrv/6c//f//oto\nNIppGlxzzfWMGDGS22//Kl/5ypcJBoNMmjSZePyzNWo//wP1+OOP8MknS9E0nZEjR3HaabOx2+2s\nXv0pX/7ydWiaxte//i2qqqrZtm0ruf5ts9vtfOc73+O73/2b3lvF9g5W+/yAs5tuuo2f/vTH3HLL\ndShl8bWvfZNAoJIVK5bz8ssvMGrUGG69NRtud975N5x66iy2b9/GtGkz9tunpmlMmDCJf/qn79Ha\n2sqFF17EuHH739Z1NE47bTZLlrzLNddcjttdsc/JwP/3/32Lf/iHH/aMG/hbfvSjH3D//Xczdux4\n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\nYEAAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import seaborn as sns\n", "#this just makes the plots pretty (in my opion)\n", "sns.set(style=\"darkgrid\", color_codes=True)\n", "\n", "g = sns.jointplot(\"x\", \"y\", data=anscombe_i, kind=\"reg\",\n", " xlim=(0, 20), ylim=(0, 12), color=\"r\", size=7)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "Usually we calculate the (vertical) residual, or the difference in the observed and predicted in the y. This is because \"the use of the least squares method to calculate the best-fitting line through a two-dimensional scatter plot typically requires the user to assume that one of the variables depends on the other. (We caculate the difference in the y) However, in many cases the relationship between the two variables is more complex, and it is not valid to say that one variable is independent and the other is dependent. When analysing such data researchers should consider plotting the three regression lines that can be calculated for any two-dimensional scatter plot.\"\n", "\n", "## Regression using Horizontal Residual\n", "\n", "If X is dependant on y, then the regression line can be made based on horizontal residuals as shown below." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nLstUNptNNpvN7DJM8eabbyokJOSsPWV/VFRUpDlz5mj8+PHl+wLt96DL5dKPP/6opUuX6pFHHtGE\nCRPOe4xPh7nT6dT48ePVr18/devWzexyDLNz505lZGQoJSVFkydP1vbt2/Xoo4+aXZZhGjZsqISE\nhPKVmB49emjXrl0mV2Wcr7/+Wu3bt1e9evUUHBys7t27a+fOnWaXZbjY2Fjl5uZKknJycmq01Ohv\nVqxYoU2bNulPf/qT2aUY5sCBAzp06JD69eunlJQUHT16VIMGDQqolZmEhATdfvvtkqS2bdvKbrfr\n5MmT1R7js2Hudrs1ZcoUtWjRQvfee6/Z5Rhq0qRJ2rRpkzIyMjR79mx16NBBL7zwgtllGSYuLk6N\nGjXSvn37JEnbtm0LqI/JTUxM1Jdffqni4mK53e6AG/9PUlJSlJ6eLklauXJlQP1BL0mbN2/WvHnz\n9MYbbygsLMzscgxzzTXXaOvWrcrIyFBGRoYSEhK0YsUKxcbGml2aYbp166bt27dLkvbt2yen06l6\n9epVe4zPPs41MzNTw4YN0zXXXFO+vDZp0iR17tzZ5MqMtWPHDr3zzjt66623zC7FUN9++62mTJki\np9OpZs2aaebMmQF1Edzbb7+tlStXym63q3Xr1nrmmWfKL4bxR5MmTdKOHTuUl5en2NhYjR8/Xl27\ndtWECRN05MgRNWnSRC+//PJZL5TyB5XHP27cOKWlpcnpdOqyyy6TJF1//fWaPn26uYV6wdm+94MG\nDSr/eteuXbV8+XLVrVvXxCq952zj79evn5544gl9++23CgkJ0WOPPaabb7652vfx2TAHAAA147PL\n7AAAoGYIcwAALI4wBwDA4ghzAAAsjjAHAMDiCHMAACyOMAdQ7quvvlL37t1VUFBQvm/GjBmaNWuW\niVUBOB/CHEC5Nm3aqH///uXhnZmZqR07dmjixIkmVwagOoQ5gAp+97vfaffu3dq4caOeeuopzZo1\nS6GhoWaXBaAaPAEOQBX79u1T//79NXLkSGblgAUwMwdQxe7du9W0aVP9+9//NrsUADVAmAOoIDc3\nVy+99JLmz5+v+Ph4LVy40OySAJwHy+wAKhgzZox69eqlAQMG6MSJE7rzzjs1f/58NWvWzOzSAJwD\nM3MA5T744APZ7XYNGDBAklS/fn1NnDhRqampJlcGoDrMzAEAsDhm5gAAWBxhDgCAxRHmAABYHGEO\nAIDFEeYAAFgcYQ4AgMUR5gAAWBxhDgCAxf0/DorGz2C/+ocAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X = anscombe_i.x.reshape((len(anscombe_i.x), 1))\n", "y = anscombe_i.y.reshape((len(anscombe_i.y), 1))\n", "\n", "\n", "k,d = polyfit(anscombe_i.y,anscombe_i.x,1)\n", "xfit = k*y+d\n", "figure(2)\n", "# plot the data\n", "scatter(anscombe_i.x,y, color='black')\n", "plot(xfit, y, 'blue')\n", "for ii in range(len(y)):\n", " plot([xfit[ii], anscombe_i.x[ii]], [y[ii], y[ii]], 'k')\n", "xlabel('X')\n", "ylabel('Y')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Total Least Squares Regression\n", "\n", "Finally, a line of best fit can be made using [Total least squares regression](https://en.wikipedia.org/wiki/Total_least_squares), a least squares data modeling technique in which observational errors on both dependent and independent variables are taken into account. This is done by minizing the errors perpendicular to the line, rather than just vertically. It is more complicated to implement than standard linear regression, but there is Fortran code called ODRPACK that has this efficiently implemented and wrapped scipy.odr Python module (which can be used out of the box). The details of odr are in the [Scipy documentation](http://docs.scipy.org/doc/scipy/reference/odr.html) and in even more detail in the [ODRPACK guide](http://docs.scipy.org/doc/external/odrpack_guide.pdf).\n", "\n", "In the code below (inspired from [here](http://blog.rtwilson.com/orthogonal-distance-regression-in-python/) uses an inital guess for the parameters, and makes a fit using total least squares regression.\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nDRkyRJmZmQYTek5xa/9/ixcvVuPGjZWRkWEgmT0utf5ly5bp3nvv1f3336/nn3/+iq/jtWUeHBys\nCRMmaP369fr73/+uN954Q/v37zcdy1ZLly5V/fr1TccwYtq0aWrVqpU2bNigtWvX+tW/Q0pKit55\n5x2tWrVK69atU35+vtavX286lkd169ZNCxcutMySkpIUHx+v999/X7fddpuSkpIMpfO84tbfsmVL\nrV+/XmvXrlXdunU1f/58Q+k8q7i1Sz/v0H322WeqXr26gVT2KW7927Zt06ZNm7R27Vr94x//KNF1\nWLy2zF0ul66//npJUrly5VS/fn2dOHHCcCr7pKamKjk5WQ8++KDpKLbLzMzUjh071L17d0k//2IX\nERFhOJV9ypcvr+DgYGVlZSkvL0/Z2dmKiYkxHcuj4uLiVKFCBcts06ZN6tq1qySpa9eu2rhxo4lo\ntihu/bfffrsCA3/+EX3jjTcqNTXVRDSPK27tkjRjxgyNGTPGQCJ7Fbf+t956SwMGDFBISIgkKSoq\n6oqv47Vl/kspKSn67rvv1KxZM9NRbDN9+nSNHTu28H9mf5KSkqKoqCglJCSoa9eumjRpkrKyskzH\nsk1kZKT69u2rO++8U3fccYciIiIUHx9vOpbt0tPTVblyZUlS5cqVlZ6ebjiROStWrFDr1q1Nx7DN\nxo0bVbVqVTVu3Nh0FCMOHz6sHTt26KGHHlLPnj319ddfX/E5Xt8U58+f17BhwzRx4kSVK1fOdBxb\nfPTRR4qOjlaTJk3kj5cByMvL0+7du/XII49o1apVCgsL8+lDrL925MgRvf7669q0aZM++eQTXbhw\nQWvXrjUdy6iAgAAFBASYjmHE3LlzFRISUux7yr4oKytL8+fP17Bhwwpn/vZzMD8/X2fOnNE777yj\nMWPGaMSIEVd8jleXeW5uroYNG6ZOnTqpXbt2puPYZteuXdq0aZPatGmj0aNHa9u2bRo7dqzpWLap\nWrWqYmJiCo/EtG/fXrt37zacyj7ffPONWrRooUqVKik4OFh33323du3aZTqW7aKjo5WWliZJOnHi\nRIkONfqalStXKjk5WbNnzzYdxTZHjhzRsWPH1KlTJ7Vp00Y//fSTunXr5ldHZmJiYnTPPfdIkpo1\na6bAwECdPn36ss/x2jJ3u92aOHGi6tevr969e5uOY6tRo0YpOTlZmzZtUmJiom677TbNmjXLdCzb\nuFwuVatWTQcPHpQkbd261a9ukxsbG6uvvvpK2dnZcrvdfrf+/9emTRutWrVKkrR69Wq/+oVekjZv\n3qxFixbptddeU2hoqOk4trnuuuu0ZcsWbdq0SZs2bVJMTIxWrlyp6Oho09Fs065dO23btk2SdPDg\nQeXm5qpSpUqXfY7XXs51x44d6tGjh6677rrCw2ujRo1Sq1atDCez1/bt27V48WLNmzfPdBRbff/9\n95o4caJyc3NVu3ZtzZgxw69OgluwYIFWr16twMBANWnSRM8++2zhyTC+aNSoUdq+fbsyMjIUHR2t\nYcOGqW3bthoxYoSOHz+uGjVq6MUXXyz2RClf8Ov1Dx06VElJScrNzVXFihUlSc2bN9fUqVPNBvWA\n4r733bp1K/x627ZttWLFCkVGRhpM6TnFrb9Tp06aMGGCvv/+e4WEhGjcuHG69dZbL/s6XlvmAACg\nZLz2MDsAACgZyhwAAIejzAEAcDjKHAAAh6PMAQBwOMocAACHo8wBFPr66691991369y5c4WzZ555\nRjNnzjSYCsCVUOYACjVt2lSdO3cuLO8dO3Zo+/btGjlypOFkAC6HMgdgMXjwYP3www/auHGjnnrq\nKc2cOVNlypQxHQvAZXAFOABFHDx4UJ07d1afPn3YKwccgD1zAEX88MMPqlWrlv71r3+ZjgKgBChz\nABZpaWmaM2eOlixZoipVqmjp0qWmIwG4Ag6zA7AYMGCAOnTooC5duujUqVPq3r27lixZotq1a5uO\nBuAS2DMHUOjtt99WYGCgunTpIkmKiorSyJEjlZCQYDgZgMthzxwAAIdjzxwAAIejzAEAcDjKHAAA\nh6PMAQBwOMocAACHo8wBAHA4yhwAAIejzAEAcLj/A/FwyzVgzVGXAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from scipy.odr import Model, Data, ODR\n", "from scipy.stats import linregress\n", "import numpy as np\n", "\n", "def orthoregress(x, y):\n", " # get initial guess by first running linear regression\n", " linregression = linregress(x, y)\n", " \n", " model = Model(fit_function)\n", " \n", " data = Data(x, y)\n", " \n", " od = ODR(data, model, beta0=linregression[0:2])\n", " out = od.run()\n", " \n", " return list(out.beta)\n", "\n", "def fit_function(p, x):\n", " #return y = m x + b\n", " return (p[0] * x) + p[1]\n", "\n", "m, b = orthoregress(anscombe_i.x, anscombe_i.y)\n", "\n", "# determine the line-fit\n", "y_ortho_fit = m*anscombe_i.x+b\n", "# plot the data\n", "scatter(anscombe_i.x,anscombe_i.y, color = 'black')\n", "plot(anscombe_i.x, y_ortho_fit, 'r')\n", "xlabel('X')\n", "ylabel('Y')\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Plotting all three regression lines gives a fuller picture of the data, and comparing their slopes provides a simple graphical assessment of the correlation coefficient. Plotting the orthogonal regression line (red) provides additional information because it makes no assumptions about the dependence or independence of the variables; as such, it appears to more accurately describe the trend in the data compared to either of the ordinary least squares regression lines." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n8eJF+f1+VVdXmx3LUDk5OTp+/Ph3r5WWliotLU1XrlzRpEmTVFpaalI643U1/9SpU1VdXa2qqiqN\nHDlSJSUlJqUzVlezS98Oym7evKlhw4aZkCp0upq/trZWHo9HVVVVunTp0t96ToehhRwXF6fRo0dL\nkvr376/ExES9fv3ayCUtpbGxUTU1NVq6dKnZUUKupaVFXq9XS5YskfTtj7OoqCiTU4XOgAED5HQ6\n1draqo6ODrW1tSk+Pt7sWIYaP368Bg4c+N1rHo9H2dnZkqTs7GxdvXrVjGgh0dX8U6ZMkcPx7dfs\nmDFj1NjYaEY0w3U1uyTt3r1bGzduNCFRaHU1/++//661a9cqPDxckhQbG/vT/YTsGnJDQ4MePXqk\n1NTUUC1pul27dqmoqKjzB9JOGhoaFBsbqy1btig7O1vbtm1Ta2ur2bFCJjo6WqtXr9bMmTM1bdo0\nRUVFKS0tzexYIffmzRsNHjxYkjR48GC9efPG5ETmOXv2rGbMmGF2jJC5evWqhgwZouTkZLOjmOLZ\ns2fyer1atmyZ8vLy9ODBg59uE5Km+PTpk9xut4qLi9W/f/9QLGm6a9euyeVyKSUlRXZ8q3dHR4fq\n6+u1fPlyVVZWKiIiolefrvyr58+f6+TJk/J4PLpx44Y+f/6sqqoqs2OZKiwsTGFhYWbHMMWRI0cU\nHh7e5TXW3qi1tVUlJSVyu92dr9nt96Df79f79+9VUVGhjRs3asOGDT/dxvBC9vl8crvdysrK0qxZ\ns4xezjLu3r0rj8ej9PR0FRYWqra2VkVFRWbHCpkhQ4YoPj6+84zI3LlzVV9fb3Kq0Hn48KHGjRun\nmJgYOZ1OzZ49W3fv3jU7Vsi5XC41NTVJkl6/fv23Ttv1NufOnVNNTY32799vdpSQef78uV68eKGs\nrCylp6fr1atXysnJsdUZkvj4eM2ZM0eSlJqaKofDoXfv3v1wG0MLORAIqLi4WImJiVq5cqWRS1lO\nQUGBampq5PF4dODAAU2aNEl79+41O1bIxMXFaejQoXr69Kkk6fbt27b6F50JCQm6f/++2traFAgE\nbDf/n9LT01VZWSlJOn/+vK3+KJek69ev68SJEzp8+LD69u1rdpyQSUpK0q1bt+TxeOTxeBQfH69z\n587J5XKZHS1kZs2apdraWknS06dP5fP5FBMT88NtDH10ptfrVW5urpKSkjpPVRUUFGj69OlGLWlJ\ndXV1Kisr09GjR82OElKPHz9WcXGxfD6fRowYod27d9vqxq5jx47p/PnzcjgcSklJ0Y4dOzpv8OiN\nCgoKVFdXp+bmZrlcLrndbmVkZGjDhg16+fKlhg8froMHD3Z5809v8Nf5169fr9LSUvl8Pg0aNEiS\nNHbsWG3fvt3coAbo6nufk5PT+fGMjAydPXtW0dHRJqY0TlfzZ2VlaevWrXr8+LHCw8O1adMmTZw4\n8Yf74VnWAABYgP1u/wUAwIIoZAAALIBCBgDAAihkAAAsgEIGAMACKGQAACyAQgYAwAIoZAAALODf\noKiSVZ/x8UQAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "\n", "scatter(anscombe_i.x,anscombe_i.y,color = 'black')\n", "plot(xfit, anscombe_i.y, 'b', label= \"horizontal residuals\")\n", "plot(anscombe_i.x, yfit, 'g', label= \"vertical residuals\")\n", "plot(anscombe_i.x, y_ortho_fit, 'r', label = \"perpendicular residuals\" )\n", "plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3,\n", " ncol=2, mode=\"expand\", borderaxespad=0.)\n" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "\n", "## Key takeaways:\n", "\n", "1. Know the asumptions for using linear regression and ensure they are met.\n", "2. Do not blindly apply simple linear regression, understand when to use horizonal residuals (X is dependant on y) or total least squares regression.\n", "3. Understand the statistical significance of linear regression\n", "\n", "## Optional Further reading:\n", "\n", "Chapter 2 (Linear regression) of [Introduction to Statistical Learning](http://www-bcf.usc.edu/~gareth/ISL/)\n", "\n", "Appendix D Regression of [Introduction to Data Mining ](http://www-users.cs.umn.edu/~kumar/dmbook/index.php)\n", "\n", "Linear models of [Data Mining](http://www.cs.waikato.ac.nz/ml/weka/book.html)\n", "\n", "Video (for using WEKA): [Linear regression](https://www.youtube.com/watch?v=6tDnNyNZDF0)\n", "\n", "### Scikit Learn documentation:\n", "\n", "[Linear models](http://scikit-learn.org/stable/modules/linear_model.html)\n", "\n", "\n", "## Homework\n", "\n", "Now that you have seen an examples of regression using a simple linear models, see if you can predict the price of a house given the size of property from the log_regression_example.csv (found in [../datasets/log_regression_example.csv](https://github.com/datascienceguide/datascienceguide.github.io/raw/master/datasets/log_regression_example.csv) If you are unable to fit a simple linear model, try transforming variables to achieve linearity outlined in class or [here](http://stattrek.com/regression/linear-transformation.aspx?Tutorial=AP)\n", "\n", "Hint: look at the log and power transform" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 }