随机效应变量是否自动作为R中的lmer(或lme)中的因子?

我理解在混合效果模型中将连续或数字变量作为随机效应没有多大意义(例如,参见
here).

但我想知道的是,如果R中的lme4 :: lmer或nlme :: lme有意阻止你这样做……

具体来说,我要问的是:如果我将lmer(或lme)任何非因子(非分类)变量作为随机效应提供,该函数是否会自动将其视为一个因素?

直接将因子()插入到lmer中(这是使用lm时的常用方法)会产生以下错误:

lmer(y ~ z + (1|factor(x)), data = dat)
Error: couldn't evaluate grouping factor factor(x) within model frame: try adding grouping factor to data frame explicitly if possible

虽然上述错误提到直接向数据添加分组因子,但它没有说明所述分组因子是否需要是一个因素(或者是否可能隐含在单词选择中)?

我理解直接从我的数据创建一个新的因子类变量是相当简单的,但我只是好奇它是否真的有必要使用lmer(或lme).

最佳答案 这似乎并不重要.

library(lme4)

sl <- sleepstudy
sl$Subject <- as.numeric(levels(sl$Subject))[sl$Subject]

## subject as factor
m1 <- lmer(Reaction ~ Days + (1|Subject), data = sleepstudy)

## subject as numeric
m2 <- update(m1, data = sl)

all.equal(VarCorr(m1), VarCorr(m2))
# TRUE

检查对象的其余部分,调用是不同的(这是有道理的,我称数据框不同),框架是不同的(由于主题中的数字与因子的差异).其他一切都是一样的.

all.equal(m1, m2)
#[1] "Attributes: < Component “call”: target, current do not match when deparsed >"     
#[2] "Attributes: < Component “frame”: Component “Subject”: 'current' is not a factor >"

分组因子在mkBlist()内受到factorize()的影响,在mkReTrms()内调用,这为随机效应创建了模型矩阵. factorize()是一个帮助器,最终在随机效果公式中的右侧术语上调用因子(x)(取决于它是否已经是一个因素等)

点赞