scipy.stats.Covariance.

from_precision#

static Covariance.from_precision(precision, covariance=None)[source]#

從精度矩陣返回共變異數的表示。

參數:
precision類陣列

精度矩陣;也就是說,一個方形、對稱、正定的共變異數矩陣的逆矩陣。

covariance類陣列,選填

方形、對稱、正定的共變異數矩陣。如果未提供,則可能需要計算此矩陣(例如,為了評估 scipy.stats.multivariate_normal 的累積分布函數),方法是反轉精度

註解

令共變異數矩陣為 \(A\),其精度矩陣為 \(P = A^{-1}\),且令 \(L\) 為下三角 Cholesky 因子,使得 \(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