変数選択を実行するときに多重共線性に対処する方法は?


28

9つの連続した独立変数を持つデータセットがあります。私はこれらの変数の中から選択して、モデルを単一のパーセンテージ(従属)変数に適合させようとしていますScore。残念ながら、いくつかの変数の間には深刻な共線性があることがわかっています。

私はstepAIC()変数選択のためにR の関数を使用しようとしましたが、奇妙なことに、その方法は変数が方程式にリストされている順序に敏感なようです...

Rコードは次のとおりです(パーセンテージデータであるため、スコアにはロジット変換を使用します)。

library(MASS)
library(car)

data.tst = read.table("data.txt",header=T)
data.lm = lm(logit(Score) ~ Var1 + Var2 + Var3 + Var4 + Var5 + Var6 + Var7 +
             Var8 + Var9, data = data.tst)

step = stepAIC(data.lm, direction="both")
summary(step)

何らかの理由で、方程式の先頭にリストされている変数がstepAIC()関数によって選択されることになり、結果は、たとえばVar9最初に(チルダに続いて)リストすることで操作できることがわかりました。

ここでモデルを適合させるより効果的な(そして論争の少ない)方法は何ですか?私は実際に線形回帰を使用することについては行き詰まっているわけではありません。私が望むのは、9つの変数のどれが変数の変動を本当に引き起こしているかを理解できることScoreです。これは、これらの9つの変数の共線性の強力な可能性を考慮に入れた方法であることが望ましい。


6
共線性とは、分析を行う場合、1つの変数が、共線性の高い変数よりも多かれ少なかれ変動を「駆動」しているかどうかを判断することは本質的に不可能であることを意味します。心の中でこの制限をベアリング、あなたは試みることができる投げ縄を、それが選択した変数のセットを報告し、最適な予測変数の数が少ないを選択する手段として、及びそのセットは非常に共線であるとものを。グループ化された投げ縄は別のオプションです。
ゲスト

4
@guest:特にモデル選択の問題に関して、強い共線性が存在する場合、なげなわは特にうまく機能しません。
枢機

2
@cardinal、なげなわは大丈夫ですが、複数の変数が相関している場合は、そのうちの1つだけを選択する傾向があるため、高度に共線的な変数のセットを調べることをお勧めします。この「デフォルト」よりも複雑なものを使用することを決定するには、実用性の評価と、このモデルが意図するもののより強力な概念が必要になります。
ゲスト

2
bicreg関数{package BMA}を調べてください。正しく機能するには、完全なケースのデータセットが必要であることに注意してください。モデルの選択に非常に役立ちます。
ドミニクコントワ

1
@guest:まあ、それは正則化パラメーターが選択される方法に大きく依存します。実際、特定のレジームでは、投げ縄は(選択可能な)パラメーター選択しすぎる傾向があります。OPは、「9つの変数のどれが変数の変動を本当に引き起こしているのかを理解できるようにすることだけが必要だ」と質問Scoreしました。強い共線性が存在する場合、少なくともOPの発言のより厳密な解釈では、投げ縄はそれを助けません。
枢機

回答:


14

まず、この問題に対する非常に優れたリソースは、T。Keith、Multiple Regression and Beyondです。この本には、パスモデリングと変数の選択に関する多くの資料があり、そこで質問に対する包括的な答えが見つかると思います。

多重共線性に対処する1つの方法は、予測子を中央に置くことです。つまり、各値から1つの系列の平均を減算します。リッジ回帰は、データの共線性が高い場合にも使用できます。最後に、逐次回帰は、予測子イベントの時系列の分析と併せて、予測子間の因果関係を理解するのに役立ちます。

9つの変数すべてが共線性を示していますか?診断には、Cohen 2003の分散インフレ率を使用できます。VIF値> = 10は、高い共線性と標準誤差の増大を示します。予測子と結果の間の因果関係にもっと興味があることを理解しています。そうでない場合、多重共線性は予測の重大な問題とは見なされません。予測データを一度に1つずつ追加して構築されたモデルに対してサンプルデータのMAEを確認することで確認できます。予測子に限界予測力がある場合、モデルの多重共線性が存在する場合でもMAEが減少することがわかります。


16

どの変数をドロップするかを決定するのは非常に難しいため、多くの場合、変数をドロップしない方が良いでしょう。この線に沿って進む2つの方法は、(1)データ削減方法(たとえば、変数クラスタリングまたは主成分)を使用して、個々の変数の代わりにモデルに要約スコアを入力し、(2)すべての変数をモデルに入れてテストしない競合する変数の影響に合わせて調整された1つの変数の影響。(2)の場合、変数を個別にテストする場合のように相互に競合するのではなく、共線変数が全体的な多自由度関連テストで力を結合するため、競合する変数のチャンクテストは強力です。


簡単に説明してくださいand put summary scores into the model
-SIslam

1
biostat.mc.vanderbilt.edu/rmsにある私のコースノートは詳細になります
フランクハレル

1

高い共線性の存在下で変数選択を実行したい場合は、反復適応リッジ手順を使用してL0ペナルティGLMに適合するl0araパッケージをお勧めします。この方法は最終的にリッジの正則化回帰に基づいているため、共線性に非常にうまく対処でき、私のシミュレーションでは、たとえばLASSO、エラスティックネット、または適応型LASSOと比較して、優れた予測パフォーマンスを提供しながら、はるかに少ない偽陽性を生成しました。または、L0Learnパッケージを試すこともできますL0とL2のペナルティを組み合わせて。L0ペナルティはスパース性(つまり、小さなモデル)を優先し、L2ペナルティは共線性を正則化します。エラスティックネット(L1ペナルティとL2ペナルティの組み合わせを使用する)もしばしば推奨されますが、私のテストでは、これにより、より多くの誤検出が発生し、さらに係数に大きなバイアスがかかります。このバイアスは、代わりにL0のペナルティ化された方法(別名、最適なサブセット)を使用する場合に取り除くことができます。これは、一貫した不偏のパラメーター係数を同時に取得する、いわゆるoracle推定器です。これらのすべての方法の正則化パラメーターは、最適なアウトオブサンプル予測パフォーマンスを提供するために、相互検証を介して最適化する必要があります。パラメーターの有意水準と信頼区間も取得したい場合は、ノンパラメトリックブートストラップを使用してこれを行うこともできます。

l0araエラスティックネットのような(適応型リッジの破損と呼ばれることもある)の反復型適応型リッジアルゴリズムには、グループ化効果があり、モデルに入るとすぐにグループ内の相関の高い変数選択ます。これは理にかなっています。たとえば、モデルに2つの準共線変数がある場合、効果は両方に等しく分割されます。

比率データを分析する場合は、ロジスティック回帰モデルを使用したほうが良いです。l0araパッケージでは、L0ペナルティと組み合わせてそれを行うことができます。L0Learnパッケージでは、これはまもなくサポートされます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.