R 如何在nlme包中建模嵌套随机效应

R 如何在nlme包中建模嵌套随机效应,r,R,在线性混合模型中有两个因素。因子A被视为固定效应,因子B被视为随机效应并嵌套到因子A中。有人能告诉我如何使用nlme R包来实现这一点吗 我知道lme(response~factorA,random=~1 | factorA/factorB)是建模的一种方法。然而,该函数将因子A视为随机效应 您的数据结构似乎使个体的观察结果嵌套在由factorB确定的组中。这些组进一步嵌套在由factorA标识的较大分组中。您不希望此层次结构的最高级别具有自己的随机截取项。取而代之的是,您只需将包含因子的变化建

在线性混合模型中有两个因素。因子A被视为固定效应,因子B被视为随机效应并嵌套到因子A中。有人能告诉我如何使用nlme R包来实现这一点吗


我知道
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的第二个评论是正确的:我的示例数据集应该为每个组合包含多行,否则,随机效果是不必要的,取决于软件,将失败。谢谢,这回答了我的问题。