library(magrittr) # pipe operator
# transform forecasts using the natural logarithm
# negative values need to be handled (here by replacing them with 0)
example_quantile %>%
.[, true_value := ifelse(true_value < 0, 0, true_value)] %>%
# Here we use the default function log_shift() which is essentially the same
# as log(), but has an additional arguments (offset) that allows you add an
# offset before applying the logarithm.
transform_forecasts(append = FALSE) %>%
head()
# alternatively, integrating the truncation in the transformation function:
example_quantile %>%
transform_forecasts(
fun = function(x) {log_shift(pmax(0, x))}, append = FALSE
) %>%
head()
# specifying an offset for the log transformation removes the
# warning caused by zeros in the data
example_quantile %>%
.[, true_value := ifelse(true_value < 0, 0, true_value)] %>%
transform_forecasts(offset = 1, append = FALSE) %>%
head()
# adding square root transformed forecasts to the original ones
example_quantile %>%
.[, true_value := ifelse(true_value < 0, 0, true_value)] %>%
transform_forecasts(fun = sqrt, label = "sqrt") %>%
score() %>%
summarise_scores(by = c("model", "scale"))
# adding multiple transformations
example_quantile %>%
.[, true_value := ifelse(true_value < 0, 0, true_value)] %>%
transform_forecasts(fun = log_shift, offset = 1) %>%
transform_forecasts(fun = sqrt, label = "sqrt") %>%
head()
Run the code above in your browser using DataLab