scipy.stats.Covariance.

from_cholesky#

static Covariance.from_cholesky(cholesky)[源代码]#

通过(下)Cholesky 因子提供的协方差的表示

参数:
choleskyarray_like

协方差矩阵的下三角 Cholesky 因子。

注释

假设协方差矩阵为 \(A\)\(L\) 是下 Cholesky 因子,使得 \(L L^T = A\)。数据点 \(x\) 的白化通过计算 \(L^{-1} x\) 来执行。\(\log\det{A}\) 计算为 \(2tr(\log{L})\),其中 \(\log\) 操作是逐元素执行的。

Covariance 类不支持奇异协方差矩阵,因为奇异协方差矩阵不存在 Cholesky 分解。

示例

准备一个对称正定协方差矩阵 A 和一个数据点 x

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> n = 5
>>> A = rng.random(size=(n, n))
>>> A = A @ A.T  # make the covariance symmetric positive definite
>>> x = rng.random(size=n)

执行 A 的 Cholesky 分解并创建 Covariance 对象。

>>> L = np.linalg.cholesky(A)
>>> cov = stats.Covariance.from_cholesky(L)

Covariance 对象的功能与参考实现进行比较。

>>> from scipy.linalg import solve_triangular
>>> res = cov.whiten(x)
>>> ref = solve_triangular(L, x, lower=True)
>>> np.allclose(res, ref)
True
>>> res = cov.log_pdet
>>> ref = np.linalg.slogdet(A)[-1]
>>> np.allclose(res, ref)
True