{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np\n", "import scipy.stats\n", "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Least-Squares Linear Regression" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- fit slope and intercept so that the linear regression fit (here: \"line\") minimizes the sum of the residuals (vertical offsets or distances)\n", "\n", "" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "rng = np.random.RandomState(123)\n", "mean = [100, 1000]\n", "cov = [[1, 0.9], [0.9, 1]]\n", "sample = rng.multivariate_normal(mean, cov, size=100)\n", "x, y = sample[:, 0], sample[:, 1]\n", "\n", "plt.scatter(x, y)\n", "plt.xlabel('x')\n", "plt.ylabel('y')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Pearson correlation coefficient (see the [Covariance and Correlation](cov-corr.ipynb) notebook for details)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[ 1. , 0.87552229],\n", " [ 0.87552229, 1. ]])" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.corrcoef(np.vstack([x, y]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Least-squares linear regression via \"classic statistic\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- using \"classic statistics\":\n", "\n", "$w_1 = \\frac{\\sigma_{x,y}}{\\sigma_{x}^{2}}$\n", "\n", "$b = \\bar{y} - w_1\\bar{x}$\n", "\n", "where \n", "\n", "\n", "$\\text{covariance: } \\sigma_{xy} = \\frac{1}{n} \\sum_{i=1}^{n} (x_i - \\bar{x})(y_i - \\bar{y})$\n", "\n", "$\\text{variance: } \\sigma^{2}_{x} = \\frac{1}{n} \\sum_{i=1}^{n} (x_i - \\bar{x})^2$" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "slope: 0.84\n", "y-intercept: 915.59\n" ] } ], "source": [ "cov_xy = np.cov(np.vstack((x, y)), ddof=0)[0, 1]\n", "var_x = np.var(x, ddof=0)\n", "w1 = cov_xy / var_x\n", "b = np.mean(y) - w1*np.mean(x)\n", "\n", "print('slope: %.2f' % w1)\n", "print('y-intercept: %.2f' % b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Least-squares linear regression via linear algebra" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- closed-form (analytical) solution:\n", "\n", "$$w = (X^T X)^{-1} X^T y$$" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "slope: 0.84\n", "y-intercept: 915.59\n" ] } ], "source": [ "X = x[:, np.newaxis]\n", "\n", "# adding a column vector of \"ones\"\n", "Xb = np.hstack((np.ones((X.shape[0], 1)), X))\n", "w = np.zeros(X.shape[1])\n", "\n", "z = np.linalg.inv(np.dot(Xb.T, Xb))\n", "w = np.dot(z, np.dot(Xb.T, y))\n", "b, w1 = w[0], w[1]\n", "print('slope: %.2f' % w1)\n", "print('y-intercept: %.2f' % b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. Using a pre-implemented function" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "slope: 0.84\n", "y-intercept: 915.59\n" ] } ], "source": [ "w = np.polyfit(x, y, deg=1)\n", "b, w1 = w[1], w[0]\n", "print('slope: %.2f' % w1)\n", "print('y-intercept: %.2f' % b)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- note that there are many alternative tools (scikit-learn, statsmodels, ...)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Show line fit" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "extremes = np.array([np.min(x), np.max(x)])\n", "predict = extremes*w1 + b\n", "\n", "plt.plot(x, y, marker='o', linestyle='')\n", "plt.plot(extremes, predict)\n", "plt.xlabel('x')\n", "plt.ylabel('y')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Evaluate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Mean squared error (MSE)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$MSE = \\frac{1}{n} \\sum_{i=1}^{n} \\big(y_i - \\hat{y_i}\\big)^2$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- note that MSE is scale-dependent" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.21920128791624113" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_predicted = x*w1 + b\n", "mse = np.mean((y - y_predicted)**2)\n", "mse" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.46818937185314358" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "rmse = np.sqrt(mse)\n", "rmse" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Residuals" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(np.arange(x.shape[0]), y - y_predicted)\n", "plt.ylabel('vertical offset')\n", "plt.xlabel('index')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Coefficient of determination (R^2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Total sum of squares (variability of the reponse or target variable, proportional to variance):\n", "\n", "$$SS_{total} = \\sum_{i=1}^{n} \\big( y_i - \\bar{y_i} \\big)^2$$\n", "\n", "- Residual sum of squares:\n", "\n", "$$SS_{residual} = \\sum_{i=1}^{n} \\big( \\hat{y_i} - \\bar{y_i} \\big)^2$$\n", "\n", "- Coefficient of determination\n", "\n", "$$R^2 = \\frac{SS_{residual}}{SS_{total}}$$" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.76653928492766576" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_y = np.mean(y)\n", "SS_total = np.sum((y - mean_y)**2)\n", "SS_residual = np.sum((y_predicted - mean_y)**2)\n", "r_squared = SS_residual / SS_total\n", "r_squared" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- usually, the coefficient of determination can be computed by squaring the pearson correlation coefficient:" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.766539284927652" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(x, y)\n", "r_value**2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- note that if the model fits worse than a horizontal line, the coefficient of determination can be negative (so it is not necessarily always recommended to use a squared pearson coefficient to compute $R^2$)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.1" } }, "nbformat": 4, "nbformat_minor": 2 }