Given two numeric vectors of data, the mean squared error and R-squared are calculated. For two factors, the overall agreement rate and Kappa are determined.
defaultSummary(data, lev = NULL, model = NULL)postResample(pred, obs)
twoClassSummary(data, lev = NULL, model = NULL)
mnLogLoss(data, lev = NULL, model = NULL)
multiClassSummary(data, lev = NULL, model = NULL)
prSummary(data, lev = NULL, model = NULL)
a data frame with columns obs and
pred for the observed and predicted outcomes. For metrics
that rely on class probabilities, such as
twoClassSummary, columns should also include predicted
probabilities for each class. See the classProbs argument
to trainControl.
a character vector of factors levels for the
response. In regression cases, this would be NULL.
a character string for the model name (as taken
from the method argument of train.
A vector of numeric data (could be a factor)
A vector of numeric data (could be a factor)
A vector of performance estimates.
postResample is meant to be used with apply
 across a matrix. For numeric data the code checks to see if the
 standard deviation of either vector is zero. If so, the
 correlation between those samples is assigned a value of zero.
 NA values are ignored everywhere.
Note that many models have more predictors (or parameters) than
 data points, so the typical mean squared error denominator (n -
 p) does not apply. Root mean squared error is calculated using
 sqrt(mean((pred - obs)^2. Also, \(R^2\) is calculated
 wither using as the square of the correlation between the
 observed and predicted outcomes when form = "corr". when
 form = "traditional", $$ R^2 = 1-\frac{\sum (y_i -
 \hat{y}_i)^2}{\sum (y_i - \bar{y})^2} $$. Mean absolute error
 is calculated using mean(abs(pred-obs)).
defaultSummary is the default function to compute
 performance metrics in train. It is a wrapper
 around postResample. The first argument is data,
 which is data.frame with columns named obs and
 pred for the observed and predicted outcome values
 (either numeric data for regression or character values for
 classification). The second argument is lev, a character
 string that has the outcome factor levels or NULL for a
 regression model. The third parameter is model, which can
 be used if a summary metric is specific to a model function. If
 other columns from the data are required to compute the summary
 statistics, but should not be used in the model, the
 recipe method for train can be used.
twoClassSummary computes sensitivity, specificity and
 the area under the ROC curve. mnLogLoss computes the
 minus log-likelihood of the multinomial distribution (without
 the constant term): $$ -logLoss = \frac{-1}{n}\sum_{i=1}^n
 \sum_{j=1}^C y_{ij} \log(p_{ij}) $$ where the y values are
 binary indicators for the classes and p are the predicted
 class probabilities.
prSummary (for precision and recall) computes values for
 the default 0.50 probability cutoff as well as the area under
 the precision-recall curve across all cutoffs and is labelled as
 "AUC" in the output. If assumes that the first level of
 the factor variables corresponds to a relevant result but the
 lev argument can be used to change this.
multiClassSummary computes some overall measures of for
 performance (e.g. overall accuracy and the Kappa statistic) and
 several averages of statistics calculated from "one-versus-all"
 configurations. For example, if there are three classes, three
 sets of sensitivity values are determined and the average is
 reported with the name ("Mean_Sensitivity"). The same is true
 for a number of statistics generated by
 confusionMatrix. With two classes, the basic
 sensitivity is reported with the name "Sensitivity".
To use twoClassSummary and/or mnLogLoss, the
 classProbs argument of trainControl should
 be TRUE. multiClassSummary can be used without
 class probabilities but some statistics (e.g. overall log loss
 and the average of per-class area under the ROC curves) will not
 be in the result set.
Other functions can be used via the summaryFunction
 argument of trainControl. Custom functions must
 have the same arguments asdefaultSummary.
The function getTrainPerf returns a one row data frame
 with the resampling results for the chosen model. The statistics
 will have the prefix "Train" (i.e. "TrainROC").
 There is also a column called "method" that echoes the
 argument of the call to trainControl of the same
 name.
Kvalseth. Cautionary note about \(R^2\). American Statistician (1985) vol. 39 (4) pp. 279-285
# NOT RUN {
predicted <-  matrix(rnorm(50), ncol = 5)
observed <- rnorm(10)
apply(predicted, 2, postResample, obs = observed)
classes <- c("class1", "class2")
set.seed(1)
dat <- data.frame(obs =  factor(sample(classes, 50, replace = TRUE)),
                  pred = factor(sample(classes, 50, replace = TRUE)),
                  class1 = runif(50))
dat$class2 <- 1 - dat$class1
defaultSummary(dat, lev = classes)
twoClassSummary(dat, lev = classes)
prSummary(dat, lev = classes)
mnLogLoss(dat, lev = classes)
# }
Run the code above in your browser using DataLab