Skip to content

Instantly share code, notes, and snippets.

@sauravrt
Created December 2, 2012 22:28
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sauravrt/4191334 to your computer and use it in GitHub Desktop.
Save sauravrt/4191334 to your computer and use it in GitHub Desktop.
RandomMatrixTheoryIntro
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "RandomMatrixTheoryIntro"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": "# Random Matrix Theory\nA random matrix is a matrix valued random variable i.e. a matrix with random variables as its entries. Random Matrix Theory (RMT) provides results on asymptotic statistical behavior of eigen structure of a random matrix as both dimensions of the matrix are allowed to grow infinitely large. This is in contrast with the classical asymptotic approximations where only one dimension is allowed to grow infinitely large. We are particularly interested in probability distribution function of the eigenvalues of random matrices.\n\nLet $\\mathbf{x} \\in \\mathbb{C}^N$ be a random vector with zero mean and covariance $\\mathbf{R}$. If $\\mathbf{x_1, x_2}\\ldots \\mathbf{x_n}$ are $n$ independent realization of $\\mathbf{x}$, then from law of large numbers, the sample covariance matrix (SCM) $\\mathbf{R}_n = \\frac{1}{n}\\sum \\mathbf{x}_i \\mathbf{x}^H_i$ almostly surely converges the the true covariance $\\mathbf{R}$ as $n \\rightarrow \\infty$. Generally infinite samples are not available and for $n \\gg N$, $\\mathbf{R}_n$ provides a ''good'' approximation to $\\mathbf{R}$.\n\nHowever if $N$ is taken much larger in the first place, or if $n$ cannot be afforded to be too large (i.e. $n \\approx N$) the SCM is not longer a good approximation to the true covariance $\\mathbf{R}$. Infact, RMT tells us that a peculiar behavior of $R_n$ arises as both $N, L \\rightarrow \\infty$ while $N/L \\rightarrow c$. Once such result is that the eigenvalue distribution converges to a deterministic distribution function.\n\nThe emperical distribution of eigenvalues of $\\mathbf{R}_n$ is defined as \n<center>\n$F^{\\mathbf{R}_n}(x) = \\frac{\\text{# of}\\lambda \\lt x}{N}.$\n</center>\n As $N, L \\rightarrow \\infty$ while $N/L \\rightarrow c$, $F^{\\mathbf{R}_n}(x) \\rightarrow F^{\\mathbf{R}}(x)$. In particular when $\\mathbf{R} = \\mathbf{I}$, the eigenvalue distribution is given by Marcenko Pastur law. The density function is given by\n\n<center>\n $f^{\\mathbf{R}_n}(x) = \\frac{1}{2x\\pi c}\\sqrt{(a - x)(x - b)}$\n</center>\n\nwhere $a = (1 + \\sqrt{c})^2$ and $b = (1 - \\sqrt{c})^2$ are the upper and lower bounds of $f^{\\mathbf{R}_n}$.\n\n** Wishart Matrix\nA Wishart matrix is a $N \\times N$ Hermitian random matrix of the form $W = XX^H$, where X is an $N \\times L$ random matrix with IID entries. A Wishart matrix is parameterized by $c = \\frac{N}{L}$. A SCM obtained from $L$ independent realizations of a random vector is also a Wishart matrix. The asymptotic eigenvalue denisty function of a Wishart matrix as $N, L \\rightarrow \\infty$ and $\\frac{N}{L} \\rightarrow c$ is given by the *Marchenko Pastur* density function."
},
{
"cell_type": "code",
"collapsed": false,
"input": "def marcenkopasturpdf(x, c):\n # Marchenko Pastur Density Function for c > 1\n ub = (1 + sqrt(c))**2\n lb = (1 - sqrt(c))**2 \n mp = zeros(len(x))\n \n # Figure out indices where mp is to be calculated\n lbidx = where(x > lb)\n ubidx = where(x < ub) \n a = lbidx[0][0]\n b = ubidx[-1][-1]\n xh = x[a:b+1]\n # MP distribution\n mp[a:b+1] = sqrt((xh - lb)*(ub - xh))/(2*pi*c*xh) \n return (lb, ub, mp)",
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 14
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Example below shows a case of Wishat matrix obtained from a random matrix of size $N \\times L$ with Complex Gaussian IID entries. The parameter $c$ is set to a fixed value and for a choice of value for $N$, $L = N/c$. \nA histogram of the eigenvalues of the computed Wishart matrix is compared with the actual Marchenko Pastur density for a given $c$."
},
{
"cell_type": "code",
"collapsed": false,
"input": "N = 500\nc = 1.0/4\nL = N/c\n\n# Random matrix realization\nX = sqrt(0.5)*(randn(N, L) + 1j*randn(N, L))\nWc = dot(X, conj(X.T))/L\nD, U = eig(Wc)\nhist(D, 40, normed=True)\nlb, ub, mp = marcenkopasturpdf(arange(0, 5, 0.01), c)\nplot(arange(0, 5, 0.01), mp, linewidth = 4, color='red')\nxlim((lb,ub))\nylabel('f(x)')\nxlabel('Eigenvalue')",
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "pyout",
"prompt_number": 15,
"text": "<matplotlib.text.Text at 0x4e6d350>"
},
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 15
},
{
"cell_type": "markdown",
"metadata": {},
"source": "Saurav R. Tuladhar (@sauravrt)"
}
],
"metadata": {}
}
]
}
@sauravrt
Copy link
Author

sauravrt commented Dec 2, 2012

Added author name

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment