R Under development (unstable) (2026-03-09 r89583 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. > library(mlmRev) Loading required package: lme4 Loading required package: Matrix > options(digits=6, useFancyQuotes = FALSE)# signif.stars for once.. > fm <- glmer(immun ~ kid2p + mom25p + ord + ethn + momEd + + husEd + momWork + rural + pcInd81 + (1|mom) + (1|comm), + data = guImmun, family = binomial) Warning message: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model failed to converge with max|grad| = 0.489426 (tol = 0.002, component 1) See ?lme4::convergence and ?lme4::troubleshooting. > print(fm, symbolic.cor = TRUE) Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) [glmerMod] Family: binomial ( logit ) Formula: immun ~ kid2p + mom25p + ord + ethn + momEd + husEd + momWork + rural + pcInd81 + (1 | mom) + (1 | comm) Data: guImmun AIC BIC logLik -2*log(L) df.resid 2747.49 2849.69 -1355.75 2711.49 2141 Random effects: Groups Name Std.Dev. mom (Intercept) 1.148 comm (Intercept) 0.723 Number of obs: 2159, groups: mom, 1595; comm, 161 Fixed Effects: (Intercept) kid2pY mom25pY ord23 ord46 ord7p -0.8709 1.2732 -0.1285 -0.1553 0.1543 0.2673 ethnN ethnS momEdP momEdS husEdP husEdS -0.1491 -0.0498 0.2769 0.2770 0.3792 0.3375 husEdU momWorkY ruralY pcInd81 -0.0176 0.2664 -0.6770 -0.8602 optimizer (Nelder_Mead) convergence code: 0 (OK) ; 0 optimizer warnings; 1 lme4 warnings > > fm.h <- update(fm, ~ . - husEd) Warning message: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model failed to converge with max|grad| = 0.46865 (tol = 0.002, component 1) See ?lme4::convergence and ?lme4::troubleshooting. > print(fm.h, corr = FALSE) Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) [glmerMod] Family: binomial ( logit ) Formula: immun ~ kid2p + mom25p + ord + ethn + momEd + momWork + rural + pcInd81 + (1 | mom) + (1 | comm) Data: guImmun AIC BIC logLik -2*log(L) df.resid 2748.60 2833.76 -1359.30 2718.60 2144 Random effects: Groups Name Std.Dev. mom (Intercept) 1.119 comm (Intercept) 0.723 Number of obs: 2159, groups: mom, 1595; comm, 161 Fixed Effects: (Intercept) kid2pY mom25pY ord23 ord46 ord7p -0.609 1.261 -0.147 -0.149 0.151 0.230 ethnN ethnS momEdP momEdS momWorkY ruralY -0.246 -0.101 0.337 0.352 0.267 -0.715 pcInd81 -0.824 optimizer (Nelder_Mead) convergence code: 0 (OK) ; 0 optimizer warnings; 1 lme4 warnings > fm.ho <- update(fm.h, ~ . - ord) Warning message: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model failed to converge with max|grad| = 0.194571 (tol = 0.002, component 1) See ?lme4::convergence and ?lme4::troubleshooting. > ## FIXME: shows 53 outer iterations (+ probably IRLS ones) -- > ## but no such info is kept stored > print(fm.ho, corr = FALSE) Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) [glmerMod] Family: binomial ( logit ) Formula: immun ~ kid2p + mom25p + ethn + momEd + momWork + rural + pcInd81 + (1 | mom) + (1 | comm) Data: guImmun AIC BIC logLik -2*log(L) df.resid 2746.30 2814.43 -1361.15 2722.30 2147 Random effects: Groups Name Std.Dev. mom (Intercept) 1.111 comm (Intercept) 0.711 Number of obs: 2159, groups: mom, 1595; comm, 161 Fixed Effects: (Intercept) kid2pY mom25pY ethnN ethnS momEdP -0.6808 1.2644 0.0262 -0.2113 -0.0792 0.3306 momEdS momWorkY ruralY pcInd81 0.3229 0.2487 -0.6803 -0.8419 optimizer (Nelder_Mead) convergence code: 0 (OK) ; 0 optimizer warnings; 1 lme4 warnings > > anova(fm, fm.h, fm.ho) Data: guImmun Models: fm.ho: immun ~ kid2p + mom25p + ethn + momEd + momWork + rural + pcInd81 + (1 | mom) + (1 | comm) fm.h: immun ~ kid2p + mom25p + ord + ethn + momEd + momWork + rural + pcInd81 + (1 | mom) + (1 | comm) fm: immun ~ kid2p + mom25p + ord + ethn + momEd + husEd + momWork + rural + pcInd81 + (1 | mom) + (1 | comm) npar AIC BIC logLik -2*log(L) Chisq Df Pr(>Chisq) fm.ho 12 2746 2814 -1361 2722 fm.h 15 2749 2834 -1359 2719 3.701 3 0.2956 fm 18 2748 2850 -1356 2712 7.104 3 0.0687 . --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > (fm.hoe <- update(fm.ho, ~ . - ethn)) Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) [glmerMod] Family: binomial ( logit ) Formula: immun ~ kid2p + mom25p + momEd + momWork + rural + pcInd81 + (1 | mom) + (1 | comm) Data: guImmun AIC BIC logLik -2*log(L) df.resid 2742.77 2799.54 -1361.38 2722.77 2149 Random effects: Groups Name Std.Dev. mom (Intercept) 1.093 comm (Intercept) 0.698 Number of obs: 2159, groups: mom, 1595; comm, 161 Fixed Effects: (Intercept) kid2pY mom25pY momEdP momEdS momWorkY -0.7018 1.2660 0.0252 0.3530 0.3604 0.2588 ruralY pcInd81 -0.6709 -0.9534 optimizer (Nelder_Mead) convergence code: 0 (OK) ; 0 optimizer warnings; 1 lme4 warnings Warning message: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : Model failed to converge with max|grad| = 0.182009 (tol = 0.002, component 1) See ?lme4::convergence and ?lme4::troubleshooting. > > (fm.hoem <- update(fm.hoe, ~ . - mom25p)) Generalized linear mixed model fit by maximum likelihood (Laplace Approximation) [glmerMod] Family: binomial ( logit ) Formula: immun ~ kid2p + momEd + momWork + rural + pcInd81 + (1 | mom) + (1 | comm) Data: guImmun AIC BIC logLik -2*log(L) df.resid 2740.79 2791.88 -1361.39 2722.79 2150 Random effects: Groups Name Std.Dev. mom (Intercept) 1.12 comm (Intercept) 0.70 Number of obs: 2159, groups: mom, 1595; comm, 161 Fixed Effects: (Intercept) kid2pY momEdP momEdS momWorkY ruralY -0.683 1.266 0.351 0.349 0.267 -0.679 pcInd81 -0.961 > > (AN <- anova(fm, fm.h, fm.ho, fm.hoe, fm.hoem)) Data: guImmun Models: fm.hoem: immun ~ kid2p + momEd + momWork + rural + pcInd81 + (1 | mom) + (1 | comm) fm.hoe: immun ~ kid2p + mom25p + momEd + momWork + rural + pcInd81 + (1 | mom) + (1 | comm) fm.ho: immun ~ kid2p + mom25p + ethn + momEd + momWork + rural + pcInd81 + (1 | mom) + (1 | comm) fm.h: immun ~ kid2p + mom25p + ord + ethn + momEd + momWork + rural + pcInd81 + (1 | mom) + (1 | comm) fm: immun ~ kid2p + mom25p + ord + ethn + momEd + husEd + momWork + rural + pcInd81 + (1 | mom) + (1 | comm) npar AIC BIC logLik -2*log(L) Chisq Df Pr(>Chisq) fm.hoem 9 2741 2792 -1361 2723 fm.hoe 10 2743 2800 -1361 2723 0.016 1 0.8999 fm.ho 12 2746 2814 -1361 2722 0.471 2 0.7903 fm.h 15 2749 2834 -1359 2719 3.701 3 0.2956 fm 18 2748 2850 -1356 2712 7.104 3 0.0687 . --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > AN[, "logLik"] + 1362 # an inversion in the first two models [1] 0.607163 0.615080 0.850417 2.701099 6.252907 > ## FIXME: AN doesn't have a deviance column! > ## AN[, "deviance"] - 2711 # deviance scale shows this more clearly > > if (packageVersion("lme4") <= "1.1.21") { + stopifnot(AN[,"Df"] == c(9,10,12,15,18), TRUE) + } else { + stopifnot(AN[,"npar"] == c(9,10,12,15,18), TRUE) + } > > > # all.equal(AN[,"logLik"] + 1362, > # c(0.6072186497422, 0.6289103306312, 0.8541186984307, > # 2.725550814599, 6.299084917162), tol = 1e-6), > # all.equal(fixef(fm.hoem)[-1], > # c("kid2pY" = 1.2662536, "momEdP"= 0.35116180, > # "momEdS"= 0.3487824136, "momWorkY"=0.2672759992340, > # "ruralY"=-0.678846606719, "pcInd81"=-0.9612710104134), > # tol = 1e-4), > > > cat('Time elapsed: ', proc.time(),'\n') # "stats" Time elapsed: 174.93 7.1 182.21 NA NA > > proc.time() user system elapsed 174.93 7.10 182.21