R で多重共線性をテストする方法
回帰分析では、2 つ以上の予測変数が相互に高度に相関しており、回帰モデル内で固有または独立した情報が提供されない場合に多重共線性が発生します。
予測変数間の相関の程度が十分に高い場合、回帰モデルのフィッティングと解釈の際に問題が発生する可能性があります。
回帰モデルの多重共線性を検出する最も簡単な方法は、分散膨張係数 ( VIFと略されることが多い) として知られる指標を計算することです。
VIF は、モデル内の予測変数間の相関の強さを測定します。 1 から正の無限大までの値を取ります。
VIF 値を解釈するには、次の経験則を使用します。
- VIF = 1:モデル内の特定の予測子変数と他の予測子変数の間に相関関係はありません。
- VIF 1 ~ 5:モデル内の特定の予測変数と他の予測変数の間には中程度の相関があります。
- VIF > 5 : モデル内の特定の予測変数と他の予測変数の間に強い相関関係があります。
次の例は、モデル内の各予測子変数の VIF 値を計算することにより、R の回帰モデルの多重共線性を検出する方法を示しています。
例: R での多重共線性のテスト
さまざまなバスケットボール選手に関する情報を含む次のデータ フレームがあるとします。
#create data frame df = data. frame (rating = c(90, 85, 82, 88, 94, 90, 76, 75, 87, 86), points=c(25, 20, 14, 16, 27, 20, 12, 15, 14, 19), assists=c(5, 7, 7, 8, 5, 7, 6, 9, 9, 5), rebounds=c(11, 8, 10, 6, 6, 9, 6, 10, 10, 7)) #view data frame df rating points assists rebounds 1 90 25 5 11 2 85 20 7 8 3 82 14 7 10 4 88 16 8 6 5 94 27 5 6 6 90 20 7 9 7 76 12 6 6 8 75 15 9 10 9 87 14 9 10 10 86 19 5 7
応答変数としてスコアリングを使用し、予測変数としてポイント、アシスト、リバウンドを使用して重線形回帰モデルを近似したいとします。
モデル内の各予測子変数の VIF を計算するには、 carパッケージのvive()関数を使用できます。
library (car) #define multiple linear regression model model <- lm(rating ~ points + assists + rebounds, data=df) #calculate the VIF for each predictor variable in the model lively(model) points assists rebounds 1.763977 1.959104 1.175030
各予測子変数の VIF 値を確認できます。
- ポイント: 1.76
- アシスト: 1.96
- リバウンド: 1.18
モデル内の予測変数の各 VIF 値は 1 に近いため、モデルでは多重共線性は問題になりません。
注: モデル内で多重共線性が問題であることが判明した場合、ほとんどの場合、最も簡単な解決策は、1 つ以上の相関性の高い変数を削除することです。
削除する変数はとにかく冗長であり、モデルに固有の情報や独立した情報をほとんど追加しないため、これは多くの場合許容可能な解決策です。
追加リソース
次のチュートリアルでは、R で他の一般的なタスクを実行する方法について説明します。