コンテンツにスキップ

第10回 回帰分析:単回帰と重回帰

12/8(火)Ⅱ講 10:35〜12:15・B402教室

データを「数式(モデル)」で説明する ―― ただし、当てはまりの良さは良いモデルの証明ではない


考え方をガイドで確かめる

この回の考え方は、統計の考え方ガイドの「回帰とモデル」でも解説しています。霊長類のデータを動かしながら確かめられます。

この回のゴール

  • 単回帰の式(切片・傾き)と決定係数 R² を読める
  • 重回帰で「他を一定にしたときの関連(統制)」を理解する
  • R²の罠・係数の罠・外挿の罠を知り、回帰結果を批判的に解釈できる
  • 発展:最小二乗法から傾き \( b=S_{xy}/S_{xx} \) と切片 \( a=\bar{y}-b\bar{x} \) を導き、単回帰では \( R^2=r^2 \) になることを、自分で示せる

到達目標との対応:G3(Pythonで解析)・G2(批判的検証)。


0. フック

「草食か雑食かが分かれば、その種の行動圏の広さを予測できるだろうか?」

散布図に直線を引いて予測してみると――R² = 0.0001。栄養段階では行動圏をまったく説明できなかった。

では体重なら?

今日も対数で扱う

体重も行動圏も種によって数千倍違う。第3回・第5回と同じ理由で、両方とも対数の目盛りで扱う。


1. 単回帰

体重で行動圏を予測すると(n=153種):

\[ \log(\text{行動圏}) \approx -3.883 + 0.933 \times \log(\text{体重}) \qquad (R^2 = 0.462) \]
  • 回帰直線:データに最もよく当てはまる直線(最小二乗法=縦のズレの二乗和を最小に)
  • 切片 = −3.883:log体重が0(=1g)のときの予測値
  • 決定係数 R² = 0.462:行動圏のばらつきの約46%をモデルが説明
導出①:傾きと切片は、どこから出てくるのか(最小二乗法)

直線 \( y = a + bx \) を引くとき、「当てはまりが良い」を縦のズレの二乗和が最小と決める。この決め方が最小二乗法である。

\[ Q(a,b) \;=\; \sum_{i=1}^{n}\bigl(y_i - a - b x_i\bigr)^2 \]

まず a について。\( Q \) を a で微分して 0 とおくと \( -2\sum (y_i - a - bx_i) = 0 \)、両辺を n で割って

\[ a \;=\; \bar{y} - b\bar{x} \]

次に b について同じことをすると \( -2\sum x_i (y_i - a - bx_i) = 0 \)。ここに \( a=\bar{y}-b\bar{x} \) を入れて整理すると、

\[ b \;=\; \frac{\sum (x_i-\bar{x})(y_i-\bar{y})}{\sum (x_i-\bar{x})^2} \;=\; \frac{S_{xy}}{S_{xx}} \]

傾きは「x と y の共分散 ÷ x の分散」である。微分を知らなくてもよい。\( Q \) は b について下に凸の二次式なので、平方完成して頂点を読めば同じ答えが出る。

\( a=\bar{y}-b\bar{x} \) を直線の式に戻すと \( y = \bar{y} + b(x-\bar{x}) \)。x に \( \bar{x} \) を入れると y は \( \bar{y} \)。つまり回帰直線は必ず点 \( (\bar{x},\bar{y}) \) を通る。平均の点は、どんなデータでも直線の上にある。

数値で確かめる:この回のデータ(n=153種、両対数)で \( S_{xy}/S_{xx} = 0.9333 \)、\( \bar{y}-b\bar{x} = -3.8830 \)。本文の傾き 0.933・切片 −3.883 に一致する。

使った数学:二次式の最小化(微I:偏微分、または平方完成)。総和の記号操作(線I)。

導出②:単回帰の \( R^2 \) は、相関係数 r の二乗にすぎない

決定係数は「全体のばらつきのうち、モデルが説明できた割合」と定義される。

