scipy.stats.Covariance.
from_diagonal#
- static Covariance.from_diagonal(diagonal)[source]#
从对角线返回协方差矩阵的表示。
- 参数:
- diagonalarray_like
对角矩阵的对角元素。
注释
令对角协方差矩阵 \(D\) 的对角元素存储在向量 \(d\) 中。
当 \(d\) 的所有元素都严格为正时,数据点 \(x\) 的白化通过计算 \(x \cdot d^{-1/2}\) 来执行,其中逆平方根可以逐元素进行。 \(\log\det{D}\) 计算为 \(-2 \sum(\log{d})\),其中 \(\log\) 操作逐元素执行。
此
Covariance
类支持奇异协方差矩阵。在计算_log_pdet
时,忽略 \(d\) 的非正元素。当要白化的点不在协方差矩阵列的跨度内时,白化没有明确定义。这里采用的约定是将 \(d\) 的非正元素的逆平方根视为零。示例
准备一个对称正定协方差矩阵
A
和一个数据点x
。>>> 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)
从
A
中提取对角线并创建Covariance
对象。>>> d = np.diag(A) >>> cov = stats.Covariance.from_diagonal(d)
将
Covariance
对象的功能与参考实现进行比较。>>> 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