一覧へ

ヒートマップと散布図 — 相関関係の可視化

2つの変数間の関係を散布図で確認し、複数の変数の相関関係をヒートマップで一目で把握する方法を学びます。

中級
|
10
|
検証済み (2026-07)
ヒートマップ散布図相関関係ピアソンの相関係数相関行列
進捗0/17 (0%)

ヒートマップと散布図 — 相関関係の可視化

このトピックを終えると

2つの変数の関係を散布図で可視化し、複数の変数間の相関関係をヒートマップで一目で把握できるようになります。


相関関係とは

「身長が高いほど、体重も重い」— これは正の相関関係です。一方が上がると、もう一方も上がる傾向。

「気温が高いほど、ホットチョコレートの販売量は減る」— これは負の相関関係です。一方が上がると、もう一方は下がる傾向。

この「傾向の強さ」を数値で表したものが相関係数です。

意味
+1.0完璧な正の相関(一緒に上がる)
+0.7〜+0.9強い正の相関
+0.3〜+0.7弱い〜普通な正の相関
0相関なし
-0.3〜-0.7弱い〜普通な負の相関
-1.0完璧な負の相関(逆の動きをする)

散布図 — 2つの変数の関係を見る

python
import seaborn as sns
import matplotlib.pyplot as plt
sns.scatterplot(data=df, x='experience', y='salary')
plt.title('経験年数 vs 年収')
plt.show()

点が右上に集まると正の相関、右下に集まると負の相関、点が四方に散らばっている場合は相関なしです。

傾向線を追加

python
sns.regplot(data=df, x='experience', y='salary',
scatter_kws={'alpha': 0.5},
line_kws={'color': 'red'})

regplotは散布図+回帰線を一緒に描画します。線がどれだけ点の間をうまく通過するかを見ると、相関の強さを視覚的に判断できます。


相関行列 — 一度に複数の変数

変数が2つの場合は、散布図1つで済みます。しかし、10個の場合は?すべての組み合わせを見るには、45個の散布図が必要です。この時に相関行列を使います。

python
# 相関係数行列を計算
corr = df[['salary', 'experience', 'age', 'projects']].corr()
print(corr)
text
salary  experience    age  projects
salary         1.000       0.850  0.620     0.430
experience     0.850       1.000  0.780     0.350
age            0.620       0.780  1.000     0.120
projects       0.430       0.350  0.120     1.000

数値の行列なので、一目でわかりません。これを色に変換したものがヒートマップです。


ヒートマップ — 相関行列の可視化

python
plt.figure(figsize=(8, 6))
sns.heatmap(corr,
annot=True, # セルに数値を表示
fmt='.2f', # 小数点2桁
cmap='coolwarm', # 赤(正)〜青(負)
vmin=-1, vmax=1, # 色の範囲を固定
square=True, # 正方形のセル
linewidths=0.5) # セルの間の線
plt.title('変数間の相関関係')
plt.tight_layout()
plt.show()

ヒートマップの読み方:

  • 赤いセル — 強い正の相関(一緒に上がる)
  • 青いセル — 強い負の相関(逆の動きをする)
  • 白いセル — 相関なし(独立)
  • 対角線 — 常に1.0(自分自身との相関)

実践的な解釈の注意点

相関 ≠ 因果

「アイスクリームの販売量」と「水難事故の件数」は相関係数が高いです。アイスクリームが人を水に沈めるわけではありません — どちらも「夏(気温)」という隠れた変数の影響です。

相関関係は**「一緒に動く」という事実だけを伝えます。「一方がもう一方を引き起こす」**という因果関係とは異なります。

非線形の関係

相関係数(ピアソンの相関係数)は直線的な関係のみを測定します。U字型の関係(例:ストレスが適度にあるとパフォーマンスが向上するが、多すぎると低下する)は、相関係数が0に近くなることがあります。常に散布図で目で確認してください。


pairplot — 散布図の行列

変数が少ない場合は、すべての組み合わせの散布図を格子状に表示するpairplotが便利です。

python
sns.pairplot(df[['salary', 'experience', 'age', 'projects']],
diag_kind='kde')
plt.show()
  • 対角線:各変数の分布(ヒストグラムまたはKDE)
  • それ以外:すべての変数ペアの散布図

変数が5個以上ある場合、グラフが小さすぎて読みづらくなります。ヒートマップで全体の傾向を見て、興味のあるペアだけを散布図で拡大するのが効率的です。


重要なポイント

散布図は2つの変数の関係を、ヒートマップは複数の変数の相関関係を一目で示します。 相関係数は-1(完璧な負の相関)〜+1(完璧な正の相関)—0の場合は直線的な関係がありません。 相関 ≠ 因果 — 数値だけを見ず、常に散布図で確認してください。

💬 質問・コメント

0件のコメント

ログインせずに投稿できます。ゲスト投稿は投稿者自身で編集・削除できません。

0/2000

読み込み中...