\[ R^2 \;=\; 1 - \frac{\sum (y_i-\hat{y}_i)^2}{\sum (y_i-\bar{y})^2} \;=\; 1 - \frac{SS_{\text{残差}}}{SS_{\text{全体}}} \]

予測値は導出①より \( \hat{y}_i = \bar{y} + b(x_i-\bar{x}) \) なので、残差平方和は

\[ \sum (y_i-\hat{y}_i)^2 \;=\; \sum \bigl[(y_i-\bar{y}) - b(x_i-\bar{x})\bigr]^2 \;=\; S_{yy} - 2bS_{xy} + b^2 S_{xx} \]

ここに \( b=S_{xy}/S_{xx} \) を代入すると、後ろの2項がまとまって

\[ \sum (y_i-\hat{y}_i)^2 \;=\; S_{yy} - \frac{S_{xy}^{\,2}}{S_{xx}} \]

よって

\[ R^2 \;=\; 1 - \frac{S_{yy} - S_{xy}^{\,2}/S_{xx}}{S_{yy}} \;=\; \frac{S_{xy}^{\,2}}{S_{xx}S_{yy}} \;=\; r^2 \]

説明変数が1つのとき、\( R^2 \) は相関係数 r を二乗しただけのものである。 第5回で見た r と、今日の \( R^2 \) は別々の量ではない。

数値で確かめる:この回のデータで \( r = 0.6799 \)、その二乗は 0.4623。本文の \( R^2 = 0.462 \) に一致する。

これは『R² が何を測っているか』を示しただけ

この導出が言っているのは「\( R^2 \) は r の二乗である」ということだけで、\( R^2 \) が高いモデルが正しい、という意味はまったく含まない。

しかも説明変数が2つ以上になれば \( R^2 \) はもう \( r^2 \) ではなくなり、変数を足すだけで必ず上がるようになる。なぜそうなるかは、次の §3「R²の罠」で見る。

使った数学:平方の展開と総和(線I)。相関係数の定義(第5回)。

両対数のときの傾きは「何倍になるか」を表す

傾き 0.933 は、両方を対数にしているので足し算ではなくかけ算の関係を意味する。

体重が 行動圏は
2倍 1.9倍
10倍 8.6倍
100倍 73.5倍

傾きが1.0ちょうどなら「体重10倍で行動圏も10倍」。0.933はそれよりわずかに小さい = 大きい種ほど体重あたりの行動圏はやや狭い。

この傾き(スケーリング指数)は生物学では意味のある量として扱われる。「体が大きいほど広い範囲が要る」ことは分かりきっているが、どういう比率で増えるのかを1つの数で表せるのが回帰の力である。

係数は因果ではない

「体重10倍で行動圏8.6倍」は予測上の関連であって、「体重を増やせば行動圏が広がる」という因果の保証ではない(第5回)。観察データの回帰係数を因果効果と読んではいけない。


2. 重回帰 ―― 複数の説明変数で

体重だけでなく集団サイズも一緒に使う(n=149種):

\[ \log(\text{行動圏}) \approx -3.358 + 0.568\times\log(\text{体重}) + 0.828\times\log(\text{集団サイズ}) \quad (R^2=0.601) \]

重回帰では各係数が「他の変数を一定にしたときの、その変数の関連」を表す(=統制)。

R² が 0.46 → 0.60 に上がった。集団サイズには、体重だけでは説明できない情報がある。

注目:体重の係数が 0.933 → 0.568 に下がった

「集団サイズが同じ種どうしで比べたときの、体重の効果」はもっと小さい。単回帰のときの0.933には、集団サイズの効果が混ざり込んでいた(大きい種は大きな群れを作りがち)。

これが第5回でやった統制そのものである。重回帰は、統制を式の中で行う道具でもある。

さらに 個体群密度 を足すと R² = 0.746(n=137種)。個体群密度の係数は −0.573 で負 ―― 密に住んでいる種ほど、一頭あたりの行動圏は狭い。

よく当てはまっている ―― ように見える。ここで立ち止まる。


