分散拡大係数 (VIF)
統計学における分散拡大係数(variance inflation factor, VIF) とは、最小二乗回帰分析における多重共線性の深刻さを定量化する。推定された回帰係数の分散(推定値の標準偏差の平方)が、多重共線性のためにどれだけ増加したかを測る指標を提供する。 (Wikipedia)
$$VIF_j = \frac{1}{1-R_j ^2}$$
多重共線性 (multicollinearity)
通称「マルチコ」。独立変数間に非常に強い相関があったり,一次従属な変数関係がある場合には,解析が不可能(「逆行列が求まりません」というエラーメッセージが出力される)であったり,たとえ結果が求まったとしてもその信頼性は低い。このような場合に多重共線性があると言われる。 (Weblio: 統計学用語辞典)
olsrrで求める
内臓されているmtcarsのデータを利用します。
> head(mtcars)
mpg cyl disp hp drat wt qsec vs am gear carb
Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
適当な回帰モデルを作成します。
model <- lm(mpg ~ cyl + disp + drat + wt + gear + carb, data = mtcars)
VIFを求めます。
library(olsrr)
ols_vif_tol(model)
> ols_vif_tol(model)
Variables Tolerance VIF
1 cyl 0.09193010 10.877829
2 disp 0.07957868 12.566181
3 drat 0.30871945 3.239187
4 wt 0.11657930 8.577852
5 gear 0.22010765 4.543231
6 carb 0.20944382 4.774550
左から変数、許容誤差、分散拡大係数です。
ソフトウェアによっては、VIFの逆数である許容誤差を計算する。 (Wikipedia)
$$VIF_j = \frac{1}{1-R_j ^2} = \frac{1}{tolerance}$$
carで求める
library(car)
vif(model)
> vif(model)
cyl disp drat wt gear carb
10.877829 12.566181 3.239187 8.577852 4.543231 4.774550
olsrrで求めたVIFと一致しています。