matlab 相關性分析

Pearson相關係數函數

考察兩個事物(在數據裏咱們稱之爲變量)之間的相關程度,簡單來講就是衡量兩個數據集合是否在一條線上面。其計算公式爲: spa

N表示變量取值的個數。code

 

 

相關係數r的值介於–1與+1之間,即–1≤r≤+1。其性質以下:orm

 

  1. 當r>0時,表示兩變量(當X的值增大(減少),Y值增大(減少))正相關,r<0時,兩變量爲負相關(當X的值增大(減少),Y值減少(增大))。
  2. 當|r|=1時,表示兩變量爲徹底線性相關,即爲函數關係。
  3. 當r=0時,表示兩變量間無線性相關關係。
  4. 當0<|r|<1時,表示兩變量存在必定程度的線性相關。且|r|越接近1,兩變量間線性關係越密切;|r|越接近於0,表示兩變量的線性相關越弱。

通常可按三級劃分:|r|<0.4爲低度線性相關;0.4≤|r|<0.7爲顯著性相關;0.7≤|r|<1爲高度線性相關。排序

 

 

當兩個變量的標準差都不爲零時,相關係數纔有定義,皮爾遜相關係數適用於:class

 

  1. 兩個變量之間是線性關係,都是連續數據。
  2. 兩個變量的整體是正態分佈,或接近正態的單峯分佈。
  3. 兩個變量的觀測值是成對的,每對觀測值之間相互獨立。

 

 

一個具體的計算例子:變量

X Y 1 2 2 5 3 6im

而利用matlab計算的話則可使用函數 corrcoef或corr數據

先看一下help corrcoef的內容:margin

 

再看一下help corr的內容

對於前面提到的具體的計算例子,能夠在matlab中實現以下:

 

x=[1;2;3];
y=[2;5;6];
r1=corr(x,y,'type','pearson');
r2=corrcoef(x,y);

最後能夠看到

 

r1=0.9608

r2=

1.0000 0.9608

0.9608 1.0000

均與前面的計算結果相符。須要注意的是,使用corr函數時默認計算皮爾遜相關係數 

Spearman相關係數

斯皮爾曼相關係數用來估計兩個變量X、Y之間的相關性,其中變量間的相關性可使用單調函數來描述。若是兩個變量取值的兩個集合中均不存在相同的兩個元素,那麼,當其中一個變量能夠表示爲另外一個變量的很好的單調函數時(即兩個變量的變化趨勢相同),兩個變量之間的相關係數能夠達到+1或-1。

假設兩個隨機變量分別爲X、Y(也能夠看作兩個集合),它們的元素個數均爲N,兩個隨機變量取的第i(1<=i<=N)個值分別用Xi、Yi表示。對X、Y進行排序(同時爲升序或降序),獲得兩個元素排行集合x、y,其中元素xi、yi分別爲Xi在X中的排行以及Yi在Y中的排行。將集合x、y中的元素對應相減獲得一個排行差分集合d,其中di=xi-yi,1<=i<=N。隨機變量X、Y之間的斯皮爾曼相關係數能夠由x、y或者d計算獲得,其計算方式以下所示:

由排行差分集合d計算而得(公式一):

 

由排行集合x、y計算而得(斯皮爾曼相關係數同時也被認爲是通過排行的兩個隨機變量的皮爾遜相關係數,如下實際是計算x、y的皮爾遜相關係數)(公式二):

 

 

如下是一個計算集合中元素排行的例子(僅適用於斯皮爾曼相關係數的計算)

 

這裏須要注意:當變量的兩個值相同時,它們的排行是經過對它們位置進行平均而獲得的。

斯皮爾曼相關係數對數據條件的要求沒有皮爾遜相關係數嚴格,只要兩個變量的觀測值是成對的,或者是由連續變量觀測資料轉化獲得的,不論兩個變量的整體分佈形態、樣本容量的大小如何,均可以用斯皮爾曼相關係數來進行研究。

使用matlab計算spearman相關係數則比較簡單,也是使用corr函數,以下:

r= corr(x, y, 'type' , 'Spearman');  

對於上面的例子,則能夠計算出r=1。

注意:使用Matlab自帶函數計算斯皮爾曼相關係數時,須要保證X、Y均爲列向量;Matlab自帶的函數是經過公式二計算序列的斯皮爾曼相關係數的。

相關文章
相關標籤/搜索