1 Overview

There really is no good reason I can think of to switch reference (base) levels for a contrast in the context of a hierarchical sequence of LMMs or the change the order of factor levels. So, in this sense, The exercise in this RPub is a bit of a silly exercise. Moreover, for the maximum LMM the choice of contrasts and the order of factor levels is irrelevant; they are mathematically equivalent reparameterizations of the same LMM. And, of course, estimates of variance parameters (VPs) and correlation parameters (CPs) in the random-effect structure do depend on type of contrast and the order of levels of the group factor.

However, when we reduce model complexity, mathematical equivalence at different levels of model complexity will be lost, because for reduced models goodness-of-fit depends on the specific VP(s) or CP(s) that are no longer in the LMM. In other words, as soon as we remove one or several VPs or CPs from the model, the mathematical equivalence may no longer hold. Thus, the above model sequences make only sense if the same contrast and the same ordering of factor levels holds for all models in a sequence.

Thus, we cannot change the order of factor levels or the base or reference levels within a specific type of contrast when we move within model sequences such as the ones determined in the previous RPubs and reproduced here.

(1a) RE1: max_LMM -> prsm1_LMM -> zcp_LMM -> prsm2_LMM -> min1_LMM  
(1b) RE0: max_LMM_RE0 -> prsm1_LMM_RE0 -> zcp_LMM_RE0 -> prsm2_LMM_RE0 -> min1_LMM

(2a) max_LMM -> int_LMM -> min1_LMM 
(2b)                    -> min2_LMM 

(3a)         -> fm5     -> min1_LM
(3b)                    -> min2_LM

This script demonstrates the effects of re-ordering factor levels and different reference (base) levels for treatment, sum, and sliding contrasts for model sequence (1a).

2 Setup

The demonstration uses the Machines data which are part of the MEMSS package [efficiency scores of 6 workers (random factor) tested 3 times on each of 3 machines (fixed factor) ].

knitr::opts_chunk$set(echo = TRUE)
suppressMessages(library("lme4"))
library("RePsychLing")
library(sjPlot)
## Install package "strengejacke" from GitHub (`devtools::install_github("strengejacke/strengejacke")`) to load all sj-packages at once!
suppressMessages(library("tidyverse"))
library(modelr)

3 Numeric covariates

data("Machines", package = "MEMSS")
Machines <- Machines[do.call(order, Machines), ] # reorder by Worker, then Machine

# Extract numeric covariates for treatment contrasts
## ...  with reference A
contrasts(Machines$Machine) <- contr.treatment(3, base=1)
mm1a <- model.matrix(~ 1 + Machine, Machines)
dBA <- mm1a[, 2]
dCA <- mm1a[, 3]

## ...  with reference B
contrasts(Machines$Machine) <- contr.treatment(3, base=2)
mm1b <- model.matrix(~ 1 + Machine, Machines)
dAB <- mm1b[, 2]
dCB <- mm1b[, 3]

## ...  with reference C
contrasts(Machines$Machine) <- contr.treatment(3, base=3)
mm1c <- model.matrix(~ 1 + Machine, Machines)
dAC <- mm1c[, 2]
dBC <- mm1c[, 3]

# Extract numeric covariates for sum contrasts
## ... leave out C - default order A-B-C
contrasts(Machines$Machine) <- contr.sum(3)
mm1d <- model.matrix(~ 1 + Machine, Machines)
dA_M <- mm1d[, 2]
dB_M <- mm1d[, 3]

## ... leave out B
Machines$Machine <- factor(Machines$Machine, levels=c("A", "C", "B"))
contrasts(Machines$Machine) <- contr.sum(3)
mm1e <- model.matrix(~ 1 + Machine, Machines)
dC_M <- mm1e[, 3]

# Extract numeric covariates for sliding contrasts
## ... order A-B-C - default
Machines$Machine <- factor(Machines$Machine, levels=c("A", "B", "C"))
contrasts(Machines$Machine) <- MASS::contr.sdif(3)
mm1f <- model.matrix(~ 1 + Machine, Machines)
dB_A <- mm1f[, 2]
dC_B <- mm1f[, 3]

