モデリング●●●●○

重回帰分析

Multiple Regression ・ じゅうかいきぶんせき

複数の説明変数で目的変数を説明し、他の要因を固定した効果を測る回帰

✦ 30秒で試す — 航海広告の効果を測ったつもりが、立地の効果を測っていた立地がほぼ同じ店どうしで比べ直すと、広告費の効果は?予想してみる

概要

重回帰分析は、回帰分析を「説明変数が複数ある」場合に広げた手法です。家賃を面積だけで説明するのが単回帰なら、面積・駅からの距離・築年数の3つで説明するのが重回帰です。目的変数を、各説明変数に係数を掛けて足し合わせた式(線形結合)で表し、係数は最小二乗法で推定します。説明変数が2つなら、単回帰の「直線」の代わりに、3次元の点の雲に「平面」を当てはめていると思い描けます。

重回帰の真価は予測精度の向上だけではありません。各説明変数に付く係数(偏回帰係数)が「他の変数の値を固定したうえで、この変数が1違うと目的変数の平均がいくら違うか」を表すことにあります。絡み合った複数の要因の影響をデータの上で切り分けられる——実験で条件を揃えられない観察データから要因の効果を測りたい、という社会科学・医学・ビジネス分析の中心的な道具になっているのはこのためです。

ただし「固定する」のは、モデルに入れた変数だけです。何を入れて何を入れないかで係数の値も意味も変わり、入れてはいけない変数を入れると、かえって結論が歪むこともあります。重回帰を使いこなすとは、計算よりもこの変数選びの理屈を扱えるようになることだと言えます。

なぜ生まれたか

単回帰では「x と y の関係」しか扱えませんが、現実の現象が1つの要因だけで決まることはまれです。しかも観察データでは要因どうしが絡み合っています。たとえば「コーヒーをよく飲む人は病気が多い」という相関が見つかっても、コーヒー好きには喫煙者が多いだけかもしれません。第三の変数(交絡因子)が背後にいる限り、単純な相関から効果は読み取れません。

理想は、喫煙量が同じ人だけを集めてコーヒーの効果を見ることですが、条件の組み合わせごとにデータを分けていくと、あっという間に各グループのデータが足りなくなります。喫煙量・年齢・性別をそれぞれ5段階に分けただけで125のグループです。重回帰はこの「条件を揃えた比較」を、データを分割する代わりにモデルの構造で実現する発明でした。喫煙量も説明変数として入れれば、コーヒーの係数は「喫煙量を固定したときのコーヒーの効果」として推定されます。1890年代末にユールがイングランドの救貧政策と貧困率の関係をこの方法で分析し、「他の条件を統計的に揃えて効果を測る」重回帰の使い方を示して以来、観察データ分析の標準手法として使われ続けています。

詳細

偏回帰係数 — 「他を固定して」の意味

重回帰のモデルは「y の予測値 = 切片 + 係数1 × x1 + 係数2 × x2 + …」という形をとります。各係数が偏回帰係数で、単回帰の傾きとは意味が違います。単回帰で面積だけを使うと、面積の係数には「広い部屋は駅から遠い物件が多い」といった他の要因の影響が混ざり込みます。重回帰で駅距離や築年数も同時に入れると、面積の係数は「駅距離と築年数が同じ物件どうしを比べたとき、面積が1平米広いと家賃がいくら高いか」という切り分けられた効果になります。

「固定する」の中身は、次のように言い換えられます。まず面積を駅距離と築年数で回帰し、その残差——他の2つでは説明できない「面積の独自の部分」——を取り出します。偏回帰係数は、y をこの独自の部分で単回帰した傾きと一致します(フリッシュ=ウォー=ロベルの定理)。説明変数どうしが相関していてもかまいませんが、独自に動く部分が少ないほど推定は不安定になります。

単回帰面積 x1家賃 y駅距離 x2モデル外の要因が係数に混ざり込む重回帰面積 x1駅距離 x2家賃 y相関はあってよい係数1係数2両方をモデルに入れるとそれぞれの効果が切り分けられる
単回帰と重回帰 — 他の要因を固定することで、混ざっていた効果が切り分けられる

平面で見る — 断面の傾きが偏回帰係数

説明変数が2つのとき、重回帰は3次元の点の雲に平面を当てはめます。この平面を x2 を固定した面で切ると、断面は直線になり、その傾きが x1 の偏回帰係数です。どの x2 で切っても傾きは同じ——これが「x2 がいくつであっても、x1 の効果は同じ」という線形モデルの仮定であり、「他を固定して」の幾何的な意味です。下の部品では、広告費 x1 と立地 x2(互いに相関)で売上 y を説明する平面を回して確かめられます。

⚡ 体験: 重回帰の平面を回して見る

立体を準備しています…

重回帰(断面の傾き b1 = 1.2)x2 を無視した単回帰(傾き 2.7)立地 低立地 高
偏回帰係数 b1(広告費)1.19b2(立地)1.78単回帰の傾き—x1 と x2 の相関0.81

金の面が重回帰の平面です。ドラッグで回して、点の雲に面が沿っているのを確かめてください。点の色は立地 x2(青緑=低い、紫=高い)。 「x2 の方向から見る」で面を真横から眺めると、係数の意味が見えます。

架空の店舗90店。売上 = 10 + 1.0×広告費 + 2.0×立地 + 誤差 から作ったデータ(広告費と立地は相関している)

「x2 を無視する」を押すと、x1 だけの単回帰の傾きが偏回帰係数よりずっと急になります。広告費を多く使う店ほど立地も良いため、単回帰の傾きには立地の効果が上乗せされているのです。この上乗せ分は計算でき、単回帰の傾き = 偏回帰係数 b1 + b2 ×(x2 を x1 で回帰した傾き)という関係が成り立ちます。モデルから落とした変数が y に効いていて(b2 ≠ 0)、しかも残した変数と相関している(右端の傾き ≠ 0)とき、残した変数の係数が歪む——これを欠落変数バイアスと呼びます。歪みが大きいと符号まで逆転し、全体では正の関係がグループごとには負になるシンプソンのパラドックスが起きます。

当てはまりの評価とモデル選び

モデル全体の説明力は決定係数(R²)で測ります。目的変数のばらつきのうちモデルが説明できた割合で、1 に近いほど当てはまりが良いことを示します。ただし R² は説明変数を増やして下がることがなく、無関係な変数を足しても偶然のぶんだけほぼ必ず上がります。そのため、変数の数に応じた罰則を加えた自由度調整済み R² や、AIC などの情報量規準で比べるのが定石です。個々の係数については、標準誤差をもとに「その係数は 0 ではないと言えるか」をt検定の枠組みで検定し、モデル全体が意味を持つかは分散分析と同じ F検定で評価します。

変数を手当たり次第に詰め込むと、手元のデータの偶然のノイズにまで合わせてしまう過学習が起き、新しいデータへの予測が悪化します。予測が目的なら交差検証で新しいデータへの当てはまりを測り、係数に罰則をかけて抑える正則化を使うのが定番です。また「広さの効果が駅距離によって変わる」ような変数どうしの掛け合わせは、交互作用項として明示的にモデルへ入れる必要があります。

何を統制するか — 入れてはいけない変数

効果を知るための重回帰で最も重要な判断は、どの変数を統制する(モデルに入れる)かです。「関係のありそうな変数は全部入れておけば安全」という直観は誤りで、変数には入れるべきものと入れてはいけないものがあります。入れるべきなのは、原因 x と結果 y の両方に影響する交絡因子です。入れてはいけない代表は二つあります。

一つは中間変数(媒介変数)です。広告費 → 来店客数 → 売上 という経路があるとき、来店客数を統制すると「来店客数が同じ店どうし」の比較になり、広告の効果のうち来店を通じた本体部分が消えてしまいます。もう一つは合流点で、x と y の両方から影響を受ける変数です。たとえば「入院したかどうか」は複数の病気のどちらからも影響を受けるため、入院患者だけで(あるいは入院を統制して)分析すると、本来は無関係な2つの病気の間に見かけの関連が生まれます。こうした「悪い統制(bad control)」は、どれだけデータが多くても直りません。変数どうしの因果の向きを因果ダイアグラムに描き、どの経路を塞ぎどの経路を残すかを理屈で決める——これが因果推論の枠組みの中で重回帰を使うということです。

前提条件と診断

重回帰の推定と検定は、残差(予測と実測のずれ)が平均 0 で、ばらつきが一定、互いに独立、そして検定のためには正規分布に近い、という前提の上に成り立ちます。当てはめたら終わりではなく、残差プロットで曲がったパターンやばらつきの変化がないかを確かめる残差分析とモデル診断が欠かせません。外れ値が1点で係数を引きずっていないかの確認も含め、「診断してはじめて結果を信じられる」と考えるのが実務の作法です。

典型的な落とし穴

重回帰で最も有名な落とし穴が多重共線性です。説明変数どうしが強く相関していると、独自に動く部分がほとんどなくなり、「他を固定して」の比較をする材料がデータにありません。その結果、係数の推定が極端に不安定になります。もう一つは因果の読みすぎです。重回帰が揃えられるのはモデルに入れた変数だけで、測っていない交絡の影響までは除けません。係数が有意でも、それだけで因果関係の証明にはならない——「何を統制できていて、何を統制できていないか、何を統制してはいけないか」を常に言葉にしながら読むことが、重回帰と付き合う基本姿勢です。

試問

架空の90店の、広告費 x1・立地の良さ x2・売上 y のデータです。広告費を多く使う店ほど立地も良いので、全店で広告費と売上の直線(単回帰)を引くと、立地の効果まで広告費の効果に見えてしまいます。重回帰は立地の影響を差し引いた広告費の効果(偏回帰係数 b1)を求めます。画面は広告費と売上の散布図で、2本のスライダーで立地 x2 の範囲を選ぶと、その範囲の店だけで引いた直線が出ます。

✦ 命題挑戦中

重回帰を使わずに、単回帰だけで広告費の偏回帰係数 b1 を再現せよ

  • 選んだ店どうしの立地 x2 の差を 2 以内に絞る(いま 10.0)
  • 20 店以上を残す(いま 90 店)
  • その店だけで引いた広告費の傾きが、偏回帰係数 b1 = 1.19 の ±0.3 に入る
⚡ 体験: 立地で店を絞って、広告費の傾きを測る
立地 x2 の範囲の中心
範囲の幅
選んだ店だけの単回帰全店の単回帰(傾き 2.7)
選んだ店90 店選んだ店での傾き2.69目標: 偏回帰係数 b11.19全店の単回帰2.69

立地 0.0〜10.0 の 90 店だけで単回帰すると、広告費の傾きは 2.69(全店の単回帰は 2.69、重回帰の b1 は 1.19)。

架空の店舗90店。点の色は立地 x2(青緑=低い、紫=高い)。選んだ立地の範囲に入らない店は薄く表示