scipy.stats.Covariance.

from_diagonal#

static Covariance.from_diagonal(diagonal)[source]#

從對角線回傳共變異數矩陣的表示。

參數:
diagonalarray_like

對角矩陣的對角線元素。

Notes

令對角共變異數矩陣 \(D\) 的對角線元素儲存在向量 \(d\) 中。

\(d\) 的所有元素都嚴格為正數時,資料點 \(x\) 的白化 (whitening) 處理是透過計算 \(x \cdot d^{-1/2}\) 來執行,其中反平方根可以逐元素運算。\(\log\det{D}\) 的計算方式為 \(-2 \sum(\log{d})\),其中 \(\log\) 運算是逐元素執行的。

Covariance 類別支援奇異共變異數矩陣。當計算 _log_pdet 時,\(d\) 的非正數元素會被忽略。當要白化的點不在共變異數矩陣的列的張成空間 (span) 內時,白化處理的定義不明確。這裡採用的慣例是將 \(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