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