ケンドールの順位相関係数とは — IT・データ分析での定義、計算、実装と活用法
概要:ケンドールの順位相関係数(Kendall's tau)とは
ケンドールの順位相関係数(Kendall's tau)は、2つの順序付けられた変数間の単調な関連性(モノトニックな関係)を評価する非パラメトリックな指標です。値域は通常-1から+1で、+1は完全な一致した順位、-1は完全な逆順位、0は順位に有意な傾向がないことを示します。数値データの分布仮定(正規分布など)に依存せず、順序やランクに基づいて相関を見るため、カテゴリデータや順位データ、外れ値に頑健な場面で広く使われます。
定義と数学的背景
基本概念は「一致(concordant)ペア」と「不一致(discordant)ペア」です。サンプルに対して全ての i < j のペアを比較し、次を判定します:
- 一致(concordant):(x_i - x_j) と (y_i - y_j) の符号が同じ(両方正または両方負)
- 不一致(discordant):符号が異なる
- 同値(tie):x または y のどちらか、または両方が等しい(順位の結びつき)
最も単純な形である Kendall's tau-a は、P を一致ペア数、Q を不一致ペア数、n をサンプルサイズとすると以下で定義されます:
tau-a = (P - Q) / (n (n - 1) / 2)
ただし、現実データでは同値(ties)がしばしば発生するため、これを補正したバリアントが使われます。代表的なのが tau-b です。x の等順位ペア数の寄与を T_x、y の等順位ペア数の寄与を T_y として、
tau-b = (P - Q) / sqrt((P + Q + T_x) (P + Q + T_y))
ここで T_x は同じ x 値を持つ点群の全ての組み合わせ数(各同値ブロックの t_i(t_i - 1)/2 の総和)を表します。同様に T_y を計算します。tau-b は同値によって最大絶対値が1未満となる状況を適切に扱います。
もう一つの補正式として Stuart の tau-c(主に行列が長方形のカテゴリ数の場合に使われる)がありますが、実務では tau-b と tau-a がより一般的です。
計算例(手計算での理解)
簡単な例で手計算してみます。データ(X, Y)を5ペア用意:
- (1, 2)
- (2, 1)
- (3, 4)
- (4, 3)
- (5, 5)
全ての i < j の10組について一致/不一致を調べると、P = 8, Q = 2 となります(詳細は本文末の注釈参照)。したがって tau-a = (8 - 2) / 10 = 0.6 です。これは正の単調関係があることを示しますが、完全ではありません。
統計的検定と信頼区間
Kendall の tau の帰無仮説は「2つの変数間に順位に基づく連関がない(tau = 0)」です。大きいサンプルでは、tau は中心極限定理により正規分布に従うとみなして p 値を求めることができます。小さいサンプルや同値が多い場合は、順位の全順列(exact distribution)に基づく厳密検定が用いられます。統計ソフトは、通常サンプルサイズや同値の状況に応じて厳密検定か近似検定を選択します。
信頼区間は漸近的な標準誤差から計算する方法や、ブートストラップ法で推定する方法が実用的です。特に同値が多い場合、漸近近似が不正確になるためブートストラップが推奨されます。
計算アルゴリズムと計算量
定義に基づく単純な実装は全てのペアを比較するため O(n^2) の時間がかかります。これは n が数万を超える場合には実用的でありません。効率的なアルゴリズムでは次のように工夫します:
- まず X を基準にデータをソートし、対応する Y の順列に対して「逆順(inversion)」の数を数えることで P と Q の差(P - Q)を求める。逆順の計数はマージソートを用いることで O(n log n) で実行可能です。
- 同値(ties)が存在する場合は、同値ブロックごとの組合せ数を別途計算して tau-b の分母に入れます。
この O(n log n) の実装は大規模データやオンライン環境での利用に十分実用的です。
実務での使いどころ(IT / データ分析)
- 特徴量選択:目的変数が順序尺度(例:満足度 1〜5)であるとき、説明変数の順位相関を見て単調性の強い特徴を選ぶ
- ランキング評価:検索エンジンやレコメンダーでのユーザー評価ランキングとの一致度測定
- 順位学習(Learning to Rank)の評価指標の一つとして利用(Spearman rho や NDCG と併用)
- 分散が大きく外れ値に弱い Pearson 相関よりも安定した評価が必要な場合
- 順位データやカテゴリの順序データの相関解析(アンケート分析など)
実装とライブラリ
- Python: scipy.stats.kendalltau — tau と p 値を返す。大データでは計算量に注意し、必要なら並列化や O(n log n) 実装を検討する。
- R: cor(x, y, method = 'kendall') や cor.test(x, y, method = 'kendall') — tau と検定結果を取得可能。
- その他: 多くの統計パッケージや機械学習ライブラリに実装がある。実装ごとに同値処理や p 値の近似方法が異なるため、結果を解釈する際はドキュメント確認が重要。
Spearman の順位相関との比較
Spearman の順位相関(Spearman's rho)は各変数を順位に変換した後の Pearson 相関に相当します。Kendall の tau は一致/不一致の割合に基づくため、解釈が直感的(tau は一致不一致の差の割合)であり、分布に対する漸近的性質が優れる場合があります。一般に両者は同じ単調関係を検出しますが、値の絶対値や感度が異なります。実務では両方を計算して比較することがよくあります。
注意点と限界
- 大量の同値(ties)があると tau-a は意味を失い、tau-b が必要。ただし同値が非常に多いといずれの指標も情報が乏しくなる。
- 相関の因果性を示さない。単調関係があっても因果が存在するわけではない。
- 大規模データでは計算コストの最適化が必要。近似やサンプリングを検討することもある。
- 分布や外れ値に頑健だが、関係が非単調(例えば U 字型)だと検出できない。
実務アドバイス(チェックリスト)
- データの性質が「順序」を持つかを確認する。名義尺度(順序なし)では使えない。
- 同値の有無を確認し、必要なら tau-b を選択する。
- サンプルサイズが小さい場合は厳密検定を検討する。大きい場合は漸近近似かブートストラップで信頼区間を求める。
- 計算コストを意識し、n が大きければ O(n log n) 実装を使うかサンプリングする。
- 結果の解釈は「順位の一致度」であり、因果や線形性を意味しないことを明示する。
まとめ
ケンドールの順位相関係数は、順序データや外れ値に強い非パラメトリックな相関尺度であり、IT・データ分析の現場でランキング比較、特徴量選択、ユーザー評価の一致度評価など幅広く用いられます。同値の扱い(tau-a, tau-b)や計算アルゴリズム(O(n^2) と O(n log n))を正しく理解し、ソフトウェア実装の挙動(厳密検定 vs 近似、同値の処理)を確認した上で活用することが重要です。
参考文献
- Kendall's tau — Wikipedia
- scipy.stats.kendalltau — SciPy documentation
- R: cor.test (method = 'kendall') — R Documentation
- M. G. Kendall (1938) — A New Measure of Rank Correlation (原著論文, Royal Society)
投稿者プロフィール
最新の投稿
IT2025.12.24効果的なパッチ管理の完全ガイド:セキュリティと可用性を両立する実践方法
IT2025.12.24ITインフラストラクチャ完全ガイド:設計・運用・最新トレンドとベストプラクティス
IT2025.12.24現場で役立つネットワーク構築ガイド:設計から運用・自動化まで徹底解説
IT2025.12.24セマンティック構造とは — 意味を伝えるWeb・データ設計の原理と実践ガイド

