numpy.cov() 協方差計算方法


公式原理

  • 對於隨機變量\(X\)\(Y\),協方差\(COV(X,Y)=E(X-EX)(Y-EY)=E(XY)-EXEY\)
  • 假設選取n個樣本即,對於總體\(X\)的樣本即為\(X_1=[x_1,x_2,x_3,...]\),均值記為\(\bar{x}=\frac{1}{n}\sum_i{x_i}\)\(Y\)同上
  • 樣本方差計算,采用總體的無偏估計量計算:\(\frac{1}{n-1}\sum_{i=1}^n{(x_i-\bar{x})^2}\)
  • 協方差矩陣\(COV([Z_1,Z_2])=\left[ \begin{matrix} COV(Z_1,Z_1) &COV(Z_1,Z_2)&\\COV(Z_2,Z_1)&COV(Z_2,Z_2)\end{matrix} \right]\)

numpy中的cov方法(可點擊跳轉官方文檔)

  • 重要參數:rawvar(default:True),即numpy的cov方法中默認一個矩陣中,為一個隨機變量,為其觀測值(即樣本\(s\)),即:
\(s_1\) \(s_2\)
X
Y

實例:

import numpy as np
a=[1,2,3]
b=[5,5,6]
z=np.stack((a,b))
np.cov(z)
#即:
#[cov(a,a),cov(a,b)]
#[cov(b,a),cov(b,b)]
#output:
#      array([[1.        , 0.5       ],
#             [0.5       , 0.33333333]])

代碼:

def cov(x,y):# x為向量,即觀測值(樣本)向量
    n=len(x)
    x_bar=np.mean(x)
    y_bar=np.mean(y)
    var=np.sum((x-x_bar)*(y-y_bar))/(n-1)
    return var
print(cov(a,a),cov(a,b),cov(b,b))
#output:
#      1.0 0.5 0.33333333333333337

references:

https://njuferret.github.io/2019/07/26/2019-07-26-covariance/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM