# extractAIC: Extract AIC from a Fitted Model

## Description

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

## Usage

 `1` ```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.

B. D. Ripley

## References

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

`AIC`, `deviance`, `add1`, `step`
 ```1 2``` ```utils::example(glm) extractAIC(glm.D93) #>> 5 15.129 ```