Vous êtes sur la page 1sur 9

R pour la statistique Sous la direction de

FRANÇOIS HUSSON
PRATIQUE DE
LA STATISTIQUE

PRATIQUE DE
LA STATISTIQUE
et la science des données
R pour la statistique

PRATIQUE DE
LA STATISTIQUE
Les auteurs

Le logiciel R est un outil incontournable de


statistique, de visualisation de données et
Pierre-André Cornillon,
Université Rennes 2 et la science des données
de science des données tant dans le monde Arnaud Guyader,
universitaire que dans celui de l’entreprise. Ceci Sorbonne Université
s’explique par ses trois principales qualités : il François Husson,
est gratuit, très complet et en essor permanent. Agrocampus-Ouest
Récemment, il a su s’adapter pour entrer dans l’ère
Nicolas Jégou,
du big-data et permettre de recueillir et traiter
Université Rennes 2
des données hétérogènes et de très grandes
dimensions (issues du Web, données textuelles, Julie Josse,

Sous la direction de
FRANÇOIS HUSSON
etc.). École polytechnique
Ce livre s’articule en deux grandes parties : la Nicolas Klutchnikoff,
première est centrée sur le fonctionnement du Université Rennes 2
logiciel R tandis que la seconde met en oeuvre Erwan Le Pennec,
une trentaine de méthodes statistiques au travers École polytechnique
de fiches. Ces fiches sont chacune basées sur un
Eric Matzner-Løber,
exemple concret et balayent un large spectre de
Cepe ENSAE
techniques pour traiter des données.
Ce livre s’adresse aux débutants comme Laurent Rouvière,
aux utilisateurs réguliers de R. Il leur permettra Université Rennes 2
de réaliser rapidement des graphiques et des Benoît Thieurmel,
traitements statistiques simples ou élaborés. Datastorm

et la science des données


R pour la statistique

PIERRE-ANDRÉ CORNILLON NICOLAS KLUTCHNIKOFF


ARNAUD GUYADER ERWAN LE PENNEC
9 782753 575738 FRANÇOIS HUSSON ERIC MATZNER-LØBER
ISBN 978-2-7535-7573-8 NICOLAS JÉGOU LAURENT ROUVIÈRE
www.pur-editions.fr 25 € JULIE JOSSE BENOÎT THIEURMEL
9.6. Analyse discriminante linéaire

9.6 Analyse discriminante linéaire


Objet
Comme la régression logistique, l’analyse discriminante linéaire a pour principe
d’expliquer et de prédire les valeurs d’une variable qualitative Y à partir de va-
riables explicatives quantitatives et/ou qualitatives X = (X1 , . . . , Xp ). Nous sup-
posons que la variable Y est binaire, la généralisation à plus de deux modalités
étant abordée en fin de fiche.
L’analyse discriminante linéaire peut être présentée selon deux aspects différents
mais équivalents. Un premier point de vue consiste à modéliser la probabilité
d’appartenance à un groupe à l’aide du théorème de Bayes. Pour simplifier, on
désigne par 0 et 1 les modalités de la variable à expliquer Y . La règle bayésienne
donne une estimation de la probabilité a posteriori d’affectation :

π1 fX|Y =1 (x)
P(Y = 1|X = x) = , (9.10)
π0 fX|Y =0 (x) + π1 fX|Y =1 (x)

où π0 = P(Y = 0) et π1 = P(Y = 1) désignent les probabilités a priori d’apparte-


nance aux classes 0 et 1, et fX|Y =j la densité de la loi de X sachant Y = j. Les
probabilités π0 et π1 doivent être fixées par l’utilisateur ou estimées à partir des
données. Par ailleurs, l’analyse discriminante linéaire modélise les lois de X sa-
chant Y = j (j = 0, 1) par des lois normales. Plus précisément, on fait l’hypothèse
que :
X|Y = 0 ∼ N (µ0 , Σ), X|Y = 1 ∼ N (µ1 , Σ).
Les paramètres µ0 , µ1 et Σ des lois normales sont estimés par la méthode du
maximum de vraisemblance. Pour un nouvel individu, on déduit de (9.10) les
estimations des probabilités a posteriori et on affecte ce nouvel individu au groupe
pour lequel la probabilité a posteriori est la plus grande.
L’analyse discriminante linéaire peut également être envisagée comme une mé-
thode de réduction de la dimension. Dans ce cas, le principe consiste, comme pour
l’Analyse en Composantes Principales (voir fiche 7.1), à calculer une nouvelle va-
riable, appelée variable canonique discriminante, w0 X = w1 X1 +. . .+wp Xp comme
combinaison linéaire des variables initiales. Elle est calculée de sorte que le rapport
de la variance intergroupe à la variance intragroupe soit maximale (pour plus de
détails voir Saporta (2011), chapitre 18). Pour un individu x = (x1 , . . . , xp ), la
variable canonique définit une fonction de score S(x) = w0 x = w1 x1 + . . . + wp xp .
L’affectation de l’individu x à un groupe s’effectue alors en comparant la valeur
du score S(x) à une valeur seuil s.
Remarque
Les deux manières de présenter l’analyse discriminante linéaire ne permettent pas
de traiter le cas de variables explicatives qualitatives. Néanmoins, comme nous
le verrons dans l’exemple, un codage disjonctif complet des variables qualitatives

