Wie wird die Auswahl der logistischen Regressionsuntermenge durchgeführt?

47

Ich passe eine Binomialfamilie glm in R an, und ich habe eine ganze Truppe von erklärenden Variablen, und ich muss das Beste finden (R-Quadrat als Maß ist in Ordnung). Kurz bevor ich ein Skript schreibe, um zufällig verschiedene Kombinationen der erklärenden Variablen durchzugehen und dann aufzuzeichnen, was am besten funktioniert, weiß ich wirklich nicht, was ich tun soll. Und die leapsFunktion von Paket Sprüngen scheint nicht logistische Regression zu tun.

Jede Hilfe oder Anregungen wäre sehr dankbar.

Leendert
quelle
Es gibt Funktionen, die eine automatische Suche durchführen. Sie sollten einen Blick auf die Schrittfunktion werfen . Abschnitt 5.4 veranschaulicht diesen Punkt: data.princeton.edu/R/glms.html
ocram
Es tut mir leid, aber mein Beitrag wurde so bearbeitet, dass meine Frage nicht mehr gestellt wird. Ich habe 35 (26 signifikante) erklärende Variablen in meinem logistischen Regressionsmodell. Ich brauche die bestmögliche Kombination von 8, nicht die beste Teilmenge, und zu keinem Zeitpunkt war ich an einem schrittweisen Ansatz oder einem Ansatz mit allen Teilmengen interessiert. Es gibt keinen Wackelraum in dieser 8. Ich dachte nur, jemand könnte wissen, wie ich alle Kombinationen von 8 explantorischen Variablen anpassen könnte, und es könnte mir sagen, was die Wahrscheinlichkeit maximiert (Entschuldigung für den R-Quadrat-Hirnfurz, aber AIC ist auch nicht relevant, da Ich habe eine feste Anzahl von Parametern, 8).
Leendert
Sie können zur vorherigen Version Ihres Beitrags zurückkehren oder beide Bearbeitungen kombinieren. Ich bin mir sicher, dass @mpiktas bei dem Versuch, sein Erscheinungsbild zu verbessern, gute Absichten hatte und die Nr. -Parameter einfach nicht bemerkte.
Chl
@ Jeder: Vielen Dank. Am Ende habe ich viele verschiedene Dinge verwendet, in der Hoffnung, dass sie alle ähnliche Antworten geben würden. Und sie taten es. Ich habe die BMA-, bestglm- und glmnet-Pakete sowie die Step-Funktion verwendet. Ausgestattete Modelle mit allen von ihnen, und es gab keine Diskrepanz in welchem ​​BMA mit maxcol = 9 und Schritt als das beste Modell. Alle Experten auf dem Gebiet um mich herum schienen mit den Variablen sehr zufrieden zu sein und fanden, dass es ziemlich fortschrittlich war. Also danke für all den Input. Ich habe wirklich alles benutzt.
Leendert
glmulti ist auch ein gutes Paket für die Auswahl der besten Teilmengen. Mit diesem Paket können Sie die maximale Anzahl von Variablen in Ihrem Modell angeben und alle möglichen Interaktionseffekte
erster

Antworten:

28

Stepwise- und "All Subsets" -Methoden sind im Allgemeinen schlecht. Siehe Schrittweise stoppen: Warum schrittweise Methoden schlecht sind und was Sie von David Cassell und mir (wir haben SAS verwendet, aber die Lektion gilt) oder Frank Harrell-Regressionsmodellierungsstrategien verwenden sollten. Wenn Sie eine automatische Methode benötigen, empfehle ich LASSO oder LAR. Ein LASSO-Paket für die logistische Regression finden Sie hier , ein weiterer interessanter Artikel über das iterierte LASSO für die Logistik

Peter Flom - Wiedereinsetzung von Monica
quelle
6
(+1) Über R-Pakete gibt es auch glmnet (Implementierung mit Koordinatenabstieg algo., Friedman und coll.) Und penalized (erlaubt es, etwas var. Unpenalized zu lassen). Bemerkenswert ist, dass F. Harrell eine bestrafte ML-Schätzung für GLMs bereitstellt (siehe lrmoder sein RMS-Lehrbuch für weitere Informationen).
Chl
(+1) Netter Artikel, es scheint, dass ich anfangen muss, weit über die Autorenangaben in der Frage hinauszugehen (nicht das erste Mal, dass ich es nicht getan habe). @chl (+1) perfekte alternative Vorschläge auch.
Dmitrij Celov
@chl: +1 für glmnet, das ist ein großartiges Paket.
Zach
1
@chl Danke! Eines der Probleme mit R ist, die Pakete im Auge zu behalten (es gibt so viele!) Und welche am besten sind. Die Aufgabenansichten helfen
Peter Flom - Monica wiederherstellen
2
Wenn Ihre Variablen kollinear sind, ist es am besten, das elastische Netz mit glmnet zu verwenden, z. B. mit alpha = 0,5, da LASSO dazu neigt,
hochkollineare
15

Erstens ist kein geeignetes Anpassungsmaß für die logistische Regression. Nehmen Sie als gute Alternative beispielsweise ein Informationskriterium oder . A I C B I CR2AICBIC

