Nothing
test_that("missing values in case weights are considered by `na_rm`", {
truth <- factor(c("x", "y"), levels = c("x", "y"))
estimate <- factor(c("x", "x"), levels = c("x", "y"))
case_weights <- c(1, NA)
expect_identical(
accuracy_vec(truth, estimate, case_weights = case_weights),
1
)
expect_identical(
accuracy_vec(truth, estimate, case_weights = case_weights, na_rm = FALSE),
NA_real_
)
})
## numeric_metric_summarizer --------------------------------------------------
test_that("numeric_metric_summarizer() works as expected", {
rmse_res <- numeric_metric_summarizer(
name = "rmse",
fn = rmse_vec,
data = mtcars,
truth = mpg,
estimate = disp,
na_rm = TRUE,
case_weights = NULL
)
rmse_exp <- dplyr::tibble(
.metric = "rmse",
.estimator = "standard",
.estimate = rmse_vec(mtcars$mpg, mtcars$disp)
)
expect_identical(rmse_res, rmse_exp)
})
test_that("numeric_metric_summarizer() works with grouped input", {
rmse_res <- numeric_metric_summarizer(
name = "rmse",
fn = rmse_vec,
data = dplyr::group_by(mtcars, vs),
truth = mpg,
estimate = disp,
na_rm = TRUE,
case_weights = NULL
)
mtcars_split <- vctrs::vec_split(mtcars, mtcars$vs)
rmse_exp <- dplyr::tibble(
vs = mtcars_split$key,
.metric = "rmse",
.estimator = "standard",
.estimate = vapply(
mtcars_split$val,
function(x) rmse_vec(x$mpg, x$disp),
FUN.VALUE = numeric(1)
)
)
expect_identical(rmse_res, rmse_exp)
})
test_that("numeric_metric_summarizer()'s na_rm argument work", {
mtcars_na <- mtcars
mtcars_na[1:5, 1] <- NA
rmse_res <- numeric_metric_summarizer(
name = "rmse",
fn = rmse_vec,
data = mtcars_na,
truth = mpg,
estimate = disp,
na_rm = TRUE,
case_weights = NULL
)
rmse_exp <- dplyr::tibble(
.metric = "rmse",
.estimator = "standard",
.estimate = rmse_vec(mtcars$mpg[-(1:5)], mtcars$disp[-(1:5)])
)
expect_identical(rmse_res, rmse_exp)
rmse_res <- numeric_metric_summarizer(
name = "rmse",
fn = rmse_vec,
data = mtcars_na,
truth = mpg,
estimate = disp,
na_rm = FALSE,
case_weights = NULL
)
rmse_exp <- dplyr::tibble(
.metric = "rmse",
.estimator = "standard",
.estimate = na_dbl
)
expect_identical(rmse_res, rmse_exp)
})
test_that("numeric_metric_summarizer()'s case_weights argument work", {
rmse_res <- numeric_metric_summarizer(
name = "rmse",
fn = rmse_vec,
data = mtcars,
truth = mpg,
estimate = disp,
na_rm = TRUE,
case_weights = vs
)
rmse_exp <- dplyr::tibble(
.metric = "rmse",
.estimator = "standard",
.estimate = rmse_vec(mtcars$mpg[mtcars$vs == 1], mtcars$disp[mtcars$vs == 1])
)
expect_identical(rmse_res, rmse_exp)
})
test_that("numeric_metric_summarizer()'s errors when wrong things are passes", {
expect_snapshot(
error = TRUE,
numeric_metric_summarizer(
name = "rmse",
fn = rmse_vec,
data = mtcars,
truth = not_a_real_column_name,
estimate = disp
)
)
expect_snapshot(
error = TRUE,
numeric_metric_summarizer(
name = "rmse",
fn = rmse_vec,
data = mtcars,
truth = mpg,
estimate = not_a_real_column_name
)
)
expect_snapshot(
error = TRUE,
numeric_metric_summarizer(
name = "rmse",
fn = rmse_vec,
data = mtcars,
truth = mpg,
estimate = disp,
obviouslywrong = TRUE
)
)
})
test_that("numeric_metric_summarizer() deals with characters in truth and estimate", {
rmse_res <- numeric_metric_summarizer(
name = "rmse",
fn = rmse_vec,
data = mtcars,
truth = "mpg",
estimate = "disp"
)
rmse_exp <- dplyr::tibble(
.metric = "rmse",
.estimator = "standard",
.estimate = rmse_vec(mtcars$mpg, mtcars$disp)
)
expect_identical(rmse_res, rmse_exp)
})
test_that("numeric_metric_summarizer() handles column name collisions", {
new_mtcars <- mtcars
new_mtcars$name <- mtcars$mpg
new_mtcars$estimator <- mtcars$mpg
new_mtcars$event_level <- mtcars$mpg
new_mtcars$na_rm <- mtcars$mpg
new_mtcars$truth <- mtcars$mpg
new_mtcars$estimate <- mtcars$mpg
rmse_res <- numeric_metric_summarizer(
name = "rmse",
fn = rmse_vec,
data = new_mtcars,
truth = mpg,
estimate = disp,
na_rm = TRUE,
case_weights = NULL
)
rmse_exp <- dplyr::tibble(
.metric = "rmse",
.estimator = "standard",
.estimate = rmse_vec(new_mtcars$mpg, new_mtcars$disp)
)
expect_identical(rmse_res, rmse_exp)
})
## class_metric_summarizer --------------------------------------------------
test_that("class_metric_summarizer() works as expected", {
three_class <- data_three_class()$three_class
bal_accuracy_res <- class_metric_summarizer(
name = "bal_accuracy",
fn = bal_accuracy_vec,
data = three_class,
truth = obs,
estimate = pred,
na_rm = TRUE,
case_weights = NULL
)
bal_accuracy_exp <- dplyr::tibble(
.metric = "bal_accuracy",
.estimator = "macro",
.estimate = bal_accuracy_vec(three_class$obs, three_class$pred)
)
expect_identical(bal_accuracy_res, bal_accuracy_exp)
bal_accuracy_res <- class_metric_summarizer(
name = "bal_accuracy",
fn = bal_accuracy_vec,
data = three_class,
truth = obs,
estimate = pred,
estimator = "micro",
na_rm = TRUE,
case_weights = NULL
)
bal_accuracy_exp <- dplyr::tibble(
.metric = "bal_accuracy",
.estimator = "micro",
.estimate = bal_accuracy_vec(
truth = three_class$obs,
estimate = three_class$pred,
estimator = "micro"
)
)
expect_identical(bal_accuracy_res, bal_accuracy_exp)
})
test_that("class_metric_summarizer() works with grouped input", {
three_class <- data_three_class()$three_class
three_class$group <- rep(1:2, length.out = nrow(three_class))
bal_accuracy_res <- class_metric_summarizer(
name = "bal_accuracy",
fn = bal_accuracy_vec,
data = dplyr::group_by(three_class, group),
truth = obs,
estimate = pred,
na_rm = TRUE,
case_weights = NULL
)
three_class_split <- vctrs::vec_split(three_class, three_class$group)
bal_accuracy_exp <- dplyr::tibble(
group = three_class_split$key,
.metric = "bal_accuracy",
.estimator = "macro",
.estimate = vapply(
three_class_split$val,
function(x) bal_accuracy_vec(x$obs, x$pred),
FUN.VALUE = numeric(1)
)
)
expect_identical(bal_accuracy_res, bal_accuracy_exp)
})
test_that("class_metric_summarizer()'s event_level works as expected", {
lst <- data_altman()$pathology
first_res <- class_metric_summarizer(
name = "detection_prevalence",
fn = detection_prevalence_vec,
data = lst,
truth = pathology,
estimate = scan,
event_level = "first"
)
second_res <- class_metric_summarizer(
name = "detection_prevalence",
fn = detection_prevalence_vec,
data = lst,
truth = pathology,
estimate = scan,
event_level = "second"
)
first_exp <- dplyr::tibble(
.metric = "detection_prevalence",
.estimator = "binary",
.estimate = detection_prevalence_vec(
truth = lst$pathology,
estimate = lst$scan,
event_level = "first"
)
)
second_exp <- dplyr::tibble(
.metric = "detection_prevalence",
.estimator = "binary",
.estimate = detection_prevalence_vec(
truth = lst$pathology,
estimate = lst$scan,
event_level = "second"
)
)
expect_identical(first_res, first_exp)
expect_identical(second_res, second_exp)
})
test_that("class_metric_summarizer()'s na_rm argument work", {
three_class <- data_three_class()$three_class
accuracy_res <- class_metric_summarizer(
name = "accuracy",
fn = accuracy_vec,
data = three_class,
truth = obs,
estimate = pred_na,
na_rm = TRUE,
case_weights = NULL
)
accuracy_exp <- dplyr::tibble(
.metric = "accuracy",
.estimator = "multiclass",
.estimate = accuracy_vec(three_class$obs, three_class$pred_na)
)
expect_identical(accuracy_res, accuracy_exp)
accuracy_res <- class_metric_summarizer(
name = "accuracy",
fn = accuracy_vec,
data = three_class,
truth = obs,
estimate = pred_na,
na_rm = FALSE,
case_weights = NULL
)
accuracy_exp <- dplyr::tibble(
.metric = "accuracy",
.estimator = "multiclass",
.estimate = na_dbl
)
expect_identical(accuracy_res, accuracy_exp)
})
test_that("class_metric_summarizer()'s case_weights argument work", {
three_class <- data_three_class()$three_class
three_class$weights <- rep(c(1, 0), c(100, 50))
accuracy_res <- class_metric_summarizer(
name = "accuracy",
fn = accuracy_vec,
data = three_class,
truth = obs,
estimate = pred,
na_rm = TRUE,
case_weights = weights
)
accuracy_exp <- dplyr::tibble(
.metric = "accuracy",
.estimator = "multiclass",
.estimate = accuracy_vec(three_class$obs[1:100], three_class$pred[1:100])
)
expect_identical(accuracy_res, accuracy_exp)
})
test_that("class_metric_summarizer()'s errors when wrong things are passes", {
three_class <- data_three_class()$three_class
expect_snapshot(
error = TRUE,
class_metric_summarizer(
name = "accuracy",
fn = accuracy_vec,
data = three_class,
truth = not_a_real_column_name,
estimate = pred
)
)
expect_snapshot(
error = TRUE,
class_metric_summarizer(
name = "accuracy",
fn = accuracy_vec,
data = three_class,
truth = obs,
estimate = not_a_real_column_name
)
)
expect_snapshot(
error = TRUE,
class_metric_summarizer(
name = "accuracy",
fn = accuracy_vec,
data = three_class,
truth = obs,
estimate = pred,
obviouslywrong = TRUE
)
)
})
test_that("class_metric_summarizer() deals with characters in truth and estimate", {
three_class <- data_three_class()$three_class
accuracy_res <- class_metric_summarizer(
name = "accuracy",
fn = accuracy_vec,
data = three_class,
truth = "obs",
estimate = "pred"
)
accuracy_exp <- dplyr::tibble(
.metric = "accuracy",
.estimator = "multiclass",
.estimate = accuracy_vec(three_class$obs, three_class$pred)
)
expect_identical(accuracy_res, accuracy_exp)
})
test_that("class_metric_summarizer() handles column name collisions", {
three_class <- data_three_class()$three_class
new_three_class <- three_class
new_three_class$name <- three_class$obs
new_three_class$estimator <- three_class$obs
new_three_class$event_level <- three_class$obs
new_three_class$na_rm <- three_class$obs
new_three_class$truth <- three_class$obs
new_three_class$estimate <- three_class$obs
accuracy_res <- class_metric_summarizer(
name = "accuracy",
fn = accuracy_vec,
data = new_three_class,
truth = "obs",
estimate = "pred"
)
accuracy_exp <- dplyr::tibble(
.metric = "accuracy",
.estimator = "multiclass",
.estimate = accuracy_vec(three_class$obs, three_class$pred)
)
expect_identical(accuracy_res, accuracy_exp)
})
## prob_metric_summarizer --------------------------------------------------
test_that("prob_metric_summarizer() works as expected", {
hpc_f1 <- data_hpc_fold1()
roc_auc_res <- prob_metric_summarizer(
name = "roc_auc",
fn = roc_auc_vec,
data = hpc_f1,
truth = obs,
VF:L,
na_rm = TRUE,
case_weights = NULL
)
roc_auc_exp <- dplyr::tibble(
.metric = "roc_auc",
.estimator = "hand_till",
.estimate = roc_auc_vec(hpc_f1$obs, as.matrix(hpc_f1[3:6]))
)
expect_identical(roc_auc_res, roc_auc_exp)
roc_auc_res <- prob_metric_summarizer(
name = "roc_auc",
fn = roc_auc_vec,
data = hpc_f1,
truth = obs,
VF:L,
estimator = "macro",
na_rm = TRUE,
case_weights = NULL
)
roc_auc_exp <- dplyr::tibble(
.metric = "roc_auc",
.estimator = "macro",
.estimate = roc_auc_vec(hpc_f1$obs, as.matrix(hpc_f1[3:6]), estimator = "macro")
)
expect_identical(roc_auc_res, roc_auc_exp)
})
test_that("prob_metric_summarizer() works with grouped input", {
hpc_f1 <- data_hpc_fold1()
hpc_f1$group <- rep(1:2, length.out = nrow(hpc_f1))
roc_auc_res <- prob_metric_summarizer(
name = "roc_auc",
fn = roc_auc_vec,
data = dplyr::group_by(hpc_f1, group),
truth = obs,
VF:L,
na_rm = TRUE,
case_weights = NULL
)
hpc_f1_split <- vctrs::vec_split(hpc_f1, hpc_f1$group)
roc_auc_exp <- dplyr::tibble(
group = hpc_f1_split$key,
.metric = "roc_auc",
.estimator = "hand_till",
.estimate = vapply(
hpc_f1_split$val,
function(x) roc_auc_vec(x$obs, as.matrix(x[3:6])),
FUN.VALUE = numeric(1)
)
)
expect_identical(roc_auc_res, roc_auc_exp)
})
test_that("class_metric_summarizer()'s event_level works as expected", {
hpc_f1 <- data_hpc_fold1()
hpc_f1$obs <- factor(hpc_f1$obs == "VF",
levels = c(TRUE, FALSE),
labels = c("VF", "nVF")
)
first_res <- prob_metric_summarizer(
name = "gain_capture",
fn = gain_capture_vec,
data = hpc_f1,
truth = obs,
VF,
event_level = "first"
)
second_res <- prob_metric_summarizer(
name = "gain_capture",
fn = gain_capture_vec,
data = hpc_f1,
truth = obs,
VF,
event_level = "second"
)
first_exp <- dplyr::tibble(
.metric = "gain_capture",
.estimator = "binary",
.estimate = gain_capture_vec(
truth = hpc_f1$obs,
estimate = hpc_f1$VF,
event_level = "first"
)
)
second_exp <- dplyr::tibble(
.metric = "gain_capture",
.estimator = "binary",
.estimate = gain_capture_vec(
truth = hpc_f1$obs,
estimate = hpc_f1$VF,
event_level = "second"
)
)
expect_identical(first_res, first_exp)
expect_identical(second_res, second_exp)
})
test_that("prob_metric_summarizer()'s na_rm argument work", {
hpc_f1 <- data_hpc_fold1()
hpc_f1_na <- hpc_f1
hpc_f1_na$VF[1:5] <- NA
roc_auc_res <- prob_metric_summarizer(
name = "roc_auc",
fn = roc_auc_vec,
data = hpc_f1_na,
truth = obs,
VF:L,
na_rm = TRUE,
case_weights = NULL
)
roc_auc_exp <- dplyr::tibble(
.metric = "roc_auc",
.estimator = "hand_till",
.estimate = roc_auc_vec(hpc_f1$obs[-(1:5)], as.matrix(hpc_f1[-(1:5), 3:6]))
)
expect_identical(roc_auc_res, roc_auc_exp)
roc_auc_res <- prob_metric_summarizer(
name = "roc_auc",
fn = roc_auc_vec,
data = hpc_f1_na,
truth = obs,
VF:L,
na_rm = FALSE,
case_weights = NULL
)
roc_auc_exp <- dplyr::tibble(
.metric = "roc_auc",
.estimator = "hand_till",
.estimate = na_dbl
)
expect_identical(roc_auc_res, roc_auc_exp)
})
test_that("prob_metric_summarizer()'s case_weights argument work", {
hpc_f1 <- data_hpc_fold1()
hpc_f1$weights <- rep(c(1, 0), c(340, 7))
roc_auc_res <- prob_metric_summarizer(
name = "roc_auc",
fn = roc_auc_vec,
data = hpc_f1,
truth = obs,
VF:L,
na_rm = TRUE,
case_weights = weights
)
roc_auc_exp <- dplyr::tibble(
.metric = "roc_auc",
.estimator = "hand_till",
.estimate = roc_auc_vec(
truth = hpc_f1$obs,
estimate = as.matrix(hpc_f1[3:6]),
case_weights = rep(c(1, 0), c(340, 7))
)
)
expect_identical(roc_auc_res, roc_auc_exp)
})
test_that("prob_metric_summarizer()'s errors when wrong things are passes", {
hpc_f1 <- data_hpc_fold1()
expect_snapshot(
error = TRUE,
prob_metric_summarizer(
name = "roc_auc",
fn = roc_auc_vec,
data = hpc_f1,
truth = obs,
c(HELLO, F, M, L)
)
)
expect_snapshot(
error = TRUE,
prob_metric_summarizer(
name = "roc_auc",
fn = roc_auc_vec,
data = hpc_f1,
truth = obviouslywrong,
VF:L
)
)
expect_snapshot(
error = TRUE,
prob_metric_summarizer(
name = "roc_auc",
fn = roc_auc_vec,
data = hpc_f1,
truth = obs,
VF:L,
obviouslywrong = TRUE
)
)
expect_snapshot(
error = TRUE,
prob_metric_summarizer(
name = "roc_auc",
fn = roc_auc_vec,
data = hpc_f1,
truth = obs,
estimate = VF:L
)
)
})
test_that("prob_metric_summarizer() deals with characters in truth", {
hpc_f1 <- data_hpc_fold1()
roc_auc_res <- prob_metric_summarizer(
name = "roc_auc",
fn = roc_auc_vec,
data = hpc_f1,
truth = "obs",
VF:L,
na_rm = TRUE,
case_weights = NULL
)
roc_auc_exp <- dplyr::tibble(
.metric = "roc_auc",
.estimator = "hand_till",
.estimate = roc_auc_vec(hpc_f1$obs, as.matrix(hpc_f1[3:6]))
)
expect_identical(roc_auc_res, roc_auc_exp)
})
test_that("prob_metric_summarizer() handles column name collisions", {
hpc_f1 <- data_hpc_fold1()
new_hpc_f1 <- hpc_f1
new_hpc_f1$name <- hpc_f1$VF
new_hpc_f1$estimator <- hpc_f1$VF
new_hpc_f1$event_level <- hpc_f1$VF
new_hpc_f1$na_rm <- hpc_f1$VF
new_hpc_f1$truth <- hpc_f1$VF
new_hpc_f1$estimate <- hpc_f1$VF
roc_auc_res <- prob_metric_summarizer(
name = "roc_auc",
fn = roc_auc_vec,
data = new_hpc_f1,
truth = "obs",
VF:L,
na_rm = TRUE,
case_weights = NULL
)
roc_auc_exp <- dplyr::tibble(
.metric = "roc_auc",
.estimator = "hand_till",
.estimate = roc_auc_vec(hpc_f1$obs, as.matrix(hpc_f1[3:6]))
)
expect_identical(roc_auc_res, roc_auc_exp)
})
## curve_metric_summarizer --------------------------------------------------
test_that("curve_metric_summarizer() works as expected", {
hpc_f1 <- data_hpc_fold1()
roc_curve_res <- curve_metric_summarizer(
name = "roc_curve",
fn = roc_curve_vec,
data = hpc_f1,
truth = obs,
VF:L,
na_rm = TRUE,
case_weights = NULL
)
roc_curve_exp <- dplyr::tibble(
.metric = "roc_curve",
.estimator = "multiclass",
.estimate = roc_curve_vec(hpc_f1$obs, as.matrix(hpc_f1[3:6]))
)
expect_identical(roc_curve_res, roc_curve_exp)
})
test_that("curve_metric_summarizer() works with grouped input", {
hpc_f1 <- data_hpc_fold1()
hpc_f1$group <- rep(1:2, length.out = nrow(hpc_f1))
roc_curve_res <- curve_metric_summarizer(
name = "roc_curve",
fn = roc_curve_vec,
data = dplyr::group_by(hpc_f1, group),
truth = obs,
VF:L,
na_rm = TRUE,
case_weights = NULL
)
hpc_f1_split <- vctrs::vec_split(hpc_f1, hpc_f1$group)
estimate_values <- lapply(
hpc_f1_split$val,
function(x) roc_curve_vec(x$obs, as.matrix(x[3:6]))
)
roc_curve_exp <- dplyr::tibble(
group = rep(hpc_f1_split$key, lapply(estimate_values, nrow)),
.metric = "roc_curve",
.estimator = "multiclass",
.estimate = dplyr::bind_rows(estimate_values)
)
expect_identical(roc_curve_res, roc_curve_exp)
})
test_that("class_metric_summarizer()'s event_level works as expected", {
hpc_f1 <- data_hpc_fold1()
hpc_f1$obs <- factor(hpc_f1$obs == "VF",
levels = c(TRUE, FALSE),
labels = c("VF", "nVF")
)
first_res <- curve_metric_summarizer(
name = "gain_capture",
fn = gain_capture_vec,
data = hpc_f1,
truth = obs,
VF,
event_level = "first"
)
second_res <- curve_metric_summarizer(
name = "gain_capture",
fn = gain_capture_vec,
data = hpc_f1,
truth = obs,
VF,
event_level = "second"
)
first_exp <- dplyr::tibble(
.metric = "gain_capture",
.estimator = "binary",
.estimate = gain_capture_vec(
truth = hpc_f1$obs,
estimate = hpc_f1$VF,
event_level = "first"
)
)
second_exp <- dplyr::tibble(
.metric = "gain_capture",
.estimator = "binary",
.estimate = gain_capture_vec(
truth = hpc_f1$obs,
estimate = hpc_f1$VF,
event_level = "second"
)
)
expect_identical(first_res, first_exp)
expect_identical(second_res, second_exp)
})
test_that("curve_metric_summarizer()'s na_rm argument work", {
hpc_f1 <- data_hpc_fold1()
hpc_f1_na <- hpc_f1
hpc_f1_na$VF[1:5] <- NA
roc_curve_res <- curve_metric_summarizer(
name = "roc_curve",
fn = roc_curve_vec,
data = hpc_f1_na,
truth = obs,
VF:L,
na_rm = TRUE,
case_weights = NULL
)
roc_curve_exp <- dplyr::tibble(
.metric = "roc_curve",
.estimator = "multiclass",
.estimate = roc_curve_vec(hpc_f1$obs[-(1:5)], as.matrix(hpc_f1[-(1:5), 3:6]))
)
expect_identical(roc_curve_res, roc_curve_exp)
expect_snapshot(
error = TRUE,
curve_metric_summarizer(
name = "roc_curve",
fn = roc_curve_vec,
data = hpc_f1_na,
truth = obs,
VF:L,
na_rm = FALSE,
case_weights = NULL
)
)
})
test_that("curve_metric_summarizer()'s case_weights argument work", {
hpc_f1 <- data_hpc_fold1()
hpc_f1$weights <- rep(c(1, 0), c(340, 7))
roc_curve_res <- curve_metric_summarizer(
name = "roc_curve",
fn = roc_curve_vec,
data = hpc_f1,
truth = obs,
VF:L,
na_rm = TRUE,
case_weights = weights
)
roc_curve_exp <- dplyr::tibble(
.metric = "roc_curve",
.estimator = "multiclass",
.estimate = roc_curve_vec(
truth = hpc_f1$obs,
estimate = as.matrix(hpc_f1[3:6]),
case_weights = rep(c(1, 0), c(340, 7))
)
)
expect_identical(roc_curve_res, roc_curve_exp)
})
test_that("curve_metric_summarizer()'s errors when wrong things are passes", {
hpc_f1 <- data_hpc_fold1()
expect_snapshot(
error = TRUE,
curve_metric_summarizer(
name = "roc_curve",
fn = roc_curve_vec,
data = hpc_f1,
truth = obs,
c(HELLO, F, M, L)
)
)
expect_snapshot(
error = TRUE,
curve_metric_summarizer(
name = "roc_curve",
fn = roc_curve_vec,
data = hpc_f1,
truth = obviouslywrong,
VF:L
)
)
expect_snapshot(
error = TRUE,
curve_metric_summarizer(
name = "roc_curve",
fn = roc_curve_vec,
data = hpc_f1,
truth = obs,
VF:L,
obviouslywrong = TRUE
)
)
expect_snapshot(
error = TRUE,
curve_metric_summarizer(
name = "roc_curve",
fn = roc_curve_vec,
data = hpc_f1,
truth = obs,
estimate = VF:L
)
)
})
test_that("curve_metric_summarizer() deals with characters in truth", {
hpc_f1 <- data_hpc_fold1()
roc_curve_res <- curve_metric_summarizer(
name = "roc_curve",
fn = roc_curve_vec,
data = hpc_f1,
truth = "obs",
VF:L,
na_rm = TRUE,
case_weights = NULL
)
roc_curve_exp <- dplyr::tibble(
.metric = "roc_curve",
.estimator = "multiclass",
.estimate = roc_curve_vec(hpc_f1$obs, as.matrix(hpc_f1[3:6]))
)
expect_identical(roc_curve_res, roc_curve_exp)
})
test_that("curve_metric_summarizer() handles column name collisions", {
hpc_f1 <- data_hpc_fold1()
new_hpc_f1 <- hpc_f1
new_hpc_f1$name <- hpc_f1$VF
new_hpc_f1$estimator <- hpc_f1$VF
new_hpc_f1$event_level <- hpc_f1$VF
new_hpc_f1$na_rm <- hpc_f1$VF
new_hpc_f1$truth <- hpc_f1$VF
new_hpc_f1$estimate <- hpc_f1$VF
roc_curve_res <- curve_metric_summarizer(
name = "roc_curve",
fn = roc_curve_vec,
data = new_hpc_f1,
truth = "obs",
VF:L,
na_rm = TRUE,
case_weights = NULL
)
roc_curve_exp <- dplyr::tibble(
.metric = "roc_curve",
.estimator = "multiclass",
.estimate = roc_curve_vec(hpc_f1$obs, as.matrix(hpc_f1[3:6]))
)
expect_identical(roc_curve_res, roc_curve_exp)
})
## dynamic_survival_metric_summarizer -----------------------------------------
test_that("dynamic_survival_metric_summarizer() works as expected", {
lung_surv <- data_lung_surv()
brier_survival_res <- dynamic_survival_metric_summarizer(
name = "brier_survival",
fn = brier_survival_vec,
data = lung_surv,
truth = surv_obj,
.pred,
na_rm = TRUE,
case_weights = NULL
)
brier_survival_exp <- dplyr::bind_cols(
dplyr::tibble(
.metric = "brier_survival",
.estimator = "standard"
),
brier_survival_vec(
truth = lung_surv$surv_obj,
estimate = lung_surv$.pred
)
)
expect_identical(brier_survival_res, brier_survival_exp)
})
test_that("dynamic_survival_metric_summarizer() works with grouped input", {
lung_surv <- data_lung_surv()
lung_surv$group <- rep(1:2, length.out = nrow(lung_surv))
brier_survival_res <- dynamic_survival_metric_summarizer(
name = "brier_survival",
fn = brier_survival_vec,
data = dplyr::group_by(lung_surv, group),
truth = surv_obj,
.pred,
na_rm = TRUE,
case_weights = NULL
)
lung_surv_split <- vctrs::vec_split(lung_surv, lung_surv$group)
estimate_values <- lapply(
lung_surv_split$val,
function(x) brier_survival_vec(x$surv_obj, x$.pred)
)
estimate_values <- vctrs::vec_rbind(!!!estimate_values)
n_eval_time <- length(lung_surv$.pred[[1]]$.eval_time)
brier_survival_exp <- dplyr::bind_cols(
dplyr::tibble(
group = rep(lung_surv_split$key, each = n_eval_time),
.metric = "brier_survival",
.estimator = "standard"
),
estimate_values
)
expect_identical(brier_survival_res, brier_survival_exp)
})
test_that("dynamic_survival_metric_summarizer()'s na_rm argument works", {
lung_surv <- data_lung_surv()
lung_surv[1:5, 3] <- NA
brier_survival_res <- dynamic_survival_metric_summarizer(
name = "brier_survival",
fn = brier_survival_vec,
data = lung_surv,
truth = surv_obj,
.pred,
na_rm = TRUE,
case_weights = NULL
)
surv_subset <- function(x, i) {
res <- x[i, ]
class(res) <- class(x)
attr(res, "type") <- attr(x, "type")
res
}
brier_survival_exp <- dplyr::bind_cols(
dplyr::tibble(
.metric = "brier_survival",
.estimator = "standard"
),
brier_survival_vec(
truth = surv_subset(lung_surv$surv_obj, -c(1:5)),
estimate = lung_surv$.pred[-c(1:5)]
)
)
expect_identical(brier_survival_res, brier_survival_exp)
brier_survival_res <- dynamic_survival_metric_summarizer(
name = "brier_survival",
fn = brier_survival_vec,
data = lung_surv,
truth = surv_obj,
.pred,
na_rm = FALSE,
case_weights = NULL
)
brier_survival_exp <- dplyr::tibble(
.metric = "brier_survival",
.estimator = "standard",
.estimate = na_dbl
)
expect_identical(brier_survival_res, brier_survival_exp)
})
test_that("dynamic_survival_metric_summarizer()'s case_weights argument works", {
lung_surv <- data_lung_surv()
lung_surv$wts <- seq_len(nrow(lung_surv))
brier_survival_res <- dynamic_survival_metric_summarizer(
name = "brier_survival",
fn = brier_survival_vec,
data = lung_surv,
truth = surv_obj,
.pred,
na_rm = TRUE,
case_weights = wts
)
brier_survival_exp <- dplyr::bind_cols(
dplyr::tibble(
.metric = "brier_survival",
.estimator = "standard"
),
brier_survival_vec(
truth = lung_surv$surv_obj,
estimate = lung_surv$.pred,
case_weights = lung_surv$wts
)
)
expect_identical(brier_survival_res, brier_survival_exp)
})
test_that("dynamic_survival_metric_summarizer()'s errors with bad input", {
lung_surv <- data_lung_surv()
brier_survival_res <- dynamic_survival_metric_summarizer(
name = "brier_survival",
fn = brier_survival_vec,
data = lung_surv,
truth = surv_obj,
.pred,
na_rm = TRUE,
case_weights = NULL
)
expect_snapshot(
error = TRUE,
dynamic_survival_metric_summarizer(
name = "brier_survival",
fn = brier_survival_vec,
data = lung_surv,
truth = .pred_time,
.pred
)
)
expect_snapshot(
error = TRUE,
dynamic_survival_metric_summarizer(
name = "brier_survival",
fn = brier_survival_vec,
data = lung_surv,
truth = surv_obj,
surv_obj
)
)
expect_snapshot(
error = TRUE,
dynamic_survival_metric_summarizer(
name = "brier_survival",
fn = brier_survival_vec,
data = lung_surv,
truth = surv_obj,
estimate = .pred
)
)
})
test_that("dynamic_survival_metric_summarizer() deals with characters in truth and estimate", {
lung_surv <- data_lung_surv()
brier_survival_res <- dynamic_survival_metric_summarizer(
name = "brier_survival",
fn = brier_survival_vec,
data = lung_surv,
truth = "surv_obj",
.pred,
na_rm = TRUE,
case_weights = NULL
)
brier_survival_exp <- dplyr::bind_cols(
dplyr::tibble(
.metric = "brier_survival",
.estimator = "standard"
),
brier_survival_vec(
truth = lung_surv$surv_obj,
estimate = lung_surv$.pred
)
)
expect_identical(brier_survival_res, brier_survival_exp)
})
test_that("dynamic_survival_metric_summarizer() handles column name collisions", {
lung_surv <- data_lung_surv()
new_lung_surv <- lung_surv
new_lung_surv$name <- lung_surv$.pred_time
new_lung_surv$estimator <- lung_surv$.pred_time
new_lung_surv$event_level <- lung_surv$.pred_time
new_lung_surv$na_rm <- lung_surv$.pred_time
new_lung_surv$truth <- lung_surv$.pred_time
new_lung_surv$estimate <- lung_surv$.pred_time
brier_survival_res <- dynamic_survival_metric_summarizer(
name = "brier_survival",
fn = brier_survival_vec,
data = new_lung_surv,
truth = "surv_obj",
.pred,
na_rm = TRUE,
case_weights = NULL
)
brier_survival_exp <- dplyr::bind_cols(
dplyr::tibble(
.metric = "brier_survival",
.estimator = "standard"
),
brier_survival_vec(
truth = lung_surv$surv_obj,
estimate = lung_surv$.pred
)
)
expect_identical(brier_survival_res, brier_survival_exp)
})
## static_survival_metric_summarizer --------------------------------------------------
test_that("static_survival_metric_summarizer() works as expected", {
lung_surv <- data_lung_surv()
concordance_survival_res <- static_survival_metric_summarizer(
name = "concordance_survival",
fn = concordance_survival_vec,
data = lung_surv,
truth = surv_obj,
estimate = .pred_time,
na_rm = TRUE,
case_weights = NULL
)
concordance_survival_exp <- dplyr::tibble(
.metric = "concordance_survival",
.estimator = "standard",
.estimate = concordance_survival_vec(
lung_surv$surv_obj, lung_surv$.pred_time
)
)
expect_identical(concordance_survival_res, concordance_survival_exp)
})
test_that("static_survival_metric_summarizer() works with grouped input", {
lung_surv <- data_lung_surv()
lung_surv$group <- rep(1:2, length.out = nrow(lung_surv))
concordance_survival_res <- static_survival_metric_summarizer(
name = "concordance_survival",
fn = concordance_survival_vec,
data = dplyr::group_by(lung_surv, group),
truth = surv_obj,
estimate = .pred_time,
na_rm = TRUE,
case_weights = NULL
)
lung_surv_split <- vctrs::vec_split(lung_surv, lung_surv$group)
concordance_survival_exp <- dplyr::tibble(
group = lung_surv_split$key,
.metric = "concordance_survival",
.estimator = "standard",
.estimate = vapply(
lung_surv_split$val,
function(x) concordance_survival_vec(x$surv_obj, x$.pred_time),
FUN.VALUE = numeric(1)
)
)
expect_identical(concordance_survival_res, concordance_survival_exp)
})
test_that("static_survival_metric_summarizer()'s na_rm argument works", {
lung_surv <- data_lung_surv()
lung_surv[1:5, 3] <- NA
concordance_survival_res <- static_survival_metric_summarizer(
name = "concordance_survival",
fn = concordance_survival_vec,
data = lung_surv,
truth = surv_obj,
estimate = .pred_time,
na_rm = TRUE,
case_weights = NULL
)
surv_subset <- function(x, i) {
res <- x[i, ]
class(res) <- class(x)
attr(res, "type") <- attr(x, "type")
res
}
concordance_survival_exp <- dplyr::tibble(
.metric = "concordance_survival",
.estimator = "standard",
.estimate = concordance_survival_vec(
truth = surv_subset(lung_surv$surv_obj, -c(1:5)),
estimate = lung_surv$.pred_time[-c(1:5)]
)
)
expect_identical(concordance_survival_res, concordance_survival_exp)
concordance_survival_res <- static_survival_metric_summarizer(
name = "concordance_survival",
fn = concordance_survival_vec,
data = lung_surv,
truth = surv_obj,
estimate = .pred_time,
na_rm = FALSE,
case_weights = NULL
)
concordance_survival_exp <- dplyr::tibble(
.metric = "concordance_survival",
.estimator = "standard",
.estimate = NA_real_
)
expect_identical(concordance_survival_res, concordance_survival_exp)
})
test_that("static_survival_metric_summarizer()'s case_weights argument works", {
lung_surv <- data_lung_surv()
lung_surv$wts <- seq_len(nrow(lung_surv))
concordance_survival_res <- static_survival_metric_summarizer(
name = "concordance_survival",
fn = concordance_survival_vec,
data = lung_surv,
truth = surv_obj,
estimate = .pred_time,
na_rm = TRUE,
case_weights = wts
)
concordance_survival_exp <- dplyr::tibble(
.metric = "concordance_survival",
.estimator = "standard",
.estimate = concordance_survival_vec(
lung_surv$surv_obj, lung_surv$.pred_time,
case_weights = lung_surv$wts
)
)
expect_identical(concordance_survival_res, concordance_survival_exp)
})
test_that("static_survival_metric_summarizer()'s errors with bad input", {
lung_surv <- data_lung_surv()
lung_surv$list <- lapply(seq_len(nrow(lung_surv)), identity)
lung_surv$list2 <- lapply(
seq_len(nrow(lung_surv)),
function(x) data.frame(wrong = 1, names = 2)
)
concordance_survival_res <- static_survival_metric_summarizer(
name = "concordance_survival",
fn = concordance_survival_vec,
data = lung_surv,
truth = surv_obj,
estimate = .pred_time,
na_rm = TRUE,
case_weights = NULL
)
expect_snapshot(
error = TRUE,
static_survival_metric_summarizer(
name = "concordance_survival",
fn = concordance_survival_vec,
data = lung_surv,
truth = inst,
estimate = .pred_time
)
)
expect_snapshot(
error = TRUE,
static_survival_metric_summarizer(
name = "concordance_survival",
fn = concordance_survival_vec,
data = lung_surv,
truth = surv_obj,
estimate = surv_obj
)
)
expect_snapshot(
error = TRUE,
static_survival_metric_summarizer(
name = "concordance_survival",
fn = concordance_survival_vec,
data = lung_surv,
truth = surv_obj,
estimate = list
)
)
expect_snapshot(
error = TRUE,
static_survival_metric_summarizer(
name = "concordance_survival",
fn = concordance_survival_vec,
data = lung_surv,
truth = surv_obj,
estimate = .pred_time,
obviouslywrong = TRUE
)
)
})
test_that("static_survival_metric_summarizer() deals with characters in truth and estimate", {
lung_surv <- data_lung_surv()
concordance_survival_res <- static_survival_metric_summarizer(
name = "concordance_survival",
fn = concordance_survival_vec,
data = lung_surv,
truth = "surv_obj",
estimate = ".pred_time",
na_rm = TRUE,
case_weights = NULL
)
concordance_survival_exp <- dplyr::tibble(
.metric = "concordance_survival",
.estimator = "standard",
.estimate = concordance_survival_vec(
lung_surv$surv_obj, lung_surv$.pred_time
)
)
expect_identical(concordance_survival_res, concordance_survival_exp)
})
## curve_survival_metric_summarizer -----------------------------------------
test_that("curve_survival_metric_summarizer() works as expected", {
lung_surv <- data_lung_surv()
roc_curve_survival_res <- curve_survival_metric_summarizer(
name = "roc_curve_survival",
fn = roc_curve_survival_vec,
data = lung_surv,
truth = surv_obj,
.pred,
na_rm = TRUE,
case_weights = NULL
)
roc_curve_survival_exp <- dplyr::tibble(
.metric = "roc_curve_survival",
.estimator = "standard",
.estimate = roc_curve_survival_vec(
truth = lung_surv$surv_obj,
estimate = lung_surv$.pred
)
)
expect_identical(roc_curve_survival_res, roc_curve_survival_exp)
})
test_that("curve_survival_metric_summarizer() works with grouped input", {
lung_surv <- data_lung_surv()
lung_surv$group <- rep(1:2, length.out = nrow(lung_surv))
roc_curve_survival_res <- curve_survival_metric_summarizer(
name = "roc_curve_survival",
fn = roc_curve_survival_vec,
data = dplyr::group_by(lung_surv, group),
truth = surv_obj,
.pred,
na_rm = TRUE,
case_weights = NULL
)
lung_surv_split <- vctrs::vec_split(lung_surv, lung_surv$group)
estimate_values <- lapply(
lung_surv_split$val,
function(x) roc_curve_survival_vec(x$surv_obj, x$.pred)
)
roc_curve_survival_exp <- dplyr::tibble(
group = rep(lung_surv_split$key, lapply(estimate_values, nrow)),
.metric = "roc_curve_survival",
.estimator = "standard",
.estimate = dplyr::bind_rows(estimate_values)
)
expect_identical(roc_curve_survival_res, roc_curve_survival_exp)
})
test_that("curve_survival_metric_summarizer()'s na_rm argument works", {
lung_surv <- data_lung_surv()
lung_surv[1:5, 3] <- NA
roc_curve_survival_res <- curve_survival_metric_summarizer(
name = "roc_curve_survival",
fn = roc_curve_survival_vec,
data = lung_surv,
truth = surv_obj,
.pred,
na_rm = TRUE,
case_weights = NULL
)
surv_subset <- function(x, i) {
res <- x[i, ]
class(res) <- class(x)
attr(res, "type") <- attr(x, "type")
res
}
roc_curve_survival_exp <- dplyr::tibble(
.metric = "roc_curve_survival",
.estimator = "standard",
.estimate = roc_curve_survival_vec(
truth = surv_subset(lung_surv$surv_obj, -c(1:5)),
estimate = lung_surv$.pred[-c(1:5)]
)
)
expect_identical(roc_curve_survival_res, roc_curve_survival_exp)
expect_snapshot(
error = TRUE,
curve_survival_metric_summarizer(
name = "roc_curve_survival",
fn = roc_curve_survival_vec,
data = lung_surv,
truth = surv_obj,
.pred,
na_rm = FALSE,
case_weights = NULL
)
)
})
test_that("curve_survival_metric_summarizer()'s case_weights argument works", {
lung_surv <- data_lung_surv()
lung_surv$wts <- seq_len(nrow(lung_surv))
roc_curve_survival_res <- curve_survival_metric_summarizer(
name = "roc_curve_survival",
fn = roc_curve_survival_vec,
data = lung_surv,
truth = surv_obj,
.pred,
na_rm = TRUE,
case_weights = wts
)
roc_curve_survival_exp <- dplyr::tibble(
.metric = "roc_curve_survival",
.estimator = "standard",
.estimate = roc_curve_survival_vec(
truth = lung_surv$surv_obj,
estimate = lung_surv$.pred,
case_weights = lung_surv$wts
)
)
expect_identical(roc_curve_survival_res, roc_curve_survival_exp)
})
test_that("curve_survival_metric_summarizer()'s errors with bad input", {
lung_surv <- data_lung_surv()
roc_curve_survival_res <- curve_survival_metric_summarizer(
name = "roc_curve_survival",
fn = roc_curve_survival_vec,
data = lung_surv,
truth = surv_obj,
.pred,
na_rm = TRUE,
case_weights = NULL
)
expect_snapshot(
error = TRUE,
curve_survival_metric_summarizer(
name = "roc_curve_survival",
fn = roc_curve_survival_vec,
data = lung_surv,
truth = .pred_time,
.pred
)
)
expect_snapshot(
error = TRUE,
curve_survival_metric_summarizer(
name = "roc_curve_survival",
fn = roc_curve_survival_vec,
data = lung_surv,
truth = surv_obj,
surv_obj
)
)
expect_snapshot(
error = TRUE,
curve_survival_metric_summarizer(
name = "roc_curve_survival",
fn = roc_curve_survival_vec,
data = lung_surv,
truth = surv_obj,
estimate = .pred
)
)
})
test_that("curve_survival_metric_summarizer() deals with characters in truth and estimate", {
lung_surv <- data_lung_surv()
roc_curve_survival_res <- curve_survival_metric_summarizer(
name = "roc_curve_survival",
fn = roc_curve_survival_vec,
data = lung_surv,
truth = "surv_obj",
.pred,
na_rm = TRUE,
case_weights = NULL
)
roc_curve_survival_exp <- dplyr::tibble(
.metric = "roc_curve_survival",
.estimator = "standard",
.estimate = roc_curve_survival_vec(
truth = lung_surv$surv_obj,
estimate = lung_surv$.pred
)
)
expect_identical(roc_curve_survival_res, roc_curve_survival_exp)
})
test_that("curve_survival_metric_summarizer() handles column name collisions", {
lung_surv <- data_lung_surv()
new_lung_surv <- lung_surv
new_lung_surv$name <- lung_surv$.pred_time
new_lung_surv$estimator <- lung_surv$.pred_time
new_lung_surv$event_level <- lung_surv$.pred_time
new_lung_surv$na_rm <- lung_surv$.pred_time
new_lung_surv$truth <- lung_surv$.pred_time
new_lung_surv$estimate <- lung_surv$.pred_time
roc_survival_curve_res <- curve_survival_metric_summarizer(
name = "roc_survival_curve",
fn = roc_curve_survival_vec,
data = new_lung_surv,
truth = "surv_obj",
.pred,
na_rm = TRUE,
case_weights = NULL
)
roc_survival_curve_exp <- dplyr::tibble(
.metric = "roc_survival_curve",
.estimator = "standard",
.estimate = roc_curve_survival_vec(
truth = lung_surv$surv_obj,
estimate = lung_surv$.pred
)
)
expect_identical(roc_survival_curve_res, roc_survival_curve_exp)
})
test_that("known selections don't affect selection without tune", {
# yardstick's CI reliably does not have tune installed
skip_if(rlang::is_installed("tune"), "tune is installed")
expect_silent({
test_res <- rmse(solubility_test, solubility, prediction)
})
})
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.