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

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

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

1. AIC的解释

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

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

通常情况下,AIC计算公式为:
A I C = − 2 ∗ l n ( L ) + 2 ∗ k AIC = -2*ln(L) + 2*k AIC=2ln(L)+2k

  • 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的大,考虑了样本数量,样本数量过多时,可有效防止模型精度过高造成的模型复杂度过高。

B I C = − 2 ∗ l n ( L ) + k ∗ l n ( n ) BIC = -2*ln(L) + k*ln(n) BIC=2ln(L)+kln(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,随机因子是加性效应和母体环境效应
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):
l o g l i k = l n ( L ) loglik = ln(L) loglik=ln(L)

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

A I C = − 2 ∗ m 1 $ l o g l i k + 2 ∗ 2 AIC = -2*m1\$loglik+ 2*2 AIC=2m1$loglik+22


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

手动计算BIC的公式:

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

B I C = − 2 ∗ m 1 $ l o g l i k + 2 ∗ l o g ( m 1 $ n e d f ) BIC = -2*m1\$loglik+ 2*log(m1\$nedf) BIC=2m1$loglik+2log(m1$nedf)


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

4.2 模型2的AIC和BIC

代码:

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.

m1$loglik
m2$loglik


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

这里模型2优于模型1.

summary(m1)$aic
summary(m2)$aic

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

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

summary(m1)$bic
summary(m2)$bic

5. LRT似然比检验

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

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

ASReml中的LRT描述:

LRT检验的前提

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

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

LRT检验的公式:

L R = 2 ∗ ( I n L 1 − I n L 2 ) LR = 2*(InL1- InL2) LR=2(InL1InL2)

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

手动计算公式:

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

1-pchisq(-2*(m1$loglik-m2$loglik),1)


公式计算:

lrt.asreml(m1,m2,boundary = F)


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

欢迎关注我的公众号:育种数据分析之放飞自我。主要分享R语言,Python,育种数据分析,生物统计,数量遗传学,混合线性模型,GWAS和GS相关的知识。

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