it-swarm.com.de

Warum bekomme ich bei glm "Algorithmen nicht konvergiert" und "prob numerisch oder 1" Warnungen?

Das ist also eine sehr einfache Frage, ich kann es einfach nicht verstehen.

Ich führe ein Logit mit der glm-Funktion aus, erhalte aber weiterhin Warnmeldungen, die sich auf die unabhängige Variable beziehen. Sie werden als Faktoren gespeichert und ich habe sie in numerisch geändert, hatte aber kein Glück. Ich habe sie auch zu 0/1 codiert, aber das hat auch nicht funktioniert.

Bitte helfen

> mod2 <- glm(winorlose1 ~ bid1, family="binomial")
Warning messages:
1: glm.fit: algorithm did not converge 
2: glm.fit: fitted probabilities numerically 0 or 1 occurred 

Ich habe es auch in Zelig ausprobiert, aber ähnlicher Fehler:

> mod2 = zelig(factor(winorlose1) ~ bid1, data=dat, model="logit")
How to cite this model in Zelig:
Kosuke Imai, Gary King, and Oliva Lau. 2008. "logit: Logistic Regression for Dichotomous Dependent Variables" in Kosuke Imai, Gary King, and Olivia Lau, "Zelig: Everyone's Statistical Software," http://gking.harvard.edu/zelig
Warning messages:
1: glm.fit: algorithm did not converge 
2: glm.fit: fitted probabilities numerically 0 or 1 occurred 

BEARBEITEN:

> str(dat)
'data.frame':   3493 obs. of  3 variables:
 $ winorlose1: int  2 2 2 2 2 2 2 2 2 2 ...
 $ bid1      : int  700 300 700 300 500 300 300 700 300 300 ...
 $ home      : int  1 0 1 0 0 0 0 1 0 0 ...
 - attr(*, "na.action")=Class 'omit'  Named int [1:63021] 3494 3495 3496 3497 3498 3499 3500 3501 3502 3503 ...
  .. ..- attr(*, "names")= chr [1:63021] "3494" "3495" "3496" "3497" ...
32
ATMathew

Wenn Sie sich ?glm ansehen (oder sogar eine Google-Suche nach Ihrer zweiten Warnmeldung durchführen), stolpern Sie möglicherweise aus der Dokumentation:

Hintergrundinformationen zu Warnmeldungen über „angepasste Wahrscheinlichkeiten numerisch 0 oder 1“ für binomiale GLMs finden Sie unter Venables & Ripley (2002, S. 197–8).

Nun hat nicht jeder dieses Buch. Angenommen, es ist rein für mich, dies zu tun, hier ist die relevante Passage:

Es gibt einen ziemlich häufigen Umstand, bei dem beide Konvergenz Probleme und das Hauck-Donner-Phänomen können auftreten. Dies ist, wenn die angepasste Wahrscheinlichkeiten liegen extrem nahe bei null oder eins. Betrachten Sie ein medizinisches Diagnoseproblem mit Tausenden von Fällen und etwa 50 binären erklärende Variable (die sich aus der Kodierung weniger kategorialer Variablen ergeben kann ); Einer dieser Indikatoren ist selten wahr, aber immer zeigt an, dass die Krankheit vorliegt. Dann die angepassten Wahrscheinlichkeiten von Fällen mit diesem Indikator sollte einer sein, der nur erreicht werden kann durch Einnahme von βich = ∞. Das Ergebnis von glm lautet Warnungen und ein geschätzter Koeffizient von etwa +/- 10. Es wurden ziemlich ausführliche Diskussion darüber in der statistischen Literatur, normalerweise behaupten, dass es keine Schätzungen für die maximale Wahrscheinlichkeit gibt; sehen Sautner und Duffy (1989, S. 234).

Etwas ausführlicher kommentierte einer der Autoren dieses Buches here . Die Lektion hier ist also, eine der Stufen Ihres Prädiktors genau zu betrachten. (Und Google die Warnmeldung!)

36
joran

Wenn Sie die GLM-Formel und die entsprechenden Eingaben (d. H. Entwurfsmatrix, Verknüpfungsfunktion usw.) richtig angegeben haben. Der GLM-Algorithmus konvergiert möglicherweise nicht, weil nicht genug Iterationen im iterativ neu bewerteten Algorithmus der kleinsten Quadrate (IRLS) verwendet werden. Ändern Sie maxit = 25 (Standard) in maxit = 100 in R. 

0
user10813428

Dies ist wahrscheinlich auf eine vollständige Trennung zurückzuführen, d. H. Eine Gruppe besteht vollständig aus Nullen oder Einsen.

Es gibt verschiedene Möglichkeiten, um damit umzugehen:

(a) Verwenden Sie die Firth-Methode für die bestrafte Wahrscheinlichkeit, wie sie in den Paketen logistf oder brglm in R implementiert ist Wahrscheinlichkeitsschätzungen ", Biometrika , 80 , 1 .; Dadurch wird die Verzerrung erster Ordnung aus den Schätzungen der maximalen Wahrscheinlichkeit entfernt.

(b) Durch Verwendung von median-unverzerrten Schätzungen in der exakten bedingten logistischen Regression. Paket elrm oder logistiX in R kann dies tun.

(c) Verwenden Sie LASSO oder eine regulierte logistische Regression mit elastischem Netz, z. Verwenden des glmnet -Pakets in R.

(d) Go Bayesian, vgl. das Papier Gelman et al. (2008), "Eine schwach informative Standardvorverteilung für logistische und andere Regressionsmodelle", Ann. Appl. Stat. , 2 , 4 und Funktion bayesglm im Armpaket.

(e) Verwenden Sie ein verstecktes logistisches Regressionsmodell, wie es in Rousseeuw & Christmann (2003), "Robustheit gegen Trennung und Ausreißer bei logistischer Regression", Computerstatistik & Datenanalyse , 43 , 3 und implementiert im R-Paket hlr .

Sie müssen Ihren Faktor zuerst mit dat$bid1 = as.factor(dat$bid1)) als Faktor umkodieren.

Hier werden auch Lösungen für dieses Problem erörtert:

https://stats.stackexchange.com/questions/11109/how-to-deal-with-perfect-separation-in-logistic-regression

https://stats.stackexchange.com/questions/45803/logistic-regression-in-r-resulted-in-perfect-separation-hauck-donner-phenomenon

https://stats.stackexchange.com/questions/239928/is-there-any-intuitive-explanation-of-why-logistic-regression-will-not-work-for

https://stats.stackexchange.com/questions/5354/logistic-regression-model-does-not-converge?rq=1

0
Tom Wenseleers