修复 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 v3 的 mmer2()
拟合模型时?
我对修复单个组件特别感兴趣,无论它们是在我的混合模型的 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 的分量。
使用 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 v3 的 mmer2()
拟合模型时?
我对修复单个组件特别感兴趣,无论它们是在我的混合模型的 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 的分量。