scipy.stats.Covariance.

from_precision#

static Covariance.from_precision(precision, covariance=None)[Quelle]#

Gibt eine Darstellung der Kovarianz aus ihrer Präzisionsmatrix zurück.

Parameter:
precisionarray_like

Die Präzisionsmatrix; das heißt, die Inverse einer quadratischen, symmetrischen, positiv definiten Kovarianzmatrix.

covariancearray_like, optional

Die quadratische, symmetrische, positiv definite Kovarianzmatrix. Wenn nicht angegeben, muss diese möglicherweise berechnet werden (z. B. um die kumulative Verteilungsfunktion von scipy.stats.multivariate_normal auszuwerten), indem precision invertiert wird.

Hinweise

Sei die Kovarianzmatrix \(A\), ihre Präzisionsmatrix \(P = A^{-1}\) und \(L\) sei der untere Cholesky-Faktor, so dass \(L L^T = P\). Das Whitening eines Datenpunkts \(x\) wird durch die Berechnung von \(x^T L\) durchgeführt. \(\log\det{A}\) wird als \(-2tr(\log{L})\) berechnet, wobei die \(\log\)-Operation elementweise durchgeführt wird.

Diese Covariance-Klasse unterstützt keine singulären Kovarianzmatrizen, da die Präzisionsmatrix für eine singuläre Kovarianzmatrix nicht existiert.

Beispiele

Bereiten Sie eine symmetrische, positiv definite Präzisionsmatrix P und einen Datenpunkt x vor. (Wenn die Präzisionsmatrix nicht bereits verfügbar ist, beachten Sie die anderen Factory-Methoden der Covariance-Klasse.)

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> n = 5
>>> P = rng.random(size=(n, n))
>>> P = P @ P.T  # a precision matrix must be positive definite
>>> x = rng.random(size=n)

Erstellen Sie das Covariance-Objekt.

>>> cov = stats.Covariance.from_precision(P)

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

>>> res = cov.whiten(x)
>>> ref = x @ np.linalg.cholesky(P)
>>> np.allclose(res, ref)
True
>>> res = cov.log_pdet
>>> ref = -np.linalg.slogdet(P)[-1]
>>> np.allclose(res, ref)
True