ed stats1 r2 2003-2004 -...

25
4 Discrimination fonctions discriminantes analyses factorielles discriminantes MANOVA classements validations croisées D 2 de Mahalanobis Ecole Doctorale MNHN Module Analyse des Données avec R Michel Baylac, UMR 7205, UMS 2700 plate-forme Morphométrie [email protected]

Upload: duongphuc

Post on 12-Sep-2018

213 views

Category:

Documents


0 download

TRANSCRIPT

4Discrimination

fonctions discriminantesanalyses factorielles discriminantes

MANOVAclassements validations croisées

D2 de Mahalanobis

Ecole Doctorale MNHN Module Analyse des Données avec RMichel Baylac, UMR 7205, UMS 2700 plate-forme Morphométrie

[email protected]

R : Discrimination linéaireintroduction

L'existence de groupes permet de partitionner la dispersion totale

en :

- une dispersion inter-groupe (B comme Between)- des dispersions intra-groupe (k si k groupes)- une dispersion intra-groupe totale (Wt pour Within) : Wt =

W1 + W2 + .... Wk

Au total on a donc (en termes de dispersions) :

T = B + Wtavec Wt = W1 + W2 + .... Wk

MNHN Ecole doctorale Module Statistiques multivariables sous R

W1

W2

T

B

Buts : 1. maximiser la séparation entre deux ou plusieurs groupes définis a priori, (niveaux ou modalités d'un facteur) : discrimination sensu stricto

2. prédir l'appartenance à des groupes prédéfinis d'individus indéterminés :prédiction

Fonction discriminante versus analyse factorielle discriminante

Dans le cas de deux groupes, on parle de fonction discriminante, fonction décrivant l'axe unique séparant les deux groupes et qui passe par leurs deux centroïdes.

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaireintroduction

W1

W2

T

B

W1

W2B

Fonctions discriminantes multiples

Avec plus de deux groupes, il existe plusieurs fonctions discriminantes « optimales » pour chacuns des couples considérés. L'analyse discriminante multi-groupes utilise ces différentes directions pour estimer les taux de classements.

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaireintroduction

G2

Question : combien y-a-t'il de fonctions discriminantes entre k groupes ?

Fonction discriminante versus analyse factorielle discriminante

Une autre approche, appelée analyse factorielle discriminante, correspond à une décomposition canonique (on parle également d'analyse des variables canoniques ou canonical variates analysis) :

- fournit k-1 axes principaux décrivant la dispersion B dans l'espace discriminant où la variabilité intra est normée

- analyse factorielle comme l'ACP. Elle peut être vue comme une double ACP (cf. Campell & Atchley, 1981. Syst. Zool. 30(3): 268-280)

- les distances entre centroïdes dans l'espace discriminant sont appelées D2 ou distances de Mahalanobis

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaireintroduction

G2G2 D2

G2G2

CV1CV2

Fonction discriminante versus analyse factorielle discriminante

Fonctions discriminantes et analyse factorielle discriminante maximisent le rapport entre les deux matrices

B / WT encore noté B * W

T-1, où W

T-1 désigne la

matrice inverse de WT

WT est la matrice des covariances intra-groupes totale

Ce ratio correspond donc à une normalisation (scaling) qui rend sphérique (ou hyper-sphérique) la variabilité au sein de W

T

C'est ce qui est représenté sur la figure en haut à droite.

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaireintroduction

G2G2

CV1CV2

T = B + WT

Avec

WT = W

1 +W

2 + .... W

k

(suppose que les W1 soient

égales)

l'axe discriminant passe par les centres de gravité des deux nuages

Sans normalisation cet axe n'est optimal que lorsque les distributions sont sphériques ou lorsque leur directions de variabilité principale sont perpendiculaires à l'axe discriminant ce qui est un cas particulier :

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaireintroduction

Y

G2

X

Dans le cas contraire (cas général), les projections des individus sur cet axe seront recouvrantes, comme ici où l'axe discriminant est oblique par rapport à l'axe principal de chacuns des deux nuages intra-groupes.

Pourquoi normaliser la variance intra-groupe totale ?

Y

G2

X

Après normalisation de la variance Wt, la direction passant par les centres de gravité correspond à celle qui discrimine complètement les deux groupes

Cette procédure a 2 conséquences : - la normalisation s'opère à partir de la

matrice Wt (ici = W1 + W2). Si W1 et W2 diffèrent la solution ne sera pas optimale pour les deux groupes.

- Les variables qui résultent de ce processus de normalisation ne sont plus les variables initiales

- l'espace discriminant diffère de l'espace des variables intiales : interprétations ?

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaireintroduction

Y

G2

X

G2

Pourquoi normaliser les variances intra-groupes ? (suite)

R : Discrimination linéaireapproche prédictive, validation croisée

but de l'approche prédictive : assigner un ensemble d'objets indeterminés à une série de groupes prédéfinis

on calcule l'ensemble des fonctions discriminantes multiples à partir d'échantillons déterminés appartenant aux k groupes (ici les 4 groupes du haut)

on applique ces fonctions aux objets indeterminés (groupe noir) pour calculer l'appartenance la plus vraisemblable de ces objets aux groupes prédéfinis.

1 23 4

?

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaireapproche prédictive, validation croisée

2 possibilités :

resubstitution : les mêmes objets servent au calcul des règles et des classements des objets dans les différentes classes.

Resubstitution est biaisée car s'applique aux mêmes objets : ne devrait pas être utilisée.

validation : on divise les données en 2 (ou +) ensembles :

- un échantillon dit d'apprentissage qui sert à calculer les règles

- un échantillon test qui va servir à estimer les classements

Calcul de la règled'affectation

De / vers Groupe 1 Groupe 2 Groupe 3 Groupe 4

Groupe 1 Xx X X X

Groupe 2 X Xx X X

Groupe 3 X X Xx X

Groupe 4 X X X Xx

Matrice de confusion

Echantillon d'apprentissage

Echantillon test

MNHN Ecole doctorale Module Statistiques multivariables sous R

ici validation simple, dite “2-fold CV”. Il existe d'autres procédures comme les k-folds

Estimation de la qualité de la discrimination

R : Discrimination linéaireTests et discrimination, MANOVA

Test : Ho = absence de différences entre les groupes (sur l'ensemble des variables)paramètres :lambda de Wilks, trace de Pillai etc. Transformés en F.

Le test est appelé MANOVA :- extension multivariée de l'analyse de variance univariée ou ANOVA

- R ne renvoie pas de test : test avec manova() de MASS

- MANOVA permet de tester Ho et l'existence d'interactions : - interaction(s) significative(s) traduisent l'hétérogénéité des réponses

d'un facteur en fonction d'un autre.

- avec crabs, on testera simultanément :- effets sexe et espèce + interaction sexe-espèce- interaction = différence de dimorphisme sexuel entre espèces ou de

dimorphisme spécifique entre sexes

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéairetests et analyse de variance multivariée MANOVA

> summary( manova(as.matrix(crabs[,4:8]) ~ crabs$sex + crabs$sp + crabs$sex*crabs$sp))

> summary(mm)

Df Pillai approx F num Df den Df Pr(>F)

crabs$sex 1 0.770 128.754 5 192 < 2.2e-16 ***

crabs$sp 1 0.880 280.559 5 192 < 2.2e-16 ***

crabs$sex:crabs$sp 1 0.228 11.373 5 192 1.269e-09 ***

Residuals 196

Signif. Codes: 0 `***' 0.001 `**' 0.01 `*' 0.05 `.' 0.1 ` ' 1

# essayer avec summary(manova(as.matrix(crab) ~ crabs$sex * crabs$sp))

les facteurs sexe et espèce se révèlent hautement significatifs, tout comme le terme d'interaction. Dans un tel cas, il conviendrait alors d'analyser chaque facteur séparemment et, comme ici, d'effectuer une analyse discriminante en fonction du sexe et une autre en fonction des couleurs ou espèces.

MNHN Ecole doctorale Module Statistiques multivariables sous R

Effets interaction

R : Discrimination linéairetests et analyse de variance multivariée MANOVA

MNHN Ecole doctorale Module Statistiques multivariables sous R

Les facteurs sex et sp de crabs ont la particularité d'être emboités (chaque espèce inclut les deux sexes).

Le traitement doit en tenir compte : # avec les données non transformées

summary(manova(as.matrix(crab) ~ crabs$sp/crabs$sex)) Df Pillai approx F num Df den Df Pr(>F) crabs$sp 1 0.87961 280.559 5 192 < 2.2e-16 ***crabs$sp:crabs$sex 2 0.94426 34.524 10 386 < 2.2e-16 ***Residuals 196 ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

# refaire avec crabl

Dans R, une fonction unique (lda() de la bibliothèque MASS) réalise les deux types d'analyses en fonction du nombre de groupes(k) :

Si k = 2 elle réalise une fonction discriminante de Fisher. Les projections sur cette fonction discriminante sont obtenues par une commande predict().

Si k > 2, elle combine une analyse factorielle discriminante - un appel à predict() renvoie alors les projections des objets sur les k-1 axes canoniques- et une analyse discriminante multiple qui fournit une estimation des taux de classements (matrice de confusion). predict() renvoie également les probabilités a posteriori d'appartenance des objets aux différents groupes.

L'appel à lda() varie selon le type des données :

dataframes = lda(factor ~ data, data) data contient les données numériques et le facteur

matrices = lda(matrix, factor) données et facteurs séparés

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaireimplémentation dans R : lda() et predict()

Enfin, lorsque le paramètre CV est égal à TRUE, la fonction lda() fournit un estimateur des affectations aux classes qui est moins biaisé que celui de l'estimation directe. lda() effectue une validation croisée de type « jackknife » : en enlevant séquentiellement chacun des objets, en calculant la fonction sur les individus restants et en l'appliquant à l'individu éliminé.

Un autre type de validation croisée consiste à diviser l'échantillon en deux (2-fold CV), un échantillon d'apprentissage et un échantillon test : c'est la procédure indiquée sur la diapo précedente. Enfin, il existe également une procédure k-fold qui divise l'échantillon en k sous-échantillons qui se valident séquentiellement.

Ces deux dernières procédures ne sont pas disponibles directement et doivent être programmées par l'utilisateur. L'exemple des iris dans l'aide de lda() indique la marche à suivre pour effectuer une validation de type 2-folds.

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaireimplémentation dans R : lda() et CV

R : Discrimination linéaire classique et prédictive

Toujours avec le jeu de données des crabes et en utilisant la fonction lda() on va effectuer une analyse factorielle discriminante des 4 groupes de crabes, ce qui revient à tenter de discriminer deux facteurs à deux niveaux chacuns : sexe (M et F) et couleur (O et B).

> library(MASS)> data(crabs)> groupe <- gl(4,50,labels = c("BM","BF","OM","OF"))

> z <- lda(as.matrix(log(crabs[,4:8])), groupe)> plot(z, cex = 1.0, col =as.numeric(groupe))

L'affichage de z fournit plusieurs renseignements, dont les % de variance des axes canoniques, les moyennes des groupes et les vecteurs canoniques

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaire et interprétation

Interprétation des axes canoniques : peut être problématique car on n'est plus dans l'espace des variables initiales

> ?lda # extrait :# "scaling: a matrix which transforms observations to discriminant functions, normalized so that

within groups covariance matrix is spherical.

corrélations entre les projections sur le ou les axes dicriminants et les variables d'origine cor() ?

Exemple :

# projections sur les axes canoniques (+ probabilités a posteriori d'appartenance aux classes : voir ?predict.lda)

> zp <- predict(z, crabs[,4:8])

analysez les sorties de zppourquoi utilise-t'on predict() et non pas predict.lda() ?

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaire et interprétation

• Calculez les corrélations entre les les variables initiales et les projections

> cor(crabs[,4:8], zp$x)

comparer ces valeurs avec par exemple les corrélations entre les vecteurs propres 2 et 3 de l'ACP et ces mêmes variables initiales ou encore avec les moyennes par groupes (lda() renvoie un tableau $means qui les contient on n'a donc pas besoin de les recalculer)

affichez z$means

calculez et affichez les corrélations pour les composantes 2-3 de l'ACP : comment ?

Comme le rappelle Krzanowski, 1988 (Principles of multivariate statistics: a user's perspective. Clarendon Press) : les différences entre groupes tirées d'une analyse discriminante peuvent provenir soit des différences réelles entre les groupes, soit des différences de variabilité intra-groupes (W1 et W2 différentes) : l'interprétation des résultats en analyse discriminante doit être opérée avec prudence

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaire classique et prédictive

On s'intéresse maintenant à la valeur classifiante de l'analyse

On calcule le pourcentage de bien classés par resubstitution. Ce n'est pas conseillé, en raison du biais qu'il y a à utiliser le même jeu de données pour calculer les paramètres du modèle et les matrices de confusion. Les affectations ont déjà été calculées par predict()

> table(groupe, zp$class) # Question : pourquoi zp$class ?

Quel est le pourcentage de classement correct ?

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaire classique et prédictive

Estimons maintenant ces pourcentages par validation croisée. ATTENTION : le fait d'inclure le paramètre CV=TRUE modifie les résultats de lda(), dont la "list" renvoie alors un composant $class qui peut être utilisé directement avec table() sans passer par un appel à predict() :

> zc <- lda(as.matrix(crabs[,4:8]),groupes, CV = TRUE)

> table(groupe, zc$class)

Conclusions ?

A ce stade, l'étude des probabilités a posteriori d'appartenance peut être instructive.

Quelles sont ces probabilités pour les individus mal classés ? Il peut être utile de vérifier si ces individus mal classés ne le sont pas simplement à cause d'erreurs de mesure (par exemple).

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaireapplication

Les résultats précedents suggèrent une forte hétérogénéité de la variabilité à l'intérieur des deux espèces. Pour l'examiner, vous allez effectuer deux analyses discriminantes séparées, une par espèce. Il vous faudra :1. créer deux nouveaux data.frames, à partir de crabs, un pour les bleus, un pour les

oranges2. effectuer sur chacun d'eux une analyse discriminante sur les sexes3. projeter les individus correspondants et interpréter les graphes4. comparer l'expression de ce dimorphisme sexuel pour ces deux espèces.

> library(MASS)> data(crabs)

> bc <- crabs[crabs$sp=="B",]> bc.lda <- lda(log(as.matrix(bc[,4:8])),bc$sex)> plot(bc.lda) # le graphe (pourquoi des histogrammes ?)

> oc <- crabs[crabs$sp=="O",] # On refait la même chose pour les oranges> oc.lda <- lda(log(as.matrix(oc[,4:8])),oc$sex)> plot(oc.lda)

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaire synthèse

# Maintenant on examine les poids des variables sur l'unique vecteur discriminant d'abord pour les bleus

# puis pour les oranges. Ces poids sont dans le vecteur (ou la matrice) appelée scaling de la liste renvoyée par lda()

# quels sont les autres composantes de cette liste ?

> bc.lda$scaling

> oc.lda$scaling # comparer. Que pouvez-vous conclure ?

Puis en étudiant les corrélations variables / axes canoniques, ce que font les deux instructions suivantes, pour les bleus puis pour les oranges

> cor(bc[,4:8],bcp$x)

> cor(oc[,4:8],ocp$x)

# interprétez, comparez, comparez avec les poids des vecteurs. Comparez avec les résultats obtenus sur l'analyse globale Conclusions ?

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéaireExemple : iris

A VOUS ... Vous allez analyser le fichier iris de MASS. Chargez le à l'aide de la fonction data(). Que contient ce fichier ?

> data(iris)

Combien d'axes factoriels ? et combien faut-il conserver ?

Calculez les corrélations avec les variables d'origine. Interprétez.

Effectuez ensuite une analyse discriminante avec validation croisée et calculez la matrice de confusion et le pourcentage d'individus bien classé. Projetez les groupes dans le plan des deux premiers axes canoniques.

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéairesynthèse

> p <- prcomp(iris[,1:4])> groupe = gl(3,50)> pairs(p$x,col = as.numeric(groupe))> cor(iris[,1:4],p$x)

PC1

-1.0 0.0 0.5 1.0 -0.4 0.0 0.2 0.4

-3-1

01

23

4

-1.0

0.0

1.0

PC2

PC3

-0.5

0.0

0.5

-3 -1 0 1 2 3 4

-0.4

0.0

0.2

0.4

-0.5 0.0 0.5

PC4

Corrélations composantes / variables d'origine

PC1 PC2 PC3 PC4

Sepal.Length 0.8974018 -0.3906044 -0.19656672 0.05882002

Sepal.Width -0.3987485 -0.8252287 0.38363030 -0.11324764

Petal.Length 0.9978739 0.0483806 0.01207737 -0.04196487

Petal.Width 0.9665475 0.0487816 0.20026170 0.15264831

Importance of components

PC1 PC2 PC3 PC4

Standard deviation 2.056 0.4926 0.2797 0.15439

Proportion of Variance 0.925 0.0531 0.0171 0.00521

Cumulative Proportion 0.925 0.9777 0.9948 1.00000

MNHN Ecole doctorale Module Statistiques multivariables sous R

R : Discrimination linéairesynthèse

> z <- lda(as.matrix(iris[,1:4]),groupe) > zp <- predict(z,iris[,1:4])

> plots(zp$x,col = as.numeric(groupe)

Combien y-a-t'il d'axes discriminants ?

Pourquoi ?

-10 -5 0 5

-2-1

01

2

zp$x[, 1]

zp

$x[, 2

]

1 2 3

setosa 50 0 0

versicolor 0 48 2

virginica 0 1 49

Matrice de confusion avec validation croisée

(lignes = affectations d'origine)

% mal classés = 100* (2+1)/150 = 2.0 %

> zc <- lda(iris[,1:4],groupe,CV=TRUE)> table(iris[,5],zc$class)

MNHN Ecole doctorale Module Statistiques multivariables sous R