bundles / scipy latest / scipy / stats / _multivariate / random_correlation_gen
class
scipy.stats._multivariate:random_correlation_gen
Signature
class random_correlation_gen ( seed = None ) Members
Summary
A random correlation matrix.
Extended Summary
Return a random correlation matrix, given a vector of eigenvalues. The returned matrix is symmetric positive semidefinite with unit diagonal.
The eigs keyword specifies the eigenvalues of the correlation matrix, and implies the dimension.
Parameters
eigs: 1d ndarrayEigenvalues of correlation matrix. All eigenvalues need to be non-negative and need to sum to the number of eigenvalues.
seed: {None, int, `numpy.random.Generator`, `numpy.random.RandomState`}, optionalIf
seedis None (ornp.random), the numpy.random.RandomState singleton is used. Ifseedis an int, a newRandomStateinstance is used, seeded withseed. Ifseedis already aGeneratororRandomStateinstance then that instance is used.tol: float, optionalTolerance for input parameter checks
diag_tol: float, optionalTolerance for deviation of the diagonal of the resulting matrix. Default: 1e-7
Methods
rvs(eigs=None, random_state=None)Draw random correlation matrices, all with eigenvalues eigs.
Returns
rvs: ndarray or scalarRandom size N-dimensional matrices, dimension (size, dim, dim), each having eigenvalues eigs.
Raises
: RuntimeErrorFloating point error prevented generating a valid correlation matrix.
Notes
Generates a random correlation matrix following a numerically stable algorithm spelled out by Davies & Higham. This algorithm uses a single O(N) similarity transformation to construct a symmetric positive semi-definite matrix, and applies a series of Givens rotations to scale it to have ones on the diagonal.
Examples
import numpy as np from scipy.stats import random_correlation rng = np.random.default_rng() x = random_correlation.rvs((.5, .8, 1.2, 1.5), random_state=rng)✓
x
✗import scipy.linalg e, v = scipy.linalg.eigh(x)✓
e
✗Aliases
-
scipy.stats._multivariate.random_correlation_gen