多重共線性
定義 1
多重回帰分析 $Y \gets X_{1} , \cdots, X_{p}$ をするとしよう。このとき、独立変数 $ X_{1} , \cdots, X_{p}$ の中で独立変数同士が強い相関関係を持っている場合、多重共線性multicollinearityがあるとされる。
実践
もともと、独立変数同士が依存していること自体が回帰分析の前提に反する話であり、実際には数値的な問題を引き起こし分析結果を信頼できなくする。データによっては多重共線性があるかどうかを見つけ出すことからが仕事となる。
データ探索
組み込みデータから MplsDemo データを
読み込んでみよう。
MplsDemo
はアメリカ ミネアポリス地域を区別して、population
(総人口)、white
(白人比率)、black
(黒人比率)、foreignBorn
(外国生まれ)、hhIncome
(世帯所得)、poverty
(貧困)、collegeGrad
(大学卒業者率)を推定したデータだ。
回帰分析後の仮説検定をみると、特に問題はなさそうで説明力もまあまあ良く、残差図も良好だ。しかし、回帰係数をよく見ると、白人が多いほど大卒者が増え、外国生まれが多いほど大卒者が増えるように見える。もちろんこのデータがすべての人種について正確な情報を持っているわけではないが、これは何かおかしい。また、所得が多いほど大卒者が増えるのはそうだとしても、貧困率が全く影響を与えないのもなんとなく気持ち悪い。
散布図を見ると、誰が見ても白人、世帯所得が正の相関関係、黒人、外国生まれが負の相関関係を持つのが正常に見える。貧困はあいまいだけれど、無理に言えば弱い負の相関関係を示す。しかし、黒人と外国生まれに対する回帰係数が正であることは、何かこのデータが正しく説明されていないことを示唆している。もちろん説明力自体は0.8を超える程度にはまあまあだが、どこか納得いかない点が明らかにある。多重共線性を考えると、白人が他の変数と強い相関関係があるのが引っかかる。
モデル修正
白人比率を表す独立変数 white
を削除して、再度回帰分析をやってみよう。
新しい分析結果は、説明力が約10%近く落ちたものの、散布図から予想された回帰関係を比較的まともに説明していることが確認できる。外国生まれは少し係数が変だが、回帰係数が有意でないので気にする必要はなさそうだ。ここら辺から、より洗練された分析のためにデータをどう扱うかは完全に分析者にかかっている。
多重共線性の検出
多重共線性がある可能性が高い状況は以下のような場合がある:
- F検定は合格したが、各々の回帰係数が t検定を通過しない場合
- 予想したこととは異なり、回帰係数の符号が反対でずれが大きい場合
- データを追加または削除するときに、既存の回帰係数が極端に変化する場合
1の場合は、それでも多重共線性を発見できたという点では幸運なことだ。データをどう扱ってどう問題を解決するかは別として、多重共線性があるという事実自体は把握されたからである。
2の場合は、直感と違うから発見しやすいが、「予想されること」とデータによっては多重共線性を把握するのが非常に難しくなる場合がある。例えば、植物の生長に影響を与える原因を調べている場合、独立変数として日光や水の量、土壌の質などが生長に役立つかどうか大まかな予測は可能だ。しかし、社会科学で未知の問題を解決しなければならない場合は、分析者の直感自体が信じがたくなる。多重共線性があっても分析は正しくされたように見えるため、適切なレビューがなければ実際の現象を全く説明できない分析結果を出すかもしれない。
3の場合は、独立変数が非常に多い場合、回帰係数一つ一つに気を使うのが難しくなり、直接見ても見過ごすことがある。データとは必ずしも独立変数だけでなく、何かの異常値になることもある。
どのケースでも、分析が誤っていて問題が発生したことから、説明力 $R^2$が低いため多重共線性を疑うことができる。しかし、説明力にはどれくらいから良いという基準もなく、間違った分析でも説明力が高く出ることがあり、それすらも大部分は主観的で、参考にならないことがある。もともと、現実の中で得られるデータはすべての変数が完全に独立である場合がより珍しい。多重共線性と言うほどではないけれど、ある程度は関係があり、あいまいな影響を与えるのが普通だ。
例のように散布図を通じて図で把握することも万能とは言えない。もちろん散布図を見れば二つの変数間の関係はすぐにわかるが、$X_{1}+ X_{2} + X_{3} = 1$のように複数の変数が複雑な関係を持っている場合、目で見つけるのは難しい。
数値的指標
そうなると、当然ながら数値的な指標を考えるしかない。このために最も好んで使われるのが分散膨張因子(VIF)であり、多重共線性を見つけるのに役立っている。ただしVIFはどのような確率分布に従うわけでもないため、仮説検定を行うことができない。だから経験的に定められた基準を超えると多重共線性があると主張するしかない。その経験的基準もあいまいな時があり、悩みの種だ。回帰分析をするということは実際にはこの多重共線性との戦いと言える程度である。
VIF以外にも、主成分分析を通じて得られる条件数のような指標もあるが、あまり使われない。
コード
以下は例示コードです。
install.packages('car')
library(car)
DATA=MplsDemo; head(DATA)
win.graph()
plot(DATA[,-1])
out0<-lm(collegeGrad~.-neighborhood,data=DATA)
summary(out0)
win.graph(4,4)
plot(out0$residuals, main="잔차")
out1<-lm(collegeGrad~.-neighborhood-white,data=DATA)
summary(out1)
Hadi. (2006). Regression Analysis by Example(4th Edition): p222. ↩︎