3. R²の罠 ―― 変数を足せば、必ず上がる

ここが今日の核心。説明変数を足すと、R²は必ず上がる(決して下がらない)。 たとえそれがまったく無意味な数字でも。

行動圏と無関係な「でたらめな乱数の列」を体重に足していくと:

足したでたらめ列 R²
0本 0.462
1本 0.472
5本 0.501
20本 0.509
50本 0.665

R²が高い ≠ 良いモデル

中身がゴミの乱数を50本足すだけで、R²は 0.46 → 0.67 に上がった。 当てはまり(R²)を上げたいだけなら、変数をたくさん入れればいい。だがそれは手元のデータに合わせすぎただけで、未来の予測は良くならない。これが 過学習 の入り口。

しかも今回は n=153種しかない。データの数に対して変数が多いほど、この効き方は激しくなる。

§2でR²が0.75まで上がったのを見て「良いモデルだ」と思ったなら ―― いま同じことが起きていないと、どうやって言えるだろうか。

「当てはまりの良さ」と「モデルの複雑さ」をどう釣り合わせるか ―― それが次回(第11回 AIC)のテーマ。


4. 残差を見る習慣 / 外挿の危険

残差=実際の値 − 予測値。残差を予測値に対してプロットし、偏った模様がないか確認するのが作法(ランダムに散っていれば良い兆候)。

導出③:残差の和が 0 になるのは、偶然ではない

導出①で a と b を決めたとき、実は次の2本の式を 0 とおいていた(\( e_i = y_i - a - bx_i \) は残差)。

\[ \sum_{i=1}^{n} e_i \;=\; 0, \qquad \sum_{i=1}^{n} x_i e_i \;=\; 0 \]

上は a についての条件、下は b についての条件そのものである。つまり最小二乗法で引いた直線では、残差の和は必ず 0 になり、残差と x の積和も必ず 0 になる。2本を合わせると \( \sum (x_i-\bar{x})e_i = 0 \)、すなわち残差と x は必ず無相関である。

ここが大事なところだ。残差と x が無相関であることは、モデルが良いことの証拠ではない。どんなに見当違いな直線でも、最小二乗法で引いた以上は必ずそうなる。最初から保証されていることを確認しても、何も分からない。

だから残差プロットで探すのは「相関があるかどうか」ではない。直線では捉えられない形、つまり曲がり・ばらつきの偏り・飛び抜けた点である。これらは残差と x の相関が 0 のままでも、平気で現れる。

数値で確かめる:この回の回帰で、残差の和も、残差と log体重 の相関も、絶対値が \( 10^{-12} \) より小さくなる。どちらも数値計算の丸め誤差の範囲で 0 である(細かい桁は計算環境によって変わる)。

使った数学:最小化の条件式(微I)。積和が 0 = 直交(線I)。

残差は「外れ」ではなく「発見」でもある

予測から最も外れているのは Erythrocebus patas(パタスモンキー)。8kgの体格から予測される行動圏の 約49倍(28.2km²)を使っている。

これはデータの誤りだろうか。そうではない。パタスモンキーは森林ではなくサバンナで地上生活する霊長類で、散在する食物を求めて広大な範囲を移動することが知られている。

残差の大きい点は、モデルが捉えていない何かを教えてくれる

「当てはまりが悪い」で終わらせず、なぜ外れたのかを見に行く。そこにこそ、平均的な傾向では見えない現象がある。

外挿の危険

モデルを当てはめた体重の範囲は 48g 〜 112,589g。その外を予測してはいけない。

式に入れる体重 予測される行動圏
1,000,000 g 52.1 km² 1トンの霊長類
1 g 0.0001 km² 1gの霊長類
3,000,000 g 145.2 km² アフリカゾウ(霊長類ですらない)

式はどんな数字を入れても答えを返す。エラーは出ない。しかし1トンの霊長類も1gの霊長類も存在しない。

外れ値と外挿は、違う

外れ値は「ありえない値かどうか」を人間が判断できた(第2回:ゴリラ149kgは本物、−999gは誤り)。 外挿は、出てきた数字が正しいかどうか確かめる相手がそもそも存在しない。


