# cv package for R: Cross-Validating Regression Models

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:

`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)
```