多重共線性への対処


12

パッケージのvif()方法を使用carして、モデルの入力の多重共線性の程度を計算できることを学びました。ウィキペディアから、vif値がそれより大きい場合5、入力が多重共線性の問題に苦しんでいると考えることができます。たとえば、私はlm()メソッドを使用して線形回帰モデルを開発し、vif()次のように与えます。私たちが見ることができるように、入力はublb、およびtb多重共に苦しんでいます。

 vif(lrmodel)
     tb        ub        lb          ma     ua        mb         sa     sb 
 7.929757 50.406318 30.826721  1.178124  1.891218  1.364020  2.113797  2.357946

多重共の問題を回避するため、私のモデルをより堅牢にするためには、私は間の相互作用をとっているublb、今の新しいモデルのテーブルVIFは次のとおりです。

   tb     ub:lb      ma       mb      sa        sb     ua
1.763331 1.407963 1.178124 1.327287 2.113797 1.860894 1.891218

R^2上記の2つのケースでは、値に大きな違いはなく、1脱退CVテストのエラーにも大きな違いはありません。

私の質問は:

  1. 上記のような相互作用を取ることで多重共線性の問題を回避することは問題ありませんか?

  2. 上記のvifメソッドの結果と比較して、多重共線性の問題を提示するより良い方法はありますか。

提案をお願いします。

ありがとう。


あなたのモデルはログとログの回帰(それらとの制限としての相互作用)ですか?wikiには、多重共線性の問題に関するより完全な記事があります。en.wikipedia.org/wiki/ Multicollinearityまた、このサイトで多重共線性のタグを調べることをお勧めします。
ドミトリーチェロフ

@Dmitrij Celov:ありがとう。いいえ、私のモデルはログなしの単純な線形回帰です
...-samarasa

回答:


10

相互作用項を含むようですub:lbublbそれ自体は別個の予測子として含まれません。これは、いわゆる「限界の原則」に違反することになります。これは、高次の用語には低次の用語に存在する変数のみを含めるべきだというものです(最初はWikipedia)。事実上、との要素ごとの積である予測子が含まれるようにubなりましたlb

1VIFj11Rj2Rj2R2jjRx1R2ubublbR2

私は予測因子との間のすべてのペアワイズ相関をやって起動し、変数を予測するかを確認するために、前述の回帰を実行しますublb、冗長性が簡単に説明されているかどうかを確認します。その場合、冗長な予測子を削除できます。リッジ回帰を調べることもできます(Rのlm.ridge()パッケージからMASS)。

XtXXκλmaxλminλmaxλmin0XtXkappa(lm(<formula>))lm()

κκ

κκvif(lm(y ~ x1 + x2))vif(lm(scale(y) ~ scale(x1) + scale(x2)))kappa(lm(y ~ x1 + x2))kappa(lm(scale(y) ~ scale(x1) + scale(x2)))


ub lbalogub+aloglb=alogublbublb

@Dmitrij:いいえ、ub + lb + sb =
100。– samarasa

多重共線性の素晴らしいグラフィック表現はありますか?thiのRにメソッドがあるかどうかを教えてください。
サマラサ

2
pairs()scatterplot3dκ2perturb

1

また、変数の考慮時にP値を考慮する必要があります。

  1. P値が非常に低く(p <0.05)、VIFが高い(> 5)場合、他の重要でない変数を検討する必要があります。そして、モデルを再構築します。
  2. P値とVIFの両方が高い場合、この変数は重要ではありません。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.