前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >模型中AIC和BIC以及loglikelihood的关系

模型中AIC和BIC以及loglikelihood的关系

作者头像
邓飞
发布2022-02-09 09:49:38
3.9K0
发布2022-02-09 09:49:38
举报

「在进行建模时,经常要对模型进行评价:」

  • 这个模型好不好?
  • 这几个模型哪个好?
  • 这两个模型是否达到显著性差异?

我们常用的参数有「AIC」「BIC」「loglikelihood」,本篇介绍一下这几个参数的含义,以及是如何计算的,下面我们一起来看一下吧。

1. AIC的解释

赤池信息准则(Akaike Information Criterion,AIC)

AIC是衡量统计模型拟合优良性的一种标准,由日本统计学家赤池弘次在1974年提出,它建立在熵的概念上,提供了权衡估计模型复杂度和拟合数据优良性的标准。

通常情况下,AIC计算公式为:AIC = -2*ln(L) + 2*k

  • k是模型参数个数,
  • L是似然函数

从一组可供选择的模型中选择最佳模型时,通常选择AIC最小的模型。

当两个模型之间存在较大差异时,差异主要体现在似然函数项,当似然函数差异不显著时,上式第一项,即模型复杂度则起作用,从而参数个数少的模型是较好的选择。

一般而言,当模型复杂度提高(k增大)时,似然函数L也会增大,从而使AIC变小,但是k过大时,似然函数增速减缓,导致AIC增大,模型过于复杂容易造成过拟合现象。

目标是选取AIC最小的模型,AIC不仅要提高模型拟合度(极大似然),而且引入了惩罚项,使模型参数尽可能少,有助于降低过拟合的可能性。

2. BIC的解释

贝叶斯信息准则(Bayesian Information Criterion,BIC)

BIC(Bayesian InformationCriterion)贝叶斯信息准则与AIC相似,用于模型选择,1978年由Schwarz提出。训练模型时,增加参数数量,也就是增加模型复杂度,会增大似然函数,但是也会导致过拟合现象,针对该问题,AIC和BIC均引入了与模型参数个数相关的惩罚项,BIC的惩罚项比AIC的大,考虑了样本数量,样本数量过多时,可有效防止模型精度过高造成的模型复杂度过高。

BIC = -2*ln(L) + k*ln(n)
  • k为模型参数个数
  • n为样本数量
  • L是似然函数

k*ln(n)惩罚项在维数过大且训练样本数据相对较少的情况下,可以有效避免出现维度灾难现象。

3. AIC和BIC的比较

AIC和BIC的公式中前半部分是一样的,

后半部分是惩罚项,当n ≥ 10^2 的时候,即kln(n) ≥ 2k,这时候BIC的惩罚性得分更多(分数越大,模型越差),所以,BIC相比AIC在大数据量时对模型参数惩罚得更多,导致BIC更倾向于选择参数少的简单模型。

4. 实例演示

「ASReml-R 文档中的计算方法:」

这里:

  • Ri为似然函数的loglikelihood
  • ti为参数个数
  • v为残差的自由度

用两个模型:

  • 模型1:动物模型,固定因子是SEX和BYEAR,随机因子是加性模型
  • 模型2:动物模型,固定因子是SEX和BYEAR,随机因子是加性效应和母体环境效应
代码语言:javascript
复制
m1 = asreml(BWT ~ SEX + BYEAR, random = ~ vm(ANIMAL,ainv), residual = ~ idv(units),data = dat)
summary(m1)$varcomp

# m2 单性状动物模型 + 母体效应
m2 = asreml(BWT ~ SEX + BYEAR, random = ~ vm(ANIMAL,ainv) + MOTHER , residual = ~ idv(units),data = dat)
summary(m2)$varcomp

4.1 模型1的AIC和BIC

这里,m1的loglik为-1093.197,这个值是AIC和BIC公式的ln(L):

loglik = ln(L)

所以,这里的参数个数是2,所以手动计算AIC的公式为:

AIC = -2*m1\$loglik+ 2*2

结果可以看出,手动计算的AIC和函数计算的AIC,结果一致。

手动计算BIC的公式:

这里的n是模型残差的自由度。

BIC = -2*m1\$loglik+ 2*log(m1\$nedf)

可以看到,手动计算的BIC和手动计算的BIC结果一致。

4.2 模型2的AIC和BIC

「代码:」

代码语言:javascript
复制
m2$loglik
-2*m2$loglik+ 2*3
summary(m2)$aic

-2*m2$loglik+ 3*log(m2$nedf)
summary(m2)$bic

注意,这里的参数是3,而不是2.

「AIC的结果:完全一致」

「BIC的结果:完全一致」

4.3 模型1和模型2比较

「loglikelihood比较」这里的比较,是比较loglikelihood的绝对值,绝对值越小,说明模型拟合越好。当然,这是单纯的比较似然函数,没有考虑参数的影响。

可以看到,模型2优于模型1.

代码语言:javascript
复制
m1$loglik
m2$loglik

「AIC比较」这里,AIC值越小,说明模型拟合越好。

这里模型2优于模型1.

代码语言:javascript
复制
summary(m1)$aic
summary(m2)$aic

「BIC结果比较」这里,BIC值越小,说明模型拟合越好。

结果可以看出,模型2优于模型1.

代码语言:javascript
复制
summary(m1)$bic
summary(m2)$bic

5. LRT似然比检验

似然比检验用来评估两个模型中哪个模型更适合当前数据分析。

具体来说,一个相对复杂的模型与一个简单模型比较,来检验它是不是能够显著地适合一个特定的数据集。

「ASReml中的LRT描述:」

「LRT检验的前提」

  • 两个模型的固定因子一致
  • 两个模型随机因子属于nested关系(包含关系,分级巢式模型)

LRT应用的一个前提条件是这些待比较的模型应该是分级的巢式模型。具体来讲,是说相对于简单模型,复杂模型仅仅是多了一个或者多个附加参数。增加模型参数必定会导致高似然值成绩。因此根据似然值的高低来判断模型的适合度是不准确的。LRT提供了一个客观的标准来选择合适的模型。

LRT检验的公式:

LR = 2*(InL1- InL2)

其中L1为复杂模型最大似然值,L2为简单标准模型最大似然值LR近似的符合卡方分布。为了检验两个模型似然值的差异是否显著,我们必须要考虑自由度。LRT 检验中,自由度等于在复杂模型中增加的模型参数的数目。这样根据卡方分布临界值表,我们就可以判断模型差异是否显著。

「手动计算公式:」

可以看到,两模型之间的差异达到极显著,所以模型2显著优于模型1.

代码语言:javascript
复制
1-pchisq(-2*(m1$loglik-m2$loglik),1)

「公式计算:」

代码语言:javascript
复制
lrt.asreml(m1,m2,boundary = F)

手动计算和公式计算,两者结果是一致的。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 育种数据分析之放飞自我 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. AIC的解释
  • 2. BIC的解释
  • 3. AIC和BIC的比较
  • 4. 实例演示
    • 4.1 模型1的AIC和BIC
      • 4.2 模型2的AIC和BIC
        • 4.3 模型1和模型2比较
        • 5. LRT似然比检验
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档