scipy.stats.random_correlation#

scipy.stats.random_correlation = <scipy.stats._multivariate.random_correlation_gen object>[Quelle]#

Eine zufällige Korrelationsmatrix.

Gibt eine zufällige Korrelationsmatrix zurück, gegeben einen Vektor von Eigenwerten. Die zurückgegebene Matrix ist symmetrisch positiv semidefinit mit Einheiten auf der Diagonalen.

Der Parameter eigs gibt die Eigenwerte der Korrelationsmatrix an und impliziert die Dimension.

Parameter:
eigs1D-ndarray

Eigenwerte der Korrelationsmatrix. Alle Eigenwerte müssen nicht-negativ sein und zu der Anzahl der Eigenwerte summieren.

seed{None, int, numpy.random.Generator, numpy.random.RandomState}, optional

Wenn seed None ist (oder np.random), wird die Singleton-Instanz von numpy.random.RandomState verwendet. Wenn seed eine Ganzzahl ist, wird eine neue RandomState-Instanz mit seed initialisiert. Wenn seed bereits eine Generator- oder RandomState-Instanz ist, wird diese Instanz verwendet.

tolfloat, optional

Toleranz für die Überprüfung von Eingabeparametern

diag_tolfloat, optional

Toleranz für Abweichungen der Diagonalen der resultierenden Matrix. Standard: 1e-7

Methoden

rvs(eigs=None, random_state=None)

Zieht zufällige Korrelationsmatrizen, alle mit Eigenwerten eigs.

Rückgabe:
rvsndarray oder Skalar

Zufällige N-dimensionale Matrizen, Dimension (Größe, dim, dim), die jeweils Eigenwerte eigs haben.

Löst aus:
RuntimeError

Ein Gleitkommafehler verhinderte die Erzeugung einer gültigen Korrelationsmatrix.

Hinweise

Erzeugt eine zufällige Korrelationsmatrix nach einem numerisch stabilen Algorithmus, der von Davies & Higham beschrieben wird. Dieser Algorithmus verwendet eine einzelne O(N) Ähnlichkeitstransformation, um eine symmetrische positiv semidefinitive Matrix zu konstruieren, und wendet eine Reihe von Givens-Rotationen an, um sie so zu skalieren, dass sie Einsen auf der Diagonalen hat.

Referenzen

[1]

Davies, Philip I; Higham, Nicholas J; „Numerically stable generation of correlation matrices and their factors“, BIT 2000, Bd. 40, Nr. 4, S. 640–651

Beispiele

>>> 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
array([[ 1.        , -0.02423399,  0.03130519,  0.4946965 ],
       [-0.02423399,  1.        ,  0.20334736,  0.04039817],
       [ 0.03130519,  0.20334736,  1.        ,  0.02694275],
       [ 0.4946965 ,  0.04039817,  0.02694275,  1.        ]])
>>> import scipy.linalg
>>> e, v = scipy.linalg.eigh(x)
>>> e
array([ 0.5,  0.8,  1.2,  1.5])