Nothing
# ------------------------------------------------------------------------------
# yardstick_table()
test_that("unweighted case is correct", {
x <- data_altman()$pathology
expect <- table(Prediction = x$scan, Truth = x$pathology)
expect <- unclass(expect)
storage.mode(expect) <- "double"
expect_identical(
yardstick_table(x$pathology, x$scan),
expect
)
})
test_that("two level weighted case is correct", {
# Note, no (truth=y, estimate=y) value, but it appears in the table
truth <- factor(c("x", "x", "y", "y"), levels = c("x", "y"))
estimate <- factor(c("x", "y", "x", "x"), levels = c("x", "y"))
case_weights <- c(1, 1, 2, .5)
result <- yardstick_table(truth, estimate, case_weights = case_weights)
expect <- matrix(
c(1, 1, 2.5, 0),
nrow = 2,
ncol = 2,
dimnames = list(Prediction = c("x", "y"), Truth = c("x", "y"))
)
expect_identical(result, expect)
})
test_that("three level weighted case is correct", {
truth <- factor(c("x", "x", "y", "y", "z", "z", "z"), levels = c("x", "y", "z"))
estimate <- factor(c("x", "y", "x", "x", "z", "x", "z"), levels = c("x", "y", "z"))
case_weights <- c(1, 1, 2, .5, 2, 3, 3)
result <- yardstick_table(truth, estimate, case_weights = case_weights)
expect <- matrix(
c(1, 1, 0, 2.5, 0, 0, 3, 0, 5),
nrow = 3,
ncol = 3,
dimnames = list(Prediction = c("x", "y", "z"), Truth = c("x", "y", "z"))
)
expect_identical(result, expect)
})
test_that("validates input types", {
x <- factor(c("x", "y"))
expect_snapshot(error = TRUE, yardstick_table(1, x))
expect_snapshot(error = TRUE, yardstick_table(x, 2))
})
test_that("levels must be exactly the same", {
x <- factor(levels = c("x", "y"))
y <- factor(levels = c("x"))
z <- factor(levels = c("y", "x"))
expect_snapshot(error = TRUE, yardstick_table(x, y))
expect_snapshot(error = TRUE, yardstick_table(x, z))
})
test_that("must have at least 2 levels", {
x <- factor(levels = c("x"))
expect_snapshot(error = TRUE, yardstick_table(x, x))
})
test_that("case weights must be numeric", {
x <- factor(levels = c("x", "y"))
expect_snapshot(error = TRUE, yardstick_table(x, x, case_weights = "x"))
})
test_that("works with hardhat case weights", {
x <- factor(c("x", "y", "x"), levels = c("x", "y"))
w <- hardhat::frequency_weights(c(1, 3, 5))
expect_identical(
yardstick_table(x, x, case_weights = w),
yardstick_table(x, x, case_weights = as.integer(w))
)
})
# ------------------------------------------------------------------------------
# yardstick_mean()
test_that("works with hardhat case weights", {
x <- 1:3
w <- hardhat::frequency_weights(c(1, 3, 5))
expect_identical(
yardstick_mean(x, case_weights = w),
2 + 4 / 9
)
})
# ------------------------------------------------------------------------------
# yardstick_sum()
test_that("`na_remove` only removes NAs present in `x`", {
# For consistency with `stats::weighted.sum()`
x <- c(1, NA)
w <- c(2, 1)
expect_identical(yardstick_sum(x, case_weights = w), NA_real_)
expect_identical(yardstick_sum(x, case_weights = w, na_remove = TRUE), 2)
x <- c(1, 2)
w <- c(2, NA)
expect_identical(yardstick_sum(x, case_weights = w), NA_real_)
expect_identical(yardstick_sum(x, case_weights = w, na_remove = TRUE), NA_real_)
})
test_that("works with hardhat case weights", {
x <- 1:3
w <- hardhat::frequency_weights(c(1, 3, 5))
expect_identical(
yardstick_sum(x, case_weights = w),
22
)
})
# ------------------------------------------------------------------------------
# yardstick_sd()
test_that("works with constant inputs", {
x <- c(1, 1)
expect_identical(yardstick_sd(x), 0)
expect_identical(yardstick_sd(x), sd(x))
})
test_that("works with input of size 1", {
expect_identical(yardstick_sd(0), NA_real_)
expect_identical(yardstick_sd(0), sd(0))
})
test_that("works with input of size 0", {
expect_identical(yardstick_sd(double()), NA_real_)
expect_identical(yardstick_sd(double()), sd(double()))
})
test_that("works with hardhat case weights", {
x <- 1:3
w <- hardhat::frequency_weights(c(1, 3, 5))
expect_identical(
yardstick_sd(x, case_weights = w),
yardstick_sd(x, case_weights = as.integer(w))
)
})
# ------------------------------------------------------------------------------
# yardstick_var()
test_that("works with constant inputs", {
x <- c(1, 1)
expect_identical(yardstick_var(x), 0)
expect_identical(yardstick_var(x), var(x))
})
test_that("works with input of size 1", {
expect_identical(yardstick_var(0), NA_real_)
expect_identical(yardstick_var(0), var(0))
})
test_that("works with input of size 0", {
expect_identical(yardstick_var(double()), NA_real_)
expect_identical(yardstick_var(double()), var(double()))
})
test_that("works with hardhat case weights", {
x <- 1:3
w <- hardhat::frequency_weights(c(1, 3, 5))
expect_identical(
yardstick_var(x, case_weights = w),
yardstick_var(x, case_weights = as.integer(w))
)
})
# ------------------------------------------------------------------------------
# yardstick_cov()
test_that("works with constant inputs", {
x <- c(1, 1)
y <- c(2, 3)
expect_identical(yardstick_cov(x, y), 0)
expect_identical(yardstick_cov(x, y), cov(x, y))
x <- c(2, 3)
y <- c(1, 1)
expect_identical(yardstick_cov(x, y), 0)
expect_identical(yardstick_cov(x, y), cov(x, y))
x <- c(1, 1)
y <- c(1, 1)
expect_identical(yardstick_cov(x, y), 0)
expect_identical(yardstick_cov(x, y), cov(x, y))
})
test_that("works with input of size 1", {
expect_identical(yardstick_cov(0, 0), NA_real_)
expect_identical(yardstick_cov(0, 0), cov(0, 0))
})
test_that("works with input of size 0", {
expect_identical(yardstick_cov(double(), double()), NA_real_)
expect_identical(yardstick_cov(double(), double()), cov(double(), double()))
})
test_that("works with hardhat case weights", {
x <- 1:3
w <- hardhat::frequency_weights(c(1, 3, 5))
expect_identical(
yardstick_cov(x, x, case_weights = w),
yardstick_cov(x, x, case_weights = as.integer(w))
)
})
# ------------------------------------------------------------------------------
# yardstick_cor()
test_that("works with constant inputs", {
expect_snapshot({
(expect_warning(
object = out <- yardstick_cor(c(1, 2), c(1, 1)),
class = "yardstick_warning_correlation_undefined_constant_estimate"
))
})
expect_identical(out, NA_real_)
expect_snapshot({
(expect_warning(
object = out <- yardstick_cor(c(1, 1), c(1, 2)),
class = "yardstick_warning_correlation_undefined_constant_truth"
))
})
expect_identical(out, NA_real_)
})
test_that("warns with input of size 1", {
expect_snapshot({
(expect_warning(
object = out <- yardstick_cor(1, 1),
class = "yardstick_warning_correlation_undefined_size_zero_or_one"
))
})
expect_identical(out, NA_real_)
})
test_that("warns with input of size 0", {
expect_snapshot({
(expect_warning(
object = out <- yardstick_cor(double(), double()),
class = "yardstick_warning_correlation_undefined_size_zero_or_one"
))
})
expect_identical(out, NA_real_)
})
test_that("works with hardhat case weights", {
x <- 1:3
w <- hardhat::frequency_weights(c(1, 3, 5))
expect_identical(
yardstick_cor(x, x, case_weights = w),
yardstick_cor(x, x, case_weights = as.integer(w))
)
})
# ------------------------------------------------------------------------------
# weighted_quantile()
test_that("is a weighted variant of `quantile(type = 4)`", {
x <- 1:20 + 0
w <- rep(1, times = length(x))
expect_identical(
quantile(x, probs = c(0, .25, .5, .75, 1), type = 4, names = FALSE),
weighted_quantile(x, weights = w, probabilities = c(0, .25, .5, .75, 1))
)
x <- rev(0:20 + 0)
w <- rep(1, times = length(x))
expect_identical(
quantile(x, probs = c(0, .25, .5, .75, 1), type = 4, names = FALSE),
weighted_quantile(x, weights = w, probabilities = c(0, .25, .5, .75, 1))
)
})
test_that("works with zero values", {
expect_identical(weighted_quantile(numeric(), numeric(), c(.5, .6)), c(NA_real_, NA_real_))
})
test_that("works with one value", {
expect_identical(weighted_quantile(2, 5, c(.5, .6)), c(2, 2))
})
test_that("works with zero percentiles", {
expect_identical(weighted_quantile(1:5, 1:5, numeric()), numeric())
})
test_that("works with hardhat case weights", {
x <- 1:3
w <- hardhat::frequency_weights(c(1, 3, 5))
expect_identical(
weighted_quantile(x, w, .5),
weighted_quantile(x, as.integer(w), .5)
)
})
test_that("`x` is validated", {
expect_snapshot(error = TRUE, weighted_quantile("x", 1, .5))
})
test_that("`weights` is validated", {
expect_snapshot(error = TRUE, weighted_quantile(1, "x", .5))
})
test_that("`x` and `weights` must be the same size", {
expect_snapshot(error = TRUE, weighted_quantile(1, 1:2, .5))
})
test_that("`probabilities` is validated", {
expect_snapshot(error = TRUE, weighted_quantile(1, 1, "x"))
})
test_that("`probabilities` must be in [0, 1]", {
expect_snapshot(error = TRUE, weighted_quantile(1, 1, -1))
expect_snapshot(error = TRUE, weighted_quantile(1, 1, 2))
})
test_that("`probabilities` can't be missing", {
expect_snapshot(error = TRUE, weighted_quantile(1, 1, NA))
})
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.