Hi again, may be you get all the relevant information directly from CRAN:
https://cloud.r-project.org/web/checks/check_results_lmerTest.html Kind regards Andreas. On Sun, Feb 10, 2019 at 03:44:55PM +0100, Andreas Tille wrote: > Control: tags -1 help upstream > Control: forwarded -1 Per Bruun Brockhoff <pe...@dtu.dk> > > Hi Per, > > the Debian packaged version of lmerTest seems to show issues with the > latest version of lme4. From your insight into lmerTest can you give > some hint about possible reasons for this incompatibility? > > Kind regards > > Andreas. > > PS: Please let me know whether you need further information. > > On Sun, Feb 10, 2019 at 01:35:53PM +0100, Paul Gevers wrote: > > Source: lme4, r-cran-lmertest > > Control: found -1 lme4/1.1-20-1 > > Control: found -1 r-cran-lmertest/3.0-1-2 > > Severity: important > > X-Debbugs-CC: debian...@lists.debian.org > > User: debian...@lists.debian.org > > Usertags: breaks needs-update > > > > Dear maintainers, > > > > With a recent upload of lme4 the autopkgtest of r-cran-lmertest fails in > > testing when that autopkgtest is run with the binary packages of lme4 > > from unstable. It passes when run with only packages from testing. In > > tabular form: > > pass fail > > lme4 from testing 1.1-20-1 > > r-cran-lmertest from testing 3.0-1-2 > > all others from testing from testing > > > > I copied some of the output at the bottom of this report. > > > > Currently this regression is blocking the migration of lme4 to testing > > [1]. Due to the nature of this issue, I filed this bug report against > > both packages. Can you please investigate the situation and reassign the > > bug to the right package? If needed, please change the bug's severity. > > > > More information about this bug and the reason for filing it can be found on > > https://wiki.debian.org/ContinuousIntegration/RegressionEmailInformation > > > > Paul > > > > [1] https://qa.debian.org/excuses.php?package=lme4 > > > > https://ci.debian.net/data/autopkgtest/testing/amd64/r/r-cran-lmertest/1896879/log.gz > > > > autopkgtest [04:42:34]: test run-unit-test: [----------------------- > > BEGIN TEST test_a_utils.R > > > > R version 3.5.2 (2018-12-20) -- "Eggshell Igloo" > > Copyright (C) 2018 The R Foundation for Statistical Computing > > Platform: x86_64-pc-linux-gnu (64-bit) > > > > 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. > > > > > # test_a_utils.R > > > > > > library(lmerTest) > > Loading required package: lme4 > > Loading required package: Matrix > > > > Attaching package: 'lmerTest' > > > > The following object is masked from 'package:lme4': > > > > lmer > > > > The following object is masked from 'package:stats': > > > > step > > > > > > > > # test safeDeparse() - equivalence and differences to deparse(): > > > deparse_args <- formals(deparse) > > > safeDeparse_args <- formals(lmerTest:::safeDeparse) > > > stopifnot( > > + all.equal(names(deparse_args), names(safeDeparse_args)), > > + all.equal(deparse_args[!names(deparse_args) %in% c("control", > > "width.cutoff")], > > + safeDeparse_args[!names(safeDeparse_args) %in% > > c("control", "width.cutoff")]), > > + all.equal(deparse_args[["width.cutoff"]], 60L), > > + all(eval(safeDeparse_args[["control"]]) %in% > > eval(deparse_args[["control"]])), > > + all.equal(safeDeparse_args[["width.cutoff"]], 500L) > > + ) > > > > > > > > BEGIN TEST test_anova.R > > > > R version 3.5.2 (2018-12-20) -- "Eggshell Igloo" > > Copyright (C) 2018 The R Foundation for Statistical Computing > > Platform: x86_64-pc-linux-gnu (64-bit) > > > > 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. > > > > > # test_anova.R > > > library(lmerTest) > > Loading required package: lme4 > > Loading required package: Matrix > > > > Attaching package: 'lmerTest' > > > > The following object is masked from 'package:lme4': > > > > lmer > > > > The following object is masked from 'package:stats': > > > > step > > > > > > > > # WRE says "using if(requireNamespace("pkgname")) is preferred, if > > possible." > > > # even in tests: > > > assertError <- function(expr, ...) > > + if(requireNamespace("tools")) tools::assertError(expr, ...) else > > invisible() > > > assertWarning <- function(expr, ...) > > + if(requireNamespace("tools")) tools::assertWarning(expr, ...) else > > invisible() > > > > > > # Kenward-Roger only available with pbkrtest and only then validated > > in R >= 3.3.3 > > > # (faulty results for R < 3.3.3 may be due to unstated dependencies in > > pbkrtest) > > > has_pbkrtest <- requireNamespace("pbkrtest", quietly = TRUE) && > > getRversion() >= "3.3.3" > > > > > > data("sleepstudy", package="lme4") > > > TOL <- 1e-4 > > > > > > #################################### > > > ## Basic anova tests > > > #################################### > > > > > > m <- lmer(Reaction ~ Days + (Days | Subject), sleepstudy) > > > > > > ####### ddf argument: > > > (an1 <- anova(m)) # Also testing print method. > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an2 <- anova(m, ddf="Satterthwaite")) > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an2b <- anova(m, ddf="Satterthwaite", type=3)) > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an2c <- anova(m, ddf="Satterthwaite", type=2)) > > Type II Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > stopifnot(isTRUE( > > + all.equal(an1, an2, tolerance=TOL) > > + )) > > > (an3 <- anova(m, ddf="Sat")) ## Abbreviated argument > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > stopifnot(isTRUE( > > + all.equal(an1, an3, tolerance=TOL) > > + )) > > > if(has_pbkrtest) { > > + (anova(m, ddf="Kenward-Roger")) > > + (anova(m, ddf="Kenward-Roger", type=3)) > > + } > > Type III Analysis of Variance Table with Kenward-Roger's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 17 45.843 3.268e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an1 <- anova(m, ddf="lme4")) > > Analysis of Variance Table > > Df Sum Sq Mean Sq F value > > Days 1 30024 30024 45.843 > > > (an2 <- anova(m, ddf="lme4", type=3)) # 'type' is ignored with ddf="lme4" > > Analysis of Variance Table > > Df Sum Sq Mean Sq F value > > Days 1 30024 30024 45.843 > > > stopifnot(isTRUE( > > + all.equal(an1, an2, tolerance=TOL) > > + )) > > > res <- assertError(anova(m, ddf="KR")) ## Error on incorrect arg. > > > stopifnot( > > + grepl("'arg' should be one of ", unlist(res[[1]])$message) > > + ) > > > > > > ## lme4 method: > > > an1 <- anova(m, ddf="lme4") > > > an2 <- anova(as(m, "lmerMod")) > > > stopifnot(isTRUE( > > + all.equal(an1, an2, tolerance=TOL) > > + )) > > > > > > ###### type argument: > > > (an1 <- anova(m, type="1")) # valid type arg. > > Type I Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an2 <- anova(m, type="I")) # same > > Type I Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > stopifnot(isTRUE( > > + all.equal(an1, an2, tolerance=TOL) > > + )) > > > (an3 <- anova(m, type=1)) # Not strictly valid, but accepted > > Type I Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > stopifnot(isTRUE( > > + all.equal(an1, an3, tolerance=TOL) > > + )) > > > > > > (an1 <- anova(m, type="2")) # valid type arg. > > Type II Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an2 <- anova(m, type="II")) # same > > Type II Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > stopifnot(isTRUE( > > + all.equal(an1, an2, tolerance=TOL) > > + )) > > > (an3 <- anova(m, type=3)) # Not strictly valid, but accepted > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > stopifnot(isTRUE( > > + all.equal(an1, an3, check.attributes=FALSE, tolerance=TOL) > > + )) > > > > > > (an1 <- anova(m, type="3")) # valid type arg. > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an2 <- anova(m, type="III")) # same > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > stopifnot(isTRUE( > > + all.equal(an1, an2, tolerance=TOL) > > + )) > > > (an3 <- anova(m, type=3)) # Not strictly valid, but accepted > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 30024 30024 1 16.995 45.843 3.273e-06 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > stopifnot(isTRUE( > > + all.equal(an1, an3, tolerance=TOL) > > + )) > > > assertError(anova(m, type=0)) # Not valid arg. > > > assertError(anova(m, type="i")) # Not valid arg. > > > > > > ####### Model comparison: > > > fm <- lm(Reaction ~ Days, sleepstudy) > > > (an <- anova(m, fm)) > > refitting model(s) with ML (instead of REML) > > Data: sleepstudy > > Models: > > fm: Reaction ~ Days > > m: Reaction ~ Days + (Days | Subject) > > Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq) > > fm 3 1906.3 1915.9 -950.15 1900.3 > > m 6 1763.9 1783.1 -875.97 1751.9 148.35 3 < 2.2e-16 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > stopifnot( > > + nrow(an) == 2L, > > + rownames(an)[2] == "m" > > + ) > > > > > > m2 <- lmer(Reaction ~ Days + I(Days^2) + (Days | Subject), sleepstudy) > > > (an <- anova(m, m2, refit=FALSE)) > > Data: sleepstudy > > Models: > > m: Reaction ~ Days + (Days | Subject) > > m2: Reaction ~ Days + I(Days^2) + (Days | Subject) > > Df AIC BIC logLik deviance Chisq Chi Df Pr(>Chisq) > > m 6 1755.6 1774.8 -871.81 1743.6 > > m2 7 1756.8 1779.2 -871.41 1742.8 0.8127 1 0.3673 > > > stopifnot( > > + nrow(an) == 2L, > > + rownames(an)[1] == "m" > > + ) > > > > > > > > > #################################### > > > ## Example with factor fixef: > > > #################################### > > > > > > ## 'temp' is continuous, 'temperature' an ordered factor with 6 levels > > > data("cake", package="lme4") > > > m <- lmer(angle ~ recipe * temp + (1|recipe:replicate), cake) > > > (an <- anova(m)) > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 4.00 2.00 2 254.02 0.0957 0.9088 > > temp 1966.71 1966.71 1 222.00 94.1632 <2e-16 *** > > recipe:temp 1.74 0.87 2 222.00 0.0417 0.9592 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an_lme4 <- anova(m, ddf="lme4")) > > Analysis of Variance Table > > Df Sum Sq Mean Sq F value > > recipe 2 10.39 5.20 0.2488 > > temp 1 1966.71 1966.71 94.1632 > > recipe:temp 2 1.74 0.87 0.0417 > > > > > > if(has_pbkrtest) { > > + (an_KR <- anova(m, ddf="Kenward-Roger")) > > + # res <- all.equal(an[, c("Sum Sq", "Mean Sq", "F value")], > > + # an_lme4[, c("Sum Sq", "Mean Sq", "F value")]) > > + # stopifnot(isTRUE(res)) > > + res <- all.equal(an[, c("Sum Sq", "Mean Sq", "F value")], > > + an_KR[, c("Sum Sq", "Mean Sq", "F value")], > > tolerance=TOL) > > + stopifnot(isTRUE(res)) > > + } > > > stopifnot(all.equal(c(2, 1, 2), an$NumDF, tol=1e-6), > > + all.equal(c(254.0157612, 222, 222), an$DenDF, tol=TOL)) > > > > > > an3 <- anova(m, type=3) > > > an2 <- anova(m, type=2) > > > an1 <- anova(m, type=1) > > > > > > ## Data is balanced, so Type II and III should be identical: > > > ## One variable is continuous, so Type I and II/III are different: > > > stopifnot( > > + isTRUE(all.equal(an3, an2, check.attributes=FALSE, tolerance=TOL)), > > + !isTRUE(all.equal(an1, an2, check.attributes=FALSE, tolerance=1e-8)) > > + ) > > > > > > # Using an ordered factor: > > > m <- lmer(angle ~ recipe * temperature + (1|recipe:replicate), cake) > > > (an1 <- anova(m, type=1)) > > Type I Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 10.19 5.09 2 42 0.2488 0.7809 > > temperature 2100.30 420.06 5 210 20.5199 <2e-16 *** > > recipe:temperature 205.98 20.60 10 210 1.0062 0.4393 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an2 <- anova(m, type=2)) > > Type II Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 10.19 5.09 2 42 0.2488 0.7809 > > temperature 2100.30 420.06 5 210 20.5199 <2e-16 *** > > recipe:temperature 205.98 20.60 10 210 1.0062 0.4393 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > # Type 3 is also available with ordered factors: > > > (an3 <- anova(m, type=3)) > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 10.19 5.09 2 42 0.2488 0.7809 > > temperature 2100.30 420.06 5 210 20.5199 <2e-16 *** > > recipe:temperature 205.98 20.60 10 210 1.0062 0.4393 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > ## Balanced data and only factors: Type I, II and III should be the same: > > > stopifnot( > > + isTRUE(all.equal(an1, an2, check.attributes=FALSE, tolerance=TOL)), > > + isTRUE(all.equal(an1, an3, check.attributes=FALSE, tolerance=TOL)) > > + ) > > > > > > (an <- anova(m, type=1)) > > Type I Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 10.19 5.09 2 42 0.2488 0.7809 > > temperature 2100.30 420.06 5 210 20.5199 <2e-16 *** > > recipe:temperature 205.98 20.60 10 210 1.0062 0.4393 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an_lme4 <- anova(m, type=1, ddf="lme4")) > > Analysis of Variance Table > > Df Sum Sq Mean Sq F value > > recipe 2 10.19 5.09 0.2488 > > temperature 5 2100.30 420.06 20.5199 > > recipe:temperature 10 205.98 20.60 1.0062 > > > res <- all.equal(an[, c("Sum Sq", "Mean Sq", "F value")], > > + an_lme4[, c("Sum Sq", "Mean Sq", "F value")], > > tolerance=TOL) > > > stopifnot(isTRUE(res)) > > > if(has_pbkrtest) { > > + (an_KR <- anova(m, type=1, ddf="Kenward-Roger")) > > + res <- all.equal(an[, c("Sum Sq", "Mean Sq", "F value")], > > + an_KR[, c("Sum Sq", "Mean Sq", "F value")], > > tolerance=TOL) > > + stopifnot(isTRUE(res)) > > + } > > > stopifnot(all.equal(c(2, 5, 10), an$NumDF, tolerance=TOL), > > + all.equal(c(42, 210, 210), an$DenDF, tolerance=TOL)) > > > > > > ######## > > > ## Make case with balanced unordered factors: > > > cake2 <- cake > > > cake2$temperature <- factor(cake2$temperature, ordered = FALSE) > > > # str(cake2) > > > stopifnot( > > + !is.ordered(cake2$temperature) > > + ) > > > m <- lmer(angle ~ recipe * temperature + (1|recipe:replicate), cake2) > > > (an1 <- anova(m, type=1)) > > Type I Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 10.19 5.09 2 42 0.2488 0.7809 > > temperature 2100.30 420.06 5 210 20.5199 <2e-16 *** > > recipe:temperature 205.98 20.60 10 210 1.0062 0.4393 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an2 <- anova(m, type=2)) > > Type II Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 10.19 5.09 2 42 0.2488 0.7809 > > temperature 2100.30 420.06 5 210 20.5199 <2e-16 *** > > recipe:temperature 205.98 20.60 10 210 1.0062 0.4393 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an3 <- anova(m, type=3)) > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 10.19 5.09 2 42 0.2488 0.7809 > > temperature 2100.30 420.06 5 210 20.5199 <2e-16 *** > > recipe:temperature 205.98 20.60 10 210 1.0062 0.4393 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > ## Balanced data and only factors: Type I, II, and III should be the same: > > > stopifnot( > > + isTRUE(all.equal(an1, an2, check.attributes=FALSE, tolerance=TOL)), > > + isTRUE(all.equal(an3, an2, check.attributes=FALSE, tolerance=TOL)) > > + ) > > > ######## > > > > > > # No intercept: > > > m <- lmer(angle ~ 0 + recipe * temp + (1|recipe:replicate), cake) > > > (an <- anova(m, type=1)) > > Type I Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 21442.9 7147.6 3 42 342.2200 <2e-16 *** > > temp 1966.7 1966.7 1 222 94.1632 <2e-16 *** > > recipe:temp 1.7 0.9 2 222 0.0417 0.9592 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an2 <- anova(m, type=2)) > > Type II Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 4.48 1.49 3 254.02 0.0714 0.9752 > > temp 1966.71 1966.71 1 222.00 94.1632 <2e-16 *** > > recipe:temp 1.74 0.87 2 222.00 0.0417 0.9592 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an2 <- anova(m, type=3)) > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 4.48 1.49 3 254.02 0.0714 0.9752 > > temp 1966.71 1966.71 1 222.00 94.1632 <2e-16 *** > > recipe:temp 1.74 0.87 2 222.00 0.0417 0.9592 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > if(has_pbkrtest) > > + (an_KR <- anova(m, ddf="Kenward-Roger")) > > Type III Analysis of Variance Table with Kenward-Roger's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 4.48 1.49 3 254.02 0.0714 0.9752 > > temp 1966.71 1966.71 1 222.00 94.1632 <2e-16 *** > > recipe:temp 1.74 0.87 2 222.00 0.0417 0.9592 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an_lme4 <- anova(m, ddf="lme4")) > > Analysis of Variance Table > > Df Sum Sq Mean Sq F value > > recipe 3 21442.9 7147.6 342.2200 > > temp 1 1966.7 1966.7 94.1632 > > recipe:temp 2 1.7 0.9 0.0417 > > > res <- all.equal(an[, c("Sum Sq", "Mean Sq", "F value")], > > + an_lme4[, c("Sum Sq", "Mean Sq", "F value")], > > tolerance=TOL) > > > stopifnot(isTRUE(res)) > > > > > > # ML-fit: > > > m <- lmer(angle ~ recipe * temp + (1|recipe:replicate), cake, REML=FALSE) > > > (an <- anova(m, type=1)) > > Type I Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 10.99 5.49 2 45 0.2666 0.7672 > > temp 1966.71 1966.71 1 225 95.4357 <2e-16 *** > > recipe:temp 1.74 0.87 2 225 0.0423 0.9586 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > if(has_pbkrtest) > > + assertError(an <- anova(m, ddf="Kenward-Roger")) # KR fits should be > > REML > > > (an_lme4 <- anova(m, ddf="lme4")) > > Analysis of Variance Table > > Df Sum Sq Mean Sq F value > > recipe 2 10.99 5.49 0.2666 > > temp 1 1966.71 1966.71 95.4357 > > recipe:temp 2 1.74 0.87 0.0423 > > > res <- all.equal(an[, c("Sum Sq", "Mean Sq", "F value")], > > + an_lme4[, c("Sum Sq", "Mean Sq", "F value")], > > tolerance=TOL) > > > stopifnot(isTRUE(res)) > > > > > > #################################### > > > ## Using contr.sum: > > > #################################### > > > > > > m <- lmer(angle ~ recipe * temp + (1|recipe:replicate), cake, > > + contrasts = list('recipe' = "contr.sum")) > > > (an <- anova(m, type=1)) > > Type I Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 10.39 5.20 2 42 0.2488 0.7809 > > temp 1966.71 1966.71 1 222 94.1632 <2e-16 *** > > recipe:temp 1.74 0.87 2 222 0.0417 0.9592 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an2 <- anova(m, type=2)) > > Type II Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 4.00 2.00 2 254.02 0.0957 0.9088 > > temp 1966.71 1966.71 1 222.00 94.1632 <2e-16 *** > > recipe:temp 1.74 0.87 2 222.00 0.0417 0.9592 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an3 <- anova(m, type=3)) > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 4.00 2.00 2 254.02 0.0957 0.9088 > > temp 1966.71 1966.71 1 222.00 94.1632 <2e-16 *** > > recipe:temp 1.74 0.87 2 222.00 0.0417 0.9592 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > stopifnot( > > + isTRUE(all.equal(an2, an3, check.attributes=FALSE, tolerance=TOL)) > > + ) > > > if(has_pbkrtest) > > + (an_KR <- anova(m, type=1, ddf="Kenward-Roger")) > > Type I Analysis of Variance Table with Kenward-Roger's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > recipe 10.39 5.20 2 42 0.2488 0.7809 > > temp 1966.71 1966.71 1 222 94.1632 <2e-16 *** > > recipe:temp 1.74 0.87 2 222 0.0417 0.9592 > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an_lme4 <- anova(m, ddf="lme4")) > > Analysis of Variance Table > > Df Sum Sq Mean Sq F value > > recipe 2 10.39 5.20 0.2488 > > temp 1 1966.71 1966.71 94.1632 > > recipe:temp 2 1.74 0.87 0.0417 > > > res <- all.equal(an[, c("Sum Sq", "Mean Sq", "F value")], > > + an_lme4[, c("Sum Sq", "Mean Sq", "F value")], > > tolerance=TOL) > > > stopifnot(isTRUE(res)) > > > > > > > > > #################################### > > > ## Example with continuous fixef: > > > #################################### > > > > > > # Example with no fixef: > > > m <- lmer(Reaction ~ -1 + (Days | Subject), sleepstudy) > > > # m <- lmer(Reaction ~ 0 + (Days | Subject), sleepstudy) # alternative > > > stopifnot(length(fixef(m)) == 0L) > > > (an <- anova(m, type=1)) > > Type I Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > > (an_2 <- anova(m, type=2)) > > Type II Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > > (an_3 <- anova(m, type=3)) > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > > stopifnot(nrow(an) == 0L, > > + nrow(an_2) == 0L, > > + nrow(an_3) == 0L) > > > # anova(m, ddf="lme4") # Bug in lme4 it seems > > > if(has_pbkrtest) { > > + (an_KR <- anova(m, ddf="Kenward-Roger")) > > + stopifnot( > > + nrow(an_KR) == 0L > > + ) > > + } > > > > > > # Example with intercept only: > > > m <- lmer(Reaction ~ (Days | Subject), sleepstudy) > > > # m <- lmer(Reaction ~ 1 + (Days | Subject), sleepstudy) # alternative > > > stopifnot(length(fixef(m)) == 1L, > > + names(fixef(m)) == "(Intercept)") > > > (an <- anova(m)) > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > > (an_2 <- anova(m, type=2)) > > Type II Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > > (an_3 <- anova(m, type=3)) > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > > (an_lme4 <- anova(m, ddf="lme4")) > > Analysis of Variance Table > > Df Sum Sq Mean Sq F value > > > stopifnot(nrow(an) == 0L, > > + nrow(an_2) == 0L, > > + nrow(an_3) == 0L, > > + nrow(an_lme4) == 0L) > > > if(has_pbkrtest) { > > + (an_KR <- anova(m, ddf="Kenward-Roger")) > > + stopifnot( > > + nrow(an_KR) == 0L > > + ) > > + } > > > > > > # Example with 1 fixef without intercept: > > > m <- lmer(Reaction ~ Days - 1 + (Days | Subject), sleepstudy) > > Warning message: > > In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv, : > > Model failed to converge with max|grad| = 0.00416642 (tol = 0.002, > > component 1) > > > # m <- lmer(Reaction ~ 0 + Days + (Days | Subject), sleepstudy) # > > alternative > > > stopifnot(length(fixef(m)) == 1L, > > + names(fixef(m)) == "Days") > > > (an <- anova(m)) > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 93779 93779 1 16.995 143.19 1.054e-09 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an_2 <- anova(m, type=2)) > > Type II Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 93779 93779 1 16.995 143.19 1.054e-09 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an_3 <- anova(m, type=3)) > > Type III Analysis of Variance Table with Satterthwaite's method > > Sum Sq Mean Sq NumDF DenDF F value Pr(>F) > > Days 93779 93779 1 16.995 143.19 1.054e-09 *** > > --- > > Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 > > > (an_lme4 <- anova(m, ddf="lme4")) > > Analysis of Variance Table > > Df Sum Sq Mean Sq F value > > Days 1 93779 93779 143.19 > > > stopifnot(nrow(an) == 1L, > > + nrow(an_2) == 1L, > > + nrow(an_3) == 1L, > > + nrow(an_lme4) == 1L) > > > if(has_pbkrtest) { > > + (an_KR <- anova(m, ddf="Kenward-Roger")) > > + stopifnot( > > + nrow(an_KR) == 1L > > + ) > > + } > > > > > > res <- all.equal(an[, c("Sum Sq", "Mean Sq", "F value")], > > + an_lme4[, c("Sum Sq", "Mean Sq", "F value")], > > tolerance=TOL) > > > stopifnot(isTRUE(res)) > > > stopifnot(isTRUE(all.equal( > > + c(1, 17), unname(unlist(an[, c("NumDF", "DenDF")])), tolerance=TOL > > + ))) > > Error: isTRUE(all.equal(c(1, 17), unname(unlist(an[, c("NumDF", > > "DenDF")])), .... is not TRUE > > Execution halted > > autopkgtest [04:42:39]: test run-unit-test: -----------------------] > > > > > > > > _______________________________________________ > > R-pkg-team mailing list > > r-pkg-t...@alioth-lists.debian.net > > https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/r-pkg-team > > > -- > http://fam-tille.de -- http://fam-tille.de