使用非结构化方差的Sommer的mmer函数:奇异点到达快,负方差在

bprjcwpo  于 2023-04-09  发布在  其他
关注(0)|答案(1)|浏览(216)

因此,我正在分析4种环境下的水稻育种系的多地点试验。简化数据如下:
https://drive.google.com/file/d/1jilVXX8JMkZCDVtIRmrwzB55kgR2GtYB/view?usp=sharing
我在sommer上运行了一个简单的非结构化方差模型。我已经在lme 4和nlme上做过了,但我想坚持使用sommer。模型是:

m3 <- mmer(RDM ~ ENV ,
              random=~ vsr(usr(ENV),GEN),
              rcov=~ units,
              data=d)

很简单,不是吗?然而,很快我就得到了错误:

System is singular (V). Stopping the job. Try a bigger number of tolparinv.

所以,好吧,我尝试了一个更大的tolparinv数(因为我不能做一个更简单的模型)。但是使函数工作的最小数字是1000。所以,我的问题是:这意味着什么?
而且,假设这样运行模型是可以的,现在发生的是,我的许多方差分量是负的,这没有多大意义。
有人能解释一下吗?所以,具体的问题是:

  • 为什么奇点来得如此之快?
  • 如果我增加这么多托帕林会发生什么?
  • 所以我的方差是负的吗?
  • 最重要的是:能修好吗怎么修

谢谢你!

y53ybaqx

y53ybaqx1#

非结构化模型由于协方差参数众多,且在REML过程中很可能获得非满秩协方差矩阵,因此往往存在收敛问题和奇异性。您可能需要尝试降秩因子分析模型,以保证收敛并提高速度。常规US模型如下所示

library(sommer)
data(DT_example)
DT <- DT_example
A <- A_example
head(DT)
DT=DT[with(DT, order(Env)), ]
ans2us <- mmec(Yield~Env,
             random= ~ vsc(usc(Env),isc(Name)),
             rcov= ~ vsc(dsc(Env),isc(units)),
             data=DT)
plot(ans2us$llik[1,])
summary(ans2us)$varcomp
pp <- predict(ans2us, D="Name")
pp$pvals

FA实现如下所示

# less accurate but is guaranteed to converge
M <- with(DT, rrc(Env, Name, Yield, nPC=2))
ans2fa <- mmec(Yield~Env,
              random= ~ vsc(usc( M ),isc(Name)),
              rcov= ~ vsc(dsc(Env),isc(units)),
              nIters = 100,
              data=DT)
summary(ans2fa)$varcomp
plot(ans2fa$llik[1,])
ppfa <- predict(ans2fa, D="Name")

Lam <- with(DT, rrc(Env, Name, Yield, nPC=2, returnLam = TRUE))$Lam
scores <- ans2fa$uList[[1]]
BLUP <- scores %*% t(Lam) # environment specific predictions

# highly correlated predictions
plot(pp$pvals$predicted.value, ppfa$pvals$predicted.value)

干杯

相关问题