Christopher Mannings Artikel über die logistische Regression in R zeigt eine logistische Regression in R wie folgt:
ced.logr <- glm(ced.del ~ cat + follows + factor(class),
family=binomial)
Einige Ausgaben:
> summary(ced.logr)
Call:
glm(formula = ced.del ~ cat + follows + factor(class),
family = binomial("logit"))
Deviance Residuals:
Min 1Q Median 3Q Max
-3.24384 -1.34325 0.04954 1.01488 6.40094
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -1.31827 0.12221 -10.787 < 2e-16
catd -0.16931 0.10032 -1.688 0.091459
catm 0.17858 0.08952 1.995 0.046053
catn 0.66672 0.09651 6.908 4.91e-12
catv -0.76754 0.21844 -3.514 0.000442
followsP 0.95255 0.07400 12.872 < 2e-16
followsV 0.53408 0.05660 9.436 < 2e-16
factor(class)2 1.27045 0.10320 12.310 < 2e-16
factor(class)3 1.04805 0.10355 10.122 < 2e-16
factor(class)4 1.37425 0.10155 13.532 < 2e-16
(Dispersion parameter for binomial family taken to be 1)
Null deviance: 958.66 on 51 degrees of freedom
Residual deviance: 198.63 on 42 degrees of freedom
AIC: 446.10
Number of Fisher Scoring iterations: 4
Anschließend geht er auf die Interpretation von Koeffizienten, den Vergleich verschiedener Modelle usw. ein. Ziemlich nützlich.
Wie groß ist die Varianz des Modells? Eine Statusseite zur logistischen Regression lautet:
Technisch gesehen kann bei der logistischen Regression nicht auf die gleiche Weise berechnet werden wie bei der OLS-Regression. Das Pseudo- R 2 ist in der logistischen Regression als 1 - L 1 definiert , wobeiL0die logarithmische Wahrscheinlichkeit für das "Nur-Konstanten" -Modell darstellt undL1die logarithmische Wahrscheinlichkeit für das vollständige Modell mit Konstanten und Prädiktoren darstellt.
Ich verstehe das auf hohem Niveau. Das Nur-Konstanten-Modell würde keinen der Parameter enthalten (nur den Intercept-Term). Die Protokollwahrscheinlichkeit ist ein Maß dafür, wie genau die Parameter mit den Daten übereinstimmen. Tatsächlich deutet Manning darauf hin, dass die Abweichung . Vielleicht ist Nullabweichung nur konstant und Restabweichung ist - 2 log L des Modells? Ich bin mir jedoch nicht ganz sicher.
Kann jemand anhand dieses Beispiels überprüfen, wie man das Pseudo- in R berechnet ?
quelle
Antworten:
Vergessen Sie nicht das RMS- Paket von Frank Harrell. Hier finden Sie alles, was Sie zum Anpassen und Validieren von GLMs benötigen.
Hier ist ein Spielzeugbeispiel (mit nur einem Prädiktor):
Dies ergibt:
Jetzt mit der
lrm
Funktion,print(mod1b)
Von Hand,
quelle
quelle
pR2 = 1 - mod$deviance / mod$null.deviance # works for glm
Verwenden Sie die "logLik" -Funktion in R und Definition (funktioniert auch für In-Sample)
mod_null <- glm(y~1, family = binomial, data = insample) 1- logLik(mod)/logLik(mod_null)
Beispiel:
Out-of-Sample-Pseudo-R
Codes:
pred.out.link <- predict(mod, outSample, type = "link") mod.out.null <- gam(Default~1, family = binomial, data = outSample) pR2.out <- 1 - sum(outSample$y * pred.out.link - log(1 + exp(pred.out.link))) / logLik(mod.out.null)
quelle
model1 <- glm(cbind(ncases, ncontrols) ~ agegp + tobgp * alcgp, data = esoph, family = binomial)
model1$deviance
-2*logLik(model1)
Wenn die Abweichung proportional zur logarithmischen Wahrscheinlichkeit wäre und man die Definition verwendet (siehe zum Beispiel McFaddens hier )
Die Frage ist: Ist die gemeldete Abweichung proportional zur Log-Wahrscheinlichkeit?
quelle
quelle