R/lda-emp-bayes-eigen.r
lda_emp_bayes_eigen.Rd
Given a set of training data, this function builds the MDMEB classifier from
Srivistava and Kubokawa (2007). The MDMEB classifier is an adaptation of the
linear discriminant analysis (LDA) classifier that is designed for
small-sample, high-dimensional data. Srivastava and Kubokawa (2007) have
proposed a modification of the standard maximum likelihood estimator of the
pooled covariance matrix, where only the largest 95% of the eigenvalues and
their corresponding eigenvectors are kept. The resulting covariance matrix is
then shrunken towards a scaled identity matrix. The value of 95% is the
default and can be changed via the eigen_pct
argument.
The MDMEB classifier is an adaptation of the linear discriminant analysis (LDA) classifier that is designed for small-sample, high-dimensional data. Srivastava and Kubokawa (2007) have proposed a modification of the standard maximum likelihood estimator of the pooled covariance matrix, where only the largest 95% of the eigenvalues and their corresponding eigenvectors are kept. The resulting covariance matrix is then shrunken towards a scaled identity matrix.
lda_emp_bayes_eigen(x, ...) # S3 method for default lda_emp_bayes_eigen(x, y, prior = NULL, eigen_pct = 0.95, ...) # S3 method for formula lda_emp_bayes_eigen(formula, data, prior = NULL, ...) # S3 method for lda_emp_bayes_eigen predict(object, newdata, type = c("class", "prob", "score"), ...)
x | Matrix or data frame containing the training data. The rows are the sample observations, and the columns are the features. Only complete data are retained. |
---|---|
... | additional arguments (not currently used). |
y | Vector of class labels for each training observation. Only complete data are retained. |
prior | Vector with prior probabilities for each class. If NULL (default), then equal probabilities are used. See details. |
eigen_pct | the percentage of eigenvalues kept |
formula | A formula of the form |
data | data frame from which variables specified in |
object | Fitted model object |
newdata | Matrix or data frame of observations to predict. Each row corresponds to a new observation. |
type | Prediction type: either `"class"`, `"prob"`, or `"score"`. |
lda_emp_bayes_eigen
object that contains the trained MDMEB classifier
The matrix of training observations are given in x
. The rows of x
contain the sample observations, and the columns contain the features for each
training observation.
The vector of class labels given in y
are coerced to a factor
.
The length of y
should match the number of rows in x
.
An error is thrown if a given class has less than 2 observations because the variance for each feature within a class cannot be estimated with less than 2 observations.
The vector, prior
, contains the a priori class membership for
each class. If prior
is NULL (default), the class membership
probabilities are estimated as the sample proportion of observations belonging
to each class. Otherwise, prior
should be a vector with the same length
as the number of classes in y
. The prior
probabilities should be
nonnegative and sum to one.
Srivastava, M. and Kubokawa, T. (2007). "Comparison of Discrimination Methods for High Dimensional Data," Journal of the Japanese Statistical Association, 37, 1, 123-134.
library(modeldata) data(penguins) pred_rows <- seq(1, 344, by = 20) penguins <- penguins[, c("species", "body_mass_g", "flipper_length_mm")] mdmeb_out <- lda_emp_bayes_eigen(species ~ ., data = penguins[-pred_rows, ]) predicted <- predict(mdmeb_out, penguins[pred_rows, -1], type = "class") mdmeb_out2 <- lda_emp_bayes_eigen(x = penguins[-pred_rows, -1], y = penguins$species[-pred_rows]) predicted2 <- predict(mdmeb_out2, penguins[pred_rows, -1], type = "class") all.equal(predicted, predicted2)#> [1] TRUE