Zusätzlich zur Antwort von @ gung werde ich versuchen, ein Beispiel dafür zu liefern, was die anova
Funktion tatsächlich testet. Ich hoffe, dass Sie auf diese Weise entscheiden können, welche Tests für die Hypothesen geeignet sind, die Sie testen möchten.
Angenommen, Sie haben ein Ergebnis und 3 Prädiktorvariablen: , und . Nun, wenn Ihr logistisches Regressionsmodell wäre . Wenn Sie ausführen , vergleicht die Funktion die folgenden Modelle nacheinander:yx1x2x3my.mod <- glm(y~x1+x2+x3, family="binomial")
anova(my.mod, test="Chisq")
glm(y~1, family="binomial")
gegen glm(y~x1, family="binomial")
glm(y~x1, family="binomial")
gegen glm(y~x1+x2, family="binomial")
glm(y~x1+x2, family="binomial")
gegen glm(y~x1+x2+x3, family="binomial")
Daher wird das kleinere Modell nacheinander mit dem nächst komplexeren Modell verglichen, indem in jedem Schritt eine Variable hinzugefügt wird. Jeder dieser Vergleiche erfolgt über einen Likelihood-Ratio-Test (LR-Test; siehe Beispiel unten). Meines Wissens sind diese Hypothesen selten von Interesse, aber dies muss von Ihnen entschieden werden.
Hier ist ein Beispiel in 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
# The sequential analysis
anova(my.mod, test="Chisq")
Terms added sequentially (first to last)
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 399 499.98
gre 1 13.9204 398 486.06 0.0001907 ***
gpa 1 5.7122 397 480.34 0.0168478 *
rank 3 21.8265 394 458.52 7.088e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
# We can make the comparisons by hand (adding a variable in each step)
# model only the intercept
mod1 <- glm(admit ~ 1, data = mydata, family = "binomial")
# model with intercept + gre
mod2 <- glm(admit ~ gre, data = mydata, family = "binomial")
# model with intercept + gre + gpa
mod3 <- glm(admit ~ gre + gpa, data = mydata, family = "binomial")
# model containing all variables (full model)
mod4 <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
anova(mod1, mod2, test="LRT")
Model 1: admit ~ 1
Model 2: admit ~ gre
Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1 399 499.98
2 398 486.06 1 13.92 0.0001907 ***
anova(mod2, mod3, test="LRT")
Model 1: admit ~ gre
Model 2: admit ~ gre + gpa
Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1 398 486.06
2 397 480.34 1 5.7122 0.01685 *
anova(mod3, mod4, test="LRT")
Model 1: admit ~ gre + gpa
Model 2: admit ~ gre + gpa + rank
Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1 397 480.34
2 394 458.52 3 21.826 7.088e-05 ***
Die Werte in der Ausgabe von sind Wald-Tests, die die folgenden Hypothesen prüfen (beachten Sie, dass sie austauschbar sind und die Reihenfolge der Tests keine Rolle spielt ):psummary(my.mod)
- Für Koeffizient von
x1
: glm(y~x2+x3, family="binomial")
vs.
glm(y~x1+x2+x3, family="binomial")
- Für Koeffizient von
x2
: glm(y~x1+x3, family="binomial")
vs.glm(y~x1+x2+x3, family="binomial")
- Für Koeffizient von
x3
: glm(y~x1+x2, family="binomial")
vs.glm(y~x1+x2+x3, family="binomial")
Also jeder Koeffizient gegen das Vollmodell enthält alle Koeffizienten. Wald-Tests sind eine Annäherung an den Likelihood-Ratio-Test. Wir könnten auch die Likelihood-Ratio-Tests (LR-Test) durchführen. Hier ist, wie:
mod1.2 <- glm(admit ~ gre + gpa, data = mydata, family = "binomial")
mod2.2 <- glm(admit ~ gre + rank, data = mydata, family = "binomial")
mod3.2 <- glm(admit ~ gpa + rank, data = mydata, family = "binomial")
anova(mod1.2, my.mod, test="LRT") # joint LR test for rank
Model 1: admit ~ gre + gpa
Model 2: admit ~ gre + gpa + rank
Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1 397 480.34
2 394 458.52 3 21.826 7.088e-05 ***
anova(mod2.2, my.mod, test="LRT") # LR test for gpa
Model 1: admit ~ gre + rank
Model 2: admit ~ gre + gpa + rank
Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1 395 464.53
2 394 458.52 1 6.0143 0.01419 *
anova(mod3.2, my.mod, test="LRT") # LR test for gre
Model 1: admit ~ gpa + rank
Model 2: admit ~ gre + gpa + rank
Resid. Df Resid. Dev Df Deviance Pr(>Chi)
1 395 462.88
2 394 458.52 1 4.3578 0.03684 *
Die Werte aus den Likelihood-Ratio-Tests sind denjenigen sehr ähnlich, die durch die Wald-Tests von oben erhalten wurden.psummary(my.mod)
Hinweis: Der dritte Modellvergleich für rank
of entspricht anova(my.mod, test="Chisq")
dem Vergleich für rank
das folgende Beispiel ( anova(mod1.2, my.mod, test="Chisq")
). Der Wert ist jedes Mal der gleiche, . Es ist jedes Mal der Vergleich zwischen dem Modell ohne und dem Modell, das es enthält.p7,088 ⋅ 10- 5rank