8-方程的迭代求解的基本方法

常用的方程求解方法主要分为三种:
1 直接求逆,适合小数据,用来练习
2 MME的迭代计算,适合一般研究应用
3 数据迭代, 适合国家的遗传估计,上百万、千万的记录,如BLUP90IOD2。
先验共轭梯度迭代算法(PCG)用于奶牛(千万条数据)的遗传估计

1 直接求逆

直接所有的数据带入,进行求逆即可求解

2 线性方程的迭代求解

假设有:
Ab=r (1) A为pxp的系数矩阵,
A可以分解: A = M+ N (2); 实际M为aii的均值,N为- aij的矩阵,正对角线为0

(2)带入(1):
Mb = -Nb + r
b = Qb + f (3) 其中:Q = M-1N; f = M-1r
b(t+1) = Qbt + f, t = 0,1....
t趋近于正无穷时,有极限b, 称为迭代收敛, 且b为(1)的解

一般的迭代式:
bi(t+1) = [ri- sumi-1(aij*bjt) - sum(aijbjt)]/aii
bi(t+1) = bit+ [ri - sum(aijbjt)]/aii

矩阵形式:
b(t+1) = bi^t + D(-1)(r - Abt); D为A的中对角线元素构成的对角矩阵
这成为Jacobi迭代法。
使用时,需要(1)对固定效应,进行约束处理,每次更新一个效应(2)对于随机效应(animal-additive 或 dominance),需要拓展为second-order Jacobi

我们注意到,bi(t+1)计算时,只是利用了bit的数据, 并没有没有利用b1(t+1),...bi-1(t+1).

那利用bi-i^(t+1)等最新的值:
bit+1 = [ri- sumi-1(aijbjt+1) - sum(aijbjt)]/aii
这就成为高斯-赛德尔(Gauss-Seidel, GS)迭代法。
sum(aiib(t+1)) = ri - sum(aijbj(t))
矩阵: b^(t+1) = (L+D)^-1{r - [A - (L + D)b^t]} , 其中L是A中由对角线以下的元素(不含对角线)构成的下三角矩阵。
GS有时收敛速度很慢,此时就需要考虑逐次超松弛(successive over-relaxation , SOR)迭代法。
bi^(t+1) ^= bi^t + w[ri- sumi-1(aij
bjt+1) - sum(aijbjt)]/aii; 比一般的GS多了w,其为松弛因子, 适当的w可以加快收敛速度, 一般为 1 < w< 2。 当w=1时,其又变成GS

3 PCG(先验共轭梯度迭代算法)

image.png

优点:是在复杂模型和大量数据时,收敛速度比两种快;
缺点:不能自己修正,并且如果大量数据不是双精度,会发生偏移

收敛

常用的收敛标准:
max(1<i<p)|b(t+1)-bt| < e

[sum(b(t+1) - bt)2] / [sum(bt+1)2] < e
e为设定的一个很小的值,REMLF90,一般设定为10^-11次方,即两次解的相差小于这个值

GS比Jacobi法收敛的快些,因为其使用(L+D)接近了D,更接近A,故其收敛速度更快。
GS(SOR)收敛的的一个充分条件是:方程组的系数矩阵是正定矩阵(所有的特征值为正)或半正定矩阵。混合方程组往往是这样的
Jacobi则需要系数矩阵是对角优势均值(每一行中,均有对角线元素大于所有非对角线元素的值)。混合方程组多于一个固定效应时不是这样的,尤其是animal model。

4 混合模型的迭代求解

4.1 直接法

其是直接计算出LHS 和RHS的各个元素,再储存起来,然后使用GS等方法迭代求解,也称为对方程组迭代(iteration on equations)。但是存在内存中,会占用较大的运作内存,也可以存在硬盘中,但读取的次数太多,会减慢计算速度,编程也较难。存在硬盘时,需要将每个元素进行行号和列号的标记,方便读取。

按效应分块迭代求解

将方程的对角线上元素分别写成单个方程,分别迭代求解。

4.2 间接法

不建立方程组,对模型中不同效应的每个水平建立相应方程,在每次迭代中读入观察值数据文件和系谱文件,并计算方程组的解,故又称为数据文件迭代(iteration on data)。
读取次数会减少,并且编程简单。

一般来说,GS所需要的迭代次数少于Jacobi, 但是其需要的读写的次数多于后者。
所以血缘相关的因子用Jacobi法,对其他因子用GS法或SOR

总结

当系数矩阵可以存储在内存中并且简单性很重要时,GS和SOR迭代是选择的方法。 这通常需要100-1000字节/等式的内存。 对于更简单的模型,通过对Jacobi进行修改来对数据进行迭代将是下一个选择,其内存需求为12-16字节/等式。 但是,如今的选择方法似乎是PCG。 尽管看似复杂的代码,但PCG非常易于实现,因为唯一的计算密集型操作是Ax或Ap,尤其是对于带有矢量指令的Fortran 90。 带有对角前置条件调节器的PCG可用于所有尝试的模型,包括多重性状,随机回归,母性效应和优势。 收敛速度与J或SOR一样好或更好。 另外,没有要确定的加速度参数。 PCG的一个缺点是它需要更多的内存:36-56字节/等式,但这已不再是一个问题。

此部分来自张勤老师写的书和blupf90团队培训课件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355