294
Chapitre 9. Méthodes usuelles de régression

permet de réaliser une analyse discriminante linéaire en présence de telles variables.


Chaque modalité de la variable est alors traitée comme une variable quantitative
prenant comme valeurs 0 ou 1. Afin d’éviter des problèmes de colinéarité entre les
différentes modalités, la colonne associée à la première modalité du facteur n’est
pas prise en compte dans le modèle. Lorsqu’une analyse discriminante est réalisée
avec une ou plusieurs variables explicatives qualitatives, l’hypothèse de normalité
effectuée n’est clairement pas vérifiée : il faut par conséquent être prudent dans
l’interprétation des probabilités a posteriori.

Exemple
Dans le cadre d’une étude de la population angevine, le CHU d’Angers s’est inté-
ressé à la propension à ronfler d’hommes et de femmes. Le fichier ronfle.txt contient
un échantillon de 100 patients, les variables considérées sont :
– age : en années ;
– poids : en kg ;
– taille : en cm ;
– alcool : nombre de verres bus par jour (en équivalent verre de vin rouge) ;
– sexe : sexe de la personne (F = femme, H = homme) ;
– ronfle : diagnostic de ronflement (O = ronfle, N = ne ronfle pas) ;
– taba : comportement au niveau du tabac (O = fumeur, N = non fumeur).
Le but de cette étude est d’expliquer le ronflement (variable ronfle) par les six
autres variables présentées ci-dessus. Le tableau suivant est un extrait du jeu de
données :

age poids taille alcool sexe ronfle taba


1 47 71 158 0 H N O
2 56 58 164 7 H O N
.
. .
. .
. .
. .
. .
. .
. .
.
. . . . . . . .
99 68 108 194 0 F O N
100 50 109 195 8 H O O

Étapes
1. Importer les données
2. Construire le modèle
3. Sélectionner des variables
4. Estimer le taux de mauvais classement
5. Faire de la prévision

295
9.6. Analyse discriminante linéaire

Traitement de l’exemple
1. Importer les données

> donnees <- read.table("ronfle.txt",header=TRUE)


> summary(donnees)
age poids taille alcool
Min. :23.00 Min. : 42.00 Min. :158.0 Min. : 0.00
1st Qu.:43.00 1st Qu.: 77.00 1st Qu.:166.0 1st Qu.: 0.00
Median :52.00 Median : 95.00 Median :186.0 Median : 2.00
Mean :52.27 Mean : 90.41 Mean :181.1 Mean : 2.95
3rd Qu.:62.25 3rd Qu.:107.00 3rd Qu.:194.0 3rd Qu.: 4.25
Max. :74.00 Max. :120.00 Max. :208.0 Max. :15.00

sexe ronfle taba


F:25 N:65 N:36
H:75 O:35 O:64

2. Construire le modèle
La fonction lda de la librairie MASS permet de réaliser l’analyse discriminante
linéaire. La librairie MASS est installée par défaut dans R, il suffit donc de la
charger. La fonction lda utilise, comme la fonction lm (cf. annexe A.1, p. 401),
une formule du type Y ~ X1+X2. Les probabilités a priori choisies pour l’analyse
doivent également être spécifiées. Si on ne dispose d’aucun a priori sur ces deux
quantités, deux stratégies peuvent être envisagées :
– les probabilités sont choisies égales, c’est-à-dire π0 = π1 = 0.5 ;
– les probabilités sont estimées par la proportion d’observations dans chaque
groupe.
Le choix des probabilités a priori est spécifié dans l’argument prior de la fonction
lda. Si rien n’est précisé, c’est la deuxième stratégie qui est utilisée par défaut. On
écrit d’abord le modèle prenant en compte toutes les variables explicatives :

> library(MASS)
> mod.complet <- lda(ronfle~.,data=donnees)
> mod.complet
Call:
lda(ronfle ~ ., data = donnees)
Prior probabilities of groups:
N O
0.65 0.35

Group means:
age poids taille alcool sexeH tabaO
N 50.26154 90.47692 180.9538 2.369231 0.6923077 0.6769231
O 56.00000 90.28571 181.3714 4.028571 0.8571429 0.5714286

