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 R
Regel 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 R
anzuzeigen options("contrasts")
. Normalerweise werden R
die 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
rank1
rank
rank1
rank
rank1
rank2
- 0,675rank1
rank2
- 3,99 - 0,675 = - 4,67rank1
rank1
. 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 rank1
genau 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 rank
von Null abweicht. Um zu überprüfen, ob die gesamte Variable rank
die 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 rank
Null 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 rank
im Modell verbleiben sollte.
Dieser Beitrag ist auch sehr interessant.
admit ~ 1
vsadmit ~ rank - 1
?