1. 混合线性模型公式和假定 混合线性模型的公式和假定,一般认为随机因子和残差是符合正态分布的,随机因子可以相关(比如系谱关系,SNP构建G矩阵关系),用A矩阵或者G矩阵表示,残差是独立同分布的,矩阵结构一般是单位矩阵。
举个栗子:
比如这里不同场的一些个公牛(Sire)的体重(y),如果要分析这个数据,公牛作为随机因子,模型为:
这里:
如果公牛之间没有亲缘关系,那么他们之间的亲缘关系矩阵是单位矩阵,它的分布为:
残差的分布为:
那么G矩阵(随机因子)和R矩阵(残差)为:
如果,公牛之间是由亲缘关系A的,那么:
这里b为固定因子的效应值,加入固定因子有多个,场,年,季,性别等等,那么b 可以分解为:[b1, b2, b3,...]
X为固定因子对应的矩阵,X也可以分解为:[X1,X2,X3...]
同样的道理,随机因子和随机因子的矩阵,也可以剖分为类似的形式,比如动物模型中,除了加性效应,还可以有母体效应,永久环境效应,窝别效应作为随机因子。
3. 直和和直积
3.1 概念解释
多个随机因子时,如果他们之间是独立的,那么整个随机因子的矩阵由每个随机因子的矩阵构成,他们之间的关系是直和。
如果随机因子之间,是有相关的,比如母体效应和加性效应,有时会有协方差的关系,那么他们之间的关系就是直积。
直和(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参数化的:
也就是,需要计算Vg和Ve的方差组分,sigma。
gamma参数化,是直接是Vg/Ve,因此只需要计算Ve,然后根据gamma,就可以计算Vg,因为:Vg = gamma*Ve。
我们假定:
这样做的好处是方便指定初始值,只需要指定比例(比如根据遗传力推导)即可,很方便,这样,y的方差就变成了:
asreml中,在固定初始值,要制定gamma参数化,一般我们在分析时,都是用的是sigma参数。混合线性模型,可以根据直接方法,也可以根据MME间接方法,在求解之前,需要知道随机因子和残差的方差组分,这就需要用REML方法。