修复 sommer 的 mmer2 中的方差分量?

Fix variance components in sommer's mmer2?

使用 sommer package - is it possible to fix variance components to a certain value similar to what we can do e.g. with the PARMS statement in SAS or the G.param and R.param arguments in ASReml-R v3mmer2() 拟合模型时?

我对修复单个组件特别感兴趣,无论它们是在我的混合模型的 G 侧还是 R 侧。

如果你有 sommer >= 3.7,可以使用 vs() 函数中的 Gt(初始值)和 Gtc(约束)参数来强制特定方差或协方差分量,该函数用于指定方差模型随机效应。

例如,假设您适合以下两个特征的多元混合模型:

library(sommer)
data(DT_cpdata)
#### create the variance-covariance matrix for id levels
A <- A.mat(GT) # additive relationship matrix
D <- D.mat(GT) # additive relationship matrix
#### look at the data and fit the model
DT$idd <- DT$id
head(DT)
ans.m <- mmer(cbind(Yield,color)~1,
               random=~ vs(id, Gu=A)
               + vs(Rowf,Gtc=diag(2)),
               rcov=~ vs(units),
               data=DT)

在此模型中,有 2 个随机效应(id 和 Rowf)和一个单位残差项。默认情况下,安装了一个非结构化方差模型(即单位和 id),但您可以看到对于 Rowf,Gtc 参数是如何成为 Rowf 的对角线模型的约束矩阵:

> diag(2)
     [,1] [,2]
[1,]    1    0
[2,]    0    1 

遵循以下规则: 0:不可估计 1:估计和约束为正 2:估计和无约束 3:Gt

中提供的固定方差-协方差分量

之后很容易看出,如果你想强制某些方差分量,你必须提供初始值(Gt 参数)并指定一个值为 3 的约束矩阵(函数 fixm() 可以创建这样的矩阵)。

ans.mf <- mmer(cbind(Yield,color)~1,
              random=~ vs(id, Gu=A, Gt=ans.m$sigma_scaled$id,Gtc=fixm(2))
              + vs(Rowf,Gt=ans.m$sigma_scaled$Rowf, Gtc=fixm(2))
              + vs(idd, Gu=D),
              rcov=~ vs(units, Gt=ans.m$sigma_scaled$units, Gtc=fixm(2)),
              data=DT)

ans.m$sigma
ans.mf$sigma

如果您检查结果,您会发现您已强制使用 id、Rowf 和 units 的方差分量,并正确估计了 idd 的分量。