Die logistische Regression wird nach der Maximum-Likelihood-Methode geschätzt und leapshier nicht direkt verwendet. Eine Erweiterung leapsauf glm()Funktionen ist das bestglm Paket (wie in der Regel Empfehlung folgt, konsultieren Vignetten dort).

Sie könnten auch an dem Artikel von David W. Hosmer, Borko Jovanovic und Stanley Lemeshow interessiert sein . 45, No. 4 (Dez. 1989), S. 1265-1270 (normalerweise über die Universitätsnetze zugänglich).

Dmitrij Celov
quelle
2
Obwohl Ihr Kommentar zu schlechter als im Allgemeinen nützlich, macht es aber keinen Unterschied, es sei denn, Sie vergleichen Modelle unterschiedlicher Größe. Das OP gibt eindeutig an, dass sie nur an variablen Modellen interessiert sind, sodass und wieder das Modell mit der höchsten Wahrscheinlichkeit auswählen. Dies entspricht der Anpassung von . B I C , A I C 8 B I C A I C R 2R2BIC,AIC8BICAICR2
Wahrscheinlichkeitsrechnung
Vielen Dank für die Bemerkung, aber Kommentare von chl unten erklären, warum eine feste Anzahl von erklärenden Variablen gefährlich ist. Übrigens erschien die Antwort vor dem Kommentar zu (bis zu?) Variablen rstriction;)8
Dmitrij Celov
jede akademische Referenz fürR2R2 is not an appropriate goodness-of-fit measure for logistic regression take an information criterion AICAIC or BICBIC
SIslam
einen hinweis bestglmdazu benutzt es leapsim backend zur berechnung! Es wird also scheitern, wenn NA im Datensatz vorhanden ist und eine Meldung wie Error in leaps.setup(x, y, wt = weights, nbest = nbest, nvmax = nvmax, : NA/NaN/Inf in foreign function call (arg 3) folgt angezeigt wird. Aber was interessant ist, mein Datensatz hat keine NA, sondern einige Nullen. Diese Funktion beklagt sich jedoch und gibt genau die oben angegebene Meldung aus.
Islam
glmnet ist auch eine gute und kann auch Modelle, die alle möglichen Interaktionseffekte 1. Ordnung berücksichtigen
Tom Wenseleers
6

Eine Idee wäre, eine zufällige Gesamtstruktur zu verwenden und dann die von ihr ausgegebenen Werte für die variable Wichtigkeit zu verwenden, um die besten 8 Variablen auszuwählen. Eine andere Idee wäre, das "boruta" -Paket zu verwenden, um diesen Vorgang einige hundert Mal zu wiederholen, um die 8 Variablen zu finden, die für das Modell durchweg am wichtigsten sind.

Zach
quelle
@Zach Bieten Sie an, sich bei der Featureauswahl auf RFs zu verlassen und dann einen GLM anzuwenden - in diesem Fall besteht die Gefahr einer Überanpassung oder eines zu hohen Optimismus - oder RFs zu verwenden (mit Standardmaßen von unterschiedlicher Wichtigkeit oder allrelevante Auswahl) als eigenständiges Tool?
Chl
@chl: Ich habe vorgeschlagen, die RFs für die Featureauswahl zu verwenden und dann die GLM anzuwenden. Ich stimme zu, dass das Risiko einer Überanpassung besteht, aber das OP sagte, er benötige genau 8 Variablen.
Zach
1
@Zach "genau 8 Variablen" ... Dann schränken Sie die potenziellen interessierenden Variablen auf der Grundlage eines Maßes von variabler Wichtigkeit ein wenig ein (das dank Permutation und doppeltem Resampling vorurteilsfrei sein soll) und dann wieder in eine GLM einschleusen. IMHO, Sie brechen die Kontrolle über Überanpassung durch Absacken. Dies wird auch in ESLII von Hastie et al. Beschrieben : Die Auswahl von Merkmalen, sofern vorhanden, muss in das Kreuzvalidierungsverfahren einbezogen werden (wobei die Kreuzvalidierung die Bewertung der Modellleistung umfasst).
Chl
@chl: Wird das Kreuz des r-Pakets "boruta" nicht durch mehrmaliges Ausführen der Zufallsgesamtstruktur überprüft? Wollen Sie damit sagen, dass wir eine "Meta-Cross-Validierung" benötigen, bei der Sie Variablen auswählen und die Ihrem Modell auf zufällige Teilmengen der Daten passen?
Zach
3
@Zach Mein Punkt war, dass das Absacken oder insbesondere RFs eine Überanpassung (bis zu einem gewissen Grad) verhindern, vorausgesetzt, Sie verbleiben in derselben Toolchain. Wenn Sie die Ergebnisse von RFs verwenden und dann nachsehen, wie sich ein anderes Modell mit denselben Daten verhält, unterbrechen Sie die CV-Schleife. Aber warum nicht direkt RFs zur Klassifizierung verwenden? Eine andere Lösung wäre die Verwendung von RFs für eine Trainingsprobe und die anschließende Anwendung des GLM für eine durchgehaltene Probe (die möglicherweise auch gegenseitig validiert werden könnte).
Chl
0

stats::stepFunktion oder die allgemeinere MASS::stepAICFunktionsunterstützung lm, glm(dh logistische Regression) und aovFamilienmodelle.

Farid Cheraghi
quelle