lda                   package:MASS                   R Documentation

Linear Discriminant Analysis

Description:

     Linear discriminant analysis.

Usage:

     lda(x, ...)

     ## S3 method for class 'formula':
     lda(formula, data, ..., subset, na.action)

     ## Default S3 method:
     lda(x, grouping, prior = proportions, tol = 1.0e-4,
         method, CV = FALSE, nu, ...)

     ## S3 method for class 'data.frame':
     lda(x, ...)

     ## S3 method for class 'matrix':
     lda(x, grouping, ..., subset, na.action)

Arguments:

 formula: A formula of the form 'groups ~ x1 + x2 + ...'  That is, the
          response is the grouping factor and the right hand side
          specifies the (non-factor) discriminators. 

    data: Data frame from which variables specified in 'formula' are
          preferentially to be taken. 

       x: (required if no formula is given as the principal argument.)
          a matrix or data frame or Matrix containing the explanatory
          variables. 

grouping: (required if no formula principal argument is given.) a
          factor specifying the class for each observation. 

   prior: the prior probabilities of class membership.  If unspecified,
          the class proportions for the training set are used.  If
          present, the probabilities should be specified in the order
          of the factor levels. 

     tol: A tolerance to decide if a matrix is singular; it will reject
          variables and linear combinations of unit-variance variables
          whose variance is less than 'tol^2'. 

  subset: An index vector specifying the cases to be used in the
          training sample.  (NOTE: If given, this argument must be
          named.) 

na.action: A function to specify the action to be taken if 'NA's are
          found. The default action is for the procedure to fail.  An
          alternative is 'na.omit', which leads to rejection of cases
          with missing values on any required variable.  (NOTE: If
          given, this argument must be named.) 

  method: '"moment"' for standard estimators of the mean and variance,
          '"mle"' for MLEs, '"mve"' to use 'cov.mve', or '"t"' for
          robust estimates based on a t distribution. 

      CV: If true, returns results (classes and posterior
          probabilities) for leave-one-out cross-validation. Note that
          if the prior is estimated, the proportions in the whole
          dataset are used. 

      nu: degrees of freedom for 'method = "t"'. 

     ...: arguments passed to or from other methods. 

Details:

     The function tries hard to detect if the within-class covariance
     matrix is singular. If any variable has within-group variance less
     than 'tol^2' it will stop and report the variable as constant. 
     This could result from poor scaling of the problem, but is more
     likely to result from constant variables.

     Specifying the 'prior' will affect the classification unless
     over-ridden in 'predict.lda'.  Unlike in most statistical
     packages, it will also affect the rotation of the linear
     discriminants within their space, as a weighted between-groups
     covariance matrix is used. Thus the first few linear discriminants
     emphasize the differences between groups with the weights given by
     the prior, which may differ from their prevalence in the dataset.

     If one or more groups is missing in the supplied data, they are
     dropped with a warning, but the classifications produced are with
     respect to the original set of levels.

Value:

     If 'CV = TRUE' the return value is a list with components 'class',
     the MAP classification (a factor), and 'posterior', posterior
     probabilities for the classes.

     Otherwise it is an object of class '"lda"' containing the
     following components: 

   prior: the prior probabilities used. 

   means: the group means. 

 scaling: a matrix which transforms observations to discriminant
          functions, normalized so that within groups covariance matrix
          is spherical. 

     svd: the singular values, which give the ratio of the between- and
          within-group standard deviations on the linear discriminant
          variables.  Their squares are the canonical F-statistics. 

       N: The number of observations used. 

    call: The (matched) function call. 

Note:

     This function may be called giving either a formula and optional
     data frame, or a matrix and grouping factor as the first two
     arguments.  All other arguments are optional, but 'subset=' and
     'na.action=', if required, must be fully named.

     If a formula is given as the principal argument the object may be
     modified using 'update()' in the usual way.

References:

     Venables, W. N. and Ripley, B. D. (2002) _Modern Applied
     Statistics with S._ Fourth edition.  Springer.

     Ripley, B. D. (1996) _Pattern Recognition and Neural Networks_.
     Cambridge University Press.

See Also:

     'predict.lda', 'qda', 'predict.qda'

Examples:

     data(iris3)
     Iris <- data.frame(rbind(iris3[,,1], iris3[,,2], iris3[,,3]),
                        Sp = rep(c("s","c","v"), rep(50,3)))
     train <- sample(1:150, 75)
     table(Iris$Sp[train])
     ## your answer may differ
     ##  c  s  v
     ## 22 23 30
     z <- lda(Sp ~ ., Iris, prior = c(1,1,1)/3, subset = train)
     predict(z, Iris[-train, ])$class
     ##  [1] s s s s s s s s s s s s s s s s s s s s s s s s s s s c c c
     ## [31] c c c c c c c v c c c c v c c c c c c c c c c c c v v v v v
     ## [61] v v v v v v v v v v v v v v v
     (z1 <- update(z, . ~ . - Petal.W.))

