固定效应因子标签的 mixed() 与 lmer() 输出:数字与字符

mixed() vs lmer() output for fixed effect factor labels: numeric vs character

我注意到,当使用lme4包中的lmer函数指定一个包含因子类型预测变量的模型时,表示预测变量水平的后缀是一个字符串该因素水平,就像这里的治疗情况一样:

library(afex)

data(obk.long)

m1 <- lmer(value ~ treatment + (1|id), obk.long)
summary(m1)

Fixed effects:
        Estimate Std. Error t value
(Intercept)    4.200      0.654    6.43
treatmentA     2.050      0.980    2.09
treatmentB     1.800      0.856    2.10

但是在afex包中使用mixed函数时,后缀为数字:

m2 <- mixed(value ~ treatment + (1|id), obk.long)
summary(m2$full.model) # this should be the same as the lmer output... it's er, not

Fixed effects:
            Estimate Std. Error t value
(Intercept)    5.483      0.375   14.62
treatment1    -1.283      0.532   -2.41
treatment2     0.767      0.565    1.36

有谁知道是什么导致了预测变量标签水平后缀的差异and/or 固定效应的差异?

afex 将分类预测变量的对比度编码默认设置为总和对比度(使用 mixed 时在消息中提到),而 [=13= 中指定的模型] 调用使用 R 的全局选项中的对比度设置。

options('contrasts')
##$contrasts
##        unordered           ordered 
##"contr.treatment"      "contr.poly" 

obk2 <- obk.long
contrasts(obk2$treatment) <- "contr.sum"

# Or alternatively, set the global option with something like:
# options(contrasts=c('contr.sum', 'contr.poly'))

m_contr <- lmer(value ~ treatment + (1|id), obk2)

summary(m_contr)$coefficients # fixed effects only for brevity
##              Estimate Std. Error   t value
##(Intercept)  5.4833333  0.3751349 14.616966
##treatment1  -1.2833333  0.5321163 -2.411753
##treatment2   0.7666667  0.5645823  1.357936

all.equal(summary(m2)$coefficients, summary(m_contr)$coefficients)
##[1] TRUE