ロジカ式ロゴ

Python
データ分析

ページ一覧に戻る
Lesson 19 散布図と回帰直線
渡辺先生

点全体の傾向を直線で表し、簡単な予測をします。

まず自分で予想してから、コードを動かしてみよう!

そうた

結果だけでなく、そう考えた理由も説明してみます。

ひな

QUESTION まず考えよう

散布図の中央を通る『全体に合う線』は、どう決めればよいでしょう?

散布図と回帰直線から傾向、予測値、ずれを読む順序

このグラフで分かること・読み方

  1. 回帰直線は、点全体のおおよその傾向を一本の直線で表します。
  2. 直線の傾き、点と直線のずれ、予測したい位置の順に読みます。
  3. 予測は観測した範囲の近くで使い、相関だけで因果関係を断定しないようにします。

PREDICT 実行前の予想

回帰直線が右上がりか右下がりか、傾きを予想してください。

TRY 実行して確かめよう

TRY
import numpy as np import matplotlib.pyplot as plt hours = np.array([1, 2, 2.5, 3, 4, 5]) scores = np.array([48, 55, 62, 65, 75, 82]) slope, intercept = np.polyfit(hours, scores, 1) plt.scatter(hours, scores, label='データ') plt.plot(hours, slope*hours + intercept, color='red', label='回帰直線') plt.xlabel('勉強時間 (時間)') plt.ylabel('得点') plt.legend() plt.grid(True) plt.show() print('傾き:', slope) print('切片:', intercept)
渡辺先生

グラフや数値のどこが予想と同じで、どこが違ったかを見つけましょう。

CHECK 結果を読み取ろう

傾きは場面上で何を意味しますか。すべての点が線上にありますか。

📖 考え方を確認する

傾きは勉強時間が1時間増えたときの得点の平均的な増加を表します。回帰直線は全点を通る線ではありません。

CHALLENGE 自分で直してみよう

4.5時間勉強した場合の予測値を計算し、散布図に予測点を追加してください。

CHALLENGE
import numpy as np import matplotlib.pyplot as plt hours = np.array([1, 2, 2.5, 3, 4, 5]) scores = np.array([48, 55, 62, 65, 75, 82]) slope, intercept = np.polyfit(hours, scores, 1) # x=4.5の予測値を求めよう

📖 解答例と解説

import numpy as np
import matplotlib.pyplot as plt

hours = np.array([1, 2, 2.5, 3, 4, 5])
scores = np.array([48, 55, 62, 65, 75, 82])
slope, intercept = np.polyfit(hours, scores, 1)
predicted = slope * 4.5 + intercept

plt.scatter(hours, scores, label='データ')
plt.plot(hours, slope*hours + intercept, color='red', label='回帰直線')
plt.scatter(4.5, predicted, color='green', s=80, label='予測')
plt.legend()
plt.grid(True)
plt.show()
print(f'4.5時間の予測得点: {predicted:.1f}点')

予測は約79点です。ただし、勉強時間だけが得点の原因とは限らず、データ範囲外の予測にも注意します。

POINT
  •  回帰直線は全体の傾向を表す
  •  傾きと切片を場面で解釈する
  •  予測にはずれや限界がある

NEXT 次の学びへ

渡辺先生

応用問題で、問いから結論と注意点までをまとめます。

振り返り:今回使った命令、結果から分かったこと、この方法を使える場面を、それぞれ1文で書きましょう。