1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
#' @export
model_performance.default <- function(model, metrics = "all", verbose = TRUE, ...) {
.is_model_valid(model)
if (any(tolower(metrics) == "log_loss")) {
metrics[tolower(metrics) == "log_loss"] <- "LOGLOSS"
}
# all available options...
all_metrics <- c(
"AIC",
"BIC",
"R2",
"R2_adj",
"RMSE",
"SIGMA",
"LOGLOSS",
"PCP",
"SCORE"
)
if (all(metrics == "all")) {
metrics <- all_metrics
} else if (all(metrics == "common")) {
metrics <- c("AIC", "BIC", "R2", "R2_adj", "RMSE")
}
metrics <- .check_bad_metrics(metrics, all_metrics, verbose)
if (!insight::is_model(model) || !insight::is_model_supported(model)) {
if (isTRUE(verbose)) {
insight::format_warning(paste0(
"Objects of class `",
class(model)[1],
"` are not supported model objects."
))
}
return(NULL)
}
model_performance.lm(model = model, metrics = metrics, verbose = verbose, ...)
}
.check_bad_metrics <- function(metrics, all_metrics, verbose = TRUE) {
bad_metrics <- which(!metrics %in% all_metrics)
if (length(bad_metrics)) {
if (verbose) {
insight::format_warning(paste0(
"Following elements are no valid metric: ",
datawizard::text_concatenate(metrics[bad_metrics], enclose = "`")
))
}
metrics <- metrics[-bad_metrics]
}
metrics
}
|