Die folgende Erklärung ist nicht auf die logistische Regression beschränkt, sondern gilt gleichermaßen für die normale lineare Regression und andere GLMs. In der RRegel wird eine Ebene der kategorialen ausgeschlossen und die Koeffizienten bezeichnen die Differenz jeder Klasse zu dieser Referenzklasse (oder manchmal auch als Basisklasse bezeichnet) (dies wird als Dummy-Codierung oder als Behandlungskontraste bezeichnet R, siehe hier für eine hervorragende Übersicht über die verschiedenen Kontrastoptionen ). Geben Sie ein, um die aktuellen Kontraste Ranzuzeigen options("contrasts"). Normalerweise werden Rdie Ebenen der kategorialen Variablen alphabetisch sortiert und die erste als Referenzklasse verwendet. Dies ist nicht immer optimal und kann durch Eingabe geändert werden (hier würden wir die Referenzklasse in der neuen Variablen auf "c" setzen).new.variable <- relevel(old.variable, ref="c")zpanova(model1, model2, test="LRT")R
mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
mydata$rank <- factor(mydata$rank)
my.mod <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
summary(my.mod)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.989979 1.139951 -3.500 0.000465 ***
gre 0.002264 0.001094 2.070 0.038465 *
gpa 0.804038 0.331819 2.423 0.015388 *
rank2 -0.675443 0.316490 -2.134 0.032829 *
rank3 -1.340204 0.345306 -3.881 0.000104 ***
rank4 -1.551464 0.417832 -3.713 0.000205 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
rank1rankrank1rankrank1rank2- 0,675rank1rank2- 3,99 - 0,675 = - 4,67rank1rank1. Sie können das Modell auch ohne Schnittpunkt anpassen - 1, indem Sie der Modellformel Folgendes hinzufügen , um alle Koeffizienten direkt anzuzeigen:
my.mod2 <- glm(admit ~ gre + gpa + rank - 1, data = mydata, family = "binomial")
summary(my.mod2) # no intercept model
Coefficients:
Estimate Std. Error z value Pr(>|z|)
gre 0.002264 0.001094 2.070 0.038465 *
gpa 0.804038 0.331819 2.423 0.015388 *
rank1 -3.989979 1.139951 -3.500 0.000465 ***
rank2 -4.665422 1.109370 -4.205 2.61e-05 ***
rank3 -5.330183 1.149538 -4.637 3.54e-06 ***
rank4 -5.541443 1.138072 -4.869 1.12e-06 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Beachten Sie, dass der Schnittpunkt jetzt weg ist und der Koeffizient von rank1genau dem Schnittpunkt des ersten Modells entspricht. Hier überprüft der Wald-Test nicht die paarweise Differenz zwischen den Koeffizienten, sondern die Hypothese, dass jeder einzelne Koeffizient Null ist. Wir haben wieder Beweise dafür, dass jeder Koeffizient rankvon Null abweicht. Um zu überprüfen, ob die gesamte Variable rankdie Modellanpassung verbessert, passen wir ein Modell mit ( my.mod1) und eines ohne die Variable rank( my.mod2) an und führen einen Likelihood-Ratio-Test durch. Dies testet die Hypothese, dass alle Koeffizienten von rankNull sind:
my.mod1 <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial") # with rank
my.mod2 <- glm(admit ~ gre + gpa, data = mydata, family = "binomial") # without rank
anova(my.mod1, my.mod2, test="LRT")
Analysis of Deviance Table
Model 1: admit ~ gre + gpa + rank
Model 2: admit ~ gre + gpa
Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1 394 458.52
2 397 480.34 -3 -21.826 7.088e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Der Likelihood-Ratio-Test ist hochsignifikant und wir würden daraus schließen, dass die Variable rankim Modell verbleiben sollte.
Dieser Beitrag ist auch sehr interessant.
admit ~ 1vsadmit ~ rank - 1?