[R-sig-ME] New afex version (0.14-2): || notation works with factors

Henrik Singmann singmann at psychologie.uzh.ch
Wed Aug 19 11:20:36 CEST 2015

Dear list,

I have released a new version of afex (0.14-2) to CRAN with several new 
features which may be of interest. It should appear on your CRAN mirror 
soon if it is not already there.

The most important feature for this audience is perhaps that afex can 
now correctly suppress the estimation of correlations among factor 
random slopes using the "||" notation. This is achieved by first 
creating the model matrix for the random factors and then passing the so 
created numerical variables instead of the original factors. For 
convenience, I have created a wrapper function, lmer_alt(), which 
expands the random effects in such a way but otherwise behaves like lmer 
(or glmer if a family argument is passed). That also means it does not 
enforce a specific factor coding (in contrast to the other afex 
functions that per default use sum-to-zero contrasts).
The following example (from Reinhold Kliegl, 
https://rpubs.com/Reinhold/22193) shows this:

data("Machines", package = "MEMSS")
contrasts(Machines$Machine) <- contr.treatment(3)
m1a <- lmer(score ~ Machine + (Machine|Worker), Machines, REML=FALSE)
## Groups   Name        Std.Dev. Corr
## Worker   (Intercept) 3.71695
##          Machine2    5.35595   0.488
##          Machine3    3.35308  -0.363  0.296
## Residual             0.96158
m1b <- lmer(score ~ Machine + (Machine||Worker), Machines, REML=FALSE)
## Groups   Name        Std.Dev. Corr
## Worker   (Intercept) 0.49674
## Worker.1 MachineA    3.68361
##          MachineB    7.85482  0.805
##          MachineC    3.96965  0.618 0.772
## Residual             0.96158
m1c <- lmer_alt(score~Machine+(Machine||Worker), Machines, REML=FALSE)
## Groups   Name         Std.Dev.
## Worker   (Intercept)  3.71176
## Worker.1 re1.Machine2 5.36912
## Worker.2 re1.Machine3 3.30637
## Residual              0.96257

As can be seen, lmer_alt behaves like one would be expect and not like 
lmer. This behavior can also be activated for the afex mixed() function 
by setting expand_re = TRUE.

Furthermore, afex is now fully integrated with lsmeans for all types of 
follow-up tests and contrasts. This is particularly noteworthy for the 
ANOVA functions (which have been renamed to aov_ez, aov_car, and aov_4) 
which now return per default an object of class "afex_aov". This object 
contains the ANOVA estimated with both car::Anova (for correct Type 
II/II tests) and stats::aov (for follow-up tests) and can be directly 
passed to lsmeans. This means one can directly run any type of post-hoc 
tests/contrasts on ANOVA independent of whether or not these tests 
relate to between- or within-factors or a mix thereof. The new vignette 
shows this in detail:

The full list of changes is available here:

afex has also moved to github now (where all the cool kids are) so I am 
happy for any comments there (https://github.com/singmann/afex), here, 
or per mail.


PS: Due to a bug in the current CRAN version of stringi the following 
warning message appears regularly in afex, but can be safely ignored:
In stri_c(..., sep = sep, collapse = collapse, ignore_null = TRUE) :
   longer object length is not a multiple of shorter object length

Updating stringi from github (https://github.com/Rexamine/stringi/) 
removes this warning.

More information about the R-sig-mixed-models mailing list