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

时间:2018-11-14 15:11:44

标签: r mixed-models

sommer package中的mmer2()拟合模型时-是否可以将方差分量固定为某个值,类似于我们可以使用{{ 3}}还是PARMS statement in SAS中的G.paramR.param自变量?

无论是在混合模型的G侧还是R侧,我都对固定单个组件特别感兴趣。

1 个答案:

答案 0 :(得分:1)

如果您的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和单位强制使用了方差分量,并对idd正确估计了分量。