From cc41a0e56b306174d7c28aa81d8b00bcbb0a3da8 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 5 Jan 2024 14:00:39 +0000 Subject: [PATCH 1/7] remove interval_coverage_sample --- NAMESPACE | 1 - R/metrics-sample.R | 36 ------------------------------------ man/interval_coverage.Rd | 12 +----------- 3 files changed, 1 insertion(+), 48 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 61072bdab..7af41d9f1 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -32,7 +32,6 @@ export(get_forecast_type) export(get_forecast_unit) export(interval_coverage_dev_quantile) export(interval_coverage_quantile) -export(interval_coverage_sample) export(log_shift) export(logs_binary) export(logs_sample) diff --git a/R/metrics-sample.R b/R/metrics-sample.R index 2bfe7c37a..044ca8ee0 100644 --- a/R/metrics-sample.R +++ b/R/metrics-sample.R @@ -281,39 +281,3 @@ mad_sample <- function(observed = NULL, predicted, ...) { sharpness <- apply(predicted, MARGIN = 1, mad, ...) return(sharpness) } - - -#' @title Interval Coverage -#' @description To compute interval coverage for sample-based forecasts, -#' predictive samples are converted first into predictive quantiles using the -#' sample quantiles. -#' @importFrom checkmate assert_number -#' @rdname interval_coverage -#' @export -#' @examples -#' observed <- rpois(30, lambda = 1:30) -#' predicted <- replicate(200, rpois(n = 30, lambda = 1:30)) -#' interval_coverage_sample(observed, predicted) -interval_coverage_sample <- function(observed, predicted, range = 50) { - assert_input_sample(observed, predicted) - assert_number(range) - necessary_quantiles <- c((100 - range) / 2, 100 - (100 - range) / 2) / 100 - - # this could be its own function, sample_to_quantile.numeric - # ========================================================== - n <- length(observed) - N <- length(predicted) / n - dt <- data.table( - observed = rep(observed, each = N), - predicted = as.vector(t(predicted)) - ) - quantile_dt <- sample_to_quantile(dt, necessary_quantiles) - # ========================================================== - - # this could call interval_coverage_quantile instead - # ========================================================== - interval_dt <- quantile_to_interval(quantile_dt, format = "wide") - interval_dt[, interval_coverage := (observed >= lower) & (observed <= upper)] - # ========================================================== - return(interval_dt$interval_coverage) -} diff --git a/man/interval_coverage.Rd b/man/interval_coverage.Rd index 75fa70218..e3c19879e 100644 --- a/man/interval_coverage.Rd +++ b/man/interval_coverage.Rd @@ -1,14 +1,11 @@ % Generated by roxygen2: do not edit by hand -% Please edit documentation in R/metrics-quantile.R, R/metrics-sample.R +% Please edit documentation in R/metrics-quantile.R \name{interval_coverage} \alias{interval_coverage} \alias{interval_coverage_quantile} -\alias{interval_coverage_sample} \title{Interval Coverage (For Quantile-Based Forecasts)} \usage{ interval_coverage_quantile(observed, predicted, quantile, range = 50) - -interval_coverage_sample(observed, predicted, range = 50) } \arguments{ \item{observed}{numeric vector of size n with the observed values} @@ -37,10 +34,6 @@ prediction interval. The prediction interval is defined by a lower and an upper bound formed by a pair of predictive quantiles. For example, a 50\% prediction interval is formed by the 0.25 and 0.75 quantiles of the predictive distribution. - -To compute interval coverage for sample-based forecasts, -predictive samples are converted first into predictive quantiles using the -sample quantiles. } \examples{ observed <- c(1, -15, 22) @@ -51,8 +44,5 @@ predicted <- rbind( ) quantile <- c(0.1, 0.25, 0.5, 0.75, 0.9) interval_coverage_quantile(observed, predicted, quantile) -observed <- rpois(30, lambda = 1:30) -predicted <- replicate(200, rpois(n = 30, lambda = 1:30)) -interval_coverage_sample(observed, predicted) } \keyword{metric} From eaf8021c93eff06dc22fd3e092876b18de3719d9 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 5 Jan 2024 14:03:17 +0000 Subject: [PATCH 2/7] rename interval_coverage_quantle -> interval_coverage --- NAMESPACE | 2 +- R/default-scoring-rules.R | 12 ++++++------ R/metrics-quantile.R | 6 +++--- man/interval_coverage.Rd | 6 +++--- man/interval_coverage_dev_quantile.Rd | 2 +- man/rules_quantile.Rd | 8 ++++---- tests/testthat/test-metrics-quantile.R | 14 +++++++------- 7 files changed, 25 insertions(+), 25 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 7af41d9f1..4a0cfd8d0 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -31,7 +31,7 @@ export(get_forecast_counts) export(get_forecast_type) export(get_forecast_unit) export(interval_coverage_dev_quantile) -export(interval_coverage_quantile) +export(interval_coverage) export(log_shift) export(logs_binary) export(logs_sample) diff --git a/R/default-scoring-rules.R b/R/default-scoring-rules.R index ac02137e1..b73f97b34 100644 --- a/R/default-scoring-rules.R +++ b/R/default-scoring-rules.R @@ -130,17 +130,17 @@ rules_sample <- function(select = NULL, exclude = NULL) { #' - "underprediction" = [underprediction()] #' - "dispersion" = [dispersion()] #' - "bias" = [bias_quantile()] -#' - "interval_coverage_50" = [interval_coverage_quantile()] +#' - "interval_coverage_50" = [interval_coverage()] #' - "interval_coverage_90" = function(...) \{ -#' run_safely(..., range = 90, fun = [interval_coverage_quantile]) +#' run_safely(..., range = 90, fun = [interval_coverage]) #' \} #' - "interval_coverage_deviation" = [interval_coverage_dev_quantile()], #' - "ae_median" = [ae_median_quantile()] #' #' Note: The `coverage_90` scoring rule is created as a wrapper around -#' [interval_coverage_quantile()], making use of the function [run_safely()]. +#' [interval_coverage()], making use of the function [run_safely()]. #' This construct allows the function to deal with arbitrary arguments in `...`, -#' while making sure that only those that [interval_coverage_quantile()] can +#' while making sure that only those that [interval_coverage()] can #' accept get passed on to it. `range = 90` is set in the function definition, #' as passing an argument `range = 90` to [score()] would mean it would also #' get passed to `coverage_50`. @@ -157,9 +157,9 @@ rules_quantile <- function(select = NULL, exclude = NULL) { underprediction = underprediction, dispersion = dispersion, bias = bias_quantile, - interval_coverage_50 = interval_coverage_quantile, + interval_coverage_50 = interval_coverage, interval_coverage_90 = function(...) { - run_safely(..., range = 90, fun = interval_coverage_quantile) + run_safely(..., range = 90, fun = interval_coverage) }, interval_coverage_deviation = interval_coverage_dev_quantile, ae_median = ae_median_quantile diff --git a/R/metrics-quantile.R b/R/metrics-quantile.R index 7426fd8d7..719f7db98 100644 --- a/R/metrics-quantile.R +++ b/R/metrics-quantile.R @@ -233,8 +233,8 @@ underprediction <- function(observed, predicted, quantile, ...) { #' c(-2, 0, 3, 3, 4) #' ) #' quantile <- c(0.1, 0.25, 0.5, 0.75, 0.9) -#' interval_coverage_quantile(observed, predicted, quantile) -interval_coverage_quantile <- function(observed, predicted, quantile, range = 50) { +#' interval_coverage(observed, predicted, quantile) +interval_coverage <- function(observed, predicted, quantile, range = 50) { assert_input_quantile(observed, predicted, quantile) assert_number(range) necessary_quantiles <- c((100 - range) / 2, 100 - (100 - range) / 2) / 100 @@ -258,7 +258,7 @@ interval_coverage_quantile <- function(observed, predicted, quantile, range = 50 #' @description Check the agreement between desired and actual interval coverage #' of a forecast. #' -#' The function is similar to [interval_coverage_quantile()], +#' The function is similar to [interval_coverage()], #' but takes all provided prediction intervals into account and #' compares nominal interval coverage (i.e. the desired interval coverage) with #' the actual observed interval coverage. diff --git a/man/interval_coverage.Rd b/man/interval_coverage.Rd index e3c19879e..bb30b6e35 100644 --- a/man/interval_coverage.Rd +++ b/man/interval_coverage.Rd @@ -2,10 +2,10 @@ % Please edit documentation in R/metrics-quantile.R \name{interval_coverage} \alias{interval_coverage} -\alias{interval_coverage_quantile} +\alias{interval_coverage} \title{Interval Coverage (For Quantile-Based Forecasts)} \usage{ -interval_coverage_quantile(observed, predicted, quantile, range = 50) +interval_coverage(observed, predicted, quantile, range = 50) } \arguments{ \item{observed}{numeric vector of size n with the observed values} @@ -43,6 +43,6 @@ predicted <- rbind( c(-2, 0, 3, 3, 4) ) quantile <- c(0.1, 0.25, 0.5, 0.75, 0.9) -interval_coverage_quantile(observed, predicted, quantile) +interval_coverage(observed, predicted, quantile) } \keyword{metric} diff --git a/man/interval_coverage_dev_quantile.Rd b/man/interval_coverage_dev_quantile.Rd index f6b467523..4145589fa 100644 --- a/man/interval_coverage_dev_quantile.Rd +++ b/man/interval_coverage_dev_quantile.Rd @@ -26,7 +26,7 @@ for each forecast (comprising one or multiple prediction intervals). Check the agreement between desired and actual interval coverage of a forecast. -The function is similar to \code{\link[=interval_coverage_quantile]{interval_coverage_quantile()}}, +The function is similar to \code{\link[=interval_coverage]{interval_coverage()}}, but takes all provided prediction intervals into account and compares nominal interval coverage (i.e. the desired interval coverage) with the actual observed interval coverage. diff --git a/man/rules_quantile.Rd b/man/rules_quantile.Rd index dfe9dd891..1577afde6 100644 --- a/man/rules_quantile.Rd +++ b/man/rules_quantile.Rd @@ -27,18 +27,18 @@ The default scoring rules are: \item "underprediction" = \code{\link[=underprediction]{underprediction()}} \item "dispersion" = \code{\link[=dispersion]{dispersion()}} \item "bias" = \code{\link[=bias_quantile]{bias_quantile()}} -\item "interval_coverage_50" = \code{\link[=interval_coverage_quantile]{interval_coverage_quantile()}} +\item "interval_coverage_50" = \code{\link[=interval_coverage]{interval_coverage()}} \item "interval_coverage_90" = function(...) \{ -run_safely(..., range = 90, fun = \link{interval_coverage_quantile}) +run_safely(..., range = 90, fun = \link{interval_coverage}) \} \item "interval_coverage_deviation" = \code{\link[=interval_coverage_dev_quantile]{interval_coverage_dev_quantile()}}, \item "ae_median" = \code{\link[=ae_median_quantile]{ae_median_quantile()}} } Note: The \code{coverage_90} scoring rule is created as a wrapper around -\code{\link[=interval_coverage_quantile]{interval_coverage_quantile()}}, making use of the function \code{\link[=run_safely]{run_safely()}}. +\code{\link[=interval_coverage]{interval_coverage()}}, making use of the function \code{\link[=run_safely]{run_safely()}}. This construct allows the function to deal with arbitrary arguments in \code{...}, -while making sure that only those that \code{\link[=interval_coverage_quantile]{interval_coverage_quantile()}} can +while making sure that only those that \code{\link[=interval_coverage]{interval_coverage()}} can accept get passed on to it. \code{range = 90} is set in the function definition, as passing an argument \code{range = 90} to \code{\link[=score]{score()}} would mean it would also get passed to \code{coverage_50}. diff --git a/tests/testthat/test-metrics-quantile.R b/tests/testthat/test-metrics-quantile.R index a6faf051c..591b9ef60 100644 --- a/tests/testthat/test-metrics-quantile.R +++ b/tests/testthat/test-metrics-quantile.R @@ -585,18 +585,18 @@ test_that("wis is the sum of overprediction, underprediction, dispersion", { # ============================================================================ # -# `interval_coverage_quantile` =============================================== # +# `interval_coverage` =============================================== # # ============================================================================ # -test_that("interval_coverage_quantile works", { +test_that("interval_coverage works", { expect_equal( - interval_coverage_quantile(observed, predicted, quantile, range = 50), + interval_coverage(observed, predicted, quantile, range = 50), c(TRUE, FALSE, FALSE) ) }) -test_that("interval_coverage_quantile rejects wrong inputs", { +test_that("interval_coverage rejects wrong inputs", { expect_error( - interval_coverage_quantile(observed, predicted, quantile, range = c(50, 0)), + interval_coverage(observed, predicted, quantile, range = c(50, 0)), "Assertion on 'range' failed: Must have length 1." ) }) @@ -620,8 +620,8 @@ test_that("interval_coverage_dev_quantile works", { existing_ranges <- unique(get_range_from_quantile(quantile)) expect_equal(existing_ranges, c(80, 50, 0)) - cov_50 <- interval_coverage_quantile(observed, predicted, quantile, range = c(50)) - cov_80 <- interval_coverage_quantile(observed, predicted, quantile, range = c(80)) + cov_50 <- interval_coverage(observed, predicted, quantile, range = c(50)) + cov_80 <- interval_coverage(observed, predicted, quantile, range = c(80)) manual <- 0.5 * (cov_50 - 0.5) + 0.5 * (cov_80 - 0.8) expect_equal( From c77dc6a68af581595b76dc25ae5bff8a250e33c2 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 5 Jan 2024 14:04:10 +0000 Subject: [PATCH 3/7] rename interval_coverage_deviation_quantile -> interval_coverage_deviation --- NAMESPACE | 2 +- R/default-scoring-rules.R | 4 ++-- R/metrics-quantile.R | 4 ++-- man/interval_coverage_dev_quantile.Rd | 8 ++++---- man/rules_quantile.Rd | 2 +- tests/testthat/test-metrics-quantile.R | 6 +++--- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/NAMESPACE b/NAMESPACE index 4a0cfd8d0..d1b67835f 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -30,7 +30,7 @@ export(get_duplicate_forecasts) export(get_forecast_counts) export(get_forecast_type) export(get_forecast_unit) -export(interval_coverage_dev_quantile) +export(interval_coverage_deviation) export(interval_coverage) export(log_shift) export(logs_binary) diff --git a/R/default-scoring-rules.R b/R/default-scoring-rules.R index b73f97b34..422d63c3f 100644 --- a/R/default-scoring-rules.R +++ b/R/default-scoring-rules.R @@ -134,7 +134,7 @@ rules_sample <- function(select = NULL, exclude = NULL) { #' - "interval_coverage_90" = function(...) \{ #' run_safely(..., range = 90, fun = [interval_coverage]) #' \} -#' - "interval_coverage_deviation" = [interval_coverage_dev_quantile()], +#' - "interval_coverage_deviation" = [interval_coverage_deviation()], #' - "ae_median" = [ae_median_quantile()] #' #' Note: The `coverage_90` scoring rule is created as a wrapper around @@ -161,7 +161,7 @@ rules_quantile <- function(select = NULL, exclude = NULL) { interval_coverage_90 = function(...) { run_safely(..., range = 90, fun = interval_coverage) }, - interval_coverage_deviation = interval_coverage_dev_quantile, + interval_coverage_deviation = interval_coverage_deviation, ae_median = ae_median_quantile ) selected <- select_rules(all, select, exclude) diff --git a/R/metrics-quantile.R b/R/metrics-quantile.R index 719f7db98..39cc9ba1a 100644 --- a/R/metrics-quantile.R +++ b/R/metrics-quantile.R @@ -308,8 +308,8 @@ interval_coverage <- function(observed, predicted, quantile, range = 50) { #' c(-2, 0, 3, 3, 4) #' ) #' quantile <- c(0.1, 0.25, 0.5, 0.75, 0.9) -#' interval_coverage_dev_quantile(observed, predicted, quantile) -interval_coverage_dev_quantile <- function(observed, predicted, quantile) { +#' interval_coverage_deviation(observed, predicted, quantile) +interval_coverage_deviation <- function(observed, predicted, quantile) { assert_input_quantile(observed, predicted, quantile) # transform available quantiles into central interval ranges diff --git a/man/interval_coverage_dev_quantile.Rd b/man/interval_coverage_dev_quantile.Rd index 4145589fa..c82825f12 100644 --- a/man/interval_coverage_dev_quantile.Rd +++ b/man/interval_coverage_dev_quantile.Rd @@ -1,10 +1,10 @@ % Generated by roxygen2: do not edit by hand % Please edit documentation in R/metrics-quantile.R -\name{interval_coverage_dev_quantile} -\alias{interval_coverage_dev_quantile} +\name{interval_coverage_deviation} +\alias{interval_coverage_deviation} \title{Interval Coverage Deviation (For Quantile-Based Forecasts)} \usage{ -interval_coverage_dev_quantile(observed, predicted, quantile) +interval_coverage_deviation(observed, predicted, quantile) } \arguments{ \item{observed}{numeric vector of size n with the observed values} @@ -72,6 +72,6 @@ predicted <- rbind( c(-2, 0, 3, 3, 4) ) quantile <- c(0.1, 0.25, 0.5, 0.75, 0.9) -interval_coverage_dev_quantile(observed, predicted, quantile) +interval_coverage_deviation(observed, predicted, quantile) } \keyword{metric} diff --git a/man/rules_quantile.Rd b/man/rules_quantile.Rd index 1577afde6..a20861961 100644 --- a/man/rules_quantile.Rd +++ b/man/rules_quantile.Rd @@ -31,7 +31,7 @@ The default scoring rules are: \item "interval_coverage_90" = function(...) \{ run_safely(..., range = 90, fun = \link{interval_coverage}) \} -\item "interval_coverage_deviation" = \code{\link[=interval_coverage_dev_quantile]{interval_coverage_dev_quantile()}}, +\item "interval_coverage_deviation" = \code{\link[=interval_coverage_deviation]{interval_coverage_deviation()}}, \item "ae_median" = \code{\link[=ae_median_quantile]{ae_median_quantile()}} } diff --git a/tests/testthat/test-metrics-quantile.R b/tests/testthat/test-metrics-quantile.R index 591b9ef60..ed79c0bb6 100644 --- a/tests/testthat/test-metrics-quantile.R +++ b/tests/testthat/test-metrics-quantile.R @@ -614,9 +614,9 @@ test_that("interval_coverage_quantile throws a warning when a required quantile # ============================================================================ # -# `interval_coverage_dev_quantile` ===================================== # +# `interval_coverage_deviation` ===================================== # # ============================================================================ # -test_that("interval_coverage_dev_quantile works", { +test_that("interval_coverage_deviation works", { existing_ranges <- unique(get_range_from_quantile(quantile)) expect_equal(existing_ranges, c(80, 50, 0)) @@ -625,7 +625,7 @@ test_that("interval_coverage_dev_quantile works", { manual <- 0.5 * (cov_50 - 0.5) + 0.5 * (cov_80 - 0.8) expect_equal( - interval_coverage_dev_quantile(observed, predicted, quantile), + interval_coverage_deviation(observed, predicted, quantile), manual ) expect_warning( From 20fb0d5d5d474e111eb7070c854cf0be294a23bc Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 5 Jan 2024 14:05:31 +0000 Subject: [PATCH 4/7] update documentation --- NAMESPACE | 2 +- man/interval_coverage.Rd | 1 - ..._coverage_dev_quantile.Rd => interval_coverage_deviation.Rd} | 0 3 files changed, 1 insertion(+), 2 deletions(-) rename man/{interval_coverage_dev_quantile.Rd => interval_coverage_deviation.Rd} (100%) diff --git a/NAMESPACE b/NAMESPACE index d1b67835f..02d7122b4 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -30,8 +30,8 @@ export(get_duplicate_forecasts) export(get_forecast_counts) export(get_forecast_type) export(get_forecast_unit) -export(interval_coverage_deviation) export(interval_coverage) +export(interval_coverage_deviation) export(log_shift) export(logs_binary) export(logs_sample) diff --git a/man/interval_coverage.Rd b/man/interval_coverage.Rd index bb30b6e35..681a07581 100644 --- a/man/interval_coverage.Rd +++ b/man/interval_coverage.Rd @@ -2,7 +2,6 @@ % Please edit documentation in R/metrics-quantile.R \name{interval_coverage} \alias{interval_coverage} -\alias{interval_coverage} \title{Interval Coverage (For Quantile-Based Forecasts)} \usage{ interval_coverage(observed, predicted, quantile, range = 50) diff --git a/man/interval_coverage_dev_quantile.Rd b/man/interval_coverage_deviation.Rd similarity index 100% rename from man/interval_coverage_dev_quantile.Rd rename to man/interval_coverage_deviation.Rd From 11514b54ec1d1a8d004a40180fa1c9232bbdc352 Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 5 Jan 2024 14:07:58 +0000 Subject: [PATCH 5/7] update news --- NEWS.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 1214ca36b..9a44750e5 100644 --- a/NEWS.md +++ b/NEWS.md @@ -41,6 +41,8 @@ The update introduces breaking changes. If you want to keep using the older vers - Removed abs_error and squared_error from the package in favour of `Metrics::ae` and `Metrics::se`. - Added unit tests for `interval_coverage_quantile()` and `interval_coverage_dev_quantile()` in order to make sure that the functions provide the correct warnings when insufficient quantiles are provided. - Documentation pkgdown pages are now created both for the stable and dev versions. +- Renamed `interval_coverage_quantile()` and `interval_coverage_dev_quantile()` to `interval_coverage()` and `interval_coverage_deviation()`, respectively. Removed `interval_coverage_sample()` as users are now expected to convert to a quantile format first before scoring. + # scoringutils 1.2.2 @@ -50,7 +52,7 @@ The update introduces breaking changes. If you want to keep using the older vers ## Bug fixes - Fixes a bug with `set_forecast_unit()` where the function only workded with a data.table, but not a data.frame as an input. -- The metrics table in the vignette [Details on the metrics implemented in `scoringutils`](https://epiforecasts.io/scoringutils/articles/metric-details.html) had duplicated entries. This was fixed by removing the duplicated rows. +- The metrics table in the vignette [Details on the metrics implemented in `scoringutils`](https://epiforecasts.io/scoringutils/articles/metric-details.html) had duplicated entries. This was fixed by removing the duplicated rows. # scoringutils 1.2.1 From 4ca133c30990f9e73c271fe9910f8f312a31a24a Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 5 Jan 2024 14:28:24 +0000 Subject: [PATCH 6/7] reorder news --- NEWS.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/NEWS.md b/NEWS.md index 9a44750e5..d71f93f1d 100644 --- a/NEWS.md +++ b/NEWS.md @@ -38,11 +38,10 @@ The update introduces breaking changes. If you want to keep using the older vers - Files ending in ".Rda" were renamed to ".rds" where appropriate when used together with `saveRDS()` or `readRDS()`. - `score()` now calls `na.omit()` on the data, instead of only removing rows with missing values in the columns `observed` and `predicted`. This is because `NA` values in other columns can also mess up e.g. grouping of forecasts according to the unit of a single forecast. - added documentation for the return value of `summarise_scores()`. -- Removed abs_error and squared_error from the package in favour of `Metrics::ae` and `Metrics::se`. +- Removed abs_error and squared_error from the package in favour of `Metrics::ae` and `Metrics::se`. +- Renamed `interval_coverage_quantile()` and `interval_coverage_dev_quantile()` to `interval_coverage()` and `interval_coverage_deviation()`, respectively. Removed `interval_coverage_sample()` as users are now expected to convert to a quantile format first before scoring. - Added unit tests for `interval_coverage_quantile()` and `interval_coverage_dev_quantile()` in order to make sure that the functions provide the correct warnings when insufficient quantiles are provided. - Documentation pkgdown pages are now created both for the stable and dev versions. -- Renamed `interval_coverage_quantile()` and `interval_coverage_dev_quantile()` to `interval_coverage()` and `interval_coverage_deviation()`, respectively. Removed `interval_coverage_sample()` as users are now expected to convert to a quantile format first before scoring. - # scoringutils 1.2.2 From 62b5dd353a2b6ef1525f6956151f1e4937a4abcb Mon Sep 17 00:00:00 2001 From: Sam Date: Fri, 5 Jan 2024 14:42:06 +0000 Subject: [PATCH 7/7] fix newly introduced tests --- tests/testthat/test-metrics-quantile.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/testthat/test-metrics-quantile.R b/tests/testthat/test-metrics-quantile.R index ed79c0bb6..8da2c14f9 100644 --- a/tests/testthat/test-metrics-quantile.R +++ b/tests/testthat/test-metrics-quantile.R @@ -605,7 +605,7 @@ test_that("interval_coverage_quantile throws a warning when a required quantile dropped_quantile_pred <- predicted[, -4] dropped_quantiles <- quantile[-4] expect_warning( - interval_coverage_quantile( + interval_coverage( observed, dropped_quantile_pred, dropped_quantiles, range = 50 ), "To compute the interval coverage for a range of 50%, the quantiles `0.25, 0.75` are required. Returning `NA`" @@ -629,7 +629,7 @@ test_that("interval_coverage_deviation works", { manual ) expect_warning( - interval_coverage_dev_quantile( + interval_coverage_deviation( observed, predicted, c(quantile[-4], 0.76) ), "To compute inteval coverage deviation, all quantiles must form central symmetric prediction intervals. Missing quantiles: 0.24, 0.75. Returning `NA`."