[Rd] aic() component in GLM-family objects

Ben Bolker bbolker @ending from gm@il@com
Sun Jun 3 23:33:18 CEST 2018

  Is it generally known/has it been previously discussed here that the
$aic() component in GLM-family objects (e.g. results of binomial(),
poisson(), etc.) does not as implemented actually return the AIC, but
rather -2*log-likelihood + 2*(model_has_scale_parameter) ?  Can anyone
in this forum gauge how a documentation patch would be received?

This behaviour does not seem to be documented in ?family (or anywhere
else I can find), which says:

  aic: function giving the AIC value if appropriate (but ‘NA’ for
          the quasi- families).  See ‘logLik’ for the assumptions made
          about the dispersion parameter.

For a demonstration that e.g. binomial()$aic() is really -2*log L and
not the AIC, see:


This document
explicates the details a bit more ('L' denotes log-likelihood):

   * family()$aic computes $-2L$, which glm.fit translates to an AIC by
adding $2k$ and storing it in model$aic
   * logLik.default retrieves model$aic and converts it back to a
   * stats:::AIC.default retrieves the log-likelihood and converts it
back to an AIC (!)
   * family()$dev.resid() computes the squared deviance residuals
   * stats:::residuals.glm retrieves these values and takes the signed
square root

    Ben Bolker

More information about the R-devel mailing list