The R script below illustrates the nested versus non-nested (crossed) random effects functionality in the R packates lme4 and nlme. Note that crossed random effects are difficult to specify in the nlme framework. Thus, I’ve included a back-of-the-envelope (literally a scanned image of my scribble) interpretation of the ‘trick’ to specifying crossed random effects for nlme functions (i.e., nlme and lme).
## This script illustrates the nested versus non-nested ## random effects functionality in the R packages lme4 (lmer) ## and nlme (lme). library("lme4") library("nlme") data("Oxide") Oxide
The image below is my interpretation of the nlme (lme) trick for non-nested (crossed) random effects. The idea is to assign a random slope (no intercept) to each level of the grouping factors, which are each indexed by the levels of a dummy variable with that has exactly one level. The pdIdent function ensures that these random effects are uncorrelated and common variance. The pdBlocked function specifies that the random effects are also independent across the two grouping factors.