@gung의 답변 외에도 anova
함수가 실제로 테스트 하는 예를 제공하려고합니다 . 이를 통해 테스트에 관심있는 가설에 적합한 테스트 를 결정할 수 있기를 바랍니다 .
결과 및 3 개의 예측 변수 ( , 및 가 있다고 가정합니다 . 이제 로지스틱 회귀 모델은 다음과 같습니다 . 를 실행 하면 함수는 다음 모델을 순차적으로 비교합니다.x 1 x 2 x 3yx1x2x3my.mod <- glm(y~x1+x2+x3, family="binomial")
anova(my.mod, test="Chisq")
glm(y~1, family="binomial")
vs. glm(y~x1, family="binomial")
glm(y~x1, family="binomial")
vs. glm(y~x1+x2, family="binomial")
glm(y~x1+x2, family="binomial")
vs. glm(y~x1+x2+x3, family="binomial")
따라서 각 단계마다 하나의 변수를 추가하여 더 작은 모델과 다음으로 복잡한 모델을 순차적으로 비교합니다. 이러한 각 비교는 우도 비 테스트 (LR 테스트; 아래 예 참조) 를 통해 수행됩니다 . 내가 알기로는, 이러한 가설은 거의 관심이 없지만 이것은 당신에 의해 결정되어야합니다.
예를 들면 다음과 같습니다 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 ***
의 출력 -values이 있습니다 월드 테스트 다음과 같은 가설을 검증 (주 그들이있는 거 교환하고 중요하지 않습니다 테스트의 순서 )psummary(my.mod)
- 계수
x1
: glm(y~x2+x3, family="binomial")
vs.
glm(y~x1+x2+x3, family="binomial")
- 계수
x2
: glm(y~x1+x3, family="binomial")
vs.glm(y~x1+x2+x3, family="binomial")
- 계수
x3
: glm(y~x1+x2, family="binomial")
vs.glm(y~x1+x2+x3, family="binomial")
따라서 모든 계수를 포함하는 전체 모형에 대한 각 계수. Wald 검정은 우도 비 검정의 근사치입니다. 우도 비 테스트 (LR 테스트)를 수행 할 수도 있습니다. 방법은 다음과 같습니다.
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 *
우도 비 검정 의 은 위 의 Wald 검정에 의해 얻어진 것과 매우 유사합니다 .psummary(my.mod)
참고를위한 세 번째 모델의 비교 rank
의은 anova(my.mod, test="Chisq")
에 대한 비교 동일한 rank
아래의 예 ( anova(mod1.2, my.mod, test="Chisq")
). 매번 값은 . 매번 모델이없는 모델 과 모델이 포함 된 모델 간의 비교 입니다.7.088 ⋅ 10 − 5p7.088⋅10−5rank