Coefficients of linear discriminants:

296
Chapitre 9. Méthodes usuelles de régression

LD1
age 0.05973655
poids -0.01620579
taille 0.01590170
alcool 0.24058822
sexeH 0.55413371
tabaO -1.14621434

On retrouve dans les sorties les probabilités a priori du modèle, le centre de gravité
de chacun des deux groupes et les coefficients de la variable canonique. Le logiciel
renvoie par convention les coefficients de la variable canonique de sorte que sa
variance intraclasse soit égale à 1. Il est difficile de trouver les variables importantes
pour la discrimination en comparant les centres de gravité ; il est souvent plus
pertinent d’étudier l’influence des coefficients sur le score. La fonction plot permet
de représenter la distribution des coordonnées de chaque individu sur la variable
canonique pour chaque groupe :

> plot(mod.complet)
0.4
0.2
0.0

−3 −2 −1 0 1 2

group N
0.4
0.2
0.0

−3 −2 −1 0 1 2

group O

Figure 9.13 – Distribution des coordonnées des individus sur la variable discri-
minante.

On pourra remarquer que les ronfleurs ont tendance à posséder une coordonnée
élevée sur la variable discriminante.
3. Sélectionner des variables
Tout comme pour les modèles linéaire et logistique, il est possible de faire de la
sélection pour l’analyse discriminante linéaire. La fonction stepclass du package

297
9.6. Analyse discriminante linéaire

klaR permet d’utiliser des procédures pas à pas pour choisir un modèle. À chaque
étape, la procédure ajoute ou supprime la variable qui optimise un critère de per-
formance estimé par validation croisée. Le critère utilisé par défaut est le taux de
bon classement. Le processus s’arrête lorsqu’aucun ajout ou retrait de variable ne
permet d’améliorer significativement le critère. Le niveau minimal d’amélioration
pour ajouter ou supprimer une variable est défini par le paramètre improvement,
ce paramètre étant par défaut fixé à 0.05.
La fonction stepclass exige que les variables qualitatives représentées par des fac-
teurs soient codées en 0/1. On peut effectuer ce codage à l’aide de la fonction
model.matrix :

> mat.X <- model.matrix(ronfle~.,data=donnees)[,-1]


> head(mat.X)
age poids taille alcool sexeH tabaO
1 47 71 158 0 1 1
2 56 58 164 7 1 0
3 46 116 208 3 1 1
4 70 96 186 3 1 1
5 51 91 195 2 1 1
6 46 98 188 0 0 0

La première colonne, représentant la variable constante, est supprimée. On peut


maintenant lancer la procédure de sélection :

> ronfle <- donnees$ronfle


> library(klaR)
> set.seed(1234)
>sel <- stepclass(mat.X,ronfle,method="lda",direction="both",maxvar=6)
> sel$model
nr name
1 1 age
2 2 poids
3 4 alcool

L’argument direction indique le type de procédure pas à pas utilisé : ascen-


dante (forward), descendante (backward) ou les deux à la fois (both). L’argument
maxvar renseigne sur le nombre maximal de variables souhaitées dans le modèle,
ici on s’autorise un maximum de 6 variables (le modèle complet). La procédure a
sélectionné 3 variables : age, poids et alcool. On obtient le modèle sélectionné
comme suit :

> mod.sel <- lda(sel$formula,data=donnees)


> mod.sel
Call:
lda(sel$formula, data = donnees)

298
Chapitre 9. Méthodes usuelles de régression

Prior probabilities of groups:


N O
0.65 0.35

Group means:
age poids alcool
N 50.26154 90.47692 2.369231
O 56.00000 90.28571 4.028571

Coefficients of linear discriminants:


LD1
age 0.072815712
poids -0.004607728
alcool 0.245088681

4. Estimer le taux de mauvais classement


La fonction lda permet d’estimer le taux de mauvais classement par validation
croisée. Il suffit pour cela d’ajouter l’argument CV=TRUE lors de l’appel à la fonction.
On estime dans cette partie les taux de mauvais classement du modèle complet
mod.complet et du modèle sélectionné dans la partie précédente mod.sel. On
obtient les labels prédits par validation croisée de ces deux modèles avec :

> prev.complet <- lda(ronfle~.,data=donnees,CV=TRUE)$class


> prev.sel <- lda(sel$formula,data=donnees,CV=TRUE)$class

On peut ainsi confronter les prévisions aux valeurs observées :

> table(prev.complet,donnees$ronfle)

prev.complet N O
N 53 22
O 12 13
> table(prev.sel,donnees$ronfle)

prev.sel N O
N 55 23
O 10 12

et en déduire les taux de mauvais classement

