多重共線性とは回帰係数の解釈が壊れる理由について解説

目次

はじめに

重回帰分析で、相関の高い説明変数を一緒に入れたことはありませんか。係数の符号が想定と逆になったり、重要そうな変数が「有意でない」と出たりして、戸惑った経験がある人もいると思います。

この記事の問いは次の一つです。

相関の高い説明変数を入れると、回帰係数はどれだけ不安定になるのか。そのとき、予測は壊れるのか。

人工データで相関の強さを変えながら1000回ずつ分析し、係数と予測精度の変化を見ます。

前提:多重共線性とは

多重共線性とは、説明変数どうしの相関が高く、ある変数を他の変数でほぼ言い表せる状態のことです。

重回帰の係数は、「他の変数を固定したときの、その変数の効果」を表します。ところが、X1とX2がほぼ一緒に動くデータでは、「X1だけが動いて、X2は動かない」場面がほとんどありません。そのため、X1の効果とX2の効果を、データから切り分けられなくなります。

起きることは、大きく次の3つです。

  • 係数の推定値が、データが変わるだけで大きく動く
  • 係数の標準誤差が大きくなり、本当は効いている変数が「有意でない」と出やすくなる
  • 2つの変数を合わせた予測のあたり具合は、あまり変わらない場合がある

標準誤差の膨らみは、2変数の場合、次の式で目安がつきます。

VIF = 1 / (1 – 相関²) 標準誤差の膨らみ ≒ √VIF

相関が0.9ならVIFは約5.3で、標準誤差は約2.3倍になります。相関が0.99ならVIFは約50で、標準誤差は約7.1倍です。なお、変数が3つ以上の時のVIFは、ある変数を他の全ての変数で予測した時の決定係数R²を使い、「1 / (1 – R²)」で計算します。

「符号が逆になる」には2通りある

係数の符号が想定と逆になる理由は、1つではありません。

  1. 推定が不安定で、符号が揺れる。真の係数は正でも、推定値が負になることがあります。多重共線性の本題で、この記事の実験で確かめるのはこちらです。
  2. 見ている量が違う。単回帰では正の関係でも、他の変数を固定した重回帰では負になることがあります。これは推定の失敗ではなく、「他を固定した結果」という別の量を見ているためです。この記事の実験では扱いません。

この2点は混乱しやすい点なので、先に分けておきます。

実験

設定

  • サンプル数は100です。X1は標準正規分布から作ります。
  • X2は、X1との相関がrhoになるように作ります。rhoは0、0.5、0.9、0.99の4通りです。
  • 目的変数は「Y = X1 + X2 + ノイズ」です。真の係数は、どちらも1です。ノイズの標準偏差は2にしました。
  • 各条件で、データを作って当てはめる作業を1000回繰り返します。

予測精度は、1回ごとに新しく作った1000件のテストデータで、RMSE(2乗平均平方根誤差)を測ります。ノイズの標準偏差が2なので、どんなモデルでも、RMSEの平均は2がほぼ下限になります。2に近いほど、良い予測です。

テストデータは2つの場合を用意しました。

  • 同じ相関:訓練データと同じrhoで作る
  • 相関が崩れた:X1とX2を無相関(rho = 0)で作る

比べる手法は、次の4つです。

手法内容
最小二乗法X1、X2の両方を入れた通常の重回帰
Ridge同じ2変数で、係数を小さくする正則化を加えた回帰(強さは交差検証で自動選択)
X1のみX2を落とした回帰
2つの平均X1とX2の平均を1つの変数として入れた回帰

結果1:係数は、平均では当たるが、1回ごとのブレが大きくなる

図1は、X1の係数の推定値を、相関ごとに1000回分並べたものです。橙の線が真の値(1)です。

相関係数の平均係数の標準偏差標準誤差の平均VIFの平均負になった割合
01.0160.2050.2041.010.0%
0.50.9890.2390.2341.350.0%
0.91.0090.4760.4655.372
0.990.9961.3771.43851.724.4%

見えることは次の3つです。

  • 係数の平均は、どの相関でも真の値(1)に近いです。多重共線性があっても、推定値が平均的に偏るわけではありません。
  • 一方で、1回ごとのブレは相関が高いほど大きくなります。相関が0.99では、推定値がおおむね-3から5の範囲に広がり、4回に1回ほど、符号が負になりました。
  • 標準誤差は、相関0に比べて、0.9で約2.3倍、0.99で約7倍です。先ほどの式の目安と合っています。また、標準誤差の平均は、実際のばらつき(標準偏差)とほぼ一致しています。

相関が0.99のとき、標準誤差(約1.4)は真の係数(1)より大きくなります。そのため、1回の分析では、この変数が「有意でない」と出やすくなります。

結果2:予測は壊れるのか。条件によって変わる

図2は、テストデータでのRMSE(平均)です。左がテストデータの相関が訓練データと同じ場合、右が相関が崩れた場合です。

