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 leaps
Funktion von Paket Sprüngen scheint nicht logistische Regression zu tun.
Jede Hilfe oder Anregungen wäre sehr dankbar.
Antworten:
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
quelle
lrm
oder sein RMS-Lehrbuch für weitere Informationen).Erstens ist kein geeignetes Anpassungsmaß für die logistische Regression. Nehmen Sie als gute Alternative beispielsweise ein Informationskriterium oder . A I C B I CR2 AIC BIC
Die logistische Regression wird nach der Maximum-Likelihood-Methode geschätzt und
leaps
hier nicht direkt verwendet. Eine Erweiterungleaps
aufglm()
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).
quelle
R2R2 is not an appropriate goodness-of-fit measure for logistic regression take an information criterion AICAIC or BICBIC
bestglm
dazu benutzt esleaps
im backend zur berechnung! Es wird also scheitern, wenn NA im Datensatz vorhanden ist und eine Meldung wieError 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.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.
quelle
stats::step
Funktion oder die allgemeinereMASS::stepAIC
Funktionsunterstützunglm
,glm
(dh logistische Regression) undaov
Familienmodelle.quelle