tests/testthat/test_emmeans.r

# Setup -------------------------------------------------------------------

expected_statistics <- read_stats("../data/emmeans.json")

library(emmeans)

# emmeans() ---------------------------------------------------------------

test_that("emmeans works", {
  warp_lm <- lm(breaks ~ wool * tension, data = warpbreaks)
  model <- emmeans(warp_lm, ~ tension | wool)

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$warp_emm
  )
})

test_that("emmeans poly works", {
  warp_lm <- lm(breaks ~ wool * tension, data = warpbreaks)
  model <- emmeans(warp_lm, poly ~ tension | wool, adjust = "sidak")

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$warp_emm_poly
  )
})

test_that("emmeans confint works", {
  warp_lm <- lm(breaks ~ wool * tension, data = warpbreaks)
  warp_emm <- emmeans(warp_lm, ~ tension | wool)
  model <- confint(warp_emm, by = "wool", level = .90)

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$warp_emm_confint
  )
})

# contrast() --------------------------------------------------------------

test_that("emmeans contrast poly works", {
  warp_lm <- lm(breaks ~ wool * tension, data = warpbreaks)
  warp_emm <- emmeans(warp_lm, ~ tension | wool)
  model <- contrast(warp_emm, "poly")

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$warp_contrast_poly
  )
})

test_that("emmeans contrast pairs works", {
  warp_lm <- lm(breaks ~ wool * tension, data = warpbreaks)
  warp_emm <- emmeans(warp_lm, ~ tension | wool)
  model <- pairs(warp_emm)

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$warp_pairs
  )
})

test_that("emmeans contrast eff works", {
  warp_lm <- lm(breaks ~ wool * tension, data = warpbreaks)
  warp_emm <- emmeans(warp_lm, ~ tension | wool)
  model <- contrast(
    warp_emm, "eff",
    by = NULL, enhance.levels = c("wool", "tension")
  )

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$warp_contrast_eff
  )
})

test_that("emmeans contrast pairs simple works", {
  warp_lm <- lm(breaks ~ wool * tension, data = warpbreaks)
  warp_emm <- emmeans(warp_lm, ~ tension | wool)
  model <- pairs(warp_emm, simple = "wool")

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$warp_pairs_simple
  )
})

test_that("emmeans contrast pairs each works", {
  warp_lm <- lm(breaks ~ wool * tension, data = warpbreaks)
  warp_emm <- emmeans(warp_lm, ~ tension | wool)
  model <- pairs(warp_emm, simple = "each", combine = FALSE)

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$warp_pairs_each
  )
})

test_that("emmeans contrast pairs each combined works", {
  warp_lm <- lm(breaks ~ wool * tension, data = warpbreaks)
  warp_emm <- emmeans(warp_lm, ~ tension | wool)
  model <- pairs(warp_emm, simple = "each", combine = TRUE)

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$warp_pairs_each_combined
  )
})

# test() ------------------------------------------------------------------

test_that("emmeans test works", {
  pigs_lm <- lm(log(conc) ~ source + factor(percent), data = pigs)
  pigs_emm <- emmeans(pigs_lm, specs = "percent", type = "response")
  model <- test(pigs_emm, null = log(35), delta = log(1.10), side = ">")

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$pigs_test
  )
})

test_that("emmeans testjoint works", {
  pigs_lm <- lm(log(conc) ~ source + factor(percent), data = pigs)
  pigs_emm <- emmeans(pigs_lm, specs = "percent", type = "response")
  pigs_con <- contrast(pigs_emm, "consec")
  model <- test(pigs_con, joint = TRUE)

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$pigs_test_joint
  )
})

# mvcontrast() ------------------------------------------------------------

test_that("emmeans mvcontrast works", {
  moats_lm <- lm(yield ~ Variety + Block, data = MOats)
  moats_emm <- emmeans(moats_lm, ~ Variety | rep.meas)
  model <- mvcontrast(moats_emm, "consec", show.ests = TRUE)

  output <- add_stats(list(), model, class = "emm_list")
  object <- output$model
  object$package <- NULL
  expected <- expected_statistics$moats_mvcontrast
  expected$package <- NULL

  expect_equal(
    object = object,
    expected = expected, tolerance = 0.0001
  )
})

test_that("emmeans mvcontrast null works", {
  moats_lm <- lm(yield ~ Variety + Block, data = MOats)
  moats_emm <- emmeans(moats_lm, ~ Variety | rep.meas)
  model <- mvcontrast(
    moats_emm,
    "identity",
    name = "Variety",
    null = c(80, 100, 120, 140)
  )

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$moats_mvcontrast_null
  )
})

# eff_size() --------------------------------------------------------------

test_that("emmeans eff_size works", {
  fiber_lm <- lm(strength ~ diameter + machine, data = fiber)
  fiber_emm <- emmeans(fiber_lm, "machine")
  model <- eff_size(
    fiber_emm,
    sigma = sigma(fiber_lm), edf = df.residual(fiber_lm)
  )

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$fiber_eff_size
  )
})

# emtrends() --------------------------------------------------------------

test_that("emmeans emtrends works", {
  fiber_lm <- lm(strength ~ diameter * machine, data = fiber)
  model <- emtrends(
    fiber_lm, ~ machine | diameter,
    var = "sqrt(diameter)",
    at = list(diameter = c(20, 30))
  )

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$fiber_trends
  )
})

test_that("emmeans emtrends poly works", {
  mtcars_lm <- lm(
    mpg ~ poly(disp, degree = 2) * (factor(cyl) + factor(am)),
    data = mtcars
  )
  model <- emtrends(
    mtcars_lm,
    var = "disp",
    cov.reduce = disp ~ factor(cyl)
  )

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$mtcars_trends
  )
})

# joint_tests() -----------------------------------------------------------

test_that("emmeans emtrends works", {
  pigs_lm <- lm(log(conc) ~ source * factor(percent), data = pigs)
  model <- joint_tests(pigs_lm)

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$pigs_joint_tests
  )
})

test_that("emmeans emtrends by works", {
  pigs_lm <- lm(log(conc) ~ source * factor(percent), data = pigs)
  model <- joint_tests(pigs_lm, by = "source")

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$pigs_joint_tests_by
  )
})

# ref_grid() --------------------------------------------------------------

test_that("emmeans ref_grid works", {
  fiber_lm <- lm(strength ~ machine * diameter, data = fiber)
  model <- ref_grid(fiber_lm)

  expect_equal_models(
    model = model,
    expected_tidy_model = expected_statistics$fiber_ref_grid
  )
})

Try the tidystats package in your browser

Any scripts or data that you put into this service are public.

tidystats documentation built on Oct. 17, 2023, 1:06 a.m.