Skip to contents

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), and BayesRule() are cross-validation criteria (“cost functions”), suitable for use with cv().

  • 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 the stepAIC() function in the MASS package.

    • selectTrans() is a procedure for selecting predictor and response transformations in regression, based on the powerTransform() 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:


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,