This function cross-validates regression models in a user-supplied new sample or by using holdout (train-test), k-fold, or leave-one-out cross-validation.
Usage
performance_cv(
model,
data = NULL,
method = c("holdout", "k_fold", "loo"),
metrics = "all",
prop = 0.3,
k = 5,
stack = TRUE,
verbose = TRUE,
...
)
Arguments
- model
A regression model.
- data
Optional. A data frame containing the same variables as
model
that will be used as the cross-validation sample.- method
Character string, indicating the cross-validation method to use: whether holdout (
"holdout"
, aka train-test), k-fold ("k_fold"
), or leave-one-out ("loo"
). Ifdata
is supplied, this argument is ignored.- metrics
Can be
"all"
,"common"
or a character vector of metrics to be computed (some ofc("ELPD", "Deviance", "MSE", "RMSE", "R2")
). "common" will compute R2 and RMSE.- prop
If
method = "holdout"
, what proportion of the sample to hold out as the test sample?- k
If
method = "k_fold"
, the number of folds to use.- stack
Logical. If
method = "k_fold"
, should performance be computed by stacking residuals from each holdout fold and calculating each metric on the stacked data (TRUE
, default) or should performance be computed by calculating metrics within each holdout fold and averaging performance across each fold (FALSE
)?- verbose
Toggle warnings.
- ...
Not used.
Value
A data frame with columns for each metric requested, as well as k
if method = "holdout"
and the Method
used for cross-validation. If
method = "holdout"
and stack = TRUE
, the standard error (standard
deviation across holdout folds) for each metric is also included.
Examples
model <- lm(mpg ~ wt + cyl, data = mtcars)
performance_cv(model)
#> # Cross-validation performance (30% holdout method)
#>
#> MSE | RMSE | R2
#> -----------------
#> 6.3 | 2.5 | 0.75