ロジスティック回帰サブセットの選択方法は?


47

私はRに二項家族glmを当てはめており、説明変数のグループがあり、最良のものを見つける必要があります(測定値としてのR2乗は問題ありません)。説明変数のランダムな異なる組み合わせをループするスクリプトを記述してから、どれが最高のパフォーマンスを発揮するかを記録する以外には、どうすればいいかわかりません。また、leapsパッケージleapsの関数は、ロジスティック回帰を実行していないようです。

どんな助けや提案も大歓迎です。


自動検索を実行する機能があります。ステップ関数を見てください。5.4節では、その点を示していますdata.princeton.edu/R/glms.html
ocram

申し訳ありませんが、私の投稿は編集されているため、質問はもうありません。ロジスティック回帰モデルには35(26の重要な)説明変数があります。最適なサブセットではなく、可能な限り最高の8の組み合わせが必要であり、段階的またはすべてのサブセットスタイルのアプローチに興味はありませんでした。この8には小刻みの余地はありません。8つの外植変数のすべての組み合わせをどのように適合させることができるかを誰かが知っているかもしれないと思いました。固定数のパラメーターがあります、8)。
レンデルト

投稿の前のバージョンに戻すか、両方の編集を組み合わせることができます。@mpiktasは見た目を改善しようとするときは良い意図を持っていて、パラメータに気付かなかったに違いないと思います。
-chl

@みんな:どうもありがとう。結局、私は彼らがすべて同様の答えをすることを期待して、多くの異なるものを使いました。そして彼らはやった。BMA、bestglm、glmnetパッケージとステップ関数を使用しました。すべてのモデルに適合し、maxcol = 9のBMAとstepが最良のモデルと見なしたものに矛盾はありませんでした。私の周りの分野の専門家は皆、変数に非常に満足しているようで、かなり進歩的だと感じました。すべての入力に感謝します。私は本当にそれをすべて使いました。
レンダレット

glmultiも最良のサブセットを選択するための良いパッケージで、もう1つは、あなたのモデル内の変数の最大NRを指定することができ、また、1はすべての可能な1次の交互作用効果を検討することを可能にすること
トムWenseleers

回答:


28

ステップワイズおよび「すべてのサブセット」メソッドは、一般的に悪いです。「Stepwiseの停止:Stepwiseメソッドが悪い理由と、David Cassellと私(SASを使用しましたが、レッスンは適用されます)またはFrank Harrell Regression Modeling Strategiesの使用方法」を参照してください。自動的な方法が必要な場合は、LASSOまたはLARをお勧めします。ロジスティック回帰のLASSOパッケージはここから入手できます。別の興味深い記事は、ロジスティックの反復LASSOに関するものです。


6
(+1)Rパッケージについては、glmnet(座標降下アルゴリズム、Friedmanおよびcoll。による実装)およびペナルティ(一部の変数をペナルティなしに保つことができます)もあります。注目すべきは、F。HarrellがGLMの罰則付きML推定を提供していることです(詳細についてlrmは、彼のRMS教科書を参照してください)。
CHL

(+1)素晴らしい記事です。質問の著者の状態をはるかに超えて始めなければならないようです(初めてやったわけではありません)。@chl(+1)完璧な代替案も。
ドミトリーチェロフ

@chl:glmnetの+1、これは素晴らしいパッケージです。
ザック

1
@chlありがとう!Rの問題の1つは、パッケージを追跡することです(非常に多くあります!)。タスクビューが役立ちます
ピーターフローム-モニカの復職

2
あなたの変数が同一直線上にある場合はLASSOがランダムモデルのうち、非常に共線変数を追い出す傾向があるとして、それは、アルファ= 0.5と言う、glmnetを使用して弾性ネットを使用するのが最善です
トムWenseleers

15

R2AICBIC

ロジスティック回帰は最尤法で推定されるため、ここでleapsは直接使用しません。延長leapsglm()機能があるbestglmパッケージ(通常勧告は以下のように、そこにビネットを参照してください)。

また、David W. Hosmer、Borko Jovanovic、Stanley Lemeshowの記事「Best Subsets Logistic Regression // Biometrics Vol。45、No。4(1989年12月)、pp。1265-1270(通常、大学のネットワークを通じてアクセス可能)。


2
R2BIC,AIC8BICAICR2

8

学術的な参考文献R2R2 is not an appropriate goodness-of-fit measure for logistic regression take an information criterion AICAIC or BICBIC
SIslam

についてのメモはbestglmleaps計算のためにバックエンドで使用します!したがって、データセットにNAがあると失敗し、次のようなメッセージが表示されますError in leaps.setup(x, y, wt = weights, nbest = nbest, nvmax = nvmax, : NA/NaN/Inf in foreign function call (arg 3) が、興味深いことに、私のデータセットにはNAがなく、いくつかのゼロがありますが、この関数は文句を言い、その正確なメッセージを与えます!!
イスラム教

glmnetも良いものであり、可能なすべての1次相互作用効果を考慮したモデルを実行することもできます
トムウェンセリアーズ

6

1つのアイデアは、ランダムフォレストを使用し、それが出力する変数重要度測定を使用して、最適な8つの変数を選択することです。別のアイデアは、「boruta」パッケージを使用してこのプロセスを数百回繰り返し、モデルにとって一貫して最も重要な8つの変数を見つけることです。


@Zach機能選択を実行するためにRFに依存し、GLMを適用することを提案しますか?この場合、過剰適合または過度に楽観的なリスクがありますか?すべてに関連する選択)スタンドアロンツールとして?
-chl

@chl:RFを使用して機能を選択し、GLMを適用することを提案していました。オーバーフィッティングのリスクがあることに同意しますが、OPは正確に8つの変数が必要だと言いました。
ザック

1
@Zach "exactly 8 variables" ...次に、変数の重要性の尺度に基づいて、潜在的な関心のある変数をややソフトしきい値にします(これは、順列と二重リサンプリングに基づいているため、バイアスなしと想定されています)。次に、それらをGLMに再注入します。私見、あなたは袋詰めによって発揮されるオーバーフィットのコントロールを破る。これは、Hastie et al。のESLIIにも記載されています。機能選択がある場合は、相互検証手順に含める必要があります(相互検証にはモデルのパフォーマンスの評価が含まれます)。
chl

@chl:rパッケージ "boruta"は、ランダムフォレストを数回実行することで相互検証しませんか?基本的に、変数の選択を行い、データのランダムなサブセットにモデルを適合させる「メタクロス検証」が必要だと言っていますか?
ザック

3
@Zach私のポイントは、同じツールチェーン内にいる限り、バギング、または特定のRFがオーバーフィット(ある程度)を防ぐことです。RFからの結果を使用し、同じデータで別のモデルがどのように機能するかを確認する場合は、CVループを中断します。しかし、分類に直接RFを使用しないのはなぜですか?別の解決策は、トレーニングサンプルでRFを使用してから、ホールドアウトされたサンプルにGLMを適用することです(クロス検証も可能性があります)。
chl

0

stats::step関数またはより一般的なMASS::stepAIC関数サポートlmglm(つまりロジスティック回帰)およびaov家族モデル。

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