Vous êtes sur la page 1sur 17

L'analyse des donnes multivaries l'aide du logiciel

L'analyse discriminante linaire (L.D.A.)


Montpellier 02/03/10
Andr Bouchier

Analyse discriminante linaire - Mars 2010

p.1/17

2010, Andr Bouchier (2 Mars 2010) http://creativecommons.org/licenses/by-nc-sa/2.0/fr/ Le document L'analyse discriminante linaire by A.Bouchier est mis disposition selon les termes de la licence Creative Commons Paternit-Pas d'Utilisation Commerciale-Partage des Conditions Initiales l'Identique 2.0 France.

Analyse discriminante linaire - Mars 2010

p.2/17

1.Avant propos :
l Pr-recquis On suppose connues les bases de ce logiciel ainsi que quelques notions de statistiques concernant les analyses discriminantes linaires. l Les fonctions utilises : Il existe plusieurs bibliothques R permettant de faire des analyses discriminantes linaires. Les fonctions utilises pour cette analyse sont disponibles dans les bibliothques standard de R ainsi que dans les bibliothques klaR, MASS, cluster et mda. l Pour aider la comprhension, l'criture des programmes sera dtaille. Par la suite, vous pourrez condenser cette criture. Mais n'oubliez pas de les commenter abondamment.

Analyse discriminante linaire - Mars 2010

p.3/17

2.Rappels :
l L'analyse discriminante linaire s'effectue sur un tableau de donnes quantitatives dont les individus sont affects des classes. l Elle tente de dterminer la contribution des variables qui expliquent l'appartenance des individus des groupes. l On compare plusieurs groupes, sur plusieurs variables pour dterminer s'ils diffrent et pour comprendre la nature de ces diffrences. l L'analyse discriminante linaire permet aussi d'affecter de nouveaux individus aux groupes. l L'analyse discriminante linaire pas pas (stepwise) dtermine quelles sont les variables ncessaires et suffisantes pour affecter les individus aux bons groupes

Analyse discriminante linaire - Mars 2010

p.4/17

3.Les donnes d'exemple :


l Le tableau des donnes d'exemple (fourni avec le logiciel R) : This famous (Fisher's or Anderson's) iris data set gives the measurements in centimeters of the variables : sepal length and width and petal length and width, respectively, for 50 flowers from each of 3 species of iris. The species are Iris setosa, versicolor, and virginica.

Analyse discriminante linaire - Mars 2010

p.5/17

4.Reprsentation des groupes sur le plan principal d'une ACP


data(iris) library(cluster) clusplot(iris,iris$Species,diss=F,shade=T,color=T,labels=4,main="") abline(v=0,h=0)

setosa 2

versicolor virginica

Component 2

-3 -3

-2

-1

-2

-1

Component 1 These two components explain 95.02 % of the point variability.

Analyse discriminante linaire - Mars 2010

p.6/17

5.Prparation des donnes :


l tirage alatoire d'un chantillon de la population (120 individus) data(iris) tirage<-sample(1:dim(iris)[1], 120, replace = FALSE) l contrle du tirage alatoire (vous n'obtiendrez pas forcment le mme rsultat) table(iris$Species[tirage]) setosa versicolor 41 41 l les donnes de l'chantillon ech<-iris[ row.names(iris) %in% tirage,] l les donnes pour la validation (30 individus) test<-iris[-tirage,]
Analyse discriminante linaire - Mars 2010 p.7/17

virginica 38

6.L'analyse discriminante pas pas - les calculs :


l l'analyse discriminante pas pas (bibliothque MASS et klaR) library(MASS) library(klaR) disc<-stepclass(Species~ ., data =ech, method = "lda", improvement = 0.001)
`stepwise classification', using 10-fold cross-validated correctness rate of method lda'. 120 observations of 4 variables in 3 classes; direction: both stop criterion: improvement less than 0.1 %. correctness rate: 0.96667; in: "Petal.Width"; variables (1): Petal.Width correctness rate: 0.975 ; in: "Sepal.Width"; variables (2): Petal.Width, Sepal.Width correctness rate: 0.98333; in: "Petal.Length"; variables (3): Petal.Width, Sepal.Width, Petal.Length correctness rate: 0.99167; in: "Sepal.Length"; variables (4): Petal.Width, Sepal.Width, Petal.Length, Sepal.Length hr min sec 0.00 0.00 5.95
Analyse discriminante linaire - Mars 2010 p.8/17

7.L'analyse discriminante pas pas - reprsentation :


l volution des performances de classification : plot(disc, main="volution des perf. de classification")
volution des perf. de classification
1.0 estimated correctness rate 0.0 0.2 0.4 0.6 0.8

Analyse discriminante linaire - Mars 2010

+ Sepal.Length

+ Petal.Length

+ Sepal.Width

+ Petal.Width

START

p.9/17

8.L'analyse discriminante - description des groupes (1) :


l la reprsentation suivante utilise la premire lettre du nom des groupes.

Iris setosa, versicolor, et virginica.


l Mais 2 groupes commencent par la mme lettre. Il faut les renommer : don<-ech don$Species<-as.character(don$Species) for (i in 1:dim(don)[1]) { if (don$Species[i]=="virginica") don$Species[i]<-"i" if (don$Species[i]=="versicolor") don$Species[i]<-"e" if (don$Species[i]=="setosa") don$Species[i]<-"s" } don$Species<-as.factor(don$Species)

Analyse discriminante linaire - Mars 2010

p.10/17

9.L'analyse discriminante - description des groupes (2) :


partimat(Species~., data = don)
Partition Plot
app. error rate: 0.208 i i i i i i i i i i i e e i ie i e i ii i eee i e e i i i ie e e ii e i i i e e e i i e ei e e e i ee s ii s i e eee e eeeee i ee s s e s s s s e s s e e e s s ss ss ss s ei ss s s ss s ss s s 2.0 2.5 3.0 3.5 4.0 app. error rate: 0.033 4.5 5.0 5.5 6.0 6.5 7.0 7.5 i i ii i e ei i i e e i iii i ee e i e eee i i ii e eii ii i e e ei i e e i e e i e e e e e e ii e e e e e i e ee e e e ee e e i i 4.5 5.0 5.5 6.0 6.5 7.0 7.5 i Sepal.Width 4.0 ii i s app. error rate: 0.058 s s s ss s s s s ss s s s ss s s s ss ss s

Sepal.Length

Sepal.Length

i i i e ii e i i ee e i ii eei ii i e ee e ei i e ii i ii i i e e e e e e i e ee e e ii i i i ee ii e ee i i e e i e i i ee e e ee e e e 2 3 4 5 6

Sepal.Width app. error rate: 0.042 i i i i i i i i e e i e ei i i eee i i e e i i e ee i i i e i i ee i e eee i ii s e e e s e ee e i e e e i s eeee s s e s ss e s ss s ss s ee s s e i ss s s ss ss 0.5 1.0 1.5 2.0

Petal.Length app. error rate: 0.025 s 4.0 i Sepal.Width i i ii i ii i i i s s s 6

2.0

s s s ss ss s s s s s s s s s s s s s s s s s s ss

2.5 s

3.0

3.5

Petal.Length app. error rate: 0.033 ii i i i i i i i i i i ii i i i i ii i e ee i i i eee ee e i e e e ee i ee ee ee e e e eee eee ee e e e e

4.5 5.0 5.5 6.0 6.5 7.0 7.5

i i i i i ii i i i ii

2.5

s 2.0

2 s s ss s s ss s ss s s s ss s s 2.5 0.5 1.0 1.5 2.0 2.5

2.5

0.5

1.0

1.5

2.0

Petal.Width

Petal.Width

s s s s ss s s s s s s ss ss s s

Sepal.Length

i i Petal.Length i e e ee e i e i eeee i e i eee i ee e i eee i e e i e e i ii ee e e e e e i ii i i ii iii ii i i i 5 4

3.0

3.5

Petal.Width

Analyse discriminante linaire - Mars 2010

p.11/17

10.Vrification des performances de l'analyse avec les valeurs "test"


l On conserve 4 variables explicatives dans l'afd library(mda) discrim<-fda(Species~., data =ech) l classement des valeurs "test" pred<-predict(discrim,test) l calcul du nombre de mal classs parmi les valeurs "test" confusion(pred,test$Species) true object setosa versicolor virginica setosa 9 0 0 versicolor 0 9 0 virginica 0 1 11 attr(,"error") [1] 0.03333333
Analyse discriminante linaire - Mars 2010 p.12/17

11.L'analyse discriminante linaire - le graphique :


plot(discrim) abline(v=0,h=0)
3
1 3 3 3

Discriminant Plot for predict classes

3 3 1 1 2 3 3 3 2 1 1 2 2 2 1 1 1 2 2 2 1 2 2 2 2 1 2 2 2 2 2 2 2 2 22 2 2 2 2 2 2 2 2 2 2 2 3 2 3 22 2 3 3 3 3 3 3 3

3 3

3 3 3 3 3 3

Discriminant Var 2

1 1 1 11 1 1 1 1

1
1 1 1 1 1 11 1 1 1 1

33
3

3 3

33 3 3 3 3

-1

2
2

3 3 3

2 2 2

-2

3 2 2

-10

-5

0 Discriminant Var 1

Analyse discriminante linaire - Mars 2010

p.13/17

12.L'analyse discriminante linaire - les rsultats :


l les coefficients linaires
coef(discrim)
[,1] [,2] Intercept -2.6266018 -6.9389842 Sepal.Length -0.9783458 0.2387994 Sepal.Width -1.3283406 2.0152006 Petal.Length 2.3065434 -1.0837726 Petal.Width 2.7337624 2.8707597 attr(,"scaled:scale") v1 v2 0.1772323 0.4299240

l les moyennes par classe dans l'espace discriminant


discrim$means
v1 v2 setosa -8.057298 0.2847287 versicolor 1.307972 -0.7355759 virginica 5.474504 0.5463375 attr(,"scaled:scale") [1] 0.1831793 1.7567644
Analyse discriminante linaire - Mars 2010 p.14/17

13.Analyse discriminante, le programme complet (1) :


#Reprsentation des groupes sur le plan principal d'une ACP : data(iris) library(cluster) clusplot(iris,iris$Species,diss=F,shade=T,color=T,labels=4,main="") abline(v=0,h=0) #tirage alatoire d'un chantillon de la population data(iris) tirage<-sample(1:dim(iris)[1], 120, replace = FALSE) #contrle du tirage alatoire table(iris$Species[tirage]) #les donnes de l'chantillon ech<-iris[ row.names(iris) %in% tirage,] #les donnes test pour la validation test<-iris[-tirage,] #l'analyse discriminante pas pas (bibliothque MASS et klaR) library(MASS) library(klaR) disc<-stepclass(Species~., data =ech, method = "lda",improvement = 0.001) #Graphique d'volution des performances de classification : plot(disc, main="volution des perf. de classification")
Analyse discriminante linaire - Mars 2010 p.15/17

14.Analyse discriminante, le programme complet (2) :


#description graphique des groupes. Renommer les groupes :
don<-ech don$Species<-as.character(don$Species) for (i in 1:dim(don)[1]) { if (don$Species[i]=="virginica") don$Species[i]<-"i" if (don$Species[i]=="versicolor") don$Species[i]<-"e" if (don$Species[i]=="setosa") don$Species[i]<-"s" } don$Species<-as.factor(don$Species) partimat(Species~., data = don)

#L'analyse discriminante - une description graphique des groupes : #Analyse discriminante - on retient 4 variables explicatives
library(mda) discrim<-fda(Species~., data =ech)

#classement des valeurs "test"


pred<-predict(discrim,test)

#calcul du nombre de mal classs parmi les valeurs "test"


confusion(pred,test$Species) plot(discrim) abline(v=0,h=0) coef(discrim) discrim$means

#L'analyse discriminante linaire - le graphique : #les coefficients linaires #les moyennes par classe dans l'espace discriminant
Analyse discriminante linaire - Mars 2010 p.16/17

15.Quelques rfrences :
l Logiciel R : R Development Core Team (2004). R: A language and environment for statistical computing. R Foundation for Statistical Computing, Vienna, Austria. ISBN 3-900051-07-0, URL http://www.R-project.org. l To cite klaR in publications use : Weihs, C., Ligges, U., Luebke, K. and Raabe, N. (2005). klaR Analyzing German Business Cycles. In Baier, D., Decker, R. and Schmidt-Thieme, L. (eds.). Data Analysis and Decision Support, 335-343, Springer-Verlag, Berlin. (in print) l To cite package 'mda' in publications use : S original by Trevor Hastie & Robert Tibshirani. R port by Friedrich Leisch, Kurt Hornik and Brian D. Ripley. (). mda: Mixture and flexible discriminant analysis. R package version 0.2-27.

Analyse discriminante linaire - Mars 2010

p.17/17

Vous aimerez peut-être aussi