Acts as a wrapper to scoringutils::score()
. In particular,
handling filtering the output for various forecast.vocs functions and
linking this output to observed data. See the documentation for the
scoringutils
package for more on forecast scoring and the documentation
and examples below for simple examples in the context of forecast.vocs
.
Internally name clashes between scoringutils
variables and forecast.vocs
variables are handled.
Arguments
- forecast
A posterior forecast or posterior prediction as returned by
summary.fv_posterior()
,summary.fv_forecast()
orfv_extract_forecast()
. Internally case forecasts are filtered for using thevalue_type
variable if present as are only overall or combined case counts (i.e as returned) by the 1 and 2 strain models. If looking for more complex scoring it may be wise to implement a custom wrapper.- obs
A data frame of observed data as produced by
latest_obs()
.- log
Logical, defaults to FALSE. Should scores be calculated on the log scale (with a 0.01 shift) for both observations and forecasts. Scoring in this way can be thought of as a relative score vs the more usual absolute measure. It may be useful when targets are on very different scales or when the forecaster is more interested in good all round performance versus good performance for targets with large values.
- check
Logical, defaults to FALSE. Should
scoringutils::check_forecasts()
be used to check input forecasts.- round_to
Integer defaults to 3. Number of digits to round scoring output to.
- ...
Additional arguments passed to
scoringutils::score()
.
Value
A data.table
as returned by scoringutils::score()
.
See also
Functions to explore and validate models
bp_launch_shinystan()
,
plot_pairs()
Examples
if (FALSE) { # interactive()
options(mc.cores = 4)
library(data.table)
library(scoringutils)
# Fit and forecast using both the one and two strain models
forecasts <- forecast(
germany_covid19_delta_obs,
forecast_date = as.Date("2021-06-12"),
horizon = 4,
strains = c(1, 2),
adapt_delta = 0.99,
max_treedepth = 15,
variant_relationship = "scaled"
)
# Extract forecasts
forecasts <- summary(forecasts, target = "forecast", type = "cases")
# Filter for the latest available observations
obs <- latest_obs(germany_covid19_delta_obs)
# score on the absolute scale
scores <- fv_score_forecast(forecasts, obs)
summarise_scores(scores, by = "strains")
# score overall on a log scale
log_scores <- fv_score_forecast(forecasts, obs, log = TRUE)
summarise_scores(log_scores, by = "strains")
# score by horizon
summarise_scores(scores, by = c("strains", "horizon"))
# score by horizon on a log scale
summarise_scores(log_scores, by = c("strains", "horizon"))
}