R: Distances to Class Centroids

step_classdist {recipes} | R Documentation

## Distances to Class Centroids

### Description

`step_classdist` creates a a specification of a recipe step that will convert numeric data into Mahalanobis distance measurements to the data centroid. This is done for each value of a categorical class variable.

### Usage

    step_classdist(recipe, ..., class, role = "predictor", trained = FALSE,
      mean_func = mean, cov_func = cov, pool = FALSE, log = TRUE,
      objects = NULL, skip = FALSE)

    ## S3 method for class 'step_classdist'
    tidy(x, ...)

### Arguments

`recipe` | A recipe object. The step will be added to the sequence of operations for this recipe.
`...` | One or more selector functions to choose which variables are affected by the step. See `selections()` for more details. For the `tidy` method, these are not currently used.
`class` | A single character string that specifies a single categorical variable to be used as the class.
`role` | For model terms created by this step, what analysis role should they be assigned?. By default, the function assumes that resulting distances will be used as predictors in a model.
`trained` | A logical to indicate if the quantities for preprocessing have been estimated.
`mean_func` | A function to compute the center of the distribution.
`cov_func` | A function that computes the covariance matrix
`pool` | A logical: should the covariance matrix be computed by pooling the data for all of the classes?
`log` | A logical: should the distances be transformed by the natural log function?
`objects` | Statistics are stored here once this step has been trained by `prep.recipe()`.
`skip` | A logical. Should the step be skipped when the recipe is baked by `bake.recipe()`? While all operations are baked when `prep.recipe()` is run, some operations may not be able to be conducted on new data (e.g. processing the outcome variable(s)). Care should be taken when using `skip = TRUE` as it may affect the computations for subsequent operations
`x` | A `step_classdist` object.

### Details

`step_classdist` will create a

The function will create a new column for every unique value of the `class` variable. The resulting variables will not replace the original values and have the prefix `classdist_`.

Note that, by default, the default covariance function requires that each class should have at least as many rows as variables listed in the `terms` argument. If `pool = TRUE`, there must be at least as many data points are variables overall.

### Value

An updated version of `recipe` with the new step added to the sequence of existing steps (if any). For the `tidy` method, a tibble with columns `terms` (the selectors or variables selected), `value` (the centroid of the class), and `class`.

### Examples

    # in case of missing data...
    mean2 <- function(x) mean(x, na.rm = TRUE)

    rec <- recipe(Species ~ ., data = iris) %>%
      step_classdist(all_predictors(), class = "Species",
                     pool = FALSE, mean_func = mean2)

    rec_dists <- prep(rec, training = iris)

    dists_to_species <- bake(rec_dists, newdata = iris, everything())
    ## on log scale:
    dist_cols <- grep("classdist", names(dists_to_species), value = TRUE)
    dists_to_species[, c("Species", dist_cols)]

    tidy(rec, number = 1)
    tidy(rec_dists, number = 1)

[Package recipes version 0.1.2 Index]