glmer
包装内或包装内随机效应的默认方差-协方差结构是lmer
什么lme4
?如何为代码中的随机效应指定其他方差协方差结构?我在文档中找不到有关此的任何信息lme4
。
lme4中随机效应的方差-协方差结构
默认的方差-协方差结构是非结构化的——也就是说,对于向量随机效应,方差-协方差矩阵的唯一约束是水平是肯定的。但是,单独的随机效应项被认为是独立的,因此,如果您想拟合(例如)具有随机截距和斜率的模型,其中截距和斜率不相关(不一定是个好主意),您可以使用公式(1|g) + (0+x|g)
,g
其中分组因素;第二0
项中的 抑制截距。如果您想拟合分类变量的独立参数(同样,可能有问题),您可能需要手动构建数字虚拟变量。您可以通过将因子视为嵌套分组变量来构建复合对称方差协方差结构(尽管仅具有非负协方差)。例如,如果f
是一个因素,那么(1|g/f)
将假设 的水平之间具有相等的相关性f
。
对于其他/更复杂的方差-协方差结构,您的选择(在 R 中)是(1)使用nlme
(具有pdMatrix
允许更大灵活性的构造函数);(2) 使用MCMCglmm
(提供多种结构,包括非结构化、复合对称、具有不同方差的同一性或具有齐次方差的同一性);(3) 使用一个特殊用途的包,例如pedigreemm
构造一个特殊的结构化矩阵。flexLambda
github上有一个分支,最终希望在这个方向提供更多的能力。
我可以举例说明这一点。
协方差项在与固定效应和随机效应相同的公式中指定。协方差项由公式的编写方式指定。
例如:
glmer(y ~ 1 + x1 + (1|g) + (0+x1|g), data=data, family="binomial")
这里有两个允许随机变化的固定效应和一个分组因子g
。因为这两个随机效应被分成它们自己的项,所以它们之间不包含协方差项。换言之,仅估计方差-协方差矩阵的对角线。第二项中的零明确表示不要添加随机截距项或允许现有随机截距随 变化x1
。
第二个例子:
glmer(y ~ 1 + x1 + (1+x1|g), data=data, family="binomial")
这里指定了截距和x1
随机效应之间的协方差,因为 1+x1|g 都包含在同一个项中。换句话说,方差-协方差结构中的所有 3 个可能参数都被估计了。
一个稍微复杂一点的例子:
glmer(y ~ 1 + x1 + x2 + (1+x1|g) + (0+x2|g), data=data, family="binomial")
这里允许截距和x1
随机效应一起变化,而在x2
随机效应和其他两个效应之间施加零相关性。再次将 a0
包含在x2
随机效应项中只是为了明确避免包含与随机效应共变的随机截距x2
。