相關性分析
相關性分析解決解決以下兩個問題:
- 判斷兩個或多個變量之間的統計學關聯;
- 如果存在關聯,進一步分析關聯強度和方向
雙變量相關系數
Pearson相關系數
用於度量兩個變量X和Y之間的相關程度(線性相關),其值介於-1與1之間,定義為兩個變量的協方差除以他們的標准差之積:
計算公式
適用范圍:
- 兩個變量的標准差都不為零
- 兩個變量之間是線性關系,都是連續數據。
- 兩個變量的總體是正態分布,或接近正態的單峰分布。
- 兩個變量的觀測值是成對的,每對觀測值之間相互獨立。
注意事項:
- 積差相關系數適用於線性相關的情形,對於曲線相關等更為復雜的情形,積差相關系數的大小並不能代表相關性的強弱。
- 樣本中存在的極端值對Pearson積差相關系數的影響極大,因此要慎重考慮和處理,必要時可以對其進行剔出,或者加以變量變換,以避免因為一兩個數值導致出現錯誤的結論。
- Pearson積差相關系數要求相應的變量呈雙變量正態分布,注意雙變量正態分布並非簡單的要求x變量和y變量各自服從正態分布,而是要求服從一個聯合的雙變量正態分布。 (第三條相對比較寬松,違反時系數的結果也是比較穩健的)
結果解釋:
·|r|>0.95 存在顯著性相關;
·|r|≥0.8 高度相關;
·0.5≤|r|<0.8 中度相關;
·0.3≤|r|<0.5 低度相關;
·|r|<0.3 關系極弱,認為不相關
Spearman秩相關系數
使利用兩變量的秩次大小作線性相關分析,對原始變量的分布不做要求,屬於非參數統計方法。因此它的適用范圍比Pearson相關系數要廣的多。即使原始數據是等級資料也可以計算Spearman相關系數。對於服從Pearson相關系數的數據也可以計算Spearman相關系數,但統計效能比Pearson相關系數要低一些(不容易檢測出兩者事實上存在的相關關系)。如果數據中沒有重復值, 並且當兩個變量完全單調相關時,斯皮爾曼相關系數則為+1或−1。Spearman相關系數即使出現異常值,由於異常值的秩次通常不會有明顯的變化(比如過大或者過小,那要么排第一,要么排最后),所以對Spearman相關性系數的影響也非常小。
其定義為等級變量之間的peason相關系數:
其中,其中\(x_{\mathrm{i}},y_{\mathrm{i}}\)為原始變量\(X_{\mathrm{i}},Y_{\mathrm{i}}\)經過等級映射得到,具體映射方式可以取:每個原始數據的降序位置的平均。
記\(d_{i}=x_{i}-y_{i}\),其簡化的計算公式為:
Kendall's tau-b相關系數
同樣是一種秩相關系數,用於反映分類變量相關性的指標,適用於兩個變量均為有序分類(有序分類表示類間有強度的逐級遞增關系)的情況,用希臘字母τ(tau)表示其值。
基本思想:Kendall系數是基於協同的思想。對於X,Y的兩對觀察值Xi,Yi和Xj,Yj,如果Xi<Yi並且Xj<Yj,或者Xi>Yi並且Xj>Yj,則稱這兩對觀察值是和諧的,否則就是不和諧。
計算公式
例子:
三種系數的關系和區別
- Pearson系數:叫皮爾遜相關系數,也叫線性相關系數,用於進行線性相關分析,是最常用的相關系數,當數據滿足正態分布時會使用該系數。兩個連續變量間呈線性相關時,使用Pearson積差相關系數。由於其是在原始數據的方差和協方差基礎上計算得到,所以對離群值比較敏感。即使pearson相關系數為0,也只能說明變量之間不存在線性相關,但仍有可能存在曲線相關。
- 另外兩種統計量:不滿足積差相關分析的適用條件時,使用Spearman秩或者kendall相關系數來描述,他們都是更為一般性的非參數方法,對離群值的敏感度較低,因而也更具有耐受性,度量的主要是等級變量之間的聯系。
- 最常使用的是Pearson相關系數;當數據不滿足正態性時,則使用Spearman相關系數,Kendall相關系數用於判斷數據一致性,比如裁判打分。
顯著性檢測
為了對計算的系數結果做一定的解釋,我們可以采用假設檢驗的方法。
以正相關的檢測為例,可以設原假設H0:X和Y相互獨立,H1:X和Y正相關;並設\(\alpha\)為顯著水平,因此,假設檢驗的拒絕域分別為:
一種統計量的構造方式
根據計算出的T落在的t分布的位置確定Pvalue后,將其與顯著水平對比,如果小於則表示我們以該顯著水平拒絕原假設,接受備選假設。
幾個常見的顯著水平的參數設置:
P值 | 碰巧的概率 | 對無效假設 | 統計意義 |
---|---|---|---|
P>0.05 | 碰巧出現的可能性大於5% | 不能否定原假設 | 兩組差別無顯著意義 |
P<0.05 | 碰巧出現的可能性小於5% | 可以否定原假設 | 兩組差別有顯著意義 |
P <0.01 | 碰巧出現的可能性小於1% | 可以否定原假設 | 兩者差別有非常顯著意義 |
Python實現
取波士頓房價數據的兩個特征:犯罪率和房價數據,我們來驗證他們是不是負相關關系
# 復制代碼
from pandas import DataFrame
import scipy
import pandas as pd
from sklearn.datasets import load_boston
boston = load_boston()
# print(boston.DESCR)
X = boston.data
Y = boston.target
y = Y[:] # 房價
x = X[:,0] # 城鎮人均犯罪率
# data.head()
# data.corr()
data=DataFrame({'x':x,'y':y})
# data.corr(method='pearson')
# data.corr(method='spearman')
# data.corr(method='kendall')
scipy.stats.pearsonr(x, y)
scipy.stats.spearmanr(x, y)
scipy.stats.kendalltau(x, y)
r | p-value | |
---|---|---|
pearson | -0.3883046085868116 | 1.1739870821941207e-19 |
spearmanr | -0.5588909488368801 | 6.5533358892281775e-43 |
kendalltau | -0.4039635563809384 | 7.87053971116975e-42 |
結果表明,三種方法都顯著(以顯著水平為1%)地認為兩者呈現負相關的關系。
同時,我們希望驗證下地區的犯罪率與黑人比例是否有關系:
x = X[:,-3] # 黑人比例
y = X[:,0] # 犯罪比例
data=DataFrame({'x':x,'y':y})
scipy.stats.kendalltau(x, y)
data=DataFrame({'x':x,'y':y})
scipy.stats.pearsonr(x, y)
scipy.stats.spearmanr(x, y)
scipy.stats.kendalltau(x, y)
三個結果表明,兩者可以顯著地認為呈正相關關系
單變量自相關
參考文章
- 用Python如何實現“假設檢驗” - 知乎 (zhihu.com)
- 《2003 年北京市 SARS 疫情空間相關性分析》