Numpy_协方差与相关系数
協方差與相關系數
- 協方差與相關系數
- 協方差
- 相關系數
1.協方差
如果兩個變量的變化趨勢一致,也就是說如果其中一個大于自身的期望值時另外一個也大于自身的期望值,那么兩個變量之間的協方差就是正值;如果兩個變量的變化趨勢相反,即其中一個變量大于自身的期望值時另外一個卻小于自身的期望值,那么兩個變量之間的協方差就是負值。
可以通俗的理解為:兩個變量在變化過程中是同方向變化?還是反方向變化?同向或反向程度如何??
你變大,同時我也變大,說明兩個變量是同向變化的,這時協方差就是正的;?
你變大,同時我變小,說明兩個變量是反向變化的,這時協方差就是負的;?
從數值來看,協方差的數值越大,兩個變量同向程度也就越大。反之亦然。
Cov(X,Y)=1m∑i=1m(xi?xˉ)(yi?yˉ)
import numpy as npa = np.array([1,2,3]) b = np.array([4,3,4]) x = np.vstack((a,b)) np.cov(a, b) np.cov(a, b, bias=True) np.cov(x)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
輸出:
>>> np.cov(a, b) array([[ 1. , 0. ],[ 0. , 0.33333333]])>>> np.cov(a, b, bias=True) array([[ 0.66666667, 0. ],[ 0. , 0.22222222]])>>> np.cov(x) array([[ 1. , 0. ],[ 0. , 0.33333333]])- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
這里使用numpy庫的cov函數來計算協方差,輸出結果為一個協方差矩陣,results[i][j]表示第i個變量與第j個變量的協方差,比如np.cov(x)的結果為
>>> np.cov(x) array([[ 1. , 0. ],[ 0. , 0.33333333]])- 1
- 2
- 3
x為變量矩陣,x的第 i 行表示第 i 個隨機變量,這里第0個隨機變量與第0個隨機變量的協方差為1,第0個隨機變量與第1個隨機變量的協方差為0,第1個隨機變量與第0個隨機變量的協方差為0,第1個隨機變量與第1個隨機變量的協方差為0.33333333.
還有一點就是bais參數的意義,默認為False,那么計算均值的時候除以 n - 1,如果設為True,那么計算均值的時候除以n,其中n為隨機變量的維度數。具體理論涉及到統計學知識,可以參考知乎回答。
numpy的cov函數使用的三點:
2. 相關系數
相關系數是用以反映變量之間相關關系密切程度的統計指標。相關系數也可以看成協方差:一種剔除了兩個變量量綱影響、標準化后的特殊協方差,它消除了兩個變量變化幅度的影響,而只是單純反應兩個變量每單位變化時的相似程度。
r=Cov(X,Y)δx??√δy??√
并且
|r|≤1
其中,δx,δy表示X,Y的方差。
import numpy as npa = np.array([1,2,3]) b = np.array([2,5,8]) x = np.vstack((a,b)) np.corrcoef(a, b) np.corrcoef(x)- 1
- 2
- 3
- 4
- 5
- 6
- 7
輸出
>>> np.corrcoef(a, b) array([[ 1., 1.],[ 1., 1.]])>>> np.corrcoef(x) array([[ 1., 1.],[ 1., 1.]])- 1
- 2
- 3
- 4
- 5
- 6
- 7
numpy中函數corrcoef的用法與函數cov的用法相似,只是corrcoef中bais參數不起作用。
numpy的cov函數使用的兩點:
總結
以上是生活随笔為你收集整理的Numpy_协方差与相关系数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Microsoft Dynamics E
- 下一篇: cp -r为啥会有提示linux,处cp