[R] obtaining the discriminant line from lda
Prof Brian D Ripley
ripley at stats.ox.ac.uk
Fri Apr 28 23:44:01 CEST 2000
On Fri, 28 Apr 2000, Clayton Springer wrote:
> Dear R folks,
>
> Thanks to all your help before I have loaded a 1-D toy data set into
> R and did LDA on it. The toy data has Class=0 if value>0.
>
> > XY <-- read.table ("test.xy",header=T )
> > XY
> X.Class value
> 1 0 60.4897262
> 2 0 32.9554489
> 3 -1 -53.6459189
> 4 0 44.4450579
> .
> .
> .
> 998 -1 -43.4183157
> 999 0 7.9865092
> 1000 -1 -8.2279180
> > XY.lda <- lda(X.Class ~ value,XY)
> > XY.lda
> Call:
> lda.formula(X.Class ~ value, data = XY)
>
> Prior probabilities of groups:
> -1 0
> 0.521 0.479
>
> Group means:
> value
> -1 -48.66322
> 0 49.91819
>
> Coefficients of linear discriminants:
> LD1
> value 0.0357248
> > XY.lda$svd
> [1] 55.63543
> > XY.lda$class
> NULL
> > XY.lda$posterior
> NULL
>
> Question #1: How do I obtain the line that lda thinks divides the
> two groups? (which here it is between 1 and 2.)
Use the prediction equation, and solve for equal probabilities in the
groups.
> Next I load in a test set for prediction:
>
> > Predict0
> value
> 1 -10
> 2 -9
> 3 -8
> 4 -7
> 5 -6
> 6 -5
> 7 -4
> 8 -3
> 9 -2
> 10 -1
> 11 0
> 12 1
> 13 2
> 14 3
> 15 4
> 16 5
> 17 6
> 18 7
> 19 8
> 20 9
> 21 10
>
> > Predict0.lda <- predict(XY.lda,Predict0)
> > Predict0.lda$class
> [1] -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0
>
> For those who don't want to count this shows that the dividing
> line is somewhere between 1 & 2, even though my toy data set
> can be perfectly divided at 0. I had not expected (Fischer's) LDA
> to behave this way.
lda is not Fisher's (no c) LDF, it is Rao's LDA. In particular, it takes
the class prevalences into account unless you set prior. lda is not a
perceptron, nor logistic discrimination.
> Question #2: Are there parameter adjustments and/or other LDA methods
> where I can get the expected dividing surface at 0. (presumability
> a classification tree would choose the line I desire, but I want
> a lda method that does this.)
No, a tree will not (it will not use linear combinations). Why do you
think the dividing surface should be at zero? Your training set is
asymmetric. I think you are looking for logistic discrimination not lda,
and are confusing performance on the training set with performance on
future examples: lda `knows' the populations are normally distributed.
I think you need to understand better the theory behing lda: see the book
for which it is supporting software.
--
Brian D. Ripley, ripley at stats.ox.ac.uk
Professor of Applied Statistics, http://www.stats.ox.ac.uk/~ripley/
University of Oxford, Tel: +44 1865 272861 (self)
1 South Parks Road, +44 1865 272860 (secr)
Oxford OX1 3TG, UK Fax: +44 1865 272595
-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-
r-help mailing list -- Read http://www.ci.tuwien.ac.at/~hornik/R/R-FAQ.html
Send "info", "help", or "[un]subscribe"
(in the "body", not the subject !) To: r-help-request at stat.math.ethz.ch
_._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._._
More information about the R-help
mailing list