I presume is lda from the uncredited package MASS and you ignored the
advice to ask the maintainer?
The short answer is `don't ignore the warning', and set up a proper data
frame with just the groups you actually want.
As a quick fix, look in lda.default and alter the line that looks like
cl <- factor(max.col(dist), levels=seq(along=lev1), labels=lev1)
to be exactly like that. (You will need fixInNamespace to do so.)
On Mon, 5 Jan 2004, Christoph Lehmann wrote:
> Hi
> I have a data.frame with a grouping variable having the levels
>
> C,
> mild AD,
> mod AD,
> O and
> S
>
> since I want to compute a lda only for the two groups 'C' and
'mod AD' I
> call lda with data=subset(mydata.pca,GROUP == 'mod AD' | GROUP ==
'C')
>
>
> my.lda <- lda(GROUP ~ Comp.1 + Comp.2 + Comp.3 + Comp.4+ Comp.5 +
> Comp.6 + Comp.7 + Comp.8 , data=subset(mydata.pca,GROUP == 'mod
AD' |
> GROUP == 'C'), CV = TRUE)
>
> this results in the warning "group(s) mild AD O S are empty in:
> lda.default(x, grouping, ...)" of course...
>
> my.lda$class now shows
>
> [1] C C C C C C C C C
> [10] C C C C C C C C C
> [19] C C C mild AD mild AD mild AD mild AD mild AD
> mild AD
> [28] mild AD C mild AD mild AD mild AD C C mild AD
> mild AD
> [37] mild AD mild AD
> Levels: C mild AD mod AD O S
>
> it seems it just took the second level (mild AD) for the second class,
> even though the second level was not used for the lda computation (only
> the first level (C) and the third level (mod AD)
>
> what shall I do to resolve this (little) problem?
>
> thanks for a hint
>
> christoph
>
--
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 272866 (PA)
Oxford OX1 3TG, UK Fax: +44 1865 272595