查看随机效应值用
coef(asr)$random
,predict()
也会给出预测值,这2个都是预测值,有什么关系?
经查:coef(asr)$random
给出的是随机效应值(random.effect),没有标准误;predict()
给出的是+random.effect,有标准误和sed。
要注意,当时用家系(亲本)模型时,亲本的一般配合力(GCA)是+2*random.effect,所以推荐用单株模型,不容易搞错。这只是数值不同,对排名没有任何影响。
# 比较家系模型和个体模型亲本bv的一致性
library(asreml)
library(tidyverse)
hs <- asreml.read.table("./data/Rdata/op.csv", header=T, sep=',')
asr1 <- asreml(dbh10~1+Rep,
random = ~Mum,
data = hs)
hs_ped <- hs[,1:3]
hs_pedinv <- asreml.Ainverse(hs_ped)$ginv
asr2 <- asreml(dbh10~1+Rep,
random = ~ped(TreeID),
ginverse=list(TreeID=hs_pedinv),
data = hs)
bv1 <- coef(asr1)$random %>% as.data.frame()
bv2 <- coef(asr2)$random %>% as.data.frame()
bv1$Mum <- row.names(bv1)
bv2$Mum <- row.names(bv2)
bv2 <- bv2[1:44,]
bv2$Mum <- bv2$Mum %>% str_replace_all("ped\\(TreeID\\)", "Mum")
bv <- merge(bv1,bv2,by = "Mum")
pre1 <- predict(asr1, "Mum")
pre2 <- predict(asr2, "ped(TreeID)")
pbv1 <- pre1$predictions$pvals
# pbv1$predicted.value-bv1$effect
pbv2 <- pre2$predictions$pvals %>% .[1:44,]
# pbv2$predicted.value-bv2$effect