
The cv package for R provides a consistent and extensible framework for cross-validating standard R statistical models. Some of the functions supplied by the package:
cv()is a generic function with a default method, computationally efficient"lm"and"glm"methods, an"rlm"method (for robust linear models), and a method for a list of competing models. There are also"merMod","lme", and"glmmTMB"methods for mixed-effects models.cv()supports parallel computations.mse()(mean-squared error),rmse()(root-mean-squared error),medAbsErr()(median absolute error), andBayesRule()are cross-validation criteria (“cost functions”), suitable for use withcv().-
cv()also can cross-validate a selection procedure (such as the following) for a regression model:cvModelList()employs CV to select a model from among a number of candidates, and then cross-validates this model-selection procedure.selectStepAIC()is a predictor-selection procedure based on thestepAIC()function in the MASS package.selectTrans()is a procedure for selecting predictor and response transformations in regression, based on thepowerTransform()function in the car package.selectTransStepAIC()is a procedure that first selects predictor and response transformations and then selects predictors.
For additional introductory information on using the cv package, see the “Cross-validating regression models” vignette (vignette("cv", package="cv")). There are also vignettes on cross-validating mixed-effects models (vignette("cv-mixed", package="cv")), cross-validating model selection (vignette("cv-selection", package="cv")), and computational and technical notes (vignette("cv-notes", package="cv")). The cv package is designed to be extensible to other classes of regression models, other CV criteria, and other model-selection procedures; for details, see the “Extending the cv package” vignette (vignette("cv-extend", package="cv")).
Installing the cv package
To install the current version of the cv package from CRAN:
install.packages("cv")
To install the development version of the cv package from GitHub:
if (!require(remotes)) install.packages("remotes")
remotes::install_github("gmonette/cv", build_vignettes=TRUE,
dependencies=TRUE)