Ngoài câu trả lời của @ gung, tôi sẽ cố gắng đưa ra một ví dụ về những gì anova
chức năng thực sự kiểm tra. Tôi hy vọng điều này cho phép bạn quyết định thử nghiệm nào phù hợp với các giả thuyết bạn quan tâm để thử nghiệm.
Giả sử rằng bạn có kết quả và 3 biến dự đoán: x 1 , x 2 và x 3 . Bây giờ, nếu mô hình hồi quy logistic của bạn sẽ được . Khi bạn chạy , hàm sẽ so sánh các mô hình sau theo thứ tự tuần tự:yx1x2x3my.mod <- glm(y~x1+x2+x3, family="binomial")
anova(my.mod, test="Chisq")
glm(y~1, family="binomial")
so với glm(y~x1, family="binomial")
glm(y~x1, family="binomial")
so với glm(y~x1+x2, family="binomial")
glm(y~x1+x2, family="binomial")
so với glm(y~x1+x2+x3, family="binomial")
Vì vậy, nó tuần tự so sánh mô hình nhỏ hơn với mô hình phức tạp hơn tiếp theo bằng cách thêm một biến trong mỗi bước. Mỗi so sánh được thực hiện thông qua kiểm tra tỷ lệ khả năng (kiểm tra LR; xem ví dụ bên dưới). Theo hiểu biết của tôi, những giả thuyết này hiếm khi được quan tâm, nhưng điều này phải được quyết định bởi bạn.
Đây là một ví dụ trong 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 ***
psummary(my.mod)
- Đối với hệ số
x1
: glm(y~x2+x3, family="binomial")
vs.
glm(y~x1+x2+x3, family="binomial")
- Đối với hệ số
x2
: glm(y~x1+x3, family="binomial")
vs.glm(y~x1+x2+x3, family="binomial")
- Đối với hệ số
x3
: glm(y~x1+x2, family="binomial")
vs.glm(y~x1+x2+x3, family="binomial")
Vì vậy, mỗi hệ số so với mô hình đầy đủ chứa tất cả các hệ số. Các xét nghiệm Wald là một xấp xỉ của thử nghiệm tỷ lệ khả năng. Chúng tôi cũng có thể làm các bài kiểm tra tỷ lệ khả năng (bài kiểm tra LR). Đây là cách thực hiện:
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 *
psummary(my.mod)
rank
anova(my.mod, test="Chisq")
rank
anova(mod1.2, my.mod, test="Chisq")
p7,088 ⋅ 10- 5rank