R Under development (unstable) (2026-03-10 r89593 ucrt) -- "Unsuffered Consequences" Copyright (C) 2026 The R Foundation for Statistical Computing Platform: x86_64-w64-mingw32/x64 R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details. R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications. Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R. > #### LMER: Put all the small data set tests into one file > library(mlmRev) Loading required package: lme4 Loading required package: Matrix > options(digits=6, show.signif.stars = FALSE) > old_optimizer = lmerControl(optimizer = "bobyqa") # use an older default > > ## bdf ---------------- Data --------------------- > (fm01 <- lmer(langPOST ~ IQ.ver.cen + avg.IQ.ver.cen + (1|schoolNR), bdf, + control = old_optimizer)) Linear mixed model fit by REML ['lmerMod'] Formula: langPOST ~ IQ.ver.cen + avg.IQ.ver.cen + (1 | schoolNR) Data: bdf REML criterion at convergence: 15232.2 Random effects: Groups Name Std.Dev. schoolNR (Intercept) 2.81 Residual 6.49 Number of obs: 2287, groups: schoolNR, 131 Fixed Effects: (Intercept) IQ.ver.cen avg.IQ.ver.cen 40.74 2.41 1.59 > (fm02 <- lmer(langPOST ~ IQ.ver.cen + avg.IQ.ver.cen +(IQ.ver.cen|schoolNR), bdf, + control = old_optimizer)) Linear mixed model fit by REML ['lmerMod'] Formula: langPOST ~ IQ.ver.cen + avg.IQ.ver.cen + (IQ.ver.cen | schoolNR) Data: bdf REML criterion at convergence: 15217.9 Random effects: Groups Name Std.Dev. Corr schoolNR (Intercept) 2.842 IQ.ver.cen 0.456 -0.64 Residual 6.430 Number of obs: 2287, groups: schoolNR, 131 Fixed Effects: (Intercept) IQ.ver.cen avg.IQ.ver.cen 40.75 2.46 1.41 > ## > anova(fm01, fm02) refitting model(s) with ML (instead of REML) Data: bdf Models: fm01: langPOST ~ IQ.ver.cen + avg.IQ.ver.cen + (1 | schoolNR) fm02: langPOST ~ IQ.ver.cen + avg.IQ.ver.cen + (IQ.ver.cen | schoolNR) npar AIC BIC logLik -2*log(L) Chisq Df Pr(>Chisq) fm01 5 15238 15266 -7614 15228 fm02 7 15228 15268 -7607 15214 14.01 2 0.000905 > cat('Time elapsed: ', (.pt <- proc.time()),'\n') # "stats" Time elapsed: 2 0.37 2.31 NA NA > > ## egsingle ----------- Data --------------------- > (fm1 <- lmer(math ~ year + (1|childid) + (1|schoolid), egsingle, + control = old_optimizer)) Linear mixed model fit by REML ['lmerMod'] Formula: math ~ year + (1 | childid) + (1 | schoolid) Data: egsingle REML criterion at convergence: 16759.4 Random effects: Groups Name Std.Dev. childid (Intercept) 0.818 schoolid (Intercept) 0.432 Residual 0.589 Number of obs: 7230, groups: childid, 1721; schoolid, 60 Fixed Effects: (Intercept) year -0.780 0.746 > (fm2 <- lmer(math ~ year + (1|childid) + (year|schoolid), egsingle, + control = old_optimizer)) Linear mixed model fit by REML ['lmerMod'] Formula: math ~ year + (1 | childid) + (year | schoolid) Data: egsingle REML criterion at convergence: 16482.4 Random effects: Groups Name Std.Dev. Corr childid (Intercept) 0.820 schoolid (Intercept) 0.408 year 0.108 0.44 Residual 0.570 Number of obs: 7230, groups: childid, 1721; schoolid, 60 Fixed Effects: (Intercept) year -0.777 0.763 > (fm3 <- lmer(math ~ year + (year|childid) + (1|schoolid), egsingle, + control = old_optimizer)) Linear mixed model fit by REML ['lmerMod'] Formula: math ~ year + (year | childid) + (1 | schoolid) Data: egsingle REML criterion at convergence: 16517.5 Random effects: Groups Name Std.Dev. Corr childid (Intercept) 0.805 year 0.147 0.46 schoolid (Intercept) 0.392 Residual 0.549 Number of obs: 7230, groups: childid, 1721; schoolid, 60 Fixed Effects: (Intercept) year -0.793 0.747 > (fm4 <- lmer(math ~ year + (year|childid) + (year|schoolid), egsingle, + control = old_optimizer)) Linear mixed model fit by REML ['lmerMod'] Formula: math ~ year + (year | childid) + (year | schoolid) Data: egsingle REML criterion at convergence: 16336.7 Random effects: Groups Name Std.Dev. Corr childid (Intercept) 0.800 year 0.106 0.55 schoolid (Intercept) 0.411 year 0.106 0.40 Residual 0.549 Number of obs: 7230, groups: childid, 1721; schoolid, 60 Fixed Effects: (Intercept) year -0.779 0.763 > ## > anova(fm1, fm2, fm3, fm4) refitting model(s) with ML (instead of REML) Data: egsingle Models: fm1: math ~ year + (1 | childid) + (1 | schoolid) fm2: math ~ year + (1 | childid) + (year | schoolid) fm3: math ~ year + (year | childid) + (1 | schoolid) fm4: math ~ year + (year | childid) + (year | schoolid) npar AIC BIC logLik -2*log(L) Chisq Df Pr(>Chisq) fm1 5 16757 16791 -8374 16747 fm2 7 16486 16534 -8236 16472 275.2 2 <2e-16 fm3 7 16519 16567 -8253 16505 0.0 0 fm4 9 16344 16406 -8163 16326 179.1 2 <2e-16 > cat('Time elapsed: ', {.ot <- .pt; (.pt <- proc.time()) - .ot},'\n') # "stats" Time elapsed: 4.39 0.09 4.48 NA NA > > ## Early -------------- Data --------------------- > Early$tos <- Early$age - 0.5 > (fm1E <- lmer(cog ~ tos * trt + (tos|id), Early, + control = old_optimizer)) boundary (singular) fit: see help('isSingular') Linear mixed model fit by REML ['lmerMod'] Formula: cog ~ tos * trt + (tos | id) Data: Early REML criterion at convergence: 2358.74 Random effects: Groups Name Std.Dev. Corr id (Intercept) 12.87 tos 3.21 -1.00 Residual 8.69 Number of obs: 309, groups: id, 103 Fixed Effects: (Intercept) tos trtY tos:trtY 118.41 -21.13 4.22 5.27 optimizer (bobyqa) convergence code: 0 (OK) ; 0 optimizer warnings; 1 lme4 warnings > > ## Exam --------------- Data --------------------- > (fm05 <- lmer(normexam ~ standLRT + sex + schgend + (1|school), Exam, + control = old_optimizer)) Linear mixed model fit by REML ['lmerMod'] Formula: normexam ~ standLRT + sex + schgend + (1 | school) Data: Exam REML criterion at convergence: 9347.67 Random effects: Groups Name Std.Dev. school (Intercept) 0.293 Residual 0.750 Number of obs: 4059, groups: school, 65 Fixed Effects: (Intercept) standLRT sexM schgendboys schgendgirls -0.00105 0.55975 -0.16739 0.17769 0.15900 > > ## Chem97 ------------- Data --------------------- > (fm06 <- lmer(score ~ gcsecnt + (1|school) + (1|lea), Chem97, + control = old_optimizer)) Linear mixed model fit by REML ['lmerMod'] Formula: score ~ gcsecnt + (1 | school) + (1 | lea) Data: Chem97 REML criterion at convergence: 141697 Random effects: Groups Name Std.Dev. school (Intercept) 1.080 lea (Intercept) 0.122 Residual 2.270 Number of obs: 31022, groups: school, 2410; lea, 131 Fixed Effects: (Intercept) gcsecnt 5.64 2.47 > > cat('Time elapsed: ', {.ot <- .pt; (.pt <- proc.time()) - .ot},'\n') # "stats" Time elapsed: 0.61 0.05 0.66 NA NA > > ## Hsb82 -------------- Data --------------------- > lmer(mAch ~ meanses*cses + sector*cses + (cses|school), Hsb82, + control = old_optimizer) Linear mixed model fit by REML ['lmerMod'] Formula: mAch ~ meanses * cses + sector * cses + (cses | school) Data: Hsb82 REML criterion at convergence: 46503.7 Random effects: Groups Name Std.Dev. Corr school (Intercept) 1.543 cses 0.318 0.39 Residual 6.060 Number of obs: 7185, groups: school, 160 Fixed Effects: (Intercept) meanses cses 12.13 5.33 2.95 sectorCatholic meanses:cses cses:sectorCatholic 1.23 1.04 -1.64 > > ## Oxford ------------- Data --------------------- > (fm07 <- lmer(height ~ age + I(age^2) + I(age^3) + I(age^4) + + (age + I(age^2)|Subject), data = Oxboys, + control = old_optimizer)) Linear mixed model fit by REML ['lmerMod'] Formula: height ~ age + I(age^2) + I(age^3) + I(age^4) + (age + I(age^2) | Subject) Data: Oxboys REML criterion at convergence: 627.908 Random effects: Groups Name Std.Dev. Corr Subject (Intercept) 8.002 age 1.692 0.61 I(age^2) 0.821 0.22 0.66 Residual 0.466 Number of obs: 234, groups: Subject, 26 Fixed Effects: (Intercept) age I(age^2) I(age^3) I(age^4) 149.019 6.174 1.128 0.454 -0.377 > (fm08 <- lmer(height ~ poly(age,4) + + (age + I(age^2)|Subject), data = Oxboys, + control = old_optimizer)) Linear mixed model fit by REML ['lmerMod'] Formula: height ~ poly(age, 4) + (age + I(age^2) | Subject) Data: Oxboys REML criterion at convergence: 616.869 Random effects: Groups Name Std.Dev. Corr Subject (Intercept) 8.002 age 1.692 0.61 I(age^2) 0.821 0.22 0.66 Residual 0.466 Number of obs: 234, groups: Subject, 26 Fixed Effects: (Intercept) poly(age, 4)1 poly(age, 4)2 poly(age, 4)3 poly(age, 4)4 149.520 64.541 4.203 1.291 -0.585 > anova(fm07, fm08) refitting model(s) with ML (instead of REML) Data: Oxboys Models: fm07: height ~ age + I(age^2) + I(age^3) + I(age^4) + (age + I(age^2) | Subject) fm08: height ~ poly(age, 4) + (age + I(age^2) | Subject) npar AIC BIC logLik -2*log(L) Chisq Df Pr(>Chisq) fm07 12 649.3 690.8 -312.7 625.3 fm08 12 649.3 690.8 -312.7 625.3 0 0 > stopifnot(all.equal(logLik(fm07, REML=FALSE), + logLik(fm08, REML=FALSE), tol=1e-07)) > cat('Time elapsed: ', {.ot <- .pt; (.pt <- proc.time()) - .ot},'\n') # "stats" Time elapsed: 0.76 0 0.76 NA NA > > ## ScotsSec ----------- Data --------------------- > cntr <- list() > (fmS1 <- lmer(attain ~ verbal * sex + (1|primary) + (1|second), ScotsSec, + verbose = 1, + control = old_optimizer)) start par. = 0.450039 0.236489 fn = 14905 At return eval: 34 fn: 14868.325 par: 0.254492 0.0588856 Linear mixed model fit by REML ['lmerMod'] Formula: attain ~ verbal * sex + (1 | primary) + (1 | second) Data: ScotsSec REML criterion at convergence: 14868.3 Random effects: Groups Name Std.Dev. primary (Intercept) 0.525 second (Intercept) 0.121 Residual 2.062 Number of obs: 3435, groups: primary, 148; second, 19 Fixed Effects: (Intercept) verbal sexF verbal:sexF 5.91471 0.15836 0.12155 0.00259 > #(fmS2 <- lmer(attain ~ verbal * sex + (1|primary) + (1|second), ScotsSec, > # control = c(cntr, list(niterEM = 40)))) > ## fmS1 and fmS2 should be essentially identical when optimizing with nlminb > ## The fits are substantially different when optimizing with optim > ## > (fmS3 <- lmer(attain ~ verbal + sex + (1|primary) + (1|second), ScotsSec, + control = old_optimizer)) Linear mixed model fit by REML ['lmerMod'] Formula: attain ~ verbal + sex + (1 | primary) + (1 | second) Data: ScotsSec REML criterion at convergence: 14859.9 Random effects: Groups Name Std.Dev. primary (Intercept) 0.526 second (Intercept) 0.120 Residual 2.062 Number of obs: 3435, groups: primary, 148; second, 19 Fixed Effects: (Intercept) verbal sexF 5.919 0.160 0.116 > (fmS4 <- lmer(attain ~ verbal + sex + (1|primary) + (sex|second), ScotsSec, + control = old_optimizer)) Linear mixed model fit by REML ['lmerMod'] Formula: attain ~ verbal + sex + (1 | primary) + (sex | second) Data: ScotsSec REML criterion at convergence: 14848.3 Random effects: Groups Name Std.Dev. Corr primary (Intercept) 0.518 second (Intercept) 0.215 sexF 0.382 -0.80 Residual 2.054 Number of obs: 3435, groups: primary, 148; second, 19 Fixed Effects: (Intercept) verbal sexF 5.9274 0.1596 0.0984 > ## > anova(fmS1, fmS3, fmS4) refitting model(s) with ML (instead of REML) Data: ScotsSec Models: fmS3: attain ~ verbal + sex + (1 | primary) + (1 | second) fmS1: attain ~ verbal * sex + (1 | primary) + (1 | second) fmS4: attain ~ verbal + sex + (1 | primary) + (sex | second) npar AIC BIC logLik -2*log(L) Chisq Df Pr(>Chisq) fmS3 6 14855 14892 -7421 14843 fmS1 7 14857 14900 -7421 14843 0.23 1 0.6318 fmS4 8 14848 14897 -7416 14832 10.50 1 0.0012 > > cat('Time elapsed: ', {.ot <- .pt; (.pt <- proc.time()) - .ot},'\n') # "stats" Time elapsed: 0.66 0 0.66 NA NA > > proc.time() user system elapsed 8.42 0.51 8.87