context("interplay with emmeans") test_that("ANOVA functions work with emmeans, univariate & multivariate", { skip_if_not_installed("emmeans") data(sk2011.1) a1 <- aov_ez("id", "response", sk2011.1, between = "instruction", within = c("inference", "plausibility"), fun_aggregate = mean, include_aov = TRUE) em1 <- emmeans::emmeans(a1, ~ inference, model = "univariate") em2 <- emmeans::emmeans(a1, ~ inference, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) em1 <- emmeans::emmeans(a1, ~ inference*plausibility, model = "univariate") em2 <- emmeans::emmeans(a1, ~ inference*plausibility, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) a1b <- aov_ez("id", "response", sk2011.1, between = "instruction", within = c("plausibility", "inference"), fun_aggregate = mean, include_aov = TRUE) em1 <- emmeans::emmeans(a1b, ~ inference, model = "univariate") em2 <- emmeans::emmeans(a1b, ~ inference, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) a2 <- aov_ez("id", "response", sk2011.1, between = "instruction", within = c("inference"), fun_aggregate = mean, include_aov = TRUE) em1 <- emmeans::emmeans(a2, ~ inference, model = "univariate") em2 <- emmeans::emmeans(a2, ~ inference, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) a3 <- aov_ez("id", "response", sk2011.1, within = c("inference"), fun_aggregate = mean, include_aov = TRUE) em1 <- emmeans::emmeans(a3, ~ inference, model = "univariate") em2 <- emmeans::emmeans(a3, ~ inference, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) a4 <- aov_ez("id", "response", sk2011.1, between = "instruction", fun_aggregate = mean, include_aov = TRUE) em1 <- emmeans::emmeans(a4, ~ instruction, model = "univariate") em2 <- emmeans::emmeans(a4, ~ instruction, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean) expect_true(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) #### data("sk2011.2") ab1 <- aov_ez("id", "response", sk2011.2, between = "instruction", within = c("what", "validity", "type"), fun_aggregate = mean, include_aov = TRUE) em1 <- emmeans::emmeans(ab1, ~ what*validity*type, model = "univariate") em2 <- emmeans::emmeans(ab1, ~ what*validity*type, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean, tolerance = 0.1) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) em1 <- emmeans::emmeans(ab1, ~ validity*what*type, model = "univariate") em2 <- emmeans::emmeans(ab1, ~ validity*what*type, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean, tolerance = 0.1) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) em1 <- emmeans::emmeans(ab1, ~ type, model = "univariate") em2 <- emmeans::emmeans(ab1, ~ type, model = "multivariate") expect_is(em1, "emmGrid") expect_is(em2, "emmGrid") expect_equal(as.data.frame(summary(em2))$emmean, as.data.frame(summary(em1))$emmean, tolerance = 0.1) expect_false(isTRUE(all.equal( as.data.frame(summary(em2))$SE, as.data.frame(summary(em1))$SE))) }) test_that("ANCOVA with emmeans is correct for univariate & multivariate", { skip_if_not_installed("emmeans") data(sk2011.1) # a1 <- aov_ez("id", "value", obk.long, between = c("treatment", "gender"), # within = c("phase", "hour"), covariate = "age", # observed = c("gender", "age"), factorize = FALSE) # emmeans(a1, ~ phase, model = "multivariate") # emmeans(a1, ~ phase, model = "univariate") # # emmeans(a1, ~ treatment, model = "multivariate") # emmeans(a1, ~ treatment, model = "univariate") # deactivated, see: https://github.com/rvlenth/emmeans/issues/32 a2 <- aov_ez("id", "value", obk.long, between = c("treatment", "gender"), covariate = "age", fun_aggregate = mean, observed = c("gender", "age"), factorize = FALSE, include_aov = TRUE) em1 <- emmeans::emmeans(a2, ~ treatment, model = "univariate") em2 <- emmeans::emmeans(a2, ~ treatment, model = "multivariate") expect_equal(summary(em1)$emmean, summary(em2)$emmean) }) test_that("mixed works with emmeans", { skip_if_not_installed("emmeans") skip_on_cran() data(sk2011.1) emmeans::emm_options(lmer.df = "asymptotic") m1 <- mixed(response ~ instruction*inference*plausibility +(1|id), sk2011.1, progress = FALSE) expect_is(emmeans::emmeans(m1, ~ inference), "emmGrid") m2 <- mixed(response ~ inference +(inference|id), sk2011.1, progress = FALSE) expect_is(emmeans::emmeans(m2, ~ inference), "emmGrid") m3 <- mixed(response ~ instruction +(inference|id), sk2011.1, progress = FALSE) expect_is(emmeans::emmeans(m3, ~ instruction), "emmGrid") }) test_that("mixed works with type=2 and all methods", { skip_if_not_installed("emmeans") emmeans::emm_options(lmer.df = "asymptotic") ## in all tests, data needs to be passed because of nested evaluation. data("sk2011.2") sk2_aff <- droplevels(sk2011.2[sk2011.2$what == "affirmation",]) mixed_kr <- mixed(response ~ inference*type+(1|id), sk2_aff, type=2, method="KR", progress = FALSE) expect_is(emmeans::emmeans(mixed_kr, specs = c("type")), "emmGrid") mixed_s <- mixed(response ~ inference*type+(1|id), sk2_aff, type=2, method="S", progress = FALSE) expect_is(emmeans::emmeans(mixed_s, specs = c("type")), "emmGrid") mixed_lrt <- mixed(response ~ type+(1|id), sk2_aff, type=2, method="LRT", progress = FALSE) expect_is(emmeans::emmeans(mixed_lrt, specs = c("type")), "emmGrid") mixed_pb <- suppressWarnings(mixed(response ~ type+(1|id), sk2_aff, type=2, method="PB", progress = FALSE, args_test = list(nsim = 10))) expect_is(emmeans::emmeans(mixed_pb, specs = c("type")), "emmGrid") mixed_oldkr <- mixed(response ~ type+(1|id), sk2_aff, type=2, method="nested-KR", progress = FALSE) expect_is(emmeans::emmeans(mixed_oldkr, specs = c("type")), "emmGrid") }) test_that("emmeans works with mixed and expand_er = TRUE", { skip_if_not_installed("emmeans") skip_if_not_installed("MEMSS") data("Machines", package = "MEMSS") m2 <- mixed(score ~ Machine + (Machine||Worker), data=Machines, expand_re = TRUE, progress = FALSE) t1 <- emmeans::emmeans(m2, "Machine", lmer.df = "asymptotic") t2 <- emmeans::emmeans(m2, "Machine", lmer.df = "Satterthwaite") t3 <- emmeans::emmeans(m2, "Machine", lmer.df = "kenward-roger") expect_is(t1, "emmGrid") expect_is(t2, "emmGrid") expect_is(t3, "emmGrid") expect_is(summary(t1), "data.frame") expect_is(summary(t2), "data.frame") expect_is(summary(t3), "data.frame") }) test_that("emmeans with mixed & expand_re = TRUE with pre 3.0 lmerTest objects", { skip_if_not_installed("emmeans") skip_on_cran() load("m_machines_lmerTest-pre3.0.rda") # load("tests/testthat/m_machines_lmerTest-pre3.0.rda") t1 <- emmeans::emmeans(m_machines, "Machine", lmer.df = "asymptotic") t2 <- emmeans::emmeans(m_machines, "Machine", lmer.df = "Satterthwaite") t3 <- emmeans::emmeans(m_machines, "Machine", lmer.df = "kenward-roger") expect_is(t1, "emmGrid") expect_is(t2, "emmGrid") expect_is(t3, "emmGrid") expect_is(summary(t1), "data.frame") expect_is(summary(t2), "data.frame") expect_is(summary(t3), "data.frame") })