scipy.stats.Covariance.

whiten#

Covariance.whiten(x)[Quelle]#

Führt eine Whitening-Transformation mit Daten durch.

„Whitening“ („weiß“ wie in „weißes Rauschen“, bei dem jede Frequenz die gleiche Amplitude hat) transformiert eine Menge von Zufallsvariablen in eine neue Menge von Zufallsvariablen mit einer Einheits-Kovarianzmatrix auf der Diagonalen. Wenn eine Whitening-Transformation auf eine Stichprobe von Punkten angewendet wird, die gemäß einer multivariaten Normalverteilung mit Mittelwert Null verteilt sind, ist die Kovarianz der transformierten Stichprobe annähernd die Identitätsmatrix.

Parameter:
xarray_like

Ein Array von Punkten. Die letzte Dimension muss der Dimensionalität des Raumes entsprechen, d. h. der Anzahl der Spalten in der Kovarianzmatrix.

Rückgabe:
x_array_like

Das transformierte Array von Punkten.

Referenzen

[1]

„Whitening Transformation“. Wikipedia. https://en.wikipedia.org/wiki/Whitening_transformation

[2]

Novak, Lukas und Miroslav Vorechovsky. „Generalization of coloring linear transformation“. Transactions of VSB 18.2 (2018): 31-35. DOI:10.31490/tces-2018-0013

Beispiele

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> n = 3
>>> A = rng.random(size=(n, n))
>>> cov_array = A @ A.T  # make matrix symmetric positive definite
>>> precision = np.linalg.inv(cov_array)
>>> cov_object = stats.Covariance.from_precision(precision)
>>> x = rng.multivariate_normal(np.zeros(n), cov_array, size=(10000))
>>> x_ = cov_object.whiten(x)
>>> np.cov(x_, rowvar=False)  # near-identity covariance
array([[0.97862122, 0.00893147, 0.02430451],
       [0.00893147, 0.96719062, 0.02201312],
       [0.02430451, 0.02201312, 0.99206881]])