{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "using PyPlot" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Mean and variance\n", "\n", "Suppose we have a black box (a **distribution**) that generates data points $x_k$ (**samples**) $k = 1,\\ldots,$. If we have $n$ data points, the **sample mean m** is simply the average:\n", "\n", "$$\n", "m = \\frac{1}{n}\\sum_{k=1}^n x_k\n", "$$\n", "\n", "In the limit $n \\to \\infty$, we get the mean μ of the underlying distribution from which the samples are generated.\n", "\n", "The **sample variance S²** is the mean-square deviation from the mean:\n", "\n", "$$\n", "\\operatorname{Var}(x) = S^2 = \\frac{1}{n-1}\\sum_{k=1}^n (x_k - m)^2\n", "$$\n", "\n", "where the denominator $n-1$ is [Bessel's correction](https://en.wikipedia.org/wiki/Bessel%27s_correction). The limit $n\\to\\infty$ of the sample variance gives $\\sigma^2$, the variance of the underlying distribution, and by using $n-1$ instead of $n$ in the denominator it turns out that we get a better estimate of $\\sigma^2$ when $n$ is not huge.\n", "\n", "For example, the `randn()` function in Julia draws samples from a [normal distribution](https://en.wikipedia.org/wiki/Normal_distribution): a Gaussian or \"bell curve\" with mean zero and variance 1:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "PyPlot.Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = randn(100) # 100 gaussian random numbers:\n", "plot(x, zeros(x), \"r.\")\n", "grid()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It is more informative to plot a [histogram](https://en.wikipedia.org/wiki/Histogram):" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "PyPlot.Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "x = randn(10000)\n", "plt[:hist](x, bins=100);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The mean is the **center** of this peak and the square root $S$ of the variance is a measure of the **width** of this peak.\n", "\n", "The mean of those 10000 samples is a pretty good estimate for the true mean (= 0) of the underlying normal distribution:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.018455222153139744" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The sample variance is:" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9947610761289062" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum((x.-mean(x)).^2)/(length(x)-1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Or (equivalently but more efficient) the built-in function `var`:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9947610761289062" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "var(x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "which is a pretty good estimate for the true variance (= 1).\n", "\n", "If we looked at more points, we would get better estimates:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(-0.0004721829416400511, 1.0003610674559988)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "xbig = randn(10^7)\n", "mean(xbig), var(xbig)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Mean and variance in linear algebra\n", "\n", "If we define the vector $o = (1,1,\\ldots)$ to be the vector of $n$ 1's, with $o^T o = n$, then the mean of $x$ is:\n", "\n", "$$\n", "m = \\frac{o^T x}{o^T o}\n", "$$\n", "\n", "which is simply the coefficient in the **projection $o\\frac{o^Tx}{o^To} = om$ of x onto the line spanned by o**. And the sample variance is\n", "\n", "$$\n", "\\operatorname{Var}(x) = \\frac{\\Vert x - m o \\Vert^2}{n-1} = \\frac{\\left\\Vert \\left(I - \\frac{o o^T}{o^T o} \\right) x \\right\\Vert^2}{n-1}\n", "$$\n", "\n", "is the **length² of the projection of x orthogonal to o** divided by $n-1$.\n", "\n", "In fact, the $n-1$ denominator is closely related to the fact that this orthogonal projection has an $n-1$ dimensional column space (the complement of the line spanned by $o$): after you subtract off the mean, there are only $n-1$ degrees of freedom left. (This is just a handwaving argument, but can be made precise; for more careful derivations of this denominator, see e.g. [Bessel's correction](https://en.wikipedia.org/wiki/Bessel%27s_correction) on Wikipedia or [this 18.06 notebook](http://nbviewer.jupyter.org/github/stevengj/1806/blob/spring18/lectures/Sample%20Variance%20division%20by%20n-1.ipynb).)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Covariance and Correlation\n", "\n", "A key question in statistics is whether/how two sets of data are **correlated**. If you have two variables $x$ and $y$, do they tend to \"move together\"?\n", "\n", "An intuitive measure for this is: **when x is greater/less than its mean, is y *also* greater/less than its mean?** Translated into math, this leads to the **covariance**:\n", "\n", "$$\n", "\\operatorname{Covar}(x,y) = \\frac{1}{n-1}\\sum_{k=1}^n (x_k - \\operatorname{mean}(x)) (y_k - \\operatorname{mean}(y)) = \\frac{(Px)^T (Py)}{n-1} = \\frac{x^T P y}{n-1}\n", "$$\n", "\n", "where $P = I - \\frac{oo^T}{o^T o}$ is the projection operator from above that subtracts the mean from a vector (i.e. it projects vectors onto the subspace of vectors with zero mean). (In the last step we used the facts that $P^T = P$ and $P^2 = P$.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For example, here are plots of two very correlated vectors x and y of data and a third data set z that is just independent random numbrers" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "PyPlot.Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "PyObject " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = sin.(linspace(0,4π,100) .+ randn(100)*0.1) .* (1 .+ 0.3*randn(100))\n", "y = sin.(linspace(0,4π,100) .+ randn(100)*0.1) .* (1 .+ 0.3*randn(100))\n", "z = randn(100)\n", "plot(x, \"b.-\")\n", "plot(y, \"r.-\")\n", "plot(z, \"g.-\")\n", "legend([\"x\",\"y\",\"z\"])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All three have mean nearly zero:" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.04585364730391235, 0.015667384726053845, 0.09336771065224941)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean(x),mean(y),mean(z)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "But the covariance of x and y is totally different from the covariance of x and z:" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "covar (generic function with 1 method)" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# A simple covariance function. See https://github.com/JuliaStats/StatsBase.jl for\n", "# better statistical functions in Julia.\n", "covar(x,y) = dot(x .- mean(x), y .- mean(y)) / (length(x) - 1)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.46559174462535136, 0.06281305552460334)" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "covar(x,y), covar(x,z)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The variance and covariance have the units of the data squared. I can make the covariance of x and y smaller simply by dividing y by 10, which doesn't see like a good measure of how correlated they are.\n", "\n", "Often, it is nicer to work with a dimensionless quantity *independent* of the vector lengths, the **correlation**:\n", "\n", "$$\n", "\\operatorname{Cor}(x,y) = \\frac{\\operatorname{Covar}(x,y)}{\\sqrt{\\operatorname{Var}(x) \\operatorname{Var}(y)}} = \\frac{(Px)^T (Py)}{\\Vert Px \\Vert \\; \\Vert Py \\Vert}\n", "$$\n", "\n", "This is just the dot product of the vectors (after subtracting their means) divided by their lengths.\n", "\n", "It turns out that Julia has a built-in function `cor` that compute precisely this:" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9265391821850755" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "covar(x,y) / sqrt(covar(x,x) * covar(y,y)) # correlation, manually computed" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9265391821850756" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cor(x,y)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.08198929962908524" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cor(x,z)" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "11.300732978287218" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "abs(cor(x,y)/cor(x,z))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now that we've scaled out the overall length of the vectors, we can sensibly compare the correlation of x,y with the correlation of x,z, and we see that the former are more than 10x the correlation of the latter in this sample" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# The covariance and correlation matrices\n", "\n", "If we have a bunch of data sets, we might want the covariance or correlation of *every* pair of data sets. Since these are basically dot products, asking for *all* of the dot products is the same as asking for a **matrix multiplication**.\n", "\n", "In particular, suppose that $X$ is the $m \\times n$ matrix whose **rows** are $n$ different datasets of length $n$. First, we need to subtract off the means of each row to form a new matrix $A$:\n", "\n", "$$\n", "A = X P = X P^T = (PX^T)^T\n", "$$\n", "\n", "where $P$ is the projection matrix from above that subtracts the mean. Multiplying by $P^T = P$ on the *right* corresponds to projecting each *row* of $X$.\n", "\n", "Given $A$, we can compute **all** of the covariances simply by computing the **covariance matrix S**\n", "\n", "$$\n", "S = \\frac{A A^T}{n-1}\n", "$$\n", "\n", "since $A A^T$ computes all of the dot products of all of the rows of $A$. The diagonal entries of $S$ are the variances of each dataset, and the off-diagonal elements are the covariances.\n", "\n", "Alternatively, we can compute the **correlation matrix** $C = \\hat{A} \\hat{A}^T$, where $\\hat{A}$ is simply the matrix $A$ scaled so that each row has unit length. i.e. $\\hat{A} = DA$, where $D$ is a diagonal matrix whose entries are the inverse of the length of each row, i.e. $D$ is the inverse of the diagonal entries of $AA^T$.\n", "\n", "Let's look in more detail at the two correlated vectors $x$ and $y$ from above:" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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M2eOa97n0inWa69///4aOnSoRaNytnnz5ulXv/pVSu/TU4FRQUGBCgoKMvZ4x44d08GDB12THk3n9essAW3atEllZWWSOuY/vPzyy7rvvvvS8piZFu/1Ky8vVzAY1Guvvaa5c+dKkrZt26ZgMKj58+fH/Xi7du3SmTNnXPP6iyYrK0uzZs3Spk2b9PnPfz5yfNOmTbr++uuj3qa8vFybNm3SnXfeGTm2cePGhK6tWyRz/S5kjNGOHTtUWlqarmG6Rnl5uX7/+993ObZx40bNnj1bAwYMsGhUzlZbW5v697i0Tu12sAMHDpja2lqzevVqM3jwYFNbW2tqa2tNW1tb5JxJkyaZ9evXG2OMaWtrM9/+9rdNdXW1aWhoMC+++KIpLy83I0aMMK2trVY9Dcskev2MMaaystIEAgGzfv16U19fb774xS+a4uJiT16/a665xlx66aVm69atZuvWraa0tNRcd911kX9/9913zaRJk8y2bduMMca8/fbbZvXq1aampsY0NDSY5557zkyePNmUlZWZs2fPWvU0MuLZZ581AwYMME8++aTZvXu3ueOOO8ygQYPM/v37jTHGLF26tMsKqz/96U+mX79+prKy0uzZs8dUVlaa/v37d1kF6CWJXr9Vq1aZF154wbzzzjumtrbWfOUrXzH9+/ePvBa9pK2tLfLeJsncf//9pra21hw4cMAYY8yKFSvM0qVLI+fv27fPDBw40Nx5551m9+7d5sknnzQDBgwwv/3tb616CpZK9Pr95Cc/MRs2bDBvvvmm2blzp1mxYoWRZNatW5fScREYxbBs2TIjqdvPiy++GDlHknnqqaeMMcacPHnSLFy40AwbNswMGDDAjB492ixbtsw0NjZa8wQsluj1M6Zjyf4PfvADU1RUZLKzs82CBQtMfX195gdvA8eOHTM333yzycvLM3l5eebmm2/uskS1oaGhy/VsbGw0CxYsMB/72MdMVlaWGT9+vLn99tvNsWPHLHoGmfXwww+bMWPGmKysLDNz5kzz8ssvR/7tiiuuMMuWLety/n/8x3+YSZMmmQEDBpjJkyen/I3VaRK5fnfccYcZPXq0ycrKMsOGDTMLFy401dXVFozaep3Lxy/86bxey5YtM1dccUWX27z00kumrKzMZGVlmbFjx5pHH3008wO3iUSv33333WfGjx9vcnJyzJAhQ8zHP/5x89xzz6V8XD5jwjO/AAAAPI4+RgAAAGEERgAAAGEERgAAAGEERgAAAGEERgAAAGEERgAAAGEERgAAAGEERgAAAGEERgAAAGEERgAAAGEERgA85ejRoyoqKtIPf/jDyLFt27YpKytLGzdutHBkAOyAvdIAeM7zzz+vz33uc6qurtbkyZNVVlamz3zmM3rggQesHhoAixEYAfCkb37zm/rjH/+oOXPmqK6uTjU1NcrJybF6WAAsRmAEwJPa29s1ffp0HTx4UNu3b9ell15q9ZAA2ABzjAB40r59+3To0CGFQiEdOHDA6uEAsAkyRgA85/Tp05o7d67+5m/+RpMnT9b999+v+vp6FRYWWj00ABYjMALgOf/4j/+o3/72t6qrq9PgwYN11VVXKS8vT3/4wx+sHhoAi1FKA+ApL730kh544AE9/fTTys/Pl9/v19NPP60tW7bo0UcftXp4ACxGxggAACCMjBEAAEAYgREAAEAYgREAAEAYgREAAEAYgREAAEAYgREAAEAYgREAAEAYgREAAEAYgREAAEAYgREAAEAYgREAAEAYgREAAEDY/w94g8U61p2GCAAAAABJRU5ErkJggg==", "text/plain": [ "PyPlot.Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "PyObject " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(x,y, \".\")\n", "xlabel(\"x\")\n", "ylabel(\"y\")\n", "axhline(0, linestyle=\"--\", color=\"k\", alpha=0.2)\n", "axvline(0, linestyle=\"--\", color=\"k\", alpha=0.2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The correlation matrix is:" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2×100 Array{Float64,2}:\n", " 0.1032 -0.00452839 0.219995 … -0.265528 -0.0914568 -0.0123549\n", " 0.0500175 0.300766 0.126217 -0.207283 -0.197363 0.114342 " ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "A = [x' .- mean(x); y' .- mean(y)] # rows are x and y with means subtracted" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2×2 Array{Float64,2}:\n", " 0.518496 0.465592\n", " 0.465592 0.487009" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "S = A * A' / (length(x)-1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this case, since there are only two datasets, $S$ is just a $2 \\times 2$ matrix." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# PCA: diagonalizing the covariance matrix\n", "\n", "A key question in analyizing data analysis is to figure out **which variables are responsible for most of the variation in the data**. These may not be the variables you measured, but may instead be some **linear combination of the measured variables**!\n", "\n", "Mathematically, this corresponds to **diagonalizing the covariance (or correlation) matrix**:\n", "\n", "* $S$ is real-symmetric and positive-definite (or at least semidefinite), so diagonalization $S=Q \\Lambda Q^T$ finds real, positive eigenvalues $\\lambda_k = \\sigma_k^2 \\ge 0$ and an **orthonormal basis Q of eigenvectors**.\n", "\n", "* The eigenvectors form a **coordinate system** in which the covariance matrix **S becomes diagonal**, i.e. a **coordinate system in which the variables are uncorrelated**.\n", "\n", "* The diagonal entries in this coordinate system, the eigenvalues, are the **variances of these uncorrelated components**.\n", "\n", "This process of diagonalizing the covariance matrix is called [principal component analysis](https://en.wikipedia.org/wiki/Principal_component_analysis), or **PCA**.\n", "\n", "Let's try it:" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "([0.036895, 0.968611], [0.695056 -0.718956; -0.718956 -0.695056])" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "σ², Q = eig(S)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see that the second eigenvector is responsible for almost all of the variation in the data, because its eigenvalue (the variance $\\sigma^2$) is much larger:" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2-element Array{Float64,1}:\n", " 0.036895\n", " 0.968611" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "σ²" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's plot these two eigenvectors on top of our data:" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "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dUwej0e9evVq8/iBcO+AC+Z8pd4qrd1WrtLMPvVBUV3WAM6UmGiuNZKkFSuk//f/rB0PYCOWBkbz589vtDj65K8NGzZIaroAm2EYLRZmmz17ts4//3wNGzZM06dP18svv6y33npLH330UbOPmTt3rrxer/9r586dbX+hCKtSb5XWflkeU81Mw70DLtDz5ReUaMLClZrxp/WaMOsPyh9+oVRTQy0bmBmjI0fM20uXStdcY+14AJuw9CPjjTfe2Oousb59++rjjz/W7t27G/1s7969/sq1gRgxYoTatWunL774QiNGjGjymOTkZCUnJwd8TkRXTFSQbkJTTVrbsgMukPM1yiq53Zo35SZNrDxq/eJv2ENystlotkMHackSc2fiww9bPSrAUpYGRunp6UpPT2/1uLy8PHm9Xn3wwQcaM2aMJGn9+vXyer0aP358wM+3efNmHTt2TFlZWSGPGdZpbvpo4sCutn+jD/cOuEDOV1xW0URWSdpRftj21ysaXC6Xunbt6r/tWO3bSxUVZlD0yCNSx47SvfdaPSrAMjHTEmTKlCnatWuX/vjHP0oyt+v36dPHv13/m2++0Xnnnae//OUvGjNmjL788ks9//zzuvjii5Wenq4tW7bo5z//uVJTU1VQUKCEAKcSaAliH2u/LNeMp9Y3uv/F2eOU17+LBSMKXqm3Kqw74Jo939GjKu3aQxOuXyyfu37G3HatSEJk94a8MWn//voCn/fdJ82da+14gDYK9f07ZlZfPv/887r55ps1efJkSdIll1yiRx991P/zY8eOaevWrTp82FxjkZSUpLffflsPP/ywDh48qF69eunb3/627rzzzoCDIthLuKejrBDuHXBNnq+qSmrfXlmSFuxYoXn9LwopS2XX4CNWp1Ntr3Nns75Rt27SvHlm5uimm6weFRB1MZMxsgoZI3vJLyhpNH3Em+IJDh6U6spRXHaZtGxZSFkquwYf4W7Ie/z4cUlSIjv06u3aJfXoYd5++mnp2mutHQ8QorjPGAGSDStI28mBA+anfkn64Q+lZ56RFHyWys5ruVrajRfs2Hw+nzZt2iRJys3NldsdE9VLIq97d6m4WMrOlq67zlyDRCslOAh/CRBzsjypyuvfxfI3aVspL68Pin76U39QFIpoNdcNha0b8saTvn3r24VceaX0j39YOhwgmgiMgFZEq25SyM9T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", "text/plain": [ "PyPlot.Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "(-1.5556480153860381, 1.551373778452842, -1.3633186213221165, 1.4423247125247483)" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(x.-mean(x),y.-mean(y), \".\")\n", "xlabel(\"x\")\n", "ylabel(\"y\")\n", "axhline(0, linestyle=\"--\", color=\"k\", alpha=0.2)\n", "axvline(0, linestyle=\"--\", color=\"k\", alpha=0.2)\n", "arrow(0,0, Q[:,1]..., head_width=0.1, color=\"r\")\n", "arrow(0,0, Q[:,2]..., head_width=0.1, color=\"r\")\n", "text(Q[1,1]+0.1,Q[2,1], \"q₁\", color=\"r\")\n", "text(Q[1,2]-0.2,Q[2,2], \"q₂\", color=\"r\")\n", "axis(\"equal\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The $q_2$ direction, corresponding to the biggest eigenvalue of the covariance matrix, is indeed the direction with the biggest variation in the data!\n", "\n", "In this case, it is along the (1,1) direction because $x$ and $y$ tend to move together.\n", "\n", "The other direction $q_1$ is the other uncorrelated (= orthogonal) direction of variation in the data. Not much is going on in that direction.\n", "\n", "(In fact, this $q_2$ can be viewed as a kind of \"best fit\" line which the Strang book calls [perpendicular least squares](http://mathworld.wolfram.com/LeastSquaresFittingPerpendicularOffsets.html), and is also called [Deming regression](https://en.wikipedia.org/wiki/Deming_regression).)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# PCA and the SVD\n", "\n", "Instead of forming $A A^T$ and diagonalizing that, we can equivalently (in the absence of roundoff errors) use the singular value decomposition (SVD) of $A/\\sqrt{n-1}$. Recall the SVD\n", "\n", "$$\n", "\\frac{A}{\\sqrt{n-1}} = U \\Sigma V^T\n", "$$\n", "\n", "where $U$ and $V$ are orthogonal matrices and $\\Sigma = \\begin{pmatrix} \\sigma_1 & & \\\\ & \\sigma_2 & \\\\ & & \\ddots \\end{pmatrix}$ is a diagonal $m\\times n$ matrix of the singular values $\\sigma_k$.\n", "\n", "Then, if we compute the covariance matrix , we get:\n", "\n", "$$\n", "S = \\frac{A A^T}{n-1} = (U \\Sigma V^T) (U \\Sigma V^T)^T = U \\Sigma V^T V \\Sigma^T U^T = U \\Sigma \\Sigma^T U^T\n", "$$\n", "\n", "Since $\\Sigma \\Sigma^T$ is a diagonal matrix of the *squares* $\\sigma_k^2$ of the singular values $\\sigma_k$, we find:\n", "\n", "* The squares $\\sigma_k^2$ of the singular values are the variances of the uncorrelated components of the data (the eigenvalues of $S$).\n", "* The left singular vectors $U$ are **precisely** the orthonormal eigenvectors of $A A^T$, i.e. the uncorrelated components of the data.\n", "\n", "In practice, PCA typically uses the SVD directly rather than explicitly forming the covariance matrix $S$. (It turns out that computing $A A^T$ explicitly exacerbates sensitivity to rounding errors and other errors in $A$.)" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "([-0.718956 -0.695056; -0.695056 0.718956], [0.98418, 0.192081], [-0.011127 -0.0187157; -0.0210155 0.11479; … ; 0.0207232 -0.0409839; -0.00720878 0.047507])" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U, σ, V = svd(A / sqrt(length(x)-1))" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2-element Array{Float64,1}:\n", " 0.968611\n", " 0.036895" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "σ.^2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As promised, this is the same as the eigenvalues of $S$ from above.\n", "\n", "Conveniently, the convention for the SVD is to sort the singular values in descending order $\\sigma_1 \\ge \\sigma_2 \\ge \\cdots$. So, the **first** singular value/vector represents *most* of the variation in the data, and so on." ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "2×2 Array{Float64,2}:\n", " -0.718956 -0.695056\n", " -0.695056 0.718956" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "U" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "image/png": "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xhvlcrmafI0dOzbCkUZWKNfBMAzNnTtXPXv2VOfOnXXhhRdq06ZNEY40sg4cOKDp06fL4/HI4/Fo+vTpOnjwYJuPufDCC5v9Plx33XVRijg8nn76afXr108pKSkaNWqU/vnPf7bZfvHixRo2bJiSk5M1bNgwLVmyJEqRRlYw12HRokXNfu4ul0tHjx6NYsTh9cEHH+jyyy9Xz5495XK59Oc//7ndx7z//vsaNWqUUlJS1L9/fz377LNRiDSygr0OK1eubPF34bPPPotSxNFHYhTDamtrdc011+hHP/pRUI+75JJLVF5e7v965513IhRhdIRyHX75y1/qscce05NPPqm1a9cqKytLX//61/175znRtGnTtG7dOi1dulRLly7VunXrNH369HYfN3PmzCa/D88991wUog2PoqIi3X777br33ntVUlKiCy64QFOmTFFZWVmL7VevXij7/J0AAAkdSURBVK2pU6dq+vTpWr9+vaZPn65rr71Wa9asiXLk4RXsdZDMVY9P/rmXl5crJSUlilGH1+HDhzVixAg9+eSTAbUvLS3VpZdeqgsuuEAlJSWaM2eObrvtNi1evDjCkUZWsNehwZYtW5r8Lpx55pkRitAGDMS8F1980fB4PAG1nTFjhnHFFVdEOCJrBHodfD6fkZWVZcyfP99/39GjRw2Px2M8++yzkQwxYjZv3mxIMv71r3/571u9erUhyfjss89afdyECROMn/zkJ9EIMSLOPfdc4+abb25y35AhQ4xZs2a12P7aa681Lrnkkib3TZ482bjuuusiFmM0BHsdgnnPcCJJxpIlS9psc/fddxtDhgxpct8Pf/hDY+zYsZEMLaoCuQ7vvfeeIck4cOBAlKKyHhUjNLNy5UqdccYZGjRokGbOnKm9e/daHVJUlZaWqqKiQpMmTfLfl5ycrAkTJqi4uNjCyEK3evVqeTwenXfeef77xo4dK4/H0+5revXVV5WRkaGzzjpLP/vZzxxTNautrdXHH3/c5OcoSZMmTWr1Na9evbpZ+8mTJzv25y6Fdh0k6dChQ+rbt6969+6tyy67TCUlJZEO1VZa+1346KOPdPz4cYuisk5+fr6ys7N18cUX67333rM6nIiKvyUt0aYpU6bommuuUd++fVVaWqr77rtPF110kT7++GMlJydbHV5UVFRUSJIyMzOb3J+ZmamdO3daEVKHVVRU6Iwzzmh2/xlnnOF/vS254YYb1K9fP2VlZWnjxo2aPXu21q9fr+XLl0cy3LCorKxUXV1diz/H1l5zRUVFUO2dIJTrMGTIEC1atEh5eXmqqqrSb37zGxUWFmr9+vWx3YVyktZ+F06cOKHKykplZ2dbFFl0ZWdn6/nnn9eoUaN07Ngxvfzyy7r44ou1cuVKjR8/3urwIoLEyGHmzp2rBx54oM02a9eu1ejRo0M6/9SpU/3Hw4cP1+jRo9W3b1+9/fbbuvrqq0M6ZyRE+jpIksvlanLbMIxm91kt0OsgNX89UvuvaebMmf7j4cOH68wzz9To0aP1ySefaOTIkSFGHV3B/hyd8HMPRTCva+zYsU0mXRQWFmrkyJH67W9/qyeeeCKicdpJS9espftj2eDBgzV48GD/7YKCAu3atUu/+tWvSIxgD7feemu7s4Jyc3PD9nzZ2dnq27evvvjii7CdMxwieR2ysrIkmX8xnvxX4d69e5v9BWm1QK/Df/7zH+3Zs6fZ9/bt2xfUaxo5cqQ6deqkL774wvaJUUZGhhISEppVRdr6OWZlZQXV3glCuQ6ncrvdGjNmjO3eByKptd+FxMREpaenWxSVPYwdO1avvPKK1WFEDImRw2RkZCgjIyNqz7d//37t2rXLdmXjSF6Hhq6j5cuXKz8/X5I5TuP999/Xo48+GpHnDFWg16GgoEBer1f//ve/de6550qS1qxZI6/Xq3HjxgX8fJs2bdLx48dt9/vQkqSkJI0aNUrLly/XVVdd5b9/+fLluuKKK1p8TEFBgZYvX6477rjDf9+yZcuCukZ2E8p1OJVhGFq3bp3y8vIiFabtFBQU6K233mpy37JlyzR69Gh16tTJoqjsoaSkxBHvASGzcOA3Imznzp1GSUmJ8cADDxjdunUzSkpKjJKSEqO6utrfZvDgwcabb75pGIZhVFdXGz/96U+N4uJio7S01HjvvfeMgoICo1evXkZVVZVVL6PDgr0OhmEY8+fPNzwej/Hmm28aGzZsMK6//nojOzvb0dfhkksuMc4++2xj9erVxurVq428vDzjsssu83//yy+/NAYPHmysWbPGMAzD2Lp1q/HAAw8Ya9euNUpLS423337bGDJkiJGfn2+cOHHCqpcRlNdff93o1KmT8bvf/c7YvHmzcfvttxtdu3Y1duzYYRiGYUyfPr3JzKwPP/zQSEhIMObPn298+umnxvz5843ExMQms/mcKNjrMHfuXGPp0qXGtm3bjJKSEuO73/2ukZiY6P/dcKLq6mr//31JxmOPPWaUlJQYO3fuNAzDMGbNmmVMnz7d33779u1Gly5djDvuuMPYvHmz8bvf/c7o1KmT8cYbb1j1EsIi2Ovw+OOPG0uWLDE+//xzY+PGjcasWbMMScbixYutegkRR2IUw2bMmGFIavb13nvv+dtIMl588UXDMAzjyJEjxqRJk4wePXoYnTp1Mvr06WPMmDHDKCsrs+YFhEmw18EwzCn7999/v5GVlWUkJycb48ePNzZs2BD94MNo//79xg033GCkpqYaqampxg033NBkCm5paWmT61JWVmaMHz/eOP30042kpCRjwIABxm233Wbs37/folcQmqeeesro27evkZSUZIwcOdJ4//33/d+bMGGCMWPGjCbt//SnPxmDBw82OnXqZAwZMiRmPgCCuQ6333670adPHyMpKcno0aOHMWnSJKO4uNiCqMOnYdr5qV8Nr3vGjBnGhAkTmjxm5cqVRn5+vpGUlGTk5uYazzzzTPQDD7Ngr8Ojjz5qDBgwwEhJSTG6d+9unH/++cbbb79tTfBR4jKM+tFkAAAAcY51jAAAAOqRGAEAANQjMQIAAKhHYgQAAFCPxAgAAKAeiREAAEA9EiMAAIB6JEYAAAD1SIwAAADqkRgBAADUIzECEFf27dunrKwsPfLII/771qxZo6SkJC1btszCyADYAXulAYg777zzjq688koVFxdryJAhys/P1ze+8Q0tWLDA6tAAWIzECEBc+vGPf6x3331XY8aM0fr167V27VqlpKRYHRYAi5EYAYhLNTU1Gj58uHbt2qWPPvpIZ599ttUhAbABxhgBiEvbt2/X7t275fP5tHPnTqvDAWATVIwAxJ3a2lqde+65OuecczRkyBA99thj2rBhgzIzM60ODYDFSIwAxJ277rpLb7zxhtavX69u3bpp4sSJSk1N1d/+9jerQwNgMbrSAMSVlStXasGCBXr55ZeVlpYmt9utl19+WatWrdIzzzxjdXgALEbFCAAAoB4VIwAAgHokRgAAAPVIjAAAAOqRGAEAANQjMQIAAKhHYgQAAFCPxAgAAKAeiREAAEA9EiMAAIB6JEYAAAD1SIwAAADqkRgBAADU+/9YeNCKZ2vraQAAAABJRU5ErkJggg==", "text/plain": [ "PyPlot.Figure(PyObject
)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "(-1.5556480153860381, 1.551373778452842, -1.3633186213221165, 1.4423247125247483)" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(x.-mean(x),y.-mean(y), \".\")\n", "xlabel(\"x\")\n", "ylabel(\"y\")\n", "axhline(0, linestyle=\"--\", color=\"k\", alpha=0.2)\n", "axvline(0, linestyle=\"--\", color=\"k\", alpha=0.2)\n", "arrow(0,0, U[:,1]..., head_width=0.1, color=\"r\")\n", "arrow(0,0, U[:,2]..., head_width=0.1, color=\"r\")\n", "text(U[1,2]+0.1,U[2,1], \"u₁\", color=\"r\")\n", "text(U[1,2]+0.2,U[2,2], \"u₂\", color=\"r\")\n", "axis(\"equal\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "There may be an irrelevant sign flip from before (the signs of the eigenvectors and singular vectors are arbitrary), but otherwise it is the same." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cool PCA applications\n", "\n", "* The [eigen-walker](https://www.biomotionlab.ca/Demos/BMLwalker.html) uses PCA to analyze variations in human gaits.\n", "* [eigen-faces](https://en.wikipedia.org/wiki/Eigenface) use PCA to analyze facial variations.\n", "\n", "If you google \"PCA\" you will find lots of other examples and tutorials." ] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Julia 0.6.3", "language": "julia", "name": "julia-0.6" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "0.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }