Given a set of training data, this function builds the Linear Discriminant
Analysis (LDA) classifier, where the distributions of each class are assumed
to be multivariate normal and share a common covariance matrix. When the
pooled sample covariance matrix is singular, the linear discriminant function
is incalculable. This function replaces the inverse of pooled sample
covariance matrix with an estimator proposed by Schafer and Strimmer
(2005). The estimator is calculated via invcov.shrink
.
The Linear Discriminant Analysis (LDA) classifier involves the assumption that the distributions of each class are assumed to be multivariate normal and share a common covariance matrix. When the pooled sample covariance matrix is singular, the linear discriminant function is incalculable. Here, the inverse of the pooled sample covariance matrix is replaced with an estimator from Schafer and Strimmer (2005).
1 2 3 4 5 6 7 8 9 10  lda_schafer(x, ...)
## Default S3 method:
lda_schafer(x, y, prior = NULL, ...)
## S3 method for class 'formula'
lda_schafer(formula, data, prior = NULL, ...)
## S3 method for class 'lda_schafer'
predict(object, newdata, ...)

x 
matrix containing the training data. The rows are the sample observations, and the columns are the features. 
... 
additional arguments passed to

y 
vector of class labels for each training observation 
prior 
vector with prior probabilities for each class. If NULL (default), then equal probabilities are used. See details. 
formula 
A formula of the form 
data 
data frame from which variables specified in 
object 
trained lda_schafer object 
newdata 
matrix of observations to predict. Each row corresponds to a new observation. 
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
probabilties should be
nonnegative and sum to one.
lda_schafer
object that contains the trained classifier
list predicted class memberships of each row in newdata
Schafer, J., and Strimmer, K. (2005). "A shrinkage approach to largescale covariance estimation and implications for functional genomics," Statist. Appl. Genet. Mol. Biol. 4, 32.
Schafer, J., and Strimmer, K. (2005). "A shrinkage approach to largescale covariance estimation and implications for functional genomics," Statist. Appl. Genet. Mol. Biol. 4, 32.
1 2 3 4 5 6 7 8  n < nrow(iris)
train < sample(seq_len(n), n / 2)
lda_schafer_out < lda_schafer(Species ~ ., data = iris[train, ])
predicted < predict(lda_schafer_out, iris[train, 5])$class
lda_schafer_out2 < lda_schafer(x = iris[train, 5], y = iris[train, 5])
predicted2 < predict(lda_schafer_out2, iris[train, 5])$class
all.equal(predicted, predicted2)

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.
All documentation is copyright its authors; we didn't write any of that.