> mean(prev.complet!=donnees$ronfle)
[1] 0.34
> mean(prev.sel!=donnees$ronfle)
[1] 0.33

Le modèle avec 3 variables a un taux d’erreur légèrement plus faible que le modèle
complet.

299
9.6. Analyse discriminante linéaire

5. Faire de la prévision
Les modèles construits précédemment peuvent être utilisés dans un contexte de
prévision. Le tableau suivant contient les valeurs des six variables explicatives me-
surées sur quatre nouveaux patients :

age poids taille alcool sexe taba


42 55 169 0 F N
58 94 185 4 H O
35 70 180 6 H O
67 63 166 3 F N

Pour prédire le label de ces quatre nouveaux individus, on récolte d’abord les
nouvelles données dans un data-frame qui possède la même structure que le tableau
de données initial (notamment les mêmes noms de variables). On construit donc
une matrice pour les variables quantitatives et une matrice pour les variables
qualitatives avant de les regrouper dans un même data-frame :

> n_don1<-matrix(c(42,55,169,0,58,94,185,4,35,70,180,6,67,63,166,3),
ncol = 4, byrow = TRUE)
> n_don2<-matrix(c("F","N","H","O","H","O","F","N"),
ncol = 2, byrow = TRUE)
> n_donnees<-cbind.data.frame(n_don1,n_don2)
> names(n_donnees) <- names(donnees)[-6]

La fonction predict.lda, que l’on peut appeler plus simplement par le raccourci
predict, permet d’affecter un groupe à chacun de ces quatre individus :

> predict(mod.sel,newdata=n_donnees)
$class
[1] N N N O
Levels: N O

$posterior
N O
1 0.8582230 0.1417770
2 0.5444034 0.4555966
3 0.7435646 0.2564354
4 0.4308341 0.5691659

$x
LD1
1 -1.3076693
2 0.6580354
3 -0.4159631
4 1.2111277

300
Chapitre 9. Méthodes usuelles de régression

La fonction predict renvoie une liste de longueur 3 :


– le premier élément (class) contient les groupes prédits ;
– le deuxième élément (posterior) est une matrice à 2 colonnes donnant les pro-
babilités a posteriori d’appartenance aux groupes N et O pour chaque individu ;
– le troisième élément (x) désigne la valeur du score de chaque individu, il contient
les coordonnées des 4 individus sur l’axe discriminant.
Le modèle attribue le groupe N aux trois premiers individus et le groupe O au
quatrième. La règle d’attribution d’un groupe à une observation x s’effectue en
comparant les probabilités a posteriori ou, de manière équivalente, en comparant
le score à une valeur seuil. Modifier les probabilités a priori ne change pas la
variable canonique ; seul le seuil à partir duquel on change l’affectation du groupe
varie. Le logiciel ne renvoyant pas cette valeur seuil, on affecte en comparant les
probabilités a posteriori de chaque groupe.

Pour aller plus loin


Pour réaliser une analyse discriminante linéaire, on suppose que les matrices de
variance-covariance des variables explicatives sont les mêmes pour chaque groupe.
L’analyse discriminante quadratique s’affranchit de cette hypothèse. Les probabi-
lités a posteriori sont calculées en supposant que :

X|Y = 0 ∼ N (µ0 , Σ0 ), X|Y = 1 ∼ N (µ1 , Σ1 ).

La fonction qda, disponible dans la librairie MASS, permet alors de réaliser une
analyse discriminante quadratique. Elle s’utilise de la même façon que lda.
Dans cette partie, nous nous sommes restreints à un problème de discrimination
pour une variable à expliquer binaire. L’analyse discriminante linéaire se généralise
aisément au cas où la variable à expliquer possède J > 2 modalités. Les probabilités
a posteriori sont toujours calculées à l’aide du Théorème de Bayes en faisant pour
chaque groupe l’hypothèse de normalité X|Y = j ∼ N (µj , Σ) pour j = 1, . . . , J
(ou X|Y = j ∼ N (µj , Σj ) pour l’analyse discriminante quadratique). La mise
en œuvre sur R ne pose aucune difficulté et s’effectue comme précédemment : les
modèles sont écrits de la même façon et on affecte l’individu au groupe pour lequel
la probabilité a posteriori est la plus élevée.
Concernant la seconde manière d’envisager l’analyse discriminante linéaire (réduc-
tion de la dimension), on ne cherchera plus une variable canonique discriminante
mais (J − 1) variables.
Des méthodes de régularisation ont été proposées pour répondre aux problèmes
de la grande dimension ou de corrélations élevées entre les variables explicatives.
On pourra mettre en œuvre ces techniques sur R en utilisant la fonction rda du
package klaR ou encore la fonction hdda du package HDclassif .

301

Vous aimerez peut-être aussi