05.02 利用協方差,皮爾遜相關係數和斯皮爾曼相關係數確定變量間的關係

利用協方差,皮爾遜相關係數和斯皮爾曼相關係數確定變量間的關係

數據集中的變量之間可能存在複雜且未知的關係。重要的是發現和量化數據集的變量相關的程度。這些知識可以幫你更好地準備數據,以滿足機器學習算法的預期,例如線性迴歸,其性能會隨著這些相關的出現而降低。

在本教程中,你會了解到相關性是變量之間關係的統計概要,以及在不同類型的變量和關係中,如何計算它。

學完本教程,你會明白:

  • 如何通過計算協方差矩陣,總結兩個或多個變量間的線性關係。

  • 如何通過計算Pearson相關係數,總結兩個變量間的線性關係。

  • 如何通過計算Spearman相關係數,總結兩個變量之間的單調關係(monotonic relationship)。

教程概述

本片教程分為5個部分,分別是:

  • 什麼是相關

  • 測試數據集

  • 協方差

  • Pearson相關

  • Spearman相關

什麼是相關

有很多原因會使數據集內的變量之間存在相關關係。

例如:

  • 一個變量可能決定或取決於另一個變量的值。

  • 一個變量很容易與另一個變量有關聯。

  • 兩個變量可能取決於第三個未知變量。

這在數據分析和建模中很有用,可以更好地理解變量間的關係。兩個變量之間的關係在統計學中叫做“相關”。相關可能為正,意味著兩個變量都在同一方向上移動,也可能為負,意味著當一個變量值增加時,另一個變量的值就會減少。相關也可能為零,也就是說這些變量是不相關的。

  • 正相關:兩個變量都在同一方向上變化

  • 零相關:變量間的變化不存在相關

  • 負相關:變量在相反的方向變化

如果兩個或兩個以上的變量緊密相關,即多重共線性,那麼一些算法的性能就會下降。例如線性迴歸,為了提高模型的技能,應該移除其中有干擾的相關變量。我們可能還會對輸入變量與輸出變量間的相關感興趣,因為這些在開發模型輸入中,可以用來判斷哪些變量會有相關性。

關係的結構可能是已知的,例如它可能是線性的,或者我們也可能不知道兩個變量間是否存在關係,以及可能採用的結構。根據已知的關係和變量的分佈情況,可以計算出不同的相關分數。

在本教程中,我們將探索一個符合高斯分佈和線性關係的變量的分數,而另一個則不假定分佈,並且會報告所有單調(增加或減少)關係。

測試數據集

在我們研究相關方法之前,讓我們定義一個用來測試那些方法的數據集。我們生成1000個成對變量樣本,並且它們之間具有很強的正相關。第一個變量是從平均數100、標準差20的高斯分佈中抽取的隨機數。第二個是第一個變量的值,加上平均數為50、標準差為10的高斯噪聲。

使用randn()函數來生成隨機的高斯值(高斯分佈的平均值為0,標準差為1),然後用我們自己的標準差乘以結果,並加上平均數,將值變換到你想要的範圍。使用偽隨機數生成器,以確保每次運行代碼時都得到相同的數字樣本。

運行這個示例,首先打印每個變量的平均數和標準差。

創建兩個變量的散點圖。因為我們是自己建立了數據集,我們知道這兩個變量間存在關係。當我們查看散點圖時,很明顯能看出遞增的趨勢。

利用協方差,皮爾遜相關係數和斯皮爾曼相關係數確定變量間的關係

測試相關數據集的散點圖

在我們計算相關分數之前,我們首先要考慮一個重要的統計方法——協方差。

協方差

變量之間可能會存在線性關係。這種關係在兩個數據樣本中遞增一致。這種關係在兩個變量之間被稱為協方差。它是根據每個樣本值之間的平均值乘積來計算的,其中這些值都要分別減去平均值。

計算樣本協方差:

利用協方差,皮爾遜相關係數和斯皮爾曼相關係數確定變量間的關係

在計算中使用平均值表明,每個數據樣本都要符合高斯或類高斯分佈。可以通過兩個變量是否一起增加(正)或一起減少(負),來解釋協方差。很難解釋協方差的大小。協方差值為0表明這兩個變量都是完全獨立的。

cov()NumPy函數可用於計算兩個或多個變量間的協方差矩陣。

利用協方差,皮爾遜相關係數和斯皮爾曼相關係數確定變量間的關係

矩陣的主對角線包含每個變量和它本身之間的協方差。矩陣中的其他值表示兩個變量之間的協方差;在這種情況下,餘下的兩個值是相同的,因為我們只計算兩個變量的協方差。

我們可以計算出測試問題中兩個變量的協方差矩陣。

