[R] AIC questions

Joe Yarmus joseph.yarmus at oracle.com
Wed Sep 26 17:18:26 CEST 2007


In accordance with Venables and Ripley, SAS documentation and other 
sources AIC with sigma^2 unknown is calculated as:
AIC = -2LL + 2* #parameters =  n log(RSS/n) + 2p
For the fitness data: 
(http://support.sas.com/ctx/samples/index.jsp?sid=927), SAS gets an AIC 
of 64.534 with model oxygen = runtime. (SAS STAT User's Guide. Chapter 
61. pp 3956, the REG Procedure). This value of AIC accords with p = 2.

When I run the same problem in R ver 2.5.1, I get

 > rt.glm =glm(oxy ~ runtime, data=fitness)
 > rt.glm
Call:  glm(formula = oxy ~ runtime, data = fitness)

Coefficients:
(Intercept)      runtime 
     82.422       -3.311 

Degrees of Freedom: 30 Total (i.e. Null);  29 Residual
Null Deviance:        851.4
Residual Deviance: 218.5     AIC: 154.5

I get very close to what R gets if the constant term is included in 
-2LL, (31*Log(2*pi)+n-1), divide RSS by n-1 and the number of parameters 
is 3 (the predictor, the intercept and the error term)
 > 31 * (log(2*pi)+log(sum(rt.glm$res^2)/30)) + 30 + 2 * 3
[1] 154.5248
 > AIC(rt.glm)
[1] 154.5083

3 questions:
1) Why the discrepancy between SAS and R?
2) Why the slight difference between my calculation in R and R's AIC?
3) How should AIC be computed if row weights are used in the linear model?

Thanks!

    -joe yarmus



More information about the R-help mailing list