匠人府分享 http://blog.sciencenet.cn/u/meiweipingg

博文

拟合模型比较之AIC, AICc, BIC(附相关R函数包)

已有 4628 次阅读 2022-2-28 21:09 |个人分类:R语言|系统分类:科研笔记

同步更新于的我个人网站,点此链接,查看原文

〇、准则

The smaller the AIC, AICc or BIC, the better the model.

AIC值越小,拟合模型越好。

AICc,BIC同样适用。

一、简介

AIC信息准则即Akaike information criterion,又称赤池信息量。
AICc是针对小样本数据集的AIC,即小样本校正后的AIC。
BIC为贝叶斯信息量。


二、计算公式

AIC,AICc,BIC的计算方法/公式如下图。

  • stats函数包中的AIC函数,提供AIC和BIC的计算方法。


  • AICcmodavg函数包中的AICc函数,提供AIC,AICc等的计算公式,见上图。


三、分析

对于同一个数据集,即x数据相同,y数据相同,dataframe(x,y)数据集相同。
那么,根据上述AIC,AICc的计算公式,

相同点:
AIC和AICc计算公式的左半部分都是相等的,即 -2*logLik(fitmodel),

不同之处在于:
AIC计算公式右半部分是 2*npar,
而AICc计算公式的右半部分是 2*npar*(n/(n-npar-1))

注意:
n为数据的样本数,比如x,y分别包含20个数字,则n=20;
npar为参数的数量,y也是1个参数,所以对于y=ax+b,则npar=3,即y,a,b;对于y=alog(bx+c),则npar=4。


四、发现

发现一:
AICc数值一直比AIC要大,样本数越小,则AICc比AIC越大得多;样本数越大,则AICc越接近于AIC的值。

发现二:
数据样本数n,必须大于拟合方程的参数npar+1,否则AICc值为InF,AIC值不受此影响。
比如,拟合方程y=aln(bx+c),则npar+1=5,要求数据样本数>5,至少为6个样本,
否则AICc计算公式的右边分母为0,则AICc结果为InF。

发现三:
从计算公式可以看出,对于同一个数据集,
当npar相等的情况下,不同模型之间AICc的差值=不同模型之间AIC的差值,所以比较AIC也是可以的,不一定要非得比较AICc。举例如下:
y=ax+b,y=aexp(bx),y=alog(bx),y=aln(bx),这四个模型AIC的差值,和AICc的差值是一样的。

特此备忘。


五、相关R函数包

basicTrendline函数包的最新版Github链接 ,和官网版CRAN链接 。

因为最近我写的R函数包”basicTrendline”的version 2.0.6版本,特别增加了AICc的结果.

先下载最新版本的R包,代码如下:
install.packages(“devtools”)
devtools::install_github(“PhDMeiwp/basicTrendline@master”, force = TRUE)

直接输入如下代码即可输出AIC, AICc, BIC的结果
library(basicTrendline)
trendline_summary(x,y,model=”exp2P”)

summary.png




https://blog.sciencenet.cn/blog-651374-1327449.html

上一篇:自定义R函数包安装位置,专门解决R软件更新后所有R包要重装的Bug
下一篇:ggtrendline函数包,在ggplot中添加线性/非线性回归线、回归方程、R平方、P值
收藏 IP: 221.7.194.*| 热度|

1 杨正瓴

该博文允许注册用户评论 请点击登录 评论 (1 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2022-8-15 05:08

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部