The following assumes that AGE is the only explanatory variable; another possibility would be AGE and WHEEZE as explanatory, e.g... 402 > coal _ fac.design(c(2,2,9),c("Wheeze","Breath","Age")) 402 > coal$Resp _ scan("t43.dat") 402 > coal.glm1 _ glm(Resp ~ Age*Breath*Wheeze,data=coal,family=poisson) 402 > qqnorm.aov(coal.glm1) 402 > args(qqnorm.aov) function(fit, full = F, label = F, omit = NULL, xlab = paste(if(full) "Full-" else "Half-", "normal Quantiles", sep = ""), ylab = "Effects", ...) NULL 402 > qqnorm.aov(coal.glm1,label=6) 402 > coal.glm2 _ glm(Resp ~ Age + Breath*Wheeze,data=coal,family=poisson) 402 > anova(coal.glm2) Analysis of Deviance Table Poisson model Response: Resp Terms added sequentially (first to last) Df Deviance Resid. Df Resid. Dev NULL 35 25889.47 Age 8 886.64 27 25002.83 Breath 1 11026.22 26 13976.61 Wheeze 1 7037.54 25 6939.07 Breath:Wheeze 1 4237.13 24 2701.94 402 > attach(coal) 402 > plot.factor(Wheeze,log(Resp)) 402 > plot.factor(Breath,log(Resp)) 402 > plot.factor(Age,log(Resp)) 402 > interaction.plot(Breath,Wheeze,log(Resp)) 402 > interaction.plot(Age,Wheeze,log(Resp)) 402 > interaction.plot(Age,Breath,log(Resp)) 402 > detach() 402 > coal.glm3 _ glm(Resp ~ (Age + Breath + Wheeze)^2,data=coal,family=poisson) 402 > anova(coal.glm3) Analysis of Deviance Table Poisson model Response: Resp Terms added sequentially (first to last) Df Deviance Resid. Df Resid. Dev NULL 35 25889.47 Age 8 886.64 27 25002.83 Breath 1 11026.22 26 13976.61 Wheeze 1 7037.54 25 6939.07 Age:Breath 8 2342.40 17 4596.68 Age:Wheeze 8 1544.82 9 3051.86 Breath:Wheeze 1 3025.17 8 26.69 402 > pchisq(26.69,8) [1] 0.9992004