scipy.stats.Covariance.

from_precision#

статический Ковариация.from_precision(точность, ковариация=None)[источник]#

Вернуть представление ковариации из её матрицы точности.

Параметры:
точностьarray_like

Матрица точности; то есть обратная квадратной, симметричной, положительно определенной ковариационной матрицы.

ковариацияarray_like, необязательный

Квадратная, симметричная, положительно определённая ковариационная матрица. Если не предоставлена, её может потребоваться вычислить (например, для оценки кумулятивной функции распределения scipy.stats.multivariate_normal) путём обращения точность.

Примечания

Пусть ковариационная матрица будет \(A\), его матрица точности \(P = A^{-1}\), и \(L\) будет нижним множителем Холецкого таким, что \(L L^T = P\). Отбеливание точки данных \(x\) выполняется путем вычисления \(x^T L\). \(\log\det{A}\) рассчитывается как \(-2tr(\log{L})\), где \(\log\) операция выполняется поэлементно.

Это Covariance класс не поддерживает сингулярные ковариационные матрицы, потому что матрица точности не существует для сингулярной ковариационной матрицы.

Примеры

Подготовить симметричную положительно определенную матрицу точности P и точка данных x. (Если матрица точности еще не доступна, рассмотрите другие фабричные методы Covariance класс.)

>>> 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)

Создать Covariance объект.

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

Сравните функциональность Covariance объекта с эталонными реализациями.

>>> 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