ケンドールの順位相関係数

ケンドールの順位相関係数とは?

ケンドールの順位相関係数(Kendall's Tau)は、2つの変数間の順位の相関を測定する統計的な手法です。この係数は、観測値の順位がどれだけ一致しているか、またはどれだけ逆転しているかを評価します。特に、連続的ではなく順位データや順位が重要な場合に使用されます。

ケンドールの順位相関係数は−1から+1 の範囲を取ります。
+1 は完全な一致(すべてのペアが同意)、−1 は完全な不一致(すべてのペアが不一致)を示し、0 は順位に相関がないことを示します。

計算式は以下の通りです。

$$
τ= \frac{(同意ペアの数−不一致ペアの数)}{\frac{1}{2}n(n−1)}
$$

nは観測値の総数です。
同意ペアとは2つの観測値ペア$${ (𝑥_{𝑖},𝑦_{𝑖})}$$ と$${ (x_{j}​,y_{j}​)}$$があるとき、
$${(x_{i}​−x_{j}​)}$$ と$${(y_{i}​−y_{j}​)}$$ の符号が一致することを意味します。

たとえば下記の観測値があるとします。

x = [1, 2, 3]
y = [2, 1, 3]

この時ペアは3つできますが、同意ペアは2つで不一致ペアが1つになります。

  1. (1,2) と (2,1): 不一致ペア

  2. (1,2) と (3,3): 同意ペア

  3. (2,1) と (3,3): 同意ペア

先ほどの公式に当てはめると

$$
τ= \frac{(2−1)}{\frac{1}{2}×3×(3−1)}
$$

$$
τ= \frac{1}{3}
$$

でケンドールの順位相関係数は約0.333になります。

同じ計算をPythonで行ってみます。
SciPyライブラリのkendalltauを利用します。

import scipy.stats as stats

x = [1, 2, 3]
y = [2, 1, 3]

tau, p_value = stats.kendalltau(x, y)

print(f"ケンドールの順位相関係数: {tau}")
print(f"p値: {p_value}")

結果は下記の通りになりました。

ケンドールの順位相関係数: 0.33333333333333337
p値: 1.0