tests/testthat/test-impute.R

test_that("impute() handles non-numeric input", {
  expect_error(impute(c("a", "b", "c")), "`x` must be a numeric vector.")
})

test_that("impute() defaults focus and method correctly", {
  x <- c(10, 20, 30, 10000, 2000, NA)
  expect_message(impute(x, focus = c("skew", "missing")), "`focus` is set to 'skew'.")
  expect_message(impute(x, focus = "skew", method = c("winsorize", "iqr")))
  expect_message(impute(x, focus = "missing", method = c("mean", "median")))
})

test_that("impute() validates method for skew focus", {
  x <- c(10, 20, 30, 10000, 2000, NA)
  expect_error(
    impute(x, focus = "skew", method = "mean"))
})


test_that("impute() validates percentile for winsorization", {
  x <- c(10, 20, 30, 10000, 2000, NA)
  expect_error(impute(x, focus = "skew", method = "winsorize", percentile = -0.1))
  expect_no_error(impute(x, focus = "skew", method = "winsorize", percentile = 0.1))
})

test_that("impute() correctly winsorizes with default percentiles", {
  x <- c(10, 20, 30, 10000, 2000, NA)
  result <- impute(x, focus = "skew", method = "winsorize")
  expect_equal(result, c(10.4, 20.0, 30.0, 9680.0, 2000.0, NA)) # Default 1% and 99%
})

test_that("impute() correctly winsorizes with custom percentiles", {
  x <- c(10, 20, 30, 10000, 2000, NA)
  result <- impute(x, focus = "skew", method = "winsorize", percentile = 0.05)
  expect_equal(result, c(8400.0, 12.0, 12.0, 12.0, 12.0, NA)) # Custom 5% and 95%
})

test_that("impute() handles IQR for extreme values", {
  x <- c(10, 20, 30, 10000, 2000, NA)
  result <- impute(x, focus = "skew", method = "iqr")
  expect_equal(result, c(10, 20, 30, 4970, 2000, NA)) # IQR-based limits
})

test_that("impute() imputes missing values with mean", {
  x <- c(10, 20, 30, 10000, 2000, NA)
  result <- impute(x, focus = "missing", method = "mean")
  expect_equal(result, c(10, 20, 30, 10000, 2000, 2412)) # Mean = 2412
})

test_that("impute() imputes missing values with median", {
  x <- c(10, 20, 30, 10000, 2000, NA)
  result <- impute(x, focus = "missing", method = "median")
  expect_equal(result, c(10, 20, 30, 10000, 2000, 30)) # Median = 30
})

Try the traumar package in your browser

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

traumar documentation built on April 3, 2025, 11:55 p.m.