Skip to content
AI360Xpert
Beta

Marchenko-Pastur Law

The exact shape noise paints on sample eigenvalues. Given the ratio of features to samples, it draws the bulk, the edges and the mean in one curve.

At ratio one half the noise bulk runs from 0.09 to 2.91 with mean 1.0, so only spikes past 2.91 count as signal
At ratio one half the noise bulk runs from 0.09 to 2.91 with mean 1.0, so only spikes past 2.91 count as signal

Why Does This Exist?

The sample covariance S=XXT/nS = XX^T/n is what PCA actually diagonalises, where XX is the d×nd \times n data matrix and nn is the sample count. When d=500d = 500 and n=1000n = 1000, SS is 500×500500 \times 500 of pure sampling noise even if the truth is identity. Classical asymptotics with fixed dd say SS approaches truth, but here d/n=0.5d/n = 0.5 stays put and the spread never vanishes.

The Marchenko-Pastur law is the exact limit for that regime. It takes only the ratio y=d/ny = d/n and returns the full noise histogram: where it starts, where it ends, how it curves and where its mean sits. With that curve drawn, factor selection becomes visual: bulk is noise, spikes past the right edge are candidates. Random matrix theory frames both classical shapes; this page is the covariance one, while Wigner semicircle law handles symmetric noise.

Prerequisite in one paragraph. You need the empirical spectral distribution, the histogram of the dd sample eigenvalues, and the ratio y=d/ny = d/n. Population eigenvalues describe truth, sample eigenvalues describe the noisy estimate. Background is in eigenvalues and eigenvectors and singular value decomposition.

Think of It Like This

A pond ripple photographed with few pixels

Photograph a smooth ripple with a coarse sensor and each pixel averages its patch. The photo shows lumps the water never had, and the lump pattern depends only on the pixel-to-wavelength ratio, not on the day. Finer sensor, same ratio, same lump texture.

Marchenko-Pastur is that texture chart for covariances. The ratio d/nd/n is the coarseness. It predicts the lump pattern pure noise produces, so a real wave standing above the texture must be signal.

Where the analogy stops: pixels blur locally while covariance noise couples globally through the eigenbasis. The predicted curve is also exact only in the large-size limit, though it is already close at d=500d = 500.

How It Actually Works

Let XX have independent entries with mean zero and variance 11, and form S=XXT/nS = XX^T/n. As d,n→∞d, n \to \infty with d/n→yd/n \to y in (0,1)(0, 1), the eigenvalue histogram of SS converges to the density f(x)=(b−x)(x−a)/(2πyx)f(x) = \sqrt{(b-x)(x-a)}/(2\pi y x) on [a,b][a, b] with a=(1−y)2a = (1-\sqrt{y})^2 and b=(1+y)2b = (1+\sqrt{y})^2. Here aa is the left edge, bb the right edge, and the mean of the distribution stays 11.

For y=0.5y = 0.5: y≈0.7071\sqrt{y} \approx 0.7071, a=(0.2929)2≈0.0858a = (0.2929)^2 \approx 0.0858, b=(1.7071)2≈2.914b = (1.7071)^2 \approx 2.914. The bulk spans 0.090.09 to 2.912.91 with mean 11. The density peaks left of centre and falls to zero as a square root at each edge, which is why histograms look cliff-sided on the right. When y>1y > 1 a point mass at zero appears for the d−nd - n null directions; the formula extends with that atom.

Worked example

Take d=500d = 500 noise features and n=1000n = 1000 samples, y=0.5y = 0.5. Theory predicts about 6868 percent of the 500500 eigenvalues below 1.01.0 and the largest near 2.862.86 in a typical draw, matching the diagram. The average of all 500500 stays 1.01.0 to two decimals because trace is preserved: noise redistributes variance, it does not create it.

Now add one factor: population eigenvalues 4,1,1,…4, 1, 1, \ldots. The spike maps to about 4.64.6 past the 2.912.91 edge and separates cleanly. Repeat with spike 1.81.8: it lands near 2.12.1 inside the bulk and vanishes. The edge b=2.91b = 2.91 is the practical detection line at this ratio, and it slides with yy: at y=0.1y = 0.1 it is only 1.731.73, at y=0.9y = 0.9 it reaches 3.803.80.

Watch Out For

Using the y equals 0 limit on high-ratio data

As y→0y \to 0 the law collapses to a point at 11, the classical fixed-dd picture. Applying that point-mass thinking at y=0.5y = 0.5 declares every eigenvalue above 1.21.2 a factor. Roughly a third of pure noise sits there, so the factor count explodes.

Fix: compute y=d/ny = d/n first and draw the bulk for that yy. Never compare high-dimensional eigenvalues against 1.01.0 plus a fudge.

Forgetting the point mass when features exceed samples

When d>nd > n, SS has at least d−nd - n exact zeros. The continuous density covers only the nn nonzero eigenvalues. Normalising the histogram over all dd without the atom at zero shifts every percentile and hides the true right edge.

Fix: separate the zeros first. Fit the bulk to the nn nonzero values with y=d/n>1y = d/n > 1 form including the atom weight 1−1/y1 - 1/y at zero.

The Quick Version

  • Marchenko-Pastur maps ratio y=d/ny = d/n to the full noise eigenvalue histogram with edges (1±y)2(1 \pm \sqrt{y})^2.
  • At y=0.5y = 0.5 the bulk runs 0.09 to 2.91 with mean 1.0 and a right cliff edge.
  • Only spikes past the right edge count as detectable signal at that ratio.
  • Trace is preserved: noise spreads variance without creating it.
  • Above ratio 11, remember the atom of exact zeros before fitting the bulk.