看到论坛中有不少关于AIC的问题,于是花了点时间研究了一下。现进行阐述:
1、对数似然值(loglikelihood)定义都一致:l=-(n/2)*ln(2*pi)-(n/2)*ln(sse/n)-n/2.其中n为样本量,sse为残差平方和。
AIC的定义有些书上有点不同,如何晓群的<<应用回归分析>>书中为:AIC=-2*l+2*p.其中,l为对数似然值,p为参数个数,包括常数项。
而易丹辉的<<数据分析与EVIEWS应用>>中为:AIC=(-2*l+2*p)/n.
可以很明显的看出,两者的定义相差n倍。
2、R中AIC的计算:
R中计算AIC值有两个函数:AIC和extractAIC,两者有差别。
因为似然函数中的未知参数的个数为p+1,其中p为前面所讲的包括常数项的参数个数。故
在R中AIC=-2*l+2*(p+1),将前面的l值代入,也可写为:AIC=n*ln(2*pi)+n*ln(sse/n)+n+2(p+1).
而extractAIC=n*ln(sse/n)+2*p,即截取了AIC的一部分,而去掉了常数部分。
3、R中计算的部分结果:
> AIC(res) #说明:res为lm回归的结果,样本量为18;自变量有3个,参数则为4个。
[1] 40.57416
> logLik(res)
'log Lik.' -15.28708 (df=5)
> l1=logLik(res)
> l1
'log Lik.' -15.28708 (df=5)
> a1=-2*l1+2*4
> a1
可看出AIC与a1相差2,即因为a1中少加了2的原因。
> c1[4,2] #提取的残差
[1] 5.7607
> 18*log(c1[4,2]/18)+2*4
[1] -12.50763
> extractAIC(res)
[1] 4.00000 -12.50763
说明extractAIC用的就是上述公式。
而在EVIEWS中其结果则为2.413009,是怎么得来的呢?它实际上等于=a1/18=(AIC(res)-2)/18,也即第1点上提到的易丹辉书上的公式。
这也就是用EVIEWS与用R不同的原因了,结果肯定不同,因为公式不同。那么它们之间的关系是什么呢?
AIC(EVIEWS)=(AIC(R)-2)/n.(其中AIC(EVIEWS)代表EVIEWS中AIC值,AIC(R)代表R中AIC值。