相関係数(ピアソン・Spearman・Kendall)完全ガイド:計算式・検定・実務での活用と落とし穴
相関係数とは — 概要と基本概念
相関係数(そうかんけいすう、correlation coefficient)は、2つの変数の間にどのような関係(依存関係や連動性)があるかを数値で表す指標です。代表的なものにピアソンの積率相関係数(Pearsonのr)、順位相関(Spearmanのρ、Kendallのτ)などがあり、値は一般に -1 から +1 の範囲をとります。+1 は完全な正の線形関係、-1 は完全な負の線形関係、0 は線形関係がないことを示します(ただし「0 = 無関係」では必ずしもない点に注意)。
ピアソン相関係数(Pearson r)— 定義と計算式
最も広く使われる相関係数であるピアソンのrは、2つの変数の共分散をそれぞれの標準偏差の積で規格化したものです。式で表すと:
r = cov(X, Y) / (σX · σY)
標本から計算する場合は次のようになります(n はサンプル数、xi, yi は観測値):
r = Σ[(xi − x̄)(yi − ȳ)] / sqrt(Σ(xi − x̄)² · Σ(yi − ȳ)²)
ピアソンrは線形関係の強さと方向を測ります。ここで重要なのは「線形」である点で、非線形な関係(例:放物線的な関係)を持つデータでは r が小さくなることがありますが、実際には強い非線形依存が存在する可能性があります。
順位相関(Spearman の ρ、Kendall の τ)
-
Spearman の順位相関(ρ)は、各変数を順位に置き換えてピアソン相関を計算したものです。単調(monotonic)な関係を検出しやすく、外れ値や非線形(ただし単調)な関係に対して頑健です。
-
Kendall の τ はデータ点の「一致・不一致(concordant / discordant)」の割合に基づいており、小さなサンプルに対して良い特性を持ちます。解釈は「順位の一致の割合」を直接反映します。
統計的検定と信頼区間
ピアソン相関係数の有意性は t 検定で評価できます。検定統計量は次の式で与えられます(帰無仮説 H0: ρ = 0):
t = r · sqrt((n − 2) / (1 − r²))
この t 値は自由度 n−2 の t 分布に従うと仮定して p 値を求めます。また、相関係数の信頼区間は Fisher の z 変換を使って推定するのが一般的です。変換と逆変換は次の通りです:
- z' = 0.5 · ln((1 + r) / (1 − r))
- 標準誤差 SE = 1 / sqrt(n − 3)
- z' の信頼区間を求めた後、逆変換で r の区間に戻す
ピアソン相関の前提と注意点
- 線形性:ピアソン r は線形関係を測る。非線形で単調なら Spearman の方が有効。
- 正規性の仮定:厳密な検定では各変数の正規分布(または少なくとも二変量正規)が仮定される。大サンプルでは中心極限定理により通常は問題になりにくい。
- ホモスケダスティシティ(等分散性):Y の分散が X の値に依存しないことが望ましい。
- 外れ値の影響:ピアソンは平均と分散に敏感なため、外れ値で大きく影響を受ける。外れ値は必ず可視化で確認する。
- 因果関係の誤解:相関が因果を意味するわけではない(相関 = 因果ではない)。共通の因子や交絡因子、逆因果などを常に疑う必要がある。
実務での使い方(IT・データ分析の場面)
- 特徴量選択:多次元データで相関行列を作り、強い多重共線性(高い相関)を持つ特徴量を検出して選択や削減(PCA、変数削除)に役立てる。
- 可視化:散布図+回帰線、相関行列ヒートマップ(相関係数のマトリクス)で全体像を把握する。
- 異常検知:時系列やセンサー間で通常は高い相関があるが相関が崩れた場合、アノマリーの兆候として扱うことができる。
- レコメンダーや類似度指標:ユーザーや商品の類似度を求める際にピアソン相関やコサイン類似度が使われる(用途に応じてスケーリングや中心化の有無に注意)。
- 時系列の相互相関(cross-correlation):異なるラグ(遅れ)での相関を調べることで因果の手がかりや予測に使える。ただし自己相関の影響に注意する。
実装とツール
主要な統計・データ分析ライブラリで簡単に計算できます。例えば Python では:
- numpy.corrcoef / pandas.DataFrame.corr(ピアソンがデフォルト)
- scipy.stats.pearsonr(ピアソンの p 値付き)
- scipy.stats.spearmanr / scipy.stats.kendalltau(順位相関)
実務では欠損値(NaN)の扱い、サンプルサイズが小さい場合の検定の信頼性、外れ値処理(トリミング、ロバスト推定)に注意して実装してください。
実務上の落とし穴と対処法
- 非線形関係の見落とし:散布図で形を確認。非線形を検出したい場合は距離相関(distance correlation)や相互情報量(mutual information)を検討。
- 外れ値:ロバストな順位相関やロバスト共分散(例:biweight)を使う。外れ値を除外する場合は理由を明確にする。
- サンプルサイズと解釈:ごく小さな r でも大サンプルでは統計的に有意になり得る。効果の大きさ(Cohen の基準など)を併用して実務的な意味を評価する。
- 多重検定の問題:多くの相関を同時に検定するなら Bonferroni や FDR(Benjamini-Hochberg)で補正する。
- 交絡因子と部分相関:第三の変数の影響を除去したい場合は偏相関(partial correlation)を用いる。
解釈の目安(効果量)
相関の「大きさ」については文脈依存ですが、社会科学などでよく参照される Cohen の目安は次の通りです(あくまで目安):
- r ≈ 0.1:小、弱い相関
- r ≈ 0.3:中等度の相関
- r ≈ 0.5:大きな相関
ただし、分野や用途によって重要な相関の閾値は大きく異なります。実務では効果の実用的意義(business impact)を常に検討してください。
まとめ:実務でのベストプラクティス
- まずは可視化(散布図、ヒートマップ)でデータの形を確認する。
- 目的に応じてピアソン、Spearman、Kendall のいずれかを選択する(線形 ⇒ Pearson、単調 ⇒ Spearman)。
- 外れ値・欠損・非定常性(時系列)に注意し、必要ならロバスト手法や変換を行う。
- 相関は因果を示さない。解釈の際は交絡因子や背景理論を検討する。
- 多数の相関を検定する場合は多重検定補正を行い、効果量も報告する。
参考文献
- 相関係数 — Wikipedia(日本語)
- Pearson correlation coefficient — Wikipedia
- Spearman's rank correlation coefficient — Wikipedia
- Kendall rank correlation coefficient — Wikipedia
- scipy.stats.pearsonr — SciPy ドキュメント
- pandas.DataFrame.corr — pandas ドキュメント
- NIST/SEMATECH e-Handbook — Correlation
- Fisher transformation — Wikipedia
- Distance correlation — Wikipedia(非線形関係の検出手法)


