首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >遗传评估REML模型中AIC和BIC的计算方法

遗传评估REML模型中AIC和BIC的计算方法

作者头像
邓飞
发布2026-06-10 19:29:23
发布2026-06-10 19:29:23
1070
举报

大家好,今天介绍一下遗传评估中AIC和BIC的计算方法。

先看一下百公斤日龄窝别效应的动物模型:

代码语言:javascript
复制

for(i in 1:3) phe3[,i] = as.factor(as.character(phe3[,i]))
str(phe3)

ainv = ainverse(ped)

mod_y1 = asreml(y1 ~ CNJX, random = ~ vm(ID,ainv) + Wobie, residual = ~ idv(units),data=phe3)
summary(mod_y1)$varcomp
vpredict(mod_y1,h2 ~ V2/(V1+V2+V3))

这里,窝别效应方差组分是27.9,加性方差组分是21.26,残差方差组分是85.359,遗传力为0.158。

asreml可以直接给出AIC和BIC的值:

这里,loglik为-15839.9,AIC为31685.8,BIC为31705.62。

1,AIC和BIC公式

如果手动计算,应该如何计算,比如想要计算dmu、blupf90,hiblup的AIC和BIC,知道loglik,如何计算。

参考文献:ÇAnkaya S, Takma C, Abacı S H, et al. A comparison of some random regression models for first lactation test day milk yields in jersey cows and estimating of genetic parameters.[J]. Kafkas Üniversitesi Veteriner Fakültesi Dergisi, 2014, 20(1):5-10.

2,AIC公式详解及验证

解析上面的公式:

AIC = -2logL + 2K

这里的logL为loglikelihood迭代值,K为方差组分的估算的个数,这里K=3(窝别效应,加性效应,残差效应)。

代码语言:javascript
复制
> K = 3
> lamda = 5481
> AIC = -2*logL + 2*K;AIC
[1] 31685.8
代码语言:javascript
复制
> summary(mod_y1)$aic
[1] 31685.8
attr(,"parameters")
[1] 3

AIC结果手动计算和软件提供计算一致。

3,BIC公式详解及验证

BIC = -2logL + K*log(lamda),lamda = n - r(X)

这里的logL为loglikelihood迭代值,K为方差组分的估算的个数,这里K=3,n为分析所用的数据(去掉缺失值),r(X)为固定因子的水平数。

代码语言:javascript
复制
> dim(phe3[!is.na(phe3$y1),])
[1] 5493    5

这里可以看到,没有缺失的数据为5439,

代码语言:javascript
复制
> str(phe3)
'data.frame':	5512 obs. of  5 variables:
 $ ID   : Factor w/ 5512 levels "YYSDYS321000009",..: 3120 3121 5283 4410 2951 4926 4424 4348 4382 4409 ...
 $ CNJX : Factor w/ 12 levels "SDYS3_20222_F",..: 5 5 11 9 5 9 9 9 9 9 ...
 $ Wobie: Factor w/ 1321 levels "1","10","100",..: 1314 1314 95 893 1231 223 894 860 881 893 ...
 $ y1   : num  172 179 151 165 153 ...
 $ y2   : num  14.47 14.39 10.5 8.61 13.28 ...

窝别的水平数是12,所以lamda为:5493-12 = 5481,手动计算:

代码语言:javascript
复制
> logL = mod_y1$loglik;logL
[1] -15839.9
> K = 3
> lamda = 5481
> BIC = -2*logL + K*log(lamda);BIC
[1] 31705.62
代码语言:javascript
复制
> summary(mod_y1)$bic
[1] 31705.62
attr(,"parameters")
[1] 3

BIC结果手动计算和软件提供计算一致。

4,手动计算注意事项

A:loglik不同软件不一样,所以,评价AIC和BIC时,需要时同一个软件不同模型才有比较性。

B:普通 lm/glm:用 ML,AIC/BIC 基于 “样本量 n”,混合模型:用 REML,AIC/BIC 基于 nedf,参数个数只算方差分量。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档