R: Extract AIC from a Fitted Model

extractAIC {stats} | R Documentation

## Extract AIC from a Fitted Model

### Description

Computes the (generalized) Akaike An Information Criterion for a fitted parametric model.

### Usage

    extractAIC(fit, scale, k = 2, ...)

### Arguments

`fit` | fitted model, usually the result of a fitter like `lm`.
`scale` | optional numeric specifying the scale parameter of the model, see `scale` in `step`. Currently only used in the `"lm"` method, where `scale` specifies the estimate of the error variance, and `scale = 0` indicates that it is to be estimated by maximum likelihood.
`k` | numeric specifying the ‘weight’ of the equivalent degrees of freedom (=: `edf`) part in the AIC formula.
`...` | further arguments (currently unused in base R).

### Details

This is a generic function, with methods in base R for classes `"aov"`, `"glm"` and `"lm"` as well as for `"negbin"` (package MASS) and `"coxph"` and `"survreg"` (package survival).

The criterion used is

AIC = - 2*log L + k * edf,

where L is the likelihood and `edf` the equivalent degrees of freedom (i.e., the number of free parameters for usual parametric models) of `fit`.

For linear models with unknown scale (i.e., for `lm` and `aov`), -2 log L is computed from the deviance and uses a different additive constant to `logLik` and hence `AIC`. If RSS denotes the (weighted) residual sum of squares then `extractAIC` uses for -2 log L the formulae RSS/s - n (corresponding to Mallows' Cp) in the case of known scale s and n log (RSS/n) for unknown scale. `AIC` only handles unknown scale and uses the formula n*log(RSS/n) + n + n*log 2pi - sum(log w) where w are the weights. Further `AIC` counts the scale estimation as a parameter in the `edf` and `extractAIC` does not.

For `glm` fits the family's `aic()` function is used to compute the AIC: see the note under `logLik` about the assumptions this makes.

`k = 2` corresponds to the traditional AIC, using `k = log(n)` provides the BIC (Bayesian IC) instead.

Note that the methods for this function may differ in their assumptions from those of methods for `AIC` (usually via a method for `logLik`). We have already mentioned the case of `"lm"` models with estimated scale, and there are similar issues in the `"glm"` and `"negbin"` methods where the dispersion parameter may or may not be taken as ‘free’. This is immaterial as `extractAIC` is only used to compare models of the same class (where only differences in AIC values are considered).

### Value

A numeric vector of length 2, with first and second elements giving

`edf` | the ‘equivalent degrees of freedom’ for the fitted model `fit`.
`AIC` | the (generalized) Akaike Information Criterion for `fit`.

### Note

This function is used in `add1`, `drop1` and `step` and the similar functions in package MASS from which it was adopted.

### Author(s)

B. D. Ripley

### References

Venables, W. N. and Ripley, B. D. (2002) Modern Applied Statistics with S. New York: Springer (4th ed).

### See Also

`AIC`, `deviance`, `add1`, `step`

### Examples

    utils::example(glm)
    extractAIC(glm.D93)  #>>  5  15.129

[Package stats version 4.0.5 Index]