相関分析 そうかんぶんせき
相関分析相関係数ピアソン相関多重共線性変数間関係
相関分析について教えて
相関分析とは
相関分析(Correlation Analysis)とは、2つの変数の間にどの程度の線形的な関係があるかを定量化する統計手法です。相関係数(Correlation Coefficient)という-1〜+1の値で表現されます。
機械学習では2つの目的で使われます。①特徴量とターゲットの関係確認(この変数は予測に役立つか)、②特徴量間の相関確認(多重共線性の検出)です。
相関係数の解釈
| 相関係数の値 | 解釈 |
|---|---|
| +1.0 | 完全な正の相関 |
| +0.7〜+1.0 | 強い正の相関 |
| +0.3〜+0.7 | 中程度の正の相関 |
| -0.3〜+0.3 | ほぼ無相関 |
| -0.7〜-0.3 | 中程度の負の相関 |
| -1.0〜-0.7 | 強い負の相関 |
| -1.0 | 完全な負の相関 |
代表的な相関係数
| 種類 | 適用場面 | 特徴 |
|---|---|---|
| ピアソン相関係数 | 連続値の線形関係 | 最もよく使われる。正規分布を仮定 |
| スピアマン順位相関 | 順序データ・外れ値がある場合 | 順位に基づく。非線形にも対応 |
| ケンドールの τ | 小サンプル・順序データ | 解釈が直感的 |
| 点双列相関 | 連続値 × 二値変数 | 分類問題での変数選択に使用 |
相関ヒートマップの活用
複数変数の相関を一覧で確認できるビジュアライゼーションです。
import seaborn as sns
import matplotlib.pyplot as plt
# 相関行列を計算してヒートマップで表示
corr_matrix = df.corr()
sns.heatmap(corr_matrix, annot=True, cmap='coolwarm')
plt.show()
歴史と背景
- 1888年:フランシス・ゴルトンが相関の概念を提唱
- 1896年:ピアソン相関係数が定式化
- 1904年:スピアマン順位相関係数が提案
- 現在:pandas・seabornで簡単に計算・可視化できる標準的な探索的データ分析手法
相関と因果の違い
「相関がある」≠「因果関係がある」
例:
「アイスクリームの売上と溺死者数が正の相関」
→ 原因:夏(気温の高さ)という第三の変数
機械学習で使うのは「相関」だけでOK。
予測モデルは因果関係がなくても機能する。
ただしビジネス意思決定では因果推論も重要。