scipy.stats.Covariance.

from_diagonal#

static Covariance.from_diagonal(diagonal)[Quelle]#

Gibt eine Darstellung einer Kovarianzmatrix aus ihrer Diagonalen zurück.

Parameter:
diagonalarray_like

Die Diagonalelemente einer Diagonalmatrix.

Hinweise

Seien die Diagonalelemente einer diagonalen Kovarianzmatrix \(D\) im Vektor \(d\) gespeichert.

Wenn alle Elemente von \(d\) strikt positiv sind, erfolgt die Weißung eines Datenpunkts \(x\) durch Berechnung von \(x \cdot d^{-1/2}\), wobei die inverse Quadratwurzel elementweise genommen werden kann. \(\log\det{D}\) wird als \(-2 \sum(\log{d})\) berechnet, wobei die \(\log\)-Operation elementweise durchgeführt wird.

Diese Covariance-Klasse unterstützt singuläre Kovarianzmatrizen. Bei der Berechnung von _log_pdet werden nicht-positive Elemente von \(d\) ignoriert. Die Weißung ist nicht gut definiert, wenn der zu weißende Punkt nicht im Spann der Spalten der Kovarianzmatrix liegt. Die hier gewählte Konvention ist, die inverse Quadratwurzel von nicht-positiven Elementen von \(d\) als Nullen zu behandeln.

Beispiele

Bereiten Sie eine symmetrische positiv definite Kovarianzmatrix A und einen Datenpunkt x vor.

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> n = 5
>>> A = np.diag(rng.random(n))
>>> x = rng.random(size=n)

Extrahieren Sie die Diagonale aus A und erstellen Sie das Covariance-Objekt.

>>> d = np.diag(A)
>>> cov = stats.Covariance.from_diagonal(d)

Vergleichen Sie die Funktionalität des Covariance-Objekts mit Referenzimplementierungen.

>>> res = cov.whiten(x)
>>> ref = np.diag(d**-0.5) @ x
>>> np.allclose(res, ref)
True
>>> res = cov.log_pdet
>>> ref = np.linalg.slogdet(A)[-1]
>>> np.allclose(res, ref)
True