expandDoubleVerts: Expand terms with "||" notation into separate "|" terms

Description Usage Arguments Value Note See Also Examples

View source: R/utilities.R

Description

From the right hand side of a formula for a mixed-effects model, expand terms with the double vertical bar operator into separate, independent random effect terms.

Usage

1

Arguments

term

a mixed-model formula

Value

the modified term

Note

Because || works at the level of formula parsing, it has no way of knowing whether a variable is a factor. It just takes the terms within a random-effects term and literally splits them into the intercept and separate no-intercept terms, e.g. (1+x+y|f) would be split into (1|f) + (0+x|f) + (0+y|f). However, || will fail to break up factors into separate terms; the dummy function can be useful in this case, although it is not as convenient as ||.

See Also

formula, model.frame, model.matrix, dummy.

Other utilities: mkRespMod, mkReTrms, nlformula, nobars, subbars

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
  m <- ~ x + (x || g)
  expandDoubleVerts(m)
  set.seed(101)
  dd <- expand.grid(f=factor(letters[1:3]),g=factor(1:200),rep=1:3)
  dd$y <- simulate(~f + (1|g) + (0+dummy(f,"b")|g) + (0+dummy(f,"c")|g),
          newdata=dd,
          newparams=list(beta=rep(0,3),
                         theta=c(1,2,1),
                         sigma=1),
          family=gaussian)[[1]]
  m1 <- lmer(y~f+(f|g),data=dd)
  VarCorr(m1)
  m2 <- lmer(y~f+(1|g) + (0+dummy(f,"b")|g) + (0+dummy(f,"c")|g),
               data=dd)
  VarCorr(m2)

Example output

Loading required package: Matrix
~x + ((1 | g) + (0 + x | g))
theta parameter vector not named: assuming same order as internal vector
beta parameter vector not named: assuming same order as internal vector
 Groups   Name        Std.Dev. Corr         
 g        (Intercept) 0.95687               
          fb          1.97293   0.106       
          fc          0.96425   0.109 -0.086
 Residual             1.02172               
 Groups   Name          Std.Dev.
 g        (Intercept)   0.98657 
 g.1      dummy(f, "b") 2.00636 
 g.2      dummy(f, "c") 0.99616 
 Residual               1.01771 

lme4 documentation built on June 22, 2021, 9:07 a.m.