下面列出了完整的示例。

利用協方差,皮爾遜相關係數和斯皮爾曼相關係數確定變量間的關係

協方差和協方差矩陣在統計學和多元分析中應用廣泛,主要用於描述兩個或多個變量之間的關係。運行這個示例,計算並打印協方差矩陣。

因為每個變量是從高斯分佈抽取,並具有線性相關,數據集是由這些變量人為建立的,所以協方差對於描述關係來說是很合適的方法。這兩個變量之間的協方差是389.75。我們可以看到它是正向的,即正相關。

單獨使用協方差這一統計工具的問題是,解釋結果並不容易。所以下面我們來介紹Pearson相關係數。

Pearson相關

Pearson相關係數可用來總結兩個數據樣本之間線性關係的強度。計算Pearson相關係數是用兩個變量的協方差除以每個數據樣本標準差的乘積。這是兩個變量之間協方差的標準化,從中可以得出一個可解釋的分數。

利用協方差,皮爾遜相關係數和斯皮爾曼相關係數確定變量間的關係

在計算中使用平均值和標準差表明,兩個數據樣本需要符合高斯或類高斯分佈。計算的結果,即相關係數可以被解釋,並用於理解其間關係。

該係數返回的值在-1到1之間,表示相關的範圍,即從完全負相關到完全正相關。0表示無相關。這個值必須被解釋,通常低於-0.5或高於0.5的值表示顯著的相關,其他範圍的值則表示相關不顯著。

pearsonr() SciPy函數可以計算兩個相同長度的數據樣本的Pearson相關係數。我們可以計算出測試問題中兩個變量間的相關。

下面列出了完整的示例。

利用協方差,皮爾遜相關係數和斯皮爾曼相關係數確定變量間的關係

運行這個示例,計算並打印出Pearson相關係數。

我們可以看到這兩個變量存在正相關關係,相關性為0.8。這意味著高相關,因為高於0.5且接近1.0。

利用協方差,皮爾遜相關係數和斯皮爾曼相關係數確定變量間的關係

可以用Pearson相關係數來評估兩個以上變量間的關係。

這可以通過計算數據集中每一對變量之間關係的矩陣來實現。

結果是對稱矩陣,被稱為相關矩陣,因為主對角線上的值是1.0,每一列總與其自身完全相關。

Spearman相關

兩個變量可能有非線性關係,那麼這一關係強度可能隨著變量分佈變化。此外,這兩個變量可能是非高斯分佈。在這種情況下,Spearman相關係數可用來總結兩個數據樣本的關係強度。這個方法也能判斷變量間的線性關係,不過檢驗效能稍弱(可能相關分數會比正常更低)。

與Pearson相關係數一樣,Spearman相關係數用-1到1表示相關的範圍,即從完全負相關到完全正相關。這些統計數據是用每個樣本中值的相對秩計算出來的,而並非用樣本本身的協方差和標準差。這是一種常用的非參數統計方法,例如,我們不假定數據分佈為高斯分佈時,我們就使用這種統計方法。

儘管假定為單調關係,但變量之間的線性關係沒有被假定。用單調關係可以描述兩個變量之間增加或減少的關係。

如果你不確定兩個變量之間的分佈和可能存在的關係,那麼用Spearman相關係數很合適。用spearmanr() SciPy函數計算兩個相同長度的數據樣本的Spearman相關係數。我們可以計算出測試問題中兩個變量間的相關。

下面列出了完整的示例。

利用協方差,皮爾遜相關係數和斯皮爾曼相關係數確定變量間的關係

運行這個示例,計算並打印出Spearman相關係數。

我們可以看到數據符合高斯分佈且變量之間存在線性相關。然而,非參數秩次方法顯示了變量間的高相關,相關為0.8。

利用協方差,皮爾遜相關係數和斯皮爾曼相關係數確定變量間的關係

與Pearson相關係數相同,Spearman相關係數可以成對計算數據集中的係數並得出相關矩陣。

擴展

本節列出了一些本教程的想法擴展,你可能希望進行深入探索。

  • 用正、負相關生成你自己的數據集,並計算相關係數。

  • 編寫函數計算數據集的皮爾遜或斯皮爾曼相關矩陣。

  • 建立一個標準的機器學習數據集,並計算所有實值變量對的相關係數。

總結

讀完本教程,你明白了相關性是變量之間關係的統計概要,以及在不同類型的變量和關係中,如何計算它。

具體來說,你學會了:

  • 如何通過計算協方差矩陣,總結兩個或多個變量間的線性關係。

  • 如何通過計算Pearson相關係數,總結兩個變量間的線性關係。

  • 如何通過計算Spearman相關係數,總結兩個變量之間的單調關係。


分享到:


相關文章: