Specification and efficient samplers for several random matrix distributions, focusing on spiked models in real-valued data.
Author damian-t-p
1 Star
Updated Last
2 Years Ago
Started In
May 2019


Build Status codecov

A Julia package containing =Distribution.jl=-type specifications for various distributions arising from random matrix theory.

Currently implemented distributions

Matrix distributions

  • SpikedWigner(beta, n, spikes; scaled=false): Wigner distribution with an added rank-r matrix with eigenvalues (s1, ... , sr) * sqrt(n).

  • SpikedWishart(beta, n, p, spikes; scaled=false): Wishart distribution with spiked covariance (sampler for more than one spike implemented only for the real case. [1]

    spikes is an array [s1, ..., sr] such that the Wishart covariance is diagonal with entries s1, ... , sr, 1, ..., 1.

  • Jacobi(beta, n1, n2, p): Random matrices of the form E(E+H)-1. Here E and H are (n1, p) and (n2, p) white Wisharts respectively. [2]

Specifying scaled=true in SpikedWigner and SpikedWishart scales the matrices by an appropriate function of n so that the corresponding bulks converge to the semicircle and Marchenko-Pastur laws respectively. Due to the inverse in the definition of the Jacobi ensemble, no scaling is necessary for Jacobi,

Normal entries in Gaussian ensembles are scaled to have variance 1.

Limiting eigenvalue distributions

  • MarchenkoPastur(gamma): Limiting empirical spectral density of a real white Wishart matrix with p/n -> gamma as long as 0 < gamma < 1.
  • TracyWidom(beta): Limiting distribution of the maximum eigenvalue of many random matrix ensembles with Dyson parameter beta.
  • Wachter(gamma1, gamma2): Limiting empirical spectral density of S1 S2-1. Here S1 and S2$ are sample covariance matrices with n1/p -> gamma1 and n2/p -> gamma2$.

Efficient samplers

The function randeigvals efficiently samples from the distribution of eigenvalues of the implemented random matrix distributions. It does this by generating a tridiagonal or banded matrix with eigenvalue equal in distribution to the specified model.


An Jupyter notebook demonstrating all of the implemented eigenvalue samplers is provided in /examples/eigenvalue-simulation.ipynb.


[1] Dumitriu & Edelman, Matrix Models for beta ensembles, Journal of Mathematical Physics, (11), (2002).

[2] Killip & Nenciu, Matrix Models for Circular Ensembles, International Mathematics Research Notices, 50, (2004).

Used By Packages

No packages found.