## ... order A-C-B
Machines$Machine <- factor(Machines$Machine, levels=c("C", "A", "B"))
contrasts(Machines$Machine) <- MASS::contr.sdif(3)
mm1g <- model.matrix(~ 1 + Machine, Machines)
dA_C <- mm1g[, 2]

# set back to default order of levels and contrast
Machines$Machine <- factor(Machines$Machine, levels=c("A", "B", "C"))
contrasts(Machines$Machine) <- contr.treatment(3)

4 Treatment contrasts

# max_LMM 
# ... base = A
m1a <- lmer(score ~ 1 + Machine + (1 + dBA + dCA | Worker), Machines, REML=FALSE)
#  ... base = B
m1b <- lmer(score ~ 1 + Machine + (1 + dAB + dCB | Worker), Machines, REML=FALSE)
#  ... base = C
m1c <- lmer(score ~ 1 + Machine + (1 + dAC + dBC | Worker), Machines, REML=FALSE)


# prsm1_LMM
# ... base = A
m2a <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dBA + dCA | Worker), Machines, REML=FALSE)
# ... base = B
m2b <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dAB + dCB | Worker), Machines, REML=FALSE)
# ... base = C
m2c <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dAC + dBC | Worker), Machines, REML=FALSE)

# zcp_LMM
# ... base = A
m3a <- lmer(score ~ 1 + Machine + (1 + dBA + dBA || Worker), Machines, REML=FALSE)
# ... base = B
m3b <- lmer(score ~ 1 + Machine + (1 + dAB + dCB || Worker), Machines, REML=FALSE)
# ... base = C
m3c <- lmer(score ~ 1 + Machine + (1 + dAC + dBC || Worker), Machines, REML=FALSE)

# prsm2_LMM
# ... base = A
m4a <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dBA || Worker), Machines, REML=FALSE)
# ... base = B
m4b <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dCB || Worker), Machines, REML=FALSE)
# ... base = C
m4c <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dAC || Worker), Machines, REML=FALSE)
# min1_LMM
m5 <- lmer(score ~ 1 + Machine + (1 | Worker), Machines, REML=FALSE)

# Deviances for contrasts within models 4 and 3
suppressMessages(tab_model(m5, m4a, m4b, m4c, m3a, m3b, m3c,
         dv.labels = c("m5", "m4a", "m4b", "m4c", "m3a", "m3b", "m3c"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m5 m4a m4b m4c m3a m3b m3c
Predictors Estimates Estimates Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 9.58 3.32 7.16 7.31 3.32 0.93 0.93
τ00 21.93 Worker 12.19 Worker 27.22 Worker 27.70 Worker 12.19 Worker 60.32 Worker 15.82 Worker
  26.05 Worker.1 8.91 Worker.1 8.26 Worker.1 26.05 Worker.1 27.80 Worker.1 10.86 Worker.1
          28.42 Worker.2 29.31 Worker.2
Observations 54 54 54 54 54 54 54
Deviance 293.703 256.127 288.471 289.158 256.127 235.387 222.047
# Deviances for contrasts within model 2 and 1
suppressMessages(tab_model(m2a, m2b, m2c, m1a, m1b, m1c,
         dv.labels = c("m2a", "m2b", "m2c", "m1a", "m1b", "m1c"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m2a m2b m2c m1a m1b m1c
Predictors Estimates Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 0.93 0.93 0.93 0.92 0.92 0.92
τ00 13.72 Worker 61.05 Worker 15.77 Worker 13.82 Worker 61.95 Worker 16.00 Worker
29.11 Worker.1 28.30 Worker.1 10.98 Worker.1      
τ11 11.04 Worker.1.dCA 28.93 Worker.1.dCB 29.63 Worker.1.dBC 28.69 Worker.dBA 28.69 Worker.dAB 11.24 Worker.dAC
      11.24 Worker.dCA 29.31 Worker.dCB 29.31 Worker.dBC
ρ01 0.30 Worker.1 0.80 Worker.1 0.33 Worker.1 0.49 Worker.dBA -0.91 Worker.dAB -0.50 Worker.dAC
      -0.36 Worker.dCA -0.88 Worker.dCB 0.38 Worker.dBC
Observations 54 54 54 54 54 54
Deviance 220.576 229.434 221.398 216.418 216.418 216.418
# Deviances for base A
suppressMessages (tab_model(m5, m4a, m3a, m2a, m1a, 
         dv.labels = c("m5", "m4a", "m3a", "m2a", "m1a"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m5 m4a m3a m2a m1a
Predictors Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 9.58 3.32 3.32 0.93 0.92
τ00 21.93 Worker 12.19 Worker 12.19 Worker 13.72 Worker 13.82 Worker
  26.05 Worker.1 26.05 Worker.1 29.11 Worker.1  
τ11       11.04 Worker.1.dCA 28.69 Worker.dBA
        11.24 Worker.dCA
ρ01       0.30 Worker.1 0.49 Worker.dBA
        -0.36 Worker.dCA
Observations 54 54 54 54 54
Deviance 293.703 256.127 256.127 220.576 216.418
# Deviances for base B
suppressMessages (tab_model(m5, m4b, m3b, m2b, m1b, 
         dv.labels = c("m5", "m4b", "m3b", "m2b", "m1b"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m5 m4b m3b m2b m1b
Predictors Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 9.58 7.16 0.93 0.93 0.92
τ00 21.93 Worker 27.22 Worker 60.32 Worker 61.05 Worker 61.95 Worker
  8.91 Worker.1 27.80 Worker.1 28.30 Worker.1  
    28.42 Worker.2    
τ11       28.93 Worker.1.dCB 28.69 Worker.dAB
        29.31 Worker.dCB
ρ01       0.80 Worker.1 -0.91 Worker.dAB
        -0.88 Worker.dCB
Observations 54 54 54 54 54
Deviance 293.703 288.471 235.387 229.434 216.418
# Deviances for base C
suppressMessages (tab_model(m5, m4c, m3c, m2c, m1c,
         dv.labels = c("m5", "m4c ", "m3c", "m2c", "m1c"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m5 m4c m3c m2c m1c
Predictors Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 9.58 7.31 0.93 0.93 0.92
τ00 21.93 Worker 27.70 Worker 15.82 Worker 15.77 Worker 16.00 Worker
  8.26 Worker.1 10.86 Worker.1 10.98 Worker.1  
    29.31 Worker.2    
τ11       29.63 Worker.1.dBC 11.24 Worker.dAC
        29.31 Worker.dBC
ρ01       0.33 Worker.1 -0.50 Worker.dAC
        0.38 Worker.dBC
Observations 54 54 54 54 54
Deviance 293.703 289.158 222.047 221.398 216.418

5 Sum contrasts

# max_LMM
# ... no A
m1am <- lmer(score ~ 1 + Machine + (1 + dB_M + dC_M | Worker), Machines, REML=FALSE)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl =
## control$checkConv, : unable to evaluate scaled gradient
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl =
## control$checkConv, : Model failed to converge: degenerate Hessian with 2
## negative eigenvalues
# ... no B
m1bm <- lmer(score ~ 1 + Machine + (1 + dA_M + dC_M | Worker), Machines, REML=FALSE)
# ... no C
m1cm <- lmer(score ~ 1 + Machine + (1 + dA_M + dB_M | Worker), Machines, REML=FALSE)


# prsm1_LMM
# ... no A
m2am <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dB_M + dC_M | Worker), Machines, REML=FALSE)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model is nearly unidentifiable: large eigenvalue ratio
##  - Rescale variables?
# ... no B
m2bm <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dA_M + dC_M | Worker), Machines, REML=FALSE)
# ... no C
m2cm <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dA_M + dB_M | Worker), Machines, REML=FALSE)

# zcp_LMM
# ... no A
m3am <- lmer(score ~ 1 + Machine + (1 + dB_M + dC_M || Worker), Machines, REML=FALSE)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model is nearly unidentifiable: large eigenvalue ratio
##  - Rescale variables?
# ... no B
m3bm <- lmer(score ~ 1 + Machine + (1 + dA_M + dC_M || Worker), Machines, REML=FALSE)
# ... no C
m3cm <- lmer(score ~ 1 + Machine + (1 + dA_M + dB_M || Worker), Machines, REML=FALSE)

# prsm2_LMM
m4am <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dA_M || Worker), Machines, REML=FALSE)
m4bm <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dB_M || Worker), Machines, REML=FALSE)
m4cm <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dC_M || Worker), Machines, REML=FALSE)

# Deviances for contrasts within models 4 and 3
suppressMessages (tab_model(m5, m4am, m4bm, m4cm, m3am, m3bm, m3cm,
         dv.labels = c("m5", "m4am", " m4bm", "m4cm", "m3am", " m3bm", "m3cm"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m5 m4am m4bm m4cm m3am m3bm m3cm
Predictors Estimates Estimates Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 9.58 8.41 4.54 4.54 4.54 0.93 0.93
τ00 21.93 Worker 22.06 Worker 22.49 Worker 22.49 Worker 22.49 Worker 22.90 Worker 22.90 Worker
  1.56 Worker.1 6.73 Worker.1 6.73 Worker.1 5.82 Worker.1 5.51 Worker.1 5.51 Worker.1
        0.90 Worker.2 11.43 Worker.2 11.43 Worker.2
Observations 54 54 54 54 54 54 54
Deviance 293.703 291.932 271.565 271.565 271.565 227.491 227.491
# Deviances for contrasts within models 2 and 1
suppressMessages (tab_model(m2am, m2bm, m2cm, m1am, m1bm, m1cm, 
         dv.labels = c("m2am", " m2bm", "m2cm", "m1am", " m1bm", "m1cm"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m2am m2bm m2cm m1am m1bm m1cm
Predictors Estimates Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 4.54 0.92 0.92 4.54 0.92 0.92
τ00 22.49 Worker 22.90 Worker 22.90 Worker 22.49 Worker 22.90 Worker 22.90 Worker
8.90 Worker.1 5.62 Worker.1 5.62 Worker.1      
τ11 11.85 Worker.1.dC_M 11.64 Worker.1.dC_M 11.64 Worker.1.dB_M 17.47 Worker.dB_M 5.62 Worker.dA_M 5.62 Worker.dA_M
      6.76 Worker.dC_M 11.64 Worker.dC_M 11.64 Worker.dB_M
ρ01 0.68 Worker.1 0.71 Worker.1 -0.71 Worker.1 0.34 Worker.dB_M -0.65 Worker.dA_M -0.65 Worker.dA_M
      -0.27 Worker.dC_M -0.84 Worker.dC_M 0.84 Worker.dB_M
Observations 54 54 54 54 54 54
Deviance 271.565 223.545 223.545 266.291 216.418 216.418
# Deviances for models am
suppressMessages(tab_model(m5, m4am, m3am, m2am, m1am, 
         dv.labels = c("m5", "m4am", "m3am", "m2am", "m1am"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m5 m4am m3am m2am m1am
Predictors Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 9.58 8.41 4.54 4.54 4.54
τ00 21.93 Worker 22.06 Worker 22.49 Worker 22.49 Worker 22.49 Worker
  1.56 Worker.1 5.82 Worker.1 8.90 Worker.1  
    0.90 Worker.2    
τ11       11.85 Worker.1.dC_M 17.47 Worker.dB_M
        6.76 Worker.dC_M
ρ01       0.68 Worker.1 0.34 Worker.dB_M
        -0.27 Worker.dC_M
Observations 54 54 54 54 54
Deviance 293.703 291.932 271.565 271.565 266.291
# Deviances for models bm
suppressMessages(tab_model(m5, m4bm, m3bm, m2bm, m1bm, 
         dv.labels = c("m5", "m4bm", "m3bm", "m2bm", "m1bm"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m5 m4bm m3bm m2bm m1bm
Predictors Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 9.58 4.54 0.93 0.92 0.92
τ00 21.93 Worker 22.49 Worker 22.90 Worker 22.90 Worker 22.90 Worker
  6.73 Worker.1 5.51 Worker.1 5.62 Worker.1  
    11.43 Worker.2    
τ11       11.64 Worker.1.dC_M 5.62 Worker.dA_M
        11.64 Worker.dC_M
ρ01       0.71 Worker.1 -0.65 Worker.dA_M
        -0.84 Worker.dC_M
Observations 54 54 54 54 54
Deviance 293.703 271.565 227.491 223.545 216.418
# Deviances for models cm
suppressMessages(tab_model(m5, m4cm, m3cm, m2cm, m1cm, 
         dv.labels = c("m5", "m4cm", "m3cm", "m2cm", "m1cm"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m5 m4cm m3cm m2cm m1cm
Predictors Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 9.58 4.54 0.93 0.92 0.92
τ00 21.93 Worker 22.49 Worker 22.90 Worker 22.90 Worker 22.90 Worker
  6.73 Worker.1 5.51 Worker.1 5.62 Worker.1  
    11.43 Worker.2    
τ11       11.64 Worker.1.dB_M 5.62 Worker.dA_M
        11.64 Worker.dB_M
ρ01       -0.71 Worker.1 -0.65 Worker.dA_M
        0.84 Worker.dB_M
Observations 54 54 54 54 54
Deviance 293.703 271.565 227.491 223.545 216.418

Models m1am, m2am, and m3am did not converge properly. Therefore, the mathematical equalivance of m1am with m1bm and m1cm fails. (Other comparisons involving these LMMs are also invalid.)

6 Sliding contrasts

# max_LMM
# ... no A_C
m1ac <- lmer(score ~ 1 + Machine + (1 + dB_A + dC_B | Worker), Machines, REML=FALSE)
# ... no B_A
m1ba <- lmer(score ~ 1 + Machine + (1 + dA_C + dC_B | Worker), Machines, REML=FALSE)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl =
## control$checkConv, : Hessian is numerically singular: parameters are not
## uniquely determined
# ... no C_B
m1cb <- lmer(score ~ 1 + Machine + (1 + dA_C + dB_A | Worker), Machines, REML=FALSE)

# prsm1_LMM
# ... no A_C
m2ac <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dB_A + dC_B | Worker), Machines, REML=FALSE)
# ... no B_A
m2ba <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dA_C + dC_B | Worker), Machines, REML=FALSE)
## Warning in checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model is nearly unidentifiable: large eigenvalue ratio
##  - Rescale variables?
# ... no C_B
m2cb <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dA_C + dB_A | Worker), Machines, REML=FALSE)

# zcp_LMM
# ... no A_C
m3ac <- lmer(score ~ 1 + Machine + (1 + dB_A + dC_B || Worker), Machines, REML=FALSE)
# ... no B_A
m3ba <- lmer(score ~ 1 + Machine + (1 + dA_C + dC_B || Worker), Machines, REML=FALSE)
# ... no C_B
m3cb <- lmer(score ~ 1 + Machine + (1 + dA_C + dB_A || Worker), Machines, REML=FALSE)

# prsm2_LMM
m4ac <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dA_C || Worker), Machines, REML=FALSE)
m4ba <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dB_A || Worker), Machines, REML=FALSE)
m4cb <- lmer(score ~ 1 + Machine + (1 | Worker) + (0 + dC_B || Worker), Machines, REML=FALSE)

# Deviances for contrasts within models 4 and 3
suppressMessages(tab_model(m5, m4ba, m4cb, m4ac, m3ba, m3cb, m3ac,      
                           dv.labels = c("m5", "m4ba", " m4cb", "m4ac", "m3ba", " m3cb", "m3ac"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m5 m4ba m4cb m4ac m3ba m3cb m3ac
Predictors Estimates Estimates Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 9.58 7.21 7.07 7.07 7.07 0.93 0.93
τ00 21.93 Worker 22.20 Worker 22.21 Worker 22.21 Worker 22.21 Worker 22.90 Worker 22.90 Worker
  9.50 Worker.1 10.03 Worker.1 10.03 Worker.1 4.78 Worker.1 28.81 Worker.1 28.19 Worker.1
        5.25 Worker.2 28.19 Worker.2 28.81 Worker.2
Observations 54 54 54 54 54 54 54
Deviance 293.703 287.778 287.202 287.202 287.202 229.569 229.569
# Deviances for contrasts within models 2 and 1
suppressMessages(tab_model(m2ba, m2cb, m2ac, m1ba, m1cb, m1ac,        
                           dv.labels = c(" m2ba", "m2cb", "m2ac", "m1ba", "m1cb", "m1ac"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m2ba m2cb m2ac m1ba m1cb m1ac
Predictors Estimates Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 7.07 0.92 0.92 7.07 0.92 0.92
τ00 22.21 Worker 22.90 Worker 22.90 Worker 22.21 Worker 22.90 Worker 22.90 Worker
21.44 Worker.1 29.31 Worker.1 28.69 Worker.1      
τ11 8.80 Worker.1.dC_B 28.69 Worker.1.dB_A 29.31 Worker.1.dC_B 2.42 Worker.dA_C 29.31 Worker.dA_C 28.69 Worker.dB_A
      7.58 Worker.dC_B 28.69 Worker.dB_A 29.31 Worker.dC_B
ρ01 0.74 Worker.1 0.81 Worker.1 -0.81 Worker.1 -0.12 Worker.dA_C 0.77 Worker.dA_C 0.82 Worker.dB_A
      -0.80 Worker.dC_B 0.82 Worker.dB_A -0.77 Worker.dC_B
Observations 54 54 54 54 54 54
Deviance 287.202 223.545 223.545 285.135 216.418 216.418
#  Deviances for models ba
suppressMessages (tab_model(m5, m4ba, m3ba, m2ba, m1ba, 
         dv.labels = c("m5", "m4ba", " m3ba", "m2ba", "m1ba"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m5 m4ba m3ba m2ba m1ba
Predictors Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 9.58 7.21 7.07 7.07 7.07
τ00 21.93 Worker 22.20 Worker 22.21 Worker 22.21 Worker 22.21 Worker
  9.50 Worker.1 4.78 Worker.1 21.44 Worker.1  
    5.25 Worker.2    
τ11       8.80 Worker.1.dC_B 2.42 Worker.dA_C
        7.58 Worker.dC_B
ρ01       0.74 Worker.1 -0.12 Worker.dA_C
        -0.80 Worker.dC_B
Observations 54 54 54 54 54
Deviance 293.703 287.778 287.202 287.202 285.135
# Deviances for models cb
suppressMessages (tab_model(m5, m4cb, m3cb, m2cb, m1cb, 
         dv.labels = c("m5", "m4cb", " m3cb", "m2cb", "m1cb"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m5 m4cb m3cb m2cb m1cb
Predictors Estimates Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92 13.92
Random Effects
σ2 9.58 7.07 0.93 0.92 0.92
τ00 21.93 Worker 22.21 Worker 22.90 Worker 22.90 Worker 22.90 Worker
  10.03 Worker.1 28.81 Worker.1 29.31 Worker.1  
    28.19 Worker.2    
τ11       28.69 Worker.1.dB_A 29.31 Worker.dA_C
        28.69 Worker.dB_A
ρ01       0.81 Worker.1 0.77 Worker.dA_C
        0.82 Worker.dB_A
Observations 54 54 54 54 54
Deviance 293.703 287.202 229.569 223.545 216.418
# Deviances fir nodels ac
suppressMessages (tab_model(m4ac, m3ac, m2ac, m1ac, 
         dv.labels = c("m5", "m4ac", " m3ac", "m2ac", "m1ac"), 
         show.ci = FALSE, show.icc = FALSE,  show.p = FALSE, show.r2 = FALSE,
         show.dev = TRUE ))
  m5 m4ac m3ac m2ac m1ac
Predictors Estimates Estimates Estimates Estimates
(Intercept) 52.36 52.36 52.36 52.36
B 7.97 7.97 7.97 7.97
C 13.92 13.92 13.92 13.92
Random Effects
σ2 7.07 0.93 0.92 0.92
τ00 22.21 Worker 22.90 Worker 22.90 Worker 22.90 Worker
10.03 Worker.1 28.19 Worker.1 28.69 Worker.1  
  28.81 Worker.2    
τ11     29.31 Worker.1.dC_B 28.69 Worker.dB_A
      29.31 Worker.dC_B
ρ01     -0.81 Worker.1 0.82 Worker.dB_A
      -0.77 Worker.dC_B
Observations 54 54 54 54
Deviance 287.202 229.569 223.545 216.418

Models m1ba and m2ba did not converge properly. Therefore, the mathematical equalivance of m1ba with m1cb and m1ac fails. (Other comparisons involving m1ba and m2ba are also invalid.)

Related RPubs:

7 Appendix

sessionInfo()
## R version 3.5.1 (2018-07-02)
## Platform: x86_64-apple-darwin15.6.0 (64-bit)
## Running under: macOS  10.14
## 
## Matrix products: default
## BLAS: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRblas.0.dylib
## LAPACK: /Library/Frameworks/R.framework/Versions/3.5/Resources/lib/libRlapack.dylib
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
##  [1] bindrcpp_0.2.2    modelr_0.1.2      forcats_0.3.0    
##  [4] stringr_1.3.1     dplyr_0.7.6       purrr_0.2.5      
##  [7] readr_1.1.1       tidyr_0.8.1       tibble_1.4.2     
## [10] ggplot2_3.0.0     tidyverse_1.2.1   sjPlot_2.6.0     
## [13] RePsychLing_0.0.4 lme4_1.1-18.9000  Matrix_1.2-14    
## 
## loaded via a namespace (and not attached):
##  [1] nlme_3.1-137       lubridate_1.7.4    httr_1.3.1        
##  [4] tools_3.5.1        TMB_1.7.14         backports_1.1.2   
##  [7] R6_2.2.2           sjlabelled_1.0.14  lazyeval_0.2.1    
## [10] colorspace_1.3-2   nnet_7.3-12        withr_2.1.2       
## [13] tidyselect_0.2.4   mnormt_1.5-5       emmeans_1.2.4     
## [16] compiler_3.5.1     cli_1.0.1          rvest_0.3.2       
## [19] xml2_1.2.0         sandwich_2.5-0     effects_4.0-3     
## [22] scales_1.0.0       mvtnorm_1.0-8      psych_1.8.4       
## [25] ggridges_0.5.1     digest_0.6.17      foreign_0.8-71    
## [28] minqa_1.2.4        rmarkdown_1.10.11  stringdist_0.9.5.1
## [31] pkgconfig_2.0.2    htmltools_0.3.6    pwr_1.2-2         
## [34] rlang_0.2.2        readxl_1.1.0       htmldeps_0.1.1    
## [37] rstudioapi_0.7     bindr_0.1.1        zoo_1.8-4         
## [40] jsonlite_1.5       magrittr_1.5       modeltools_0.2-22 
## [43] bayesplot_1.6.0    Rcpp_0.12.18       munsell_0.5.0     
## [46] prediction_0.3.10  stringi_1.2.4      multcomp_1.4-8    
## [49] yaml_2.2.0         snakecase_0.9.2    carData_3.0-1     
## [52] MASS_7.3-50        plyr_1.8.4         grid_3.5.1        
## [55] parallel_3.5.1     sjmisc_2.7.5       crayon_1.3.4      
## [58] lattice_0.20-35    ggeffects_0.5.0    haven_1.1.2       
## [61] splines_3.5.1      sjstats_0.17.0     hms_0.4.2         
## [64] knitr_1.20         pillar_1.3.0.9000  estimability_1.3  
## [67] codetools_0.2-15   stats4_3.5.1       glue_1.3.0        
## [70] evaluate_0.11      data.table_1.11.6  nloptr_1.0.4      
## [73] cellranger_1.1.0   gtable_0.2.0       assertthat_0.2.0  
## [76] coin_1.2-2         xtable_1.8-3       broom_0.5.0       
## [79] survey_3.33-2      coda_0.19-1        survival_2.42-6   
## [82] glmmTMB_0.2.2.0    TH.data_1.0-9