Aliases: extractAIC
Keywords: models
### ** Examples ## No test: utils::example(glm)
glm> ## Dobson (1990) Page 93: Randomized Controlled Trial : glm> counts <- c(18,17,15,20,10,20,25,13,12) glm> outcome <- gl(3,1,9) glm> treatment <- gl(3,3) glm> data.frame(treatment, outcome, counts) # showing data treatment outcome counts 1 1 1 18 2 1 2 17 3 1 3 15 4 2 1 20 5 2 2 10 6 2 3 20 7 3 1 25 8 3 2 13 9 3 3 12 glm> glm.D93 <- glm(counts ~ outcome + treatment, family = poisson()) glm> anova(glm.D93) Analysis of Deviance Table Model: poisson, link: log Response: counts Terms added sequentially (first to last) Df Deviance Resid. Df Resid. Dev NULL 8 10.5814 outcome 2 5.4523 6 5.1291 treatment 2 0.0000 4 5.1291 glm> ## No test: glm> summary(glm.D93) Call: glm(formula = counts ~ outcome + treatment, family = poisson()) Deviance Residuals: 1 2 3 4 5 6 7 8 -0.67125 0.96272 -0.16965 -0.21999 -0.95552 1.04939 0.84715 -0.09167 9 -0.96656 Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) 3.045e+00 1.709e-01 17.815 <2e-16 *** outcome2 -4.543e-01 2.022e-01 -2.247 0.0246 * outcome3 -2.930e-01 1.927e-01 -1.520 0.1285 treatment2 1.338e-15 2.000e-01 0.000 1.0000 treatment3 1.421e-15 2.000e-01 0.000 1.0000 --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for poisson family taken to be 1) Null deviance: 10.5814 on 8 degrees of freedom Residual deviance: 5.1291 on 4 degrees of freedom AIC: 56.761 Number of Fisher Scoring iterations: 4 glm> ## End(No test) glm> ## Computing AIC [in many ways]: glm> (A0 <- AIC(glm.D93)) [1] 56.76132 glm> (ll <- logLik(glm.D93)) 'log Lik.' -23.38066 (df=5) glm> A1 <- -2*c(ll) + 2*attr(ll, "df") glm> A2 <- glm.D93$family$aic(counts, mu=fitted(glm.D93), wt=1) + glm+ 2 * length(coef(glm.D93)) glm> stopifnot(exprs = { glm+ all.equal(A0, A1) glm+ all.equal(A1, A2) glm+ all.equal(A1, glm.D93$aic) glm+ }) glm> ## No test: glm> ## an example with offsets from Venables & Ripley (2002, p.189) glm> utils::data(anorexia, package = "MASS") glm> anorex.1 <- glm(Postwt ~ Prewt + Treat + offset(Prewt), glm+ family = gaussian, data = anorexia) glm> summary(anorex.1) Call: glm(formula = Postwt ~ Prewt + Treat + offset(Prewt), family = gaussian, data = anorexia) Deviance Residuals: Min 1Q Median 3Q Max -14.1083 -4.2773 -0.5484 5.4838 15.2922 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) 49.7711 13.3910 3.717 0.000410 *** Prewt -0.5655 0.1612 -3.509 0.000803 *** TreatCont -4.0971 1.8935 -2.164 0.033999 * TreatFT 4.5631 2.1333 2.139 0.036035 * --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for gaussian family taken to be 48.69504) Null deviance: 4525.4 on 71 degrees of freedom Residual deviance: 3311.3 on 68 degrees of freedom AIC: 489.97 Number of Fisher Scoring iterations: 2 glm> ## End(No test) glm> glm> # A Gamma example, from McCullagh & Nelder (1989, pp. 300-2) glm> clotting <- data.frame( glm+ u = c(5,10,15,20,30,40,60,80,100), glm+ lot1 = c(118,58,42,35,27,25,21,19,18), glm+ lot2 = c(69,35,26,21,18,16,13,12,12)) glm> summary(glm(lot1 ~ log(u), data = clotting, family = Gamma)) Call: glm(formula = lot1 ~ log(u), family = Gamma, data = clotting) Deviance Residuals: Min 1Q Median 3Q Max -0.04008 -0.03756 -0.02637 0.02905 0.08641 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -0.0165544 0.0009275 -17.85 4.28e-07 *** log(u) 0.0153431 0.0004150 36.98 2.75e-09 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for Gamma family taken to be 0.002446059) Null deviance: 3.51283 on 8 degrees of freedom Residual deviance: 0.01673 on 7 degrees of freedom AIC: 37.99 Number of Fisher Scoring iterations: 3 glm> summary(glm(lot2 ~ log(u), data = clotting, family = Gamma)) Call: glm(formula = lot2 ~ log(u), family = Gamma, data = clotting) Deviance Residuals: Min 1Q Median 3Q Max -0.05574 -0.02925 0.01030 0.01714 0.06371 Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -0.0239085 0.0013265 -18.02 4.00e-07 *** log(u) 0.0235992 0.0005768 40.91 1.36e-09 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 (Dispersion parameter for Gamma family taken to be 0.001813354) Null deviance: 3.118557 on 8 degrees of freedom Residual deviance: 0.012672 on 7 degrees of freedom AIC: 27.032 Number of Fisher Scoring iterations: 3 glm> ## Aliased ("S"ingular) -> 1 NA coefficient glm> (fS <- glm(lot2 ~ log(u) + log(u^2), data = clotting, family = Gamma)) Call: glm(formula = lot2 ~ log(u) + log(u^2), family = Gamma, data = clotting) Coefficients: (Intercept) log(u) log(u^2) -0.02391 0.02360 NA Degrees of Freedom: 8 Total (i.e. Null); 7 Residual Null Deviance: 3.119 Residual Deviance: 0.01267 AIC: 27.03 glm> tools::assertError(update(fS, singular.ok=FALSE), verbose=interactive())
glm> ## -> .. "singular fit encountered" glm> glm> ## Not run: glm> ##D ## for an example of the use of a terms object as a formula glm> ##D demo(glm.vr) glm> ## End(Not run) glm> glm>
extractAIC(glm.D93) #>> 5 15.129
[1] 5.00000 56.76132
## End(No test)