我在线性混合模型中有两个因素。因子 A 被视为固定效应,因子 B 被视为随机效应并嵌套在因子 A 中。谁能告诉我如何使用 nlme R 包做到这一点?
我知道这lme( response~ factorA, random=~1|factorA/factorB)
是一种建模方式。但是,此函数将因子 A 视为随机效应。
我在线性混合模型中有两个因素。因子 A 被视为固定效应,因子 B 被视为随机效应并嵌套在因子 A 中。谁能告诉我如何使用 nlme R 包做到这一点?
我知道这lme( response~ factorA, random=~1|factorA/factorB)
是一种建模方式。但是,此函数将因子 A 视为随机效应。
这取决于变量的编码方式。中的变量可能有不同的名称factorB
,如下所示;那么仅仅具有factorB
随机效应就足够了。
factorA factorB
bob bob1
bob bob2
bob bob3
jane jane1
jane jane2
jane jane3
lme(response ~ factorA, random=~1|factorB)
但是你可能factorB
对每个级别的变量都有相同的编码factorA
,就像这样;那么仅仅具有factorB
随机效应是不正确的;相反,您需要随机效应作为它们之间的交互,我认为使用代码:
会起作用,但是创建一个新变量可能更具可读性。
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)
看来您的数据结构使得对个人的观察嵌套在由 标识的组中factorB
。这些组进一步嵌套在由 标识的更大的组中factorA
。您不希望此层次结构的最高级别拥有自己的随机截距项。相反,您只需使用作为固定效应包含的因素来模拟变化。美好的。然后剩下的就是让截距在factorB
. 这正是DWin 所建议的。
lme(response ~ factorA, random=~1|factorB)
但是,这是否真的是您想要的并不完全清楚。从您写的问题中也不清楚您的数据的真实结构是什么。如果您更新问题,我将更新此答案以适应。