|||
上一章节中(http://blog.sciencenet.cn/blog-2577109-1195363.html),我们介绍了混合线性模型中的模型假定,这一章节,用一个动物育种的示例,介绍固定因子,随机因子以及相关矩阵的推导,明确什么是G矩阵,什么是R矩阵,以及他们和方差组分的关系。直和和直积也是重要的概念,特别是多个随机因子以及随机因子有互作时,经常用到,这里用R语言编程的形式介绍直和与直积的计算方法。
「混合线性模型」
「举个栗子:」
比如这里不同场的一些个公牛(Sire)的体重(y),公牛之间是有亲缘关系的,如果要分析这个数据,公牛作为随机因子,模型为:
假定:
那么:
如果,公牛之间是由亲缘关系A的,那么:
这里b为固定因子的效应值,加入固定因子有多个,场,年,季,性别等等,那么b 可以分解为:[b1, b2, b3,...]
X为固定因子对应的矩阵,X也可以分解为:[X1,X2,X3...]
同样的道理,随机因子和随机因子的矩阵,也可以剖分为类似的形式,比如动物模型中,除了加性效应,还可以有母体效应,永久环境效应,窝别效应作为随机因子。
直和(Direct sum)和直积(Direct product)是混合线性模型中经常用到的概念,下面用具体例子介绍直积和直和是如何通过R语言计算的。
比如下图中,D为22的矩阵,F为22的矩阵,那么直和就是讲D和F作为对角线,非对角线为0,构成一个44的矩阵。直积D的每个元素分别和F矩阵相乘,得到44的矩阵。
「函数构建」
这里直积我们用R的默认函数kronecker,为了方便操作,我们赋予它另一个名称:direct_product。 对于直和,我们构建了一个函数,可以将两个矩阵变成直和的结果。
direct_sum<- function(mat1,mat2){
r1 <- dim(mat1)[1];c1<- dim(mat1)[2]
r2 <- dim(mat2)[1];c2<- dim(mat2)[2]
rbind(cbind(mat1,matrix(0,r1,c2)),cbind(matrix(0,r2,c1),mat2))
}
direct_product <- kronecker
一般混合模型中的假定都是sigma参数化的:
这样随机效应的方差组分为sigma_g^2, 残差的方差组分为sigma_e^2.但是也有另一种表示方法,即gamma参数化。
一般,我们假定:
这样做的好处是方便指定初始值,只需要指定比例(比如根据遗传力推导)即可,很方便,这样,y的方差就变成了:
❝张勤. 动物遗传育种中的计算方法[M]. 科学出版社, 2007. 吴密霞. 线性混合效应模型引论[M]. 科学出版社, 2013.
❞
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-27 03:35
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社