まとめ

概念 ひとこと
単回帰 y ≈ 切片 + 傾き×x。傾き=xが1増えると予測がいくつ増えるか
両対数の傾き 「何倍になるか」を表す(体重10倍 → 行動圏8.6倍)
決定係数 R² ばらつきのうちモデルが説明できた割合(0〜1)
重回帰 複数の説明変数。各係数は「他を一定にしたとき」の関連(=統制)
❌ R²の罠 変数を足せばR²は必ず上がる。でたらめ50本で0.46→0.67
❌ 係数の罠 回帰係数=予測上の関連。因果の保証ではない
❌ 外挿の罠 データ範囲の外は予測できない(1トンの霊長類はいない)
残差 実際−予測。偏りを見る。大きな残差は発見の入り口(パタスモンキー)

モデルは現実の近似。「当てはまりの良さ」は「良いモデル」ではない。 係数を因果と読まず、範囲外を予測せず、残差を見る。


今日の課題(Moodle提出)

配点:100点(選択40点 + 記述60点)/ 提出先:Moodle / 提出期限:次回授業の開始時刻まで

Colab 10_regression.ipynb を実行したうえで答えること。


パートA:選択問題(各10点 ×4=40点)

A1. 単回帰「log行動圏 ≈ −3.883 + 0.933 × log体重」の 傾き0.933 の意味として最も正しいのは?

  • (ア) 体重が0.933倍の種の行動圏
  • (イ) 体重が10倍になると、予測される行動圏は約8.6倍になる
  • (ウ) 行動圏が必ず0.933km²になる

A2. 「体重」だけのモデルに、行動圏と無関係なでたらめの乱数列を50本足すと、R²はどうなったか。

  • (ア) 0.46 のまま変わらない (イ) 0.46 → 0.67 に上がった (ウ) 0.46 → 0.10 に下がった

A3. A2の結果から言えることとして最も適切なのは?

  • (ア) R²が高いほど常に良いモデルだ
  • (イ) 変数を足せばR²は上がるので、R²の高さだけでモデルの良さは判断できない
  • (ウ) でたらめな乱数は行動圏を予測できる

A4. この回帰式に体重 1,000,000 g(1トン)を入れると、予測される行動圏は 52.1 km² になった。ここから分かることは?

  • (ア) 1トンの霊長類の行動圏は 52.1 km² である
  • (イ) データの範囲外(外挿)では予測は信用できない
  • (ウ) モデルが間違っている

パートB:記述問題(AIフィードバック対象・60点)

【全記述に共通・重要】自分の出力を引用すること

記述には、今日のColabであなたのノートが出した数値を最低1つ引用すること。ここには値を書かない。自分の画面に出た値を使うこと。 引ける量の例:「体重の傾き」「でたらめな列を足す前と後のR²」「外挿したときの予測値」。 引用がない記述は満点になりません。

B1.(30点) ある人が「重回帰でR²=0.95の高いモデルができた。変数を30個入れたら当てはまりが良くなった。これは素晴らしいモデルだ」と言った。この主張の問題点を、今日学んだ「R²と変数の数の関係」「過学習」の観点から指摘しなさい。

B2.(30点) 「体重→行動圏」の回帰式(傾きはあなたのノートの出力を見ること)について、この予測を使ってはいけない場面・信じすぎてはいけない点を2つ挙げ、それぞれなぜかを説明しなさい。(ヒント:因果・外挿・残差・R²のうちから)

目安:B1・B2あわせて350〜550字。自分の言葉で書くこと。

字数は目安です。多少の過不足で減点はしません。見るのは、設問が挙げた要素(上の箇条書き)が書けているかどうかです。ただし要素が抜けていれば、その分は引きます。

次回予告

第11回「モデル選択とAIC」。R²の罠を乗り越える。「当てはまりの良さ」と「モデルの複雑さ」のトレードオフを、AICで定量化する。オッカムの剃刀。