用sommer package中的mmer2()
拟合模型时-是否可以将方差分量固定为某个值,类似于我们可以使用{{ 3}}还是PARMS statement in SAS中的G.param
和R.param
自变量?
无论是在混合模型的G侧还是R侧,我都对固定单个组件特别感兴趣。
答案 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正确估计了分量。