1. 寫在前面
??為了便于理解和驗證,可以參考一下,http://www.ab126.com/shuxue/2788.html所提供的協(xié)方差的在線計算器。
2. 均值,方差
??統(tǒng)計里最基本的概念就是樣本的均值,方差,或者再加個標準差。假定有一個含有n個樣本的集合X={X1,…,Xn},依次給出這些概念的公式描述:
??很顯然,均值描述的是樣本集合的中間點,它告訴我們的信息是很有限的。
??而標準差給我們描述的則是樣本集合的各個樣本點到均值的距離之平均。以這兩個集合為例,[0,8,12,20]和[8,9,11,12],兩個集合的均值都是10,但顯然兩個集合差別是很大的,計算兩者的標準差,前者是8.3,后者是1.8,顯然后者較為集中,故其標準差小一些,標準差描述的就是這種“散布度”。
??看出方差與標準差關(guān)系沒有?
??為什么除以n-1而不是除以n? 這個稱為貝塞爾修正。在統(tǒng)計學中樣本的均差多是除以自由度(n-1),它的意思是樣本能自由選擇的程度,當選到只剩一個時,它不可能再有自由了,所以自由度是(n-1)。這樣能使我們以較小的樣本集更好的逼近總體的標準差,即統(tǒng)計上所謂的“無偏估計”。
??下面采用Python演算一下:
??參考:https://blog.csdn.net/lyl771857509/article/details/79439184
> import numpy as np
> x=[1,2,3,4]
> print(np.cov(x))</pre>
顯示結(jié)果: 1.6666666666666665
計算步驟:
求和: 1+2+3+4=10
平均值: =2.5
方差:
3. 協(xié)方差
??上面幾個統(tǒng)計量看似已經(jīng)描述的差不多了,但我們應(yīng)該注意到,標準差和方差一般是用來描述一維數(shù)據(jù)的,但現(xiàn)實生活我們常常遇到含有多維數(shù)據(jù)的數(shù)據(jù)集,這個時候怎么辦?
??協(xié)方差該出場了!
??協(xié)方差可以通俗的理解為:兩個變量在變化過程中是同方向變化?還是反方向變化?同向或反向程度如何?
- 你變大,同時我也變大,說明兩個變量是同向變化的,這時協(xié)方差就是正的。
- 你變大,同時我變小,說明兩個變量是反向變化的,這時協(xié)方差就是負的。
??從數(shù)值來看,協(xié)方差的數(shù)值越大,兩個變量同向程度也就越大。反之亦然。
換種說法:
??協(xié)方差是度量各個維度偏離其均值的程度。協(xié)方差的值如果為正值,則說明兩者是正相關(guān)的,結(jié)果為負值就說明負相關(guān)的,如果為0,也是就是統(tǒng)計上說的“相互獨立”。
與方差對比:
??方差是用來度量單個變量“自身變異”大小的總體參數(shù),方差越大表明該變量的變異越大
??協(xié)方差是用來度量兩個變量之間“協(xié)同變異”大小的總體參數(shù),即二個變量相互影響大小的參數(shù),協(xié)方差的絕對值越大,則二個變量相互影響越大。
??采用協(xié)方差在線計算器練習一下:
????輸入值 X=1 ,5 ,6
????輸入值 Y=4, 2, 9
數(shù)目輸入 3
X 平均值 4
Y 平均值 5
協(xié)方差(X,Y) 4
計算步驟:
總和(X) =1 + 5 + 6 = 12
X平均值 = 4
總和(Y) =4 + 2 + 9 = 15
Y平均值 = 5
協(xié)方差(X,Y) = 總和(xi - x平均值)(yi - y平均值)/(采樣大小 -1)
= (1-4)(4-5)+(5-4)(2-5)+(6-4)(9-5))/2
= 4
4. 矩陣維數(shù)
??在分析協(xié)方差矩陣之前有必要搞清矩陣維數(shù)的概念!以女孩子找對象為例,一般關(guān)心幾個點
這里是5個維數(shù)。如果同時有幾個男孩子備選,則會形成多個行,有對比才有會傷害。
??可以這樣形象理解:在女孩心中,多個男孩形成一個個行向量,即多個樣本。
??另外,再回憶一下系數(shù)矩陣的來歷。含有n個未知量,由m個方程組成線性方程組的一般形式為:
將系數(shù)按它們的位置排列形成一個表格:
這個表格就是方程組的系數(shù)矩陣,它的維數(shù)是由未知量個數(shù)即n來決定的。
??下面介紹的協(xié)方差矩陣僅與維數(shù)有關(guān),和樣本數(shù)量無關(guān)。
5. 協(xié)方差矩陣
??
設(shè)為n維隨機變量,稱矩陣
為n維隨機變量的協(xié)方差矩陣(covariance matrix),也記為
,其中
??為了簡易起見,先舉一個簡單的三變量的例子,假設(shè)數(shù)據(jù)集有{x,y,z}三個維度,
則協(xié)方差矩陣為:
更進一步:
矩陣
其協(xié)方差矩陣為
還是有點抽象???
那就結(jié)合實例來理解,可能更方便一些。
假定有下列矩陣:
我們來計算一下協(xié)方差矩陣。
X=np.array([[1,4,4,4] ,[5,3,2,7 ],[6,9,9,2]])
print(np.cov(X, rowvar=False))
對于矩陣來說,matlab把每行看做一個觀察值,把每列當做一個變量,也就是說對于一個4×3的矩陣求協(xié)方差矩陣,matlab會認為存在三個變量,即會求出一個3×3的協(xié)方差矩陣。
而Python-NumPy的cov情況略有不同,它默認將每一行視為一個獨立的變量,所以在上面的例子中,采用rowvar=False使其視每列為一個變量。
結(jié)果如下:
可以看出
- 協(xié)方差矩陣滿足
,是個對稱的方陣
- 協(xié)方差矩陣對角線上的因子其實就是變量的方差:
驗算一下:
輸入值 X= [1, 5, 6]
輸入值 Y= [4 ,3 , 9]
總和(X) =1 + 5 + 6 = 12
X平均值 = 4
總和(Y) =4 + 3 + 9 = 16
Y平均值 = 5.333
協(xié)方差(X,Y) = 總和(xi - x平均值)(yi - y平均值)/(采樣大小 -1)
= (1-4)(4-5.333)+(5-4)(3-5.333)+(6-4)(9-5.333))/2
= 4.5
再驗算一下:
輸入值 X= [4 ,3 , 9]
輸入值 Y= [4 ,7 , 2]
總和(X) =4 + 3 + 9 = 16
X平均值 = 5.333
總和(Y) =4 + 7 + 2 = 13
Y平均值 = 4.333
協(xié)方差(X,Y) = 總和(xi - x平均值)(yi - y平均值)/(采樣大小 -1)
= (4-5.333)(4-4.333)+(3-5.333)(7-4.333)+(9-5.333)(2-4.333))/2
= -7.167