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