Nothing
# Common --------------------------------------------------------------------------------------
test_that("not specifying which term to break down will break down all categorical terms", {
fit <- lm(mpg ~ factor(am) * factor(cyl), data = mtcars)
cat_terms <- frm_terms(fit)
expect_named(pairwise(fit, "Tukey"), cat_terms)
expect_named(pairwise(fit, "none"), cat_terms)
})
test_that("you can specify the specific term you want to analyze", {
fit <- lm(mpg ~ factor(am) * factor(cyl), data = mtcars)
expect_named(pairwise(fit, term = "factor(am):factor(cyl)"), "factor(am):factor(cyl)")
})
test_that("there is an informative error if you try to select a non-existent term", {
fit <- lm(mpg ~ factor(am) * factor(cyl), data = mtcars)
expect_snapshot_error(pairwise(fit, "does-not-exist"))
})
test_that("it can handle models with data names that mask function name", {
data <- vctrs::vec_c(
tibble::tibble(group = "A", value = rnorm(31)),
tibble::tibble(group = "B", value = rnorm(30))
)
fitted <- lm(value ~ group, data = data)
expect_error(pairwise(fitted), NA)
})
test_that("it can take a factor defined in the formula", {
fitted <- lm(mpg ~ factor(cyl), data = mtcars)
expect_named(pairwise(fitted), "factor(cyl)")
})
test_that("there are no errors with balanced data", {
# one of the underlying functions returns a single value for n when the counts are balanced
data <- vctrs::vec_c(
tibble::tibble(group_1 = "A", group_2 = rep(1:2, each = 15), value = rnorm(30)),
tibble::tibble(group_1 = "B", group_2 = rep(1:2, each = 15), value = rnorm(30))
)
fitted <- lm(value ~ group_1 * group_2, data = data)
expect_error(pairwise(fitted), NA)
})
# Tukey ---------------------------------------------------------------------------------------
test_that("pairwise wraps pairwise_tukey", {
fit <- lm(mpg ~ factor(am), data = mtcars)
expect_equal(pairwise(fit, "Tukey"), pairwise_tukey(fit))
})
test_that("pairwise_tukey tests have family-wise error-rate at alpha rate", {
fit <- lm(mpg ~ factor(cyl) * factor(am), data = mtcars)
actual <- pairwise_tukey(fit, alpha = .01)
expect_equal(attr(actual[[1]], "fwer"), .01)
expect_equal(attr(actual[[2]], "fwer"), .01)
expect_equal(attr(actual[[3]], "fwer"), .01)
})
test_that("pairwise_tukey outputs correct values for diff, lower, upper, and p", {
fit <- lm(mpg ~ factor(cyl) * factor(am), data = mtcars)
actual <- pairwise_tukey(fit)[[1]][, c("diff", "lower", "upper", "p_adj")]
actual <- purrr::modify(actual, as.double)
expected <- as.data.frame(TukeyHSD(aov(fit))[[1]])
names(expected) <- names(actual)
ignorable <- c("row.names", "class", "fit", "term", "correction", "n_levels", "alpha", "fwer")
expect_equal(actual, expected, ignore_attr = ignorable)
})
# t-tests -------------------------------------------------------------------------------------
test_that("pairwise_t matches relevant values from pairwise_tukey", {
fit <- lm(mpg ~ factor(cyl) * factor(am), data = mtcars)
expected <- pairwise_tukey(fit)[[1]][, c("group_1", "group_2", "diff", "pooled_se", "df")]
actual <- pairwise_t(fit)[[1]][, c("group_1", "group_2", "diff", "pooled_se", "df")]
expect_equal(actual, expected, ignore_attr = c("correction", "fwer"))
})
test_that("uncorrected t-test family-wise error-rate is larger than alpha when more than 2 tests", {
fit <- lm(mpg ~ factor(cyl) * factor(am), data = mtcars)
actual <- pairwise_t(fit, alpha = .01, correction = "none")
expect_gt(attr(actual[[1]], "fwer"), .01)
expect_gt(attr(actual[[2]], "fwer"), .01)
expect_gt(attr(actual[[3]], "fwer"), .01)
})
# Plots ---------------------------------------------------------------------------------------
test_that("each type of comparisons object plots well", {
fit <- lm(mpg ~ factor(cyl), data = mtcars)
term <- "factor(cyl)"
tukey <- ggplot2::autoplot(pairwise_tukey(fit))
vdiffr::expect_doppelganger("Tukey, one variable", tukey[[term]])
t <- ggplot2::autoplot(pairwise_t(fit))
vdiffr::expect_doppelganger("t-test, one variable", t[[term]])
bonf <- ggplot2::autoplot(pairwise_bonferroni(fit))
vdiffr::expect_doppelganger("Bonferroni, one variable", bonf[[term]])
})
test_that("a separate plot is created for each term in the model", {
fit <- lm(mpg ~ factor(cyl) * factor(am), data = mtcars)
plots <- ggplot2::autoplot(pairwise_tukey(fit))
terms <- labels(stats::terms(fit))
make_title <- function(x) paste("Multiple plots, term:", x)
purrr::walk(terms, ~ vdiffr::expect_doppelganger(make_title(.x), plots[[.x]]))
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.