Ich habe einige Daten zu Fluglinienflügen (in einem Datenrahmen mit dem Namen flights
) und möchte prüfen, ob die Flugzeit einen Einfluss auf die Wahrscheinlichkeit einer erheblich verspäteten Ankunft hat (dh 10 oder mehr Minuten). Ich nahm an, dass ich logistische Regression verwenden würde, mit der Flugzeit als Prädiktor und ob jeder Flug signifikant verzögert war oder nicht (ein Haufen Bernoullis) als Antwort. Ich habe folgenden Code benutzt ...
flights$BigDelay <- flights$ArrDelay >= 10
delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial(link="logit"))
summary(delay.model)
... bekam aber folgende Ausgabe.
> flights$BigDelay <- flights$ArrDelay >= 10
> delay.model <- glm(BigDelay ~ ArrDelay, data=flights, family=binomial(link="logit"))
Warning messages:
1: In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = etastart, :
algorithm did not converge
2: In glm.fit(x = X, y = Y, weights = weights, start = start, etastart = etastart, :
fitted probabilities numerically 0 or 1 occurred
> summary(delay.model)
Call:
glm(formula = BigDelay ~ ArrDelay, family = binomial(link = "logit"),
data = flights)
Deviance Residuals:
Min 1Q Median 3Q Max
-3.843e-04 -2.107e-08 -2.107e-08 2.107e-08 3.814e-04
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -312.14 170.26 -1.833 0.0668 .
ArrDelay 32.86 17.92 1.833 0.0668 .
---
Signif. codes: 0 â***â 0.001 â**â 0.01 â*â 0.05 â.â 0.1 â â 1
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 2.8375e+06 on 2291292 degrees of freedom
Residual deviance: 9.1675e-03 on 2291291 degrees of freedom
AIC: 4.0092
Number of Fisher Scoring iterations: 25
Was bedeutet es, dass der Algorithmus nicht konvergiert hat? Ich dachte, es liege daran, dass die BigDelay
Werte TRUE
und FALSE
statt 0
und lauten 1
, aber ich habe den gleichen Fehler erhalten, nachdem ich alles konvertiert habe. Irgendwelche Ideen?
r
logistic
separation
Daniel Standage
quelle
quelle
Antworten:
glm()
verwendet einen iterativen, neu gewichteten Algorithmus für kleinste Quadrate. Der Algorithmus hat die maximal zulässige Anzahl von Iterationen erreicht, bevor die Konvergenz signalisiert wurde. Die Standardeinstellung?glm.control
ist 25. Sie übergeben Steuerparameter als Liste imglm
Aufruf:Wie @Conjugate Prior sagt, scheinen Sie die Antwort mit den zur Generierung verwendeten Daten vorherzusagen. Sie haben vollständige Trennung, wie jeder
ArrDelay < 10
vorhersagen wirdFALSE
und jederArrDelay >= 10
vorhersagen wirdTRUE
. Die andere Warnmeldung besagt, dass die angepassten Wahrscheinlichkeiten für einige Beobachtungen effektiv 0 oder 1 waren. Dies ist ein guter Indikator dafür, dass mit dem Modell etwas nicht stimmt.quelle
Sie können versuchen, zu überprüfen, ob die Bias-Reduzierung von Firth mit Ihrem Dataset funktioniert. Es handelt sich um einen Bestrafungs-Likelihood-Ansatz, der für Datensätze nützlich sein kann, die mit dem Standardpaket Divergenzen erzeugen
glm
. Manchmal kann es verwendet werden, anstatt die Variable zu entfernen, die eine vollständige / fast vollständige Trennung ergibt.Firths Bias-Reduktion ist im R-Paket implementiert
logistf
: http://cran.r-project.org/web/packages/logistf/logistf.pdfquelle