三大相關係數:pearson, spearman, kendall

ii_chengzi發表於2019-10-14
統計學中的三大相關性係數:pearson, spearman, kendall,他們反應的都是兩個變數之間變化趨勢的方向以及程度,其值範圍為-1到+1。
0表示兩個變數不相關,正值表示正相關,負值表示負相關,值越大表示相關性越強。


1. person correlation coefficient(皮爾森相關性係數)
    皮爾遜相關係數通常用r或ρ表示,度量兩變數X和Y之間相互關係(線性相關)(1)公式
   皮爾森相關性係數的值等於它們之間的協方差cov(X,Y)除以它們各自標準差的乘積(σX, σY)。(2)資料要求
   a.正態分佈
     它是協方差與標準差的比值,並且在求皮爾森相關性係數以後,通常還會用t檢驗之類的方法來進行皮爾森相關性係數檢驗,而t檢驗是基於資料呈正態分佈的假設的。 
   b.實驗資料之間的差距不能太大
     比如:研究人跑步的速度與心臟跳動的相關性,如果人突發心臟病,心跳為0(或者過快與過慢),那這時候我們會測到一個偏離正常值的心跳,如果我們把這個值也放進去進行相關性分析,它的存在會大大干擾計算的結果的。(3)例項程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import pandas  as  pd
import numpy  as  np
  
#原始資料
X1=pd.Series([1, 2, 3, 4, 5, 6])
Y1=pd.Series([0.3, 0.9, 2.7, 2, 3.5, 5])
  
X1.mean() #平均值# 3.5
Y1.mean() #2.4
X1. var () #方差#3.5
Y1. var () #2.9760000000000004
  
X1.std() #標準差不能為0# 1.8708286933869707
Y1.std() #標準差不能為0#1.725108692227826
X1.cov(Y1) #協方差#3.0600000000000005
  
X1.corr(Y1,method= "pearson" ) #皮爾森相關性係數 #0.948136664010285
X1.cov(Y1)/(X1.std()*Y1.std()) #皮爾森相關性係數 # 0.948136664010285

2. spearman correlation coefficient(斯皮爾曼相關性係數)    斯皮爾曼相關性係數,通常也叫斯皮爾曼秩相關係數。“秩”,可以理解成就是一種順序或者排序,那麼它就是根據原始資料的排序位置進行求解
(1)公式   首先對兩個變數(X, Y)的資料進行排序,然後記下排序以後的位置(X’, Y’),(X’, Y’)的值就稱為秩次,秩次的差值就是上面公式中的di,n就是變數中資料的個數,最後帶入公式就可求解結果。 (2)資料要求   因為是定序,所以我們不用管X和Y這兩個變數具體的值到底差了多少,只需要算一下它們每個值所處的排列位置的差值,就可以求出相關性係數了 (3)例項程式碼
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import pandas  as  pd
import numpy  as  np
  
#原始資料
X1=pd.Series([1, 2, 3, 4, 5, 6])
Y1=pd.Series([0.3, 0.9, 2.7, 2, 3.5, 5])
  
#處理資料刪除Nan
x1=X1.dropna()
y1=Y1.dropna()
n=x1.count()
x1.index=np.arange(n)
y1.index=np.arange(n)
  
#分部計算
d=(x1.sort_values().index-y1.sort_values().index)**2
dd=d.to_series().sum()
  
p=1-n*dd/(n*(n**2-1))
  
#s.corr()函式計算
r=x1.corr(y1,method= 'spearman' )
print(r,p) #0.942857142857143 0.9428571428571428

 

  3. kendall correlation coefficient(肯德爾相關性係數)

    肯德爾相關性係數,又稱肯德爾秩相關係數,它也是一種秩相關係數,不過它所計算的物件是分類變數。 
    分類變數可以理解成有類別的變數,可以分為:
    (1) 無序的,比如性別(男、女)、血型(A、B、O、AB); 
    (2) 有序的,比如肥胖等級(重度肥胖,中度肥胖、輕度肥胖、不肥胖)。 
    通常需要求相關性係數的都是有序分類變數。

(1)公式   R=(P-(n*(n-1)/2-P))/(n*(n-1)/2)=(4P/(n*(n-1)))-1   注:設有n個統計物件,每個物件有兩個屬性。將所有統計物件按屬性1取值排列,不失一般性,設此時屬性2取值的排列是亂序的。設P為兩個屬性值排列大小關係一致的統計物件對數 (2)資料要求   類別資料或者可以分類的資料 (3)例項程式碼
1
2
3
4
5
6
7
import pandas  as  pd
import numpy  as  np
  
#原始資料
x= pd.Series([3,1,2,2,1,3])
y= pd.Series([1,2,3,2,1,1])
r = x.corr(y,method= "kendall" ) #-0.2611165

  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31543790/viewspace-2659962/,如需轉載,請註明出處,否則將追究法律責任。

相關文章