scipy.stats.Covariance.

from_diagonal#

static Covariance.from_diagonal(diagonal)[源代码][源代码]#

从对角线返回协方差矩阵的表示。

参数:
对角线array_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 中提取对角线并创建 协方差 对象。

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