R 如何在nlme包中建模嵌套随机效应
在线性混合模型中有两个因素。因子A被视为固定效应,因子B被视为随机效应并嵌套到因子A中。有人能告诉我如何使用nlme R包来实现这一点吗R 如何在nlme包中建模嵌套随机效应,r,R,在线性混合模型中有两个因素。因子A被视为固定效应,因子B被视为随机效应并嵌套到因子A中。有人能告诉我如何使用nlme R包来实现这一点吗 我知道lme(response~factorA,random=~1 | factorA/factorB)是建模的一种方法。然而,该函数将因子A视为随机效应 您的数据结构似乎使个体的观察结果嵌套在由factorB确定的组中。这些组进一步嵌套在由factorA标识的较大分组中。您不希望此层次结构的最高级别具有自己的随机截取项。取而代之的是,您只需将包含因子的变化建
我知道
lme(response~factorA,random=~1 | factorA/factorB)
是建模的一种方法。然而,该函数将因子A视为随机效应 您的数据结构似乎使个体的观察结果嵌套在由factorB
确定的组中。这些组进一步嵌套在由factorA
标识的较大分组中。您不希望此层次结构的最高级别具有自己的随机截取项。取而代之的是,您只需将包含因子的变化建模为固定效应。好的然后剩下的就是允许截距在factorB
之间变化。这正是德温所建议的
lme(response ~ factorA, random=~1|factorB)
然而,这是否真的是你想要的还不完全清楚。从你所写的问题中也不清楚你的数据的真实结构是什么。如果您更新了问题,我将更新此答案以适应。这取决于变量的编码方式。
factorB
中的变量可能有不同的名称,如下所示;那么,仅仅将因子b
作为随机效应就足够了
factorA factorB
bob bob1
bob bob2
bob bob3
jane jane1
jane jane2
jane jane3
lme(response ~ factorA, random=~1|factorB)
但是对于factorA
的每个级别,您可能会对factorB
中的变量使用相同的编码,如下所示;那么仅仅把因子b作为随机效应是不正确的;相反,您需要随机效果作为它们之间的交互,我认为使用:
的代码可以工作,但创建新变量可能更具可读性
factorA factorB
bob rep1
bob rep2
bob rep3
jane rep1
jane rep2
jane rep3
lme(response ~ factorA, random=~1|factorA:factorB)
dat$factorAB <- with(dat, factor(paste(factorA, factorB), sep="."))
lme(response ~ factorA, random=~1|factorAB)
factorA factorB
鲍勃·雷普1
鲍勃·雷普2
鲍勃·雷普3
简·雷普1
简·雷普2
简·雷普3
lme(响应~factorA,随机=~1 | factorA:factorB)
dat$factorAB为什么不这样:lme(response~factorA,random=~1 | factorB)
?因子B嵌套在因子A中。对,但这与将因子A指定为随机有什么不同?没有人将任何因子指定为随机。只有截距被指定为某个因子的随机截距。如果你想让截距在factorB
的各个级别上随机出现,那么DWin的第一个建议似乎是合理的。也许你需要用英语更清楚地描述一下你的研究,这样就不是一个猜测游戏。我认为dat$factorAB也可以,如果factorB
唯一地标识每个数据点(我承认我们不知道),然后允许一个参数在该因子上变化就是复制剩余误差项(即,可能不允许)。关于@Ndogan的第一个注释::
和粘贴
的结果非常相似,尽管:
将为这两个组合的每一个组合设置级别,即使这两个组合不存在。我认为在公式中使用:
是可行的,但是应该检查任何额外的级别是否会导致问题,还要确保公式机制适当地处理:
。@Ndogan的第二个评论是正确的:我的示例数据集应该为每个组合包含多行,否则,随机效果是不必要的,取决于软件,将失败。谢谢,这回答了我的问题。