skip_if_not_installed("bayestestR") test_that("equivalence_test", { data(mtcars) m <- lm(mpg ~ gear + wt + cyl + hp, data = mtcars) x <- equivalence_test(m) expect_identical(c(nrow(x), ncol(x)), c(5L, 9L)) expect_type(capture.output(equivalence_test(m)), "character") expect_snapshot(print(x)) }) test_that("equivalence_test, robust", { skip_if_not_installed("sandwich") data(mtcars) m <- lm(mpg ~ gear + wt + cyl + hp, data = mtcars) x <- equivalence_test(m, vcov = "HC3") expect_snapshot(print(x)) }) test_that("equivalence_test, unequal rope-range", { data(iris) m <- lm(Sepal.Length ~ Species, data = iris) rez <- equivalence_test(m, range = c(-Inf, 0.1)) expect_identical(rez$ROPE_Equivalence, c("Rejected", "Rejected", "Rejected")) expect_identical(rez$ROPE_low, c(-Inf, -Inf, -Inf)) rez <- equivalence_test(m, range = c(-99, 0.1)) expect_identical(rez$ROPE_Equivalence, c("Rejected", "Rejected", "Rejected")) expect_identical(rez$ROPE_low, c(-99, -99, -99)) data(mtcars) mtcars[c("gear", "cyl")] <- lapply(mtcars[c("gear", "cyl")], as.factor) m <- lm(mpg ~ hp + gear + cyl, data = mtcars) rez <- equivalence_test(m, range = c(-Inf, 0.5)) expect_identical( rez$ROPE_Equivalence, c("Rejected", "Accepted", "Undecided", "Rejected", "Accepted", "Undecided") ) # validate that range of CI equals approximated normal distribution diff_ci <- abs(diff(c(rez$CI_low[3], rez$CI_high[3]))) set.seed(123) out <- bayestestR::distribution_normal( n = 1000, mean = rez$CI_high[3] - (diff_ci / 2), sd = (diff_ci / 2) / 3.290525 ) expect_equal(range(out)[1], rez$CI_low[3], tolerance = 1e-4) expect_equal(range(out)[2], rez$CI_high[3], tolerance = 1e-4) # need procedure for SGP here... diff_ci <- abs(diff(c(rez$CI_low[3], rez$CI_high[3]))) z_value <- stats::qnorm((1 + 0.95) / 2) sd_dist <- diff_ci / diff(c(-1 * z_value, z_value)) set.seed(123) out <- bayestestR::distribution_normal( n = 10000, mean = rez$CI_high[3] - (diff_ci / 2), sd = sd_dist ) expect_equal( rez$SGPV[3], bayestestR::rope(out, range = c(-Inf, 0.5), ci = 1)$ROPE_Percentage, tolerance = 1e-4 ) rez <- equivalence_test(m, range = c(-0.5, 0.5)) expect_identical( rez$ROPE_Equivalence, c("Rejected", "Accepted", "Undecided", "Rejected", "Rejected", "Undecided") ) rez <- equivalence_test(m, range = c(-2, 2)) expect_identical( rez$ROPE_Equivalence, c("Rejected", "Accepted", "Undecided", "Rejected", "Rejected", "Undecided") ) }) test_that("equivalence_test, unequal rope-range, plots", { skip_on_cran() skip_if_not_installed("vdiffr") data(iris) m <- lm(Sepal.Length ~ Species, data = iris) rez <- equivalence_test(m, range = c(-Inf, 0.1)) vdiffr::expect_doppelganger( "Equivalence-Test 1", plot(rez) ) rez <- equivalence_test(m, range = c(-99, 0.1)) vdiffr::expect_doppelganger( "Equivalence-Test 2", plot(rez) ) data(mtcars) mtcars[c("gear", "cyl")] <- lapply(mtcars[c("gear", "cyl")], as.factor) m <- lm(mpg ~ hp + gear + cyl, data = mtcars) rez <- equivalence_test(m, range = c(-Inf, 0.5)) vdiffr::expect_doppelganger( "Equivalence-Test 3", plot(rez) ) rez <- equivalence_test(m, range = c(-0.5, 0.5)) vdiffr::expect_doppelganger( "Equivalence-Test 4", plot(rez) ) rez <- equivalence_test(m, range = c(-2, 2)) vdiffr::expect_doppelganger( "Equivalence-Test 5", plot(rez) ) })