tests/testthat/test-dropbig.R

testthat::context("dropbig")

testthat::test_that("dropbig detects values above 'max'", {
  set.seed(238746)
  n <- 1000
  df <- data.frame(
    theta = rnorm(n),
    se = exp(rnorm(n, sd = 0.1))
  )
  df$theta[1] <- rnorm(1, mean = 1000)
  out <- dropbig(data = df, estvarname = "theta", se = "se", methodvar = NULL, by = NULL, robust = FALSE)
  testthat::expect_equal(object = out$.dropbig[1], expected = TRUE)
  out <- dropbig(data = df, estvarname = "theta", se = "se", methodvar = NULL, by = NULL, robust = TRUE)
  testthat::expect_equal(object = out$.dropbig[1], expected = TRUE)
  # Using robust standardisation is better at detecting outliers:
  df$theta[1] <- rnorm(1, mean = 500)
  out <- dropbig(data = df, estvarname = "theta", se = "se", methodvar = NULL, by = NULL, robust = TRUE)
  testthat::expect_equal(object = out$.dropbig[1], expected = TRUE)
  df$theta[1] <- rnorm(1, mean = 100)
  out <- dropbig(data = df, estvarname = "theta", se = "se", methodvar = NULL, by = NULL, robust = TRUE)
  testthat::expect_equal(object = out$.dropbig[1], expected = TRUE)
  df$theta[1] <- rnorm(1, mean = 50)
  out <- dropbig(data = df, estvarname = "theta", se = "se", methodvar = NULL, by = NULL, robust = TRUE)
  testthat::expect_equal(object = out$.dropbig[1], expected = TRUE)
  df$theta[1] <- rnorm(1, mean = 25)
  out <- dropbig(data = df, estvarname = "theta", se = "se", methodvar = NULL, by = NULL, robust = TRUE)
  testthat::expect_equal(object = out$.dropbig[1], expected = TRUE)
  # Without passing 'se':
  df$theta[1] <- rnorm(1, mean = 500)
  out <- dropbig(data = df, estvarname = "theta", methodvar = NULL, by = NULL, robust = TRUE)
  testthat::expect_equal(object = out$.dropbig[1], expected = TRUE)
  df$theta[1] <- rnorm(1, mean = 100)
  out <- dropbig(data = df, estvarname = "theta", methodvar = NULL, by = NULL, robust = TRUE)
  testthat::expect_equal(object = out$.dropbig[1], expected = TRUE)
  df$theta[1] <- rnorm(1, mean = 50)
  out <- dropbig(data = df, estvarname = "theta", methodvar = NULL, by = NULL, robust = TRUE)
  testthat::expect_equal(object = out$.dropbig[1], expected = TRUE)
  df$theta[1] <- rnorm(1, mean = 25)
  out <- dropbig(data = df, estvarname = "theta", methodvar = NULL, by = NULL, robust = TRUE)
  testthat::expect_equal(object = out$.dropbig[1], expected = TRUE)
})

testthat::test_that("dropbig throws errors when appropriate", {
  set.seed(238746)
  n <- 1000
  df <- data.frame(
    theta = rnorm(n),
    se = exp(rnorm(n, sd = 0.1))
  )
  df$theta[1] <- rnorm(1, mean = 1000)
  testthat::expect_error(rsimsum::dropbig(data = df))
  testthat::expect_error(object = rsimsum::dropbig(data = df, estvarname = 1, se = "se"))
  testthat::expect_error(object = rsimsum::dropbig(data = df, estvarname = "theta", se = 1))
  testthat::expect_error(object = rsimsum::dropbig(data = df, estvarname = TRUE, se = "se"))
  testthat::expect_error(object = rsimsum::dropbig(data = df, estvarname = "theta", se = TRUE))
  testthat::expect_error(object = rsimsum::dropbig(data = df, estvarname = "theta", se = "se", methodvar = 1))
  testthat::expect_error(object = rsimsum::dropbig(data = df, estvarname = "theta", se = "se", methodvar = TRUE))
  testthat::expect_error(object = rsimsum::dropbig(data = df, estvarname = "theta", se = "se", by = 1))
  testthat::expect_error(object = rsimsum::dropbig(data = df, estvarname = "theta", se = "se", by = TRUE))
  testthat::expect_error(object = rsimsum::dropbig(data = df, estvarname = "theta", se = "se", robust = "yeah!"))
})

Try the rsimsum package in your browser

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

rsimsum documentation built on Aug. 17, 2022, 5:07 p.m.