単回帰分析と重回帰分析とは?回帰の基本を実例つきで解説|統計自主学習⑪

はじめに

これまでの学習では、機械学習モデルの概要やデータの前処理について理解を深めてきました。

次のステップとして重要になるのが、「回帰分析」です。

回帰分析は、あるデータ(特徴量)から別のデータ(目的変数)を数値的に予測するための基本的な手法です。

この記事では、

  • 単回帰分析とは何か?
  • 重回帰分析とは何か?
  • 回帰モデルを評価する指標(決定係数 R2R^2R2) について、わかりやすく解説していきます。

🔹 統計自主学習シリーズまとめページはこちら
【初心者向け】統計自主学習シリーズまとめ


単回帰分析とは?

単回帰分析とは、1つの特徴量(説明変数)から1つの目的変数(応答変数)を予測する方法です。

特徴量と目的変数の間に直線的な関係があると仮定し、最適な直線を求めます。

単回帰分析の式

単回帰の一般的な式は次のように表されます。 y = wx + b

  • y:予測したい目的変数
  • x:説明変数
  • w:傾き(回帰係数)
  • b:切片

つまり、「xが増えると、yはどれくらい増えるか?」を数式で表したものです。

  • x:勉強時間
  • y:テストの得点

勉強時間が増えれば、得点も上がると予想できるので、単回帰分析が適しています。

単回帰分析の前提条件(仮定)

信頼できる回帰モデルを作るためには、以下の仮定が満たされていることが重要です。

  1. 線形性:xとyの関係が直線的である
  2. 独立性:データの観測値同士が独立している
  3. 等分散性(ホモスケダスティシティ):誤差の分散が一定
  4. 正規性:誤差が正規分布に従う

モデルの評価指標

  • 決定係数(R²):説明変数が目的変数の変動をどれだけ説明できるか(0~1で表す。1に近いほど良いモデル)
  • p値:回帰係数が統計的に有意かどうか
  • 残差プロットやQ-Qプロット:仮定が守られているかを視覚的に確認

重回帰分析とは?

重回帰分析とは、2つ以上の特徴量を使って目的変数を予測する方法です。

単回帰では1つの要素だけを考えましたが、現実の問題では複数の要因が絡むことが多いため、重回帰分析が重要になります。

重回帰分析の式

重回帰の式は次のように表されます。 y=w1x1+w2x2+⋯+wnxn+by

ここで、

  • x1,x2,…,xn​:複数の特徴量
  • w1,w2,…,wn​:それぞれの特徴量に対する重み(回帰係数)
  • b:切片

各特徴量がどれだけ目的変数に影響するかを個別に学習します。

  • x1​:勉強時間
  • x2:睡眠時間
  • y:テストの得点

この場合、勉強時間だけでなく、睡眠時間も得点に影響を与えていると考えられます。


回帰モデルの評価指標 ― 決定係数 R^2

回帰モデルを作ったら、「どれくらいうまく予測できているか?」を評価する必要があります。
そのときによく使われるのが、決定係数 R^2 です。

決定係数 R^2とは?

  • R^2は、0〜1の範囲の数値で表されます。
  • 1に近いほど、モデルがデータをよく説明できていることを意味します。

R^2 = 1 – 残差平方和/総平方和

簡単に言えば、

  • モデルがどれくらい「実際のデータ」と「予測値」を近づけられているか を示す指標です。

  • R^2 = 0.9 → モデルが90%うまくデータを説明できている
  • R^2 = 0.2 → モデルはほとんどデータを説明できていない

Pythonでの簡単な実装例

最後に、単回帰・重回帰をPythonでサクッと実装するコードも紹介しておきます。

単回帰分析

from sklearn.linear_model import LinearRegression
import numpy as np

# サンプルデータ(勉強時間と得点)
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([50, 55, 65, 70, 75])

# モデル学習
model = LinearRegression()
model.fit(X, y)

# 予測
print("予測:", model.predict([[6]]))
print("決定係数 R^2:", model.score(X, y))

重回帰分析

from sklearn.linear_model import LinearRegression
import numpy as np

# サンプルデータ(勉強時間と睡眠時間と得点)
X = np.array([[1, 8], [2, 7], [3, 6], [4, 5], [5, 4]])
y = np.array([50, 55, 60, 70, 80])

# モデル学習
model = LinearRegression() #
LinearRegression()で線形回帰モデル(重回帰)を作成
model.fit(X, y) #
X(勉強時間と睡眠時間)からy(得点)を予測するためのモデルを学習させる

# 予測
print("予測:", model.predict([[6, 3]]))
print("決定係数 R^2:", model.score(X, y))

まとめ

  • 単回帰分析は、1つの特徴量から予測する方法
  • 重回帰分析は、複数の特徴量を使って予測する方法
  • モデルの精度は決定係数 R^2で評価する

回帰分析は、データから「なぜ?」「どれくらい?」を読み解くための強力な道具です。
次回は、この回帰分析をさらに発展させた「モデルの評価方法」について学んでいきましょう!

【あわせて読みたい】

🔹 次におすすめの記事

分類問題の基礎!混同行列・精度・再現率・F1スコアの正しい使い方

🔹 関連記事
「正規分布とは?現実世界と機械学習での使われ方・特徴をやさしく解説」

正規性の検定とは?データの標準化・正規化もまとめてわかりやすく解説

「基本統計量をマスター!平均・中央値・最頻値・散・標準偏差を実例でわかりやすく解説」

データの広がりを一目で把握!箱ひげ図の読み方と使い方

🔹 統計自主学習シリーズまとめページはこちら
【初心者向け】統計自主学習シリーズまとめ

コメント

タイトルとURLをコピーしました