ふくふくHukuhuku Inc.
EP.05Statistics対象: 中1以上 10分公開: 2026-09-01

相関:2つのデータの関係を測る

身長と体重、勉強時間と点数。2つの数値がどれくらい一緒に動くかを、−1 から +1 の数字で表せます。ただし数字だけを見ると必ず騙されるので、グラフも一緒に見ます。

#統計#相関#散布図#Python
執筆 / 監修
松尾 亮合同会社ふくふく 代表社員

データ基盤・データパイプライン構築 / BI / 生成 AI 活用支援を専門とするエンジニア (28 年)。 本記事は AI 利用ポリシーに基づき、生成 AI の補助で執筆 → 人間が監修・編集して公開しています。

プロフィール詳細
シェア

ここまで、1つのデータをどう見るか(平均、散らばり、分布の形)を学んできました。ここからは、2つのデータの関係を見ていきます。身長と体重、勉強時間とテストの点数、気温とアイスの売上。片方が増えると、もう片方も増えるのかという問いです。

この関係を と呼びます。そして、その強さを −1 から +1 までの1つの数字で表せます。便利な道具ですが、数字だけを見ると必ず騙されます。この回では、その理由と対処まで扱います。

1. 相関係数の読み方

相関の強さを表す数字を相関係数といいます。−1 から +1 の範囲に収まり、値の意味は次のとおりです。

相関係数の読み方
意味身近な例
+1 に近い片方が増えると、もう片方も増える身長と体重
0 に近いまっすぐな関係が見えない靴のサイズとテストの点数
−1 に近い片方が増えると、もう片方は減る運動時間と体脂肪率

注意してほしいのは、+1 に近いほど「偉い」わけではないということです。相関係数は関係の強さを表すだけで、良い悪いを表しているのではありません。また、プラスとマイナスは向きの違いでしかありません。−0.9 と +0.9 は、向きが逆なだけで、関係の強さとしては同じです。マイナスを「弱い」と読んでしまう間違いは意外に多いので、気をつけてください。

2. Python で計算してみる

実際に計算してみましょう。難しい式は使わず、ライブラリに任せます。ここでは3種類のデータを作って、それぞれの相関係数を見比べます。

3種類の関係を作って、相関係数を比べる
Python
import numpy as np
rng = np.random.default_rng(42)n = 100
# もとになる数(勉強時間だと思ってください)x = rng.uniform(0, 10, n)
# 1. 正の関係: 勉強するほど点数が上がる(多少のばらつきあり)y_plus = 8 * x + rng.normal(0, 8, n)
# 2. 関係なし: まったく別のものy_none = rng.uniform(0, 100, n)
# 3. 負の関係: 増えると減るy_minus = 100 - 8 * x + rng.normal(0, 8, n)
for name, y in [("正の関係", y_plus), ("関係なし", y_none), ("負の関係", y_minus)]:    r = np.corrcoef(x, y)[0, 1]    print(f"{name}: 相関係数 = {r:+.2f}")

`np.corrcoef` が相関係数を計算してくれます。結果を見ると、正の関係では +0.9 あたり、関係なしでは 0 付近、負の関係では −0.9 あたりの値になるはずです。乱数を使っているので、実行するたびに少し変わります

3. 数字だけを見ると騙される

ここからがこの回の本題です。相関係数が同じでも、中身がまったく違うことがあります。これを示した有名な例が です。

1973年に統計学者のアンスコムが作った4組のデータで、平均も、散らばりも、相関係数もほぼ同じなのに、グラフにすると全然違う形になります。数字だけを見ていると、この違いに気づけません。

同じ相関係数でも、形は全く違う
Python
import numpy as np
# アンスコムの数値例(4組のうち3組)x1 = np.array([10, 8, 13, 9, 11, 14, 6, 4, 12, 7, 5])y1 = np.array([8.04, 6.95, 7.58, 8.81, 8.33, 9.96,               7.24, 4.26, 10.84, 4.82, 5.68])
# 曲がった関係(まっすぐではない)y2 = np.array([9.14, 8.14, 8.74, 8.77, 9.26, 8.10,               6.13, 3.10, 9.13, 7.26, 4.74])
# 1点だけ大きく外れているx3 = np.array([8, 8, 8, 8, 8, 8, 8, 19, 8, 8, 8])y3 = np.array([6.58, 5.76, 7.71, 8.84, 8.47, 7.04,               5.25, 12.50, 5.56, 7.91, 6.89])
for name, x, y in [("ふつうの関係", x1, y1),                   ("曲がった関係", x1, y2),                   ("外れ値が1つ", x3, y3)]:    r = np.corrcoef(x, y)[0, 1]    print(f"{name:12s} 相関係数 = {r:.2f}  平均y = {y.mean():.2f}")

実行すると、3つとも相関係数が 0.82 前後になります。それなのに中身は「ふつうの関係」「曲がった関係」「1点だけ外れている」とまったく違う。数字が同じでも、意味は同じではないわけです。

外れ値1個で結論が変わる

3番目の例では、11個のうち10個は x が同じ値で、残り1個だけが遠くにあります。この1点があるだけで相関係数は 0.82 になりますが、関係があるとは言えません の影響は、それくらい大きい。

4. だから散布図を見る

対処はとても簡単です。 を描く。それだけで、上の3つの違いは一目で分かります。

散布図を描いて形を確かめる
Python
import matplotlibmatplotlib.rcParams["font.family"] = "Hiragino Sans"   # 日本語表示のためmatplotlib.rcParams["axes.unicode_minus"] = Falseimport matplotlib.pyplot as plt
fig, axes = plt.subplots(1, 3, figsize=(12, 4))
for ax, (name, x, y) in zip(axes, [("ふつうの関係", x1, y1),                                    ("曲がった関係", x1, y2),                                    ("外れ値が1つ", x3, y3)]):    ax.scatter(x, y)    ax.set_title(f"{name}\n相関係数 {np.corrcoef(x, y)[0, 1]:.2f}")    ax.set_xlim(0, 20)    ax.set_ylim(0, 14)
plt.tight_layout()plt.show()

同じ相関係数なのに、絵にすると全然違うことが分かります。先にグラフを見るというのは、EP.04 でヒストグラムについて言ったことと同じです。統計では、数字を計算する前に形を見るのが基本になります。数字は形を1つの値に押し込めたものなので、押し込める過程で情報が失われていると考えると分かりやすいでしょう。

5. まっすぐな関係しか測れない

相関係数には、もう一つ大事な限界があります。まっすぐな関係の強さしか測れないという点です。

たとえば、気温とエアコンの使用量を考えてみてください。寒い日も暑い日も使いますが、ちょうど良い気温の日は使いません。グラフにするとU字型になります。この場合、関係はあるのに相関係数はほぼ 0 になります。

関係があるのに相関係数が 0 になる例
Python
import numpy as np
# 気温を -5 度から 35 度までtemp = np.linspace(-5, 35, 200)
# エアコン使用量: 15度あたりが最も少なく、離れるほど増える(U字)usage = (temp - 15) ** 2
r = np.corrcoef(temp, usage)[0, 1]print(f"相関係数 = {r:.3f}")print("→ ほぼ 0 だが、実際にははっきりした関係がある")

相関係数が 0 だから関係がない、とは言えないということです。ここでも散布図を見れば、きれいなU字がすぐ分かります。

6. まとめと、次回への橋渡し

相関は、2つのデータの関係を1つの数字で表せる便利な道具です。ただし限界を知って使う必要があります。

  • 必ず散布図も見る — 数字が同じでも中身は違う
  • 外れ値を確認する — 1点で結論が変わることがある
  • まっすぐな関係しか測れない — 曲がった関係は 0 に見える
  • 強さの基準は分野で違う — 一律の目安を当てはめない

そして、相関について最も大事な注意がもう1つあります。相関があっても、原因と結果の関係があるとは限らないということです。これは間違えやすく、しかも間違えると結論が大きくずれるので、次回まるごと1回を使って扱います。

この回のまとめ

相関係数は −1 から +1 で関係の強さを表す。ただし同じ数字でも中身は違う(アンスコムの数値例)。外れ値1個で結論が変わることがある。曲がった関係は測れない。だから 散布図 を必ず見る。次回は「相関があっても原因とは限らない」という、もっと大事な話をします。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp