python肯德爾系數(shù)相關(guān)性數(shù)據(jù)分析示例
前言
相關(guān)性分析算是很多算法以及建模的基礎(chǔ)知識之一了,十分經(jīng)典。關(guān)于許多特征關(guān)聯(lián)關(guān)系以及相關(guān)趨勢都可以利用相關(guān)性分析計算表達。其中常見的相關(guān)性系數(shù)就有三種:person相關(guān)系數(shù),spearman相關(guān)系數(shù),Kendall's tau-b等級相關(guān)系數(shù)。各有各自的用法和使用場景。當(dāng)然關(guān)于這以上三種相關(guān)系數(shù)的計算算法和原理+代碼我都會在我專欄里面寫齊全。目前關(guān)于數(shù)學(xué)建模的專欄已經(jīng)將傳統(tǒng)的機器學(xué)習(xí)預(yù)測算法、維度算法、時序預(yù)測算法和權(quán)重算法寫的七七八八了,有這個需求興趣的同學(xué)可以去看看。
一、定義
Kendall(肯德爾)系數(shù)的定義:n個同類的統(tǒng)計對象按特定屬性排序,其他屬性通常是亂序的。同序?qū)Γ?strong>concordant pairs)和異序?qū)Γ?strong>discordant pairs)之差與總對數(shù)(n*(n-1)/2)的比值定義為Kendall(肯德爾)系數(shù)。
與斯皮爾曼秩相關(guān)相似的是,肯德爾相關(guān)也是一種秩相關(guān)系數(shù),是基于數(shù)據(jù)對象的秩(rank)來進行兩個(隨機變量)之間的相關(guān)關(guān)系(強弱和方向)的評估。所分析的目標(biāo)對象應(yīng)該是一種有序的類別變量,比如名次、年齡段、肥胖等級(重度肥胖,中度肥胖、輕度肥胖、不肥胖)等。
不同的是,斯皮爾曼相關(guān)是基于秩差(比如說,小明在班級中的歷史成績排名為10,英語成績排名為4,那么在這個班級的學(xué)生的歷史成績和英語成績的斯皮爾曼相關(guān)分析中,小明的成績的貢獻就是(10-4=6) )來進行相關(guān)關(guān)系的評估;而肯德爾相關(guān)則是基于樣本數(shù)據(jù)對之間的關(guān)系來進行相關(guān)系數(shù)的強弱的分析,數(shù)據(jù)對可以分為一致對(Concordant)和分歧對(Discordant)。
kendall相關(guān)系數(shù)的計算公式如下:
假如我們設(shè)一組8人的身高和體重在那里A的人是最高的,第三重,等等:
注意,A最高,但體重排名為 3 ,比體重排名為 4,5,6,7,8 的重,貢獻5個同序?qū)?,即AB,AE,AF,AG,AH。同理,我們發(fā)現(xiàn)B、C、D、E、F、G、H分別貢獻4、5、4、3、1、0、0個同序?qū)?,因此,同序?qū)?shù)
P = 5 + 4 + 5 + 4 + 3 + 1 + 0 + 0 = 22.
異序?qū)?shù) Q=28-22 (總對數(shù)減去同序?qū)?shù)為異序?qū)?shù))
因而R=((22-6)/28)=0.57。這一結(jié)果顯示出強大的排名之間的規(guī)律,符合預(yù)期。 我們看到,有一些相關(guān)的兩個排名之間的相關(guān)性,可以使用肯德爾頭系數(shù),客觀地衡量對應(yīng)。
- 如果兩個排名之間的一致性是完美的(即兩個排名相同),則系數(shù)的值為1。
- 如果兩個排名之間的分歧是完美的(即,一個排名與另一個排名相反),則系數(shù)具有值-1。
- 如果X和Y是獨立的,那么我們期望系數(shù)近似為零。
二、使用條件
在適用肯德爾相關(guān)分析前首先要檢查數(shù)據(jù)是否滿足以下基本假設(shè),滿足了這些基本假設(shè)才能確保你所得到的相關(guān)分析結(jié)果是有效的。
- 變量數(shù)據(jù)是有序的( ordinal) 或者是連續(xù)的(continuous). 有序尺度(Ordinal scales )的數(shù)據(jù)通常用于用數(shù)值的方式來衡量非數(shù)值的概念,比如說,滿意度,幸福度等等,還有像成績排名啊、比賽名次啊之類的。而連續(xù)尺度的數(shù)據(jù)就勿需解釋了,常見的溫度啊、體重啊、收入啊等等都(或嚴格、或近似)算是連續(xù)尺度的數(shù)據(jù)。
- 兩個變量的數(shù)據(jù)之間應(yīng)該遵循單調(diào)關(guān)系( monotonic relationship)。 簡而言之就是,其中一個變量的值增大,另一個也增大,這個稱為正相關(guān);或者一個變量的值增大,另一個就變小,這個稱為負相關(guān)。當(dāng)然,這個單調(diào)關(guān)系是一個統(tǒng)計意義上的,或者說一種趨勢上的,而非嚴格的單調(diào)。如下如所示。左圖和中圖都呈現(xiàn)一種近似單調(diào)的關(guān)系,而右圖則不是,因為右圖的左半部分和右半部分的趨勢是相反的。
三、計算公式及代碼示例
肯德爾系數(shù)有兩個計算公式,一個稱為Tau-c,另一個稱為Tau-b。兩者的區(qū)別是Tau-b可以處理有相同值的情況,即并列排位(tied ranks)。
1.Tau-a
from scipy.stats.stats import kendalltau import numpy as np import matplotlib.pyplot as plt dat1 = np.array([1,2,3,4,5,6,7,8]) dat2 = np.array([3,4,1,2,5,7,8,6]) fig,ax = plt.subplots() ax.scatter(dat1,dat2) kendalltau(dat1,dat2)
2.Tau-b
在以上Tau-a的計算中假定原始數(shù)據(jù)中不存在并列排位。當(dāng)原始數(shù)據(jù)中存在并列排位時,則用以下公式能夠給出更準確的分析結(jié)果。
代碼是一致的只不過使用數(shù)學(xué)運算不一致,具體我不展開了,更多關(guān)于python肯德爾系數(shù)相關(guān)性的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實現(xiàn)對桌面進行實時捕捉畫面的方法詳解
最近在研究目標(biāo)檢測方面的小東西,需要到對桌面進行實時捕捉畫面。所以本文來用Python實現(xiàn)簡單的對桌面進行實時捕捉畫面,感興趣的可以了解一下2023-01-01Python基礎(chǔ)之變量的相關(guān)知識總結(jié)
今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著Python變量展開,文中有非常詳細的介紹及代碼示例,需要的朋友可以參考下2021-06-06Python在終端通過pip安裝好包以后在Pycharm中依然無法使用的問題(三種解決方案)
這篇文章主要介紹了Python在終端通過pip安裝好包以后在Pycharm中依然無法使用的問題及解決方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03