使用Python计算方差协方差相关系数
使用Python計算方差,協方差和相關系數
文章目錄
- 使用Python計算方差,協方差和相關系數
- 數學定義
- 期望
- 方差
- 協方差
- 相關系數
- 協方差矩陣
- 使用NumPy包計算
數學定義
期望
設隨機變量XXX只取有限個可能值ai(i=0,1,...,m)a_i (i=0, 1, ..., m)ai?(i=0,1,...,m),其概率分布為P(X=ai)=piP (X = a_i) = p_iP(X=ai?)=pi?. 則XXX的數學期望,記為E(X)E(X)E(X)或EXEXEX,定義為:
E(X)=∑iaipiE(X) = \sum\limits_ia_ip_iE(X)=i∑?ai?pi?
方差
設XXX為隨機變量,分布為FFF,則
Var(X)=E(X?EX)2Var(X) = E(X-EX)^2 Var(X)=E(X?EX)2
稱為XXX(或分布FFF)的方差,其平方根Var(X)\sqrt{Var(X)}Var(X)?稱為XXX(或分布FFF)的標準差.
方差和標準差是刻畫隨機變量在其中心位置附近散布程度的數字特征。
注意:樣本方差和總體方差的區別
統計學上對于樣本方差的無偏估計使用如下公式計算:
s2=1n?1∑i=1n(xi?xˉ)2s^2 = \frac{1}{n-1} \sum\limits_{i=1}^n(x_i -\bar{x})^2 s2=n?11?i=1∑n?(xi??xˉ)2
前面有一個系數1n?1\frac{1}{n-1}n?11?,當時當樣本數量很大的時候,nn?1\frac{n}{n-1}n?1n?近似為1,可以直接使用總體方差公式進行計算。
協方差
協方差用來刻畫兩個隨機變量X,YX, YX,Y之間的相關性,定義為
Cov(X,Y)=E[(X?EX)(Y?EY)]Cov(X, Y) = E[(X - EX)(Y-EY)]Cov(X,Y)=E[(X?EX)(Y?EY)]
如果協方差為正,說明X,Y同向變化,協方差越大說明同向程度越高;如果協方差為負,說明X,Y反向運動,協方差越小說明反向程度越高
相關系數
相關系數可以理解為標準化以后的協方差,設XXX的標準差為σx\sigma_xσx?,YYY的標準差為σy\sigma_yσy?定義為
ρ=Cov(X,Y)σxσy\rho = \frac{Cov(X, Y)}{\sigma_x\sigma_y}ρ=σx?σy?Cov(X,Y)?
相關系數消除了兩個變量變化幅度的影響,而只是單純反應兩個變量每單位變化時的相似程度
協方差矩陣
協方差只能表示兩個隨機變量的相關程度(二維問題),對于大于二維的隨機變量,可以使用協方差矩陣表示.
協方差矩陣的每一個值就是對應下標的兩個隨機變量的協方差
對于三維協方差矩陣,C=[Cov(X,X)Cov(X,Y)Cov(X,Z)Cov(Y,X)Cov(Y,Y)Cov(X,Y)Cov(Z,X)Cov(Z,Y)Cov(Z,Z)]C=\begin{bmatrix}Cov(X, X) & Cov(X, Y) & Cov(X, Z) \\ Cov(Y, X) & Cov(Y, Y) & Cov(X, Y) \\ Cov(Z, X) & Cov(Z, Y) & Cov(Z, Z)\end{bmatrix}C=???Cov(X,X)Cov(Y,X)Cov(Z,X)?Cov(X,Y)Cov(Y,Y)Cov(Z,Y)?Cov(X,Z)Cov(X,Y)Cov(Z,Z)????
使用NumPy包計算
import numpy as np# 隨機生成兩個樣本 x = np.random.randint(0, 9, 1000) y = np.random.randint(0, 9, 1000)# 計算平均值 mx = x.mean() my = y.mean()# 計算標準差 stdx = x.std() stdy = y.std()# 計算協方差矩陣 covxy = np.cov(x, y) print(covxy)# 我們可以手動進行驗證 # covx等于covxy[0, 0], covy等于covxy[1, 1] # 我們這里的計算結果應該是約等于,因為我們在計算的時候是使用的總體方差(總體方差和樣本方差是稍微有點區別的) covx = np.mean((x - x.mean()) ** 2) covy = np.mean((y - y.mean()) ** 2) print(covx) print(covy) # 這里計算的covxy等于上面的covxy[0, 1]和covxy[1, 0],三者相等 covxy = np.mean((x - x.mean()) * (y - y.mean())) print(covxy)# 下面計算的是相關系數矩陣(和上面的協方差矩陣是類似的) coefxy = np.corrcoef(x, y) print(coefxy)一組可能的輸出結果:
[[6.83907508 0.10925926][0.10925926 6.53390891]] 6.832236 6.527375 0.10914999999999989 [[1. 0.01634455][0.01634455 1. ]]總結
以上是生活随笔為你收集整理的使用Python计算方差协方差相关系数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编程设计电影海报的色彩/统计电影海报颜色
- 下一篇: 开发应用程序 白拿Bambook