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_pdetwerden 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
Aund einen Datenpunktxvor.>>> 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
Aund erstellen Sie dasCovariance-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