R统计

如何计算效应值(例如育种值)的准确性(accuracy)?

2017-12-05  本文已影响69人  董八七

准确性指的是预测效应值与真值之间的相关系数。有时还会遇见一个概念——可靠性(reliability)。可靠性是准确性的平方,也就是说这二者度量的是一个事情。reliability其实就是遗传力,这句很重要!!!。遗传力主要用来计算选择响应(response to selection)。advisor说我的文章句子太多,不连贯,确实是这样LOL。
准确性的计算公式为:

公式1-accuracy.png
PEV是prediction error variances的缩写,意思是预测误差方差,预测误差是预测值与真值间的差,即:
公式2-pev.png
简书不支持公式真是淡疼!
\sigma a^2是加性方差。

预测差值的标准误(SED)是可以从Asreml中直接得到的,与PEV的关系是:

公式3-sed.png
我不知道上面这个公式怎么推导的。
所以有
公式4-pev2.png

在很长时间里我不知道(或者说模糊地知道)accuracy是怎么实现的。我知道公式,但在软件里分别和公式组分对应的部分是什么却不是很清楚,当然写这篇文字的时候是确定的。具体实现的途径有2:

fm_pred <- predict(fm_asr, classify = "Fam") #fm_asr是asreml()输出的对象, Fam是随机效应变量
SED <- fm_pred$predictions$avsed
fm_pred <- predict(fm_asr, classify = "Fam", present = "Plot") #注意!这里预测的时候是要矫正掉其他的随机效应(如Plot)
SE <- fm_pred$predictions$pvals$standard.error
PEV <-  SE^2 %>% mean

这里的PEV是一个向量,对应到每个水平上。
所以,总体上,PEVSEDSE的关系是

公式5-pev4.png

另外,在林元震老师的著作R与ASReml-R统计学中(P474)也涉及到accuracy的代码

SE <- fm_asr$vcoeff$random * fm_asr$sigma2 #效应值se乘以sigma

结果是一样的,但不知道是否合理。


如果没有Asreml可能需要更底层的计算(比如手动),这时PEV的计算更直观些:

公式6-pev3.png
于是有 公式7-reliability.png
C^{22}是方程组关联矩阵的逆矩阵的右下角块,d_i是块中的对角线元素。具体可查看Pro. Isik编写的教材P84Mrode, 2014的书P44

PEV就可以得到我们需要的准确性和可靠性值了。


这个问题在群中还被讨论过


accuracy_chat.jpg
上一篇下一篇

猜你喜欢

热点阅读