library(car) # for Anova()
data(UCBAdmissions)
UCB.df <- as.data.frame(UCBAdmissions)
berk.mod1 <- glm(Admit=="Admitted" ~ Dept, data=UCB.df, weights=UCB.df$Freq, family="binomial")
Anova(berk.mod1, test="Wald")
## Analysis of Deviance Table (Type II tests)
##
## Response: Admit == "Admitted"
## Df Chisq Pr(>Chisq)
## Dept 5 623.03 < 2.2e-16 ***
## Residuals 18
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(berk.mod1)
##
## Call:
## glm(formula = Admit == "Admitted" ~ Dept, family = "binomial",
## data = UCB.df, weights = UCB.df$Freq)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -25.4328 -13.2031 -0.0277 15.9185 21.2218
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.59346 0.06838 8.679 <2e-16 ***
## DeptB -0.05059 0.10968 -0.461 0.645
## DeptC -1.20915 0.09726 -12.432 <2e-16 ***
## DeptD -1.25833 0.10152 -12.395 <2e-16 ***
## DeptE -1.68296 0.11733 -14.343 <2e-16 ***
## DeptF -3.26911 0.16707 -19.567 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 6044.3 on 23 degrees of freedom
## Residual deviance: 5189.0 on 18 degrees of freedom
## AIC: 5201
##
## Number of Fisher Scoring iterations: 6
Main effects model
berk.mod2 <- glm(Admit=="Admitted" ~ Dept+Gender, data=UCB.df, weights=UCB.df$Freq, family="binomial")
Anova(berk.mod2, test="Wald")
## Analysis of Deviance Table (Type II tests)
##
## Response: Admit == "Admitted"
## Df Chisq Pr(>Chisq)
## Dept 5 534.708 <2e-16 ***
## Gender 1 1.526 0.2167
## Residuals 17
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
summary(berk.mod2)
##
## Call:
## glm(formula = Admit == "Admitted" ~ Dept + Gender, family = "binomial",
## data = UCB.df, weights = UCB.df$Freq)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -25.3424 -13.0584 -0.1631 16.0167 21.3199
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) 0.58205 0.06899 8.436 <2e-16 ***
## DeptB -0.04340 0.10984 -0.395 0.693
## DeptC -1.26260 0.10663 -11.841 <2e-16 ***
## DeptD -1.29461 0.10582 -12.234 <2e-16 ***
## DeptE -1.73931 0.12611 -13.792 <2e-16 ***
## DeptF -3.30648 0.16998 -19.452 <2e-16 ***
## GenderFemale 0.09987 0.08085 1.235 0.217
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 6044.3 on 23 degrees of freedom
## Residual deviance: 5187.5 on 17 degrees of freedom
## AIC: 5201.5
##
## Number of Fisher Scoring iterations: 6
library(effects) ## load the effects package
berk.eff2 <- allEffects(berk.mod2)
# plot main effects
plot(berk.eff2)

# plot 'interaction'
plot(effect('Dept:Gender', berk.mod2), multiline=TRUE)

include a 1 df term for dept A
UCB.df <- within(UCB.df, dept1AG <- (Dept=='A')*(Gender=='Female')*(Admit=='Admitted'))
berk.mod3 <- glm(Admit=="Admitted" ~ Dept+Gender+dept1AG, data=UCB.df, weights=UCB.df$Freq, family="binomial")
Anova(berk.mod3, test="Wald")
## Analysis of Deviance Table (Type II tests)
##
## Response: Admit == "Admitted"
## Df Chisq Pr(>Chisq)
## Dept 5 428.5939 <2e-16 ***
## Gender 1 1.7750 0.1828
## dept1AG 1 0.0056 0.9401
## Residuals 16
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
plot(effect('Dept:Gender', berk.mod3), multiline=TRUE)