テストデータ手法相関0相関0.5相関0.9相関0.99
同じ相関最小二乗法2.0272.0302.0292.029
同じ相関Ridge2.0282.0302.0262.023
同じ相関X1のみ2.2562.2022.0652.025
同じ相関2つの平均2.0172.0192.0182.020
相関が崩れた最小二乗法2.0282.0382.1192.694
相関が崩れたX2.0292.0362.0682.231
相関が崩れたX1のみ2.2582.3112.4302.462
相関が崩れた2つの平均2.0182.0172.0192.015

左側(同じ相関)では、最小二乗法のRMSEは、相関によらず約2.03で変わりません。係数が1回ごとに大きくぶれていても、予測は当たっています。

右側(相関が崩れた)では、様子が変わります。最小二乗法のRMSEは、訓練データの相関が0.99のとき、2.694まで悪化しました。

この違いは、次のように説明できます。X1とX2がほぼ一緒に動く訓練データでは、「X1の係数とX2の係数の合計」はよく決まりますが、「両者の差」はほとんど決まりません。同じ相関のテストデータでは、X1とX2がほぼ一緒に動くので、差の誤差は予測に出ません。相関が崩れると、X1とX2が別々に動くので、差の誤差がそのまま予測の誤りになります。

Ridgeは、同じ条件(相関0.99)で最小二乗法より悪化が小さく(2.231)、抑えられていました。「X1のみ」は、相関が崩れると、訓練データの相関が高いほど悪化しました(2.258から2.462)。

「X1のみ」は、同じ相関のテストデータでは、相関が高いほど良くなっています。X2の情報の大半をX1が代わりに持っているためです。ところが、相関が崩れると、その代わりが効かなくなり、悪化します。

「2つの平均」は、どの条件でも約2.02と安定していました。ただし、これは真の係数がX1・X2ともに1という設定が、この手法に有利だったためです。

見分け方

次のような兆候があるときは、多重共線性を疑います。

  • VIFが大きい。目安として、5や10を超えると疑う、と説明されることが多いです。ただし、絶対的な基準ではありません。この実験でも、相関0.9(VIF約5)で、すでに標準誤差は約2.3倍になっていました。
  • 標準誤差が大きい。係数の大きさに比べて、標準誤差が極端に大きいときです。
  • 変数を足し引きすると、係数が大きく変わる。データを少し減らして当てはめ直したときも、同じ兆候が出ます。
  • 相関行列を見る。ただし、3つ以上の変数にまたがる共線性は、2変数ずつの相関では見落とすことがあります。VIFなら、他の全変数との関係をまとめて見られます。

対処法と使い分けの目安

最初に考えるのは、「何のために回帰を使うのか」です。

目的多重共線性の影響考え方
予測小さいことが多い。ただし、新しいデータで相関が保たれている間だけ相関の構造が変わりうるなら、Ridgeや変数のまとめ方を検討する
係数の解釈大きい変数を減らす、まとめる、Ridgeで安定させる。係数を単独の「効果」として読まない

対処の選択肢は、次のとおりです。

  • 変数を落とす。同じ情報を持つ変数の片方を外します。ただし、外した変数の効果が、残した変数の係数に混ざります。(結果2の「X1のみ」)。
  • 変数をまとめる。平均や合計、主成分などで一つにします。ただし、まとめ方が適切かは、変数の意味で判断が要ります。
  • Ridgeなどの正則化を使う。係数を小さくする代わりに、安定させます。ただし、係数にバイアスが入るため、解釈は慎重に行います。
  • データを増やす。標準誤差を小さくするには有効ですが、相関が高い状況そのものは変わりません。

自分は、係数を読むときは、まず変数同士の相関とVIFを確認しています。予測だけが目的のときは、それほど気にしません。

判断の流れは、次のようになります。

  1. 目的は予測か、係数の解釈か。
  2. 予測なら、新しいデータで、変数の相関が保たれる見込みはあるか。保たれない見込みがあるなら、Ridgeや変数のまとめ方を検討する。
  3. 解釈なら、VIFと標準誤差を確認する。大きければ、変数を減らす・まとめる・Ridgeで安定させる。それでも、係数を「効果」として読まず、傾向として扱う。

まとめ

最初の問いは、「相関の高い説明変数を入れると、回帰係数はどれだけ不安定になるのか。そのとき、予測は壊れるのか」でした。

係数は、平均的には真の値に近いままですが、1回ごとのブレは相関が高いほど大きくなります。この実験では、相関0.99で標準誤差が約7倍になり、4回に1回ほど符号が負になりました。

予測は、新しいデータでも変数の相関が保たれているうちは、この設定では、ほとんど壊れません。相関が崩れると、悪化が目立ちます。

だからこそ、多重共線性の影響は目的で変わります。予測だけなら小さいことが多く、係数を解釈するなら大きな問題になります。回帰を使う前に、「何のために使うか」と「新しいデータでも相関は保たれるか」を確かめておくことが大切です。

CTA
  • URLをコピーしました!
  • URLをコピーしました!
この記事を書いた人
目次