Vous êtes sur la page 1sur 25

Analyse de données : Dossier 2

Sauvadet Lucas

20/12/2020

Contents
Exercice 1 1
Analyse directe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Déterminer : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Exécuter l’analyse en diagonalisant la matrice W-1.B. . . . . . . . . . . . . . . . . . . . . . . 6
Ensuite : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Exécuter l’analyse sous R à l’aide des fonctions lda() de la librairie MASS et discrimin() de ade4. . 7

Exercice 2 : Entreprise 10
1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

Exercice 1
Observation une population structurée en trois variables quantitatives notées Y1, Y2 et Y3. La variable Y
indique la variable de groupe ou facteur groupe. Nommons Z la matrice des variables explicatives. Générons
les données :

## Y1 Y2 Y3 Y
## 1 7 26 84 1
## 2 9 28 84 1
## 3 8 27 81 2
## 4 10 23 81 2
## 5 11 25 80 3
## 6 12 24 79 3
## 7 13 29 78 3

1
## Y1 Y2 Y3 Y
## 1 7 26 84 1
## 2 9 28 84 1
## 3 8 27 81 2
## 4 10 23 81 2
## 5 11 25 80 3
## 6 12 24 79 3

Quelques informations sur les données :

## Diagrammes des groupes


table(Y)

## Y
## 1 2 3
## 2 2 3

pie(table(Y),col=c("red","blue","green"))

## Histogrames
par(mfrow=c(2,2))
# Y1
brk1=seq(min(afd2[,1]),max(afd2[,1]),length.out=30)
hist(afd2$Y1[afd2$Y=="1"], col="red",

2
main="Class 1",xlab="Valeur", breaks=brk1)
# Y2
brk2=seq(min(afd2[,2]),max(afd2[,2]),length.out=30)
hist(afd2$Y2[afd2$Y=="2"], col="blue",
main="Class 2",xlab="Valeur", breaks=brk2)
# Y3
brk3=seq(min(afd2[,3]),max(afd2[,3]),length.out=30)
hist(afd2$Y3[afd2$Y=="3"], col="green",
main="Class 3",xlab="Valeur", breaks=brk3)

Class 1 Class 2
Frequency

Frequency
0.6

0.6
0.0

0.0
7 8 9 10 11 12 13 23 24 25 26 27 28 29

Valeur Valeur

Class 3
Frequency

0.6
0.0

78 79 80 81 82 83 84

Valeur

Au premier abord, on ne peut pas séparer les individus en fonction de Y1, Y2 ou Y3. Prendre les variables
(Y1, Y3) ou (Y2, Y3) parait plus possible.

## Y1 Y2 Y3
## Y1 1.00 0.00 -0.87
## Y2 0.00 1.00 0.07
## Y3 -0.87 0.07 1.00

3
23 24 25 26 27 28 29

13
11
Y1

7 8 9
29
27

Y2
25
23

84
82
Y3

80
78
7 8 9 10 11 12 13 78 79 80 81 82 83 84

Y1 et Y2 sont indépendantes alors que Y1 et Y3 semblent très négativement corrélées.

## Df Wilks approx F num Df den Df Pr(>F)


## afd2$Y 2 0.019841 4.0662 6 4 0.09787 .
## Residuals 4
## ---
## Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

On a une différence presque significative des moyennes entre les variables pour les differents groupes selon
le test de Wilks.
Discriminons les groupes grâce à une AFD (analyse factorielle discriminante).

Analyse directe.

Déterminer :

• la matrice des données centrées, et en déduire la matrice de dispersion totale T.

## Matrice des données centrées : ZC


ZC = scale(Z, scale=F)
ZC

## Y1 Y2 Y3
## 1 -3 0 3

4
## 2 -1 2 3
## 3 -2 1 0
## 4 0 -3 0
## 5 1 -1 -1
## 6 2 -2 -2
## 7 3 3 -3
## attr(,"scaled:center")
## Y1 Y2 Y3
## 10 26 81

## Matrice de dispersion totale : T (matrice de variance covariance globale)


T = t(ZC) %*% ZC
T

## Y1 Y2 Y3
## Y1 28 0 -26
## Y2 0 28 2
## Y3 -26 2 32

• la matrice des barycentres des classes centrées, et en déduire la matrice de dispersion inter-classes B

## y1 y2 y3
## 1 -2 1 3
## 2 -1 -1 0
## 3 2 0 -2

## y1 y2 y3
## y1 22 -2 -24
## y2 -2 4 6
## y3 -24 6 30

• calculer la matrice de dispersion intra-classes W et vérifier que T = B + W;

## Y1 Y2 Y3
## Y1 6 2 -2
## Y2 2 24 -4
## Y3 -2 -4 2

## Y1 Y2 Y3
## Y1 28 0 -26
## Y2 0 28 2
## Y3 -26 2 32

## Y1 Y2 Y3
## Y1 28 0 -26
## Y2 0 28 2
## Y3 -26 2 32

## Y1 Y2 Y3
## Y1 TRUE TRUE TRUE
## Y2 TRUE TRUE TRUE
## Y3 TRUE TRUE TRUE

5
## Y1 Y2 Y3
## Y1 28 0 -26
## Y2 0 28 2
## Y3 -26 2 32

Exécuter l’analyse en diagonalisant la matrice W-1.B.

• déterminer la part d’inertie expliquée par les deux premières valeurs propres ;

Que pouvez en déduire sur l’importance du troisième axe discriminant ?


La première valeur propre explique 96.8% de l’inertie et la 2e 3.2 %. On peut donc en déduire que le 3e axe
discriminant ne contribuera pas à l’analyse, il n’est pas important.

## [1] "Valeur propre"

## [1] 52.286 1.714 0.000

## [1] "Part d’inertie"

## [1] 0.96825926 0.03174074 0.00000000

## [,1] [,2] [,3]


## [1,] 0.1400738 0.8003208 0.5773503
## [2,] 0.1610751 0.1508383 -0.5773503
## [3,] 0.9769515 0.5802883 0.5773503

Ensuite :

• normaliser les vecteurs propres pour qu’ils soient W-orthonormés ;

## [,1] [,2] [,3]


## [1,] 0.289994 0.9260508 0.3535534
## [2,] 0.333473 0.1745349 -0.3535534
## [3,] 2.022578 0.6714513 0.3535534

• calculer les projections des individus sur les deux premiers axes discriminants et commenter le résultat
;

## [,1] [,2]
## 1 5.1977506 -0.76379862
## 2 6.4446846 1.43737282
## 3 -0.2465149 -1.67756680
## 4 -1.0004190 -0.52360464
## 5 -2.0660565 0.08006466
## 6 -4.1321131 0.16012932
## 7 -4.1973316 1.28740326

6
0.5 1.0 1.5

g3
g1
Axe 2

−0.5

g2
−1.5

−4 −2 0 2 4 6

Axe 1

L’axe 1 serait suffisant pour séparer les différents groupes. Le groupe 2 est situé entre le groupe 3 et le
groupe 1 sur l’axe 1 (horizontal).
La différence entre les groupes est très significative selon le test de Wilks.

## Df Wilks approx F num Df den Df Pr(>F)


## grp 2 0.019841 9.1489 4 6 0.009998 **
## Residuals 4
## ---
## Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

• calculer les corrélations entre les axes discriminants et les variables initiales puis représenter graphique-
ment le cercle des corrélations. Comment interpréter les deux premiers axes discriminants en fonction
des variables initiales ?

Exécuter l’analyse sous R à l’aide des fonctions lda() de la librairie MASS et


discrimin() de ade4.

Comparer les résultats avec ceux de la question précédente

• Avec lda() de MASS :

## Call:

7
## lda(grp ~ Y1 + Y2 + Y3, data = lda.data)
##
## Prior probabilities of groups:
## 1 2 3
## 0.2857143 0.2857143 0.4285714
##
## Group means:
## Y1 Y2 Y3
## 1 -2 1 3
## 2 -1 -1 0
## 3 2 0 -2
##
## Coefficients of linear discriminants:
## LD1 LD2
## Y1 -0.289994 0.9260508
## Y2 -0.333473 0.1745349
## Y3 -2.022578 0.6714513
##
## Proportion of trace:
## LD1 LD2
## 0.9683 0.0317

## [1] "prior" "counts" "means" "scaling" "lev" "svd" "N"


## [8] "call" "terms" "xlevels"

## LD1 LD2
## Y1 -0.289994 0.9260508
## Y2 -0.333473 0.1745349
## Y3 -2.022578 0.6714513

## [1] 7.230931 1.309061

## [1] 52.28636 1.71364

8
2

1
3
1

3
LD2

3
0

2
1
−1

2
−2

−6 −4 −2 0 2 4

LD1

Les deux méthodes ont le meme pouvoir de discrimination. Avec la fonction lda, on obtient le même
barycentre des classes qu’à la main.
Les coefficients des discriminants trouvés par la fonction n’ont pas le meme signe que ceux trouvés à la main.
Les graphiques sont donc “inversés”

• Avec discrimin de ade4 :

library(ade4)

## Discriminant analysis
## call: discrimin(dudi = dudi.pca(afd2[, 1:3], scan = F), fac = afd2$Y,
## scannf = F)
## class: discrimin
##
## $nf (axis saved) : 2
##
## eigen values: 0.9632 0.4614
##
## data.frame nrow ncol content
## 1 $fa 3 2 loadings / canonical weights
## 2 $li 7 2 canonical scores
## 3 $va 3 2 cos(variables, canonical scores)
## 4 $cp 3 2 cos(components, canonical scores)
## 5 $gc 3 2 class scores

9
## [1] 0.9631583 0.4614448

## DS1 DS2
## Y1 -0.1472677 1.7980383
## Y2 -0.1693477 0.3388803
## Y3 -1.0980442 1.3937170

## DS1 DS2
## 1 -1.31978778 -0.74150313
## 2 -1.63640323 1.39541552
## 3 0.06259389 -1.62859817
## 4 0.25402157 -0.50832048
## 5 0.52460311 0.07772755
## 6 1.04920623 0.15545510

On voit qu’avec cette fonction les barycentres ne sont pas les mêmes, /2 pour DS1 et ∗2 pour DS2 par
rapport à la fonction lda()
Y1 d = 0.5 d = 0.5

Y3

3
Y2
1

Canonical weights

Y2 Y1

Y3
2

Cos(variates,canonical variates)
Scores and classes
d = 0.5
Eigenvalues
RS3
3
x1 1
RS1

RS2
2

Cos(components,canonical variates)
Class scores

Exercice 2 : Entreprise
## y x1 x2 x3 x4
## 1 1 -0.45 -0.41 1.09 0.45
## 2 1 -0.56 -0.31 1.51 0.16
## 3 1 0.06 0.02 1.01 0.40

10
## 4 1 -0.07 -0.09 1.45 0.26
## 5 1 -0.10 -0.09 1.56 0.67
## 6 1 -0.14 -0.07 0.71 0.28

## y x1 x2 x3 x4
## 0:25 Min. :-0.56000 Min. :-0.410000 Min. :0.330 Min. :0.1300
## 1:21 1st Qu.:-0.07000 1st Qu.:-0.052500 1st Qu.:1.370 1st Qu.:0.2850
## Median : 0.12000 Median : 0.035000 Median :1.935 Median :0.4250
## Mean : 0.09457 Mean :-0.006957 Mean :2.033 Mean :0.4317
## 3rd Qu.: 0.21500 3rd Qu.: 0.070000 3rd Qu.:2.425 3rd Qu.:0.5475
## Max. : 0.58000 Max. : 0.140000 Max. :5.060 Max. :0.9500

Représenter graphiquement chaque ratio en fonction des valeurs de la variable faillite et commenter. Analyser
les liaisons entre ratios financiers pour détecter un problème de multicollinéarité éventuel ; vous déterminerez
leur matrice de corrélation et les graphiques xoy associés.La faillite est représenté en rouge
2.0
1.8
entreprise$y

1.6
1.4
1.2
1.0

−0.6 −0.4 −0.2 0.0 0.2 0.4 0.6

entreprise$x1

11
X1
3.0
2.5
2.0
Frequency

1.5
1.0
0.5
0.0

−0.6 −0.4 −0.2 0.0 0.2 0.4 0.6

Valeur x1

12
X2
3.0
2.5
2.0
Frequency

1.5
1.0
0.5
0.0

−0.4 −0.3 −0.2 −0.1 0.0 0.1

Valeur x2

13
X3
5
4
Frequency

3
2
1
0

1 2 3 4 5

Valeur x3

14
X4
3.0
2.5
2.0
Frequency

1.5
1.0
0.5
0.0

0.2 0.4 0.6 0.8

Valeur x4

Pour x1 : plus la valeur est faible, plus il y a de faillite. Cela confirme le fait qu’il soit un indicateur de la
bonne santé de l’entreprise, comme précisé dans l’énoncé.
Pour x2 : Comme x1. (x2 est un indicateur de la rentabilité globale de l’entreprise)
Pour x3 : Comme x1 et x2. (x3 exprime la capacité d’une entreprise à remboursé ces dettes à courts termes)
Pour x4 : On ne peut rien déduire sur cette variable, il n’y a pas de tendance nette visible a l’oeil nu

## corrplot 0.84 loaded

## x1 x2 x3 x4
## x1 1.00 0.85 0.57 -0.06
## x2 0.85 1.00 0.47 0.05
## x3 0.57 0.47 1.00 0.15
## x4 -0.06 0.05 0.15 1.00

15
x1

x2

x3

x4
1

0.8
x1
0.6

0.4

x2
0.2

−0.2
x3
−0.4

−0.6

x4
−0.8

−1

On a une trés forte corrélation de 0.85 entre x1 et x2 . Cela nous indique qu’il ne faut pas faire des modèles
qui comporte x1 et x2.
x3 à une corrélation de 0.57 avec x1 et de 0.47 avec x2.
x4 est la variable qui est la moins corrélée avec les autres, ce qui n’est pas si étonnant.

Réaliser les analyses de variance sur les quatre ratios pour obtenir une discrimination univariée : que concluez-
vous sur le pouvoir discriminant des ratios ? Construisez une représentation de la dispersion des classes
permettant d’évaluer graphiquement l’homogénéité des variances intra classes, avec la fonction clusplot de
la library(cluster).

## Df Sum Sq Mean Sq F value Pr(>F)


## y 1 1.083 1.0831 23.82 1.43e-05 ***
## Residuals 44 2.001 0.0455
## ---
## Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

Comme la valeur de p est inférieure a 0,05, on conclut qu’il existe des différences significatives entre les
groupes donc entre les entreprises qui ont fait faillite et celles qui n’ont pas fait faillite.
x1 est une bonne variable discriminante.

## Df Sum Sq Mean Sq F value Pr(>F)

16
## y 1 0.2143 0.21430 19.77 5.86e-05 ***
## Residuals 44 0.4771 0.01084
## ---
## Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

## Df Sum Sq Mean Sq F value Pr(>F)


## y 1 17.18 17.181 26.61 5.7e-06 ***
## Residuals 44 28.41 0.646
## ---
## Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1

Même conclusion pour x2 et x3.

## Df Sum Sq Mean Sq F value Pr(>F)


## y 1 0.0013 0.00134 0.039 0.845
## Residuals 44 1.5247 0.03465

Il n’y a pas de significativité. On en déduit que x4 est donc une mauvaise variable de discrimination comme
on l’avait prévu dès le début.
Par ordre de force discriminante : x3 > x1 > x2 > x4

## Warning in if (color) {: la condition a une longueur > 1 et seul le premier


## élément est utilisé

## Warning in if (color) c(2, 4, 6, 3) else 5: la condition a une longueur > 1 et


## seul le premier élément est utilisé

## Warning in if (shade) density[k] else 0: la condition a une longueur > 1 et seul


## le premier élément est utilisé

## Warning in if (shade) density[k] else 0: la condition a une longueur > 1 et seul


## le premier élément est utilisé

17
3

18 1
2

27 0
13 7
26 28 5 14
Component 2

33
1

19
36
3532 23 40 21
22 31 1
42 10
4439 17
0

30 8
24 1629 3
38
25 9
43 15 4 6 2
−1

12
46 37 34 11
45 20
41
−2

−2 0 2 4

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

Exécuter une analyse factorielle discriminante avec la fonction lda du package MASS et commenter les
résultats obtenus. Quelle information peut- on tirer du graphique d’AFD ? Comment pourrait- on mettre
en place une sélection de variables discriminantes?

## Call:
## lda(y ~ x1 + x2 + x3 + x4, data = entreprise)
##
## Prior probabilities of groups:
## 0 1
## 0.5434783 0.4565217
##
## Group means:
## x1 x2 x3 x4
## 0 0.23520000 0.05560000 2.593600 0.426800
## 1 -0.07285714 -0.08142857 1.366667 0.437619
##
## Coefficients of linear discriminants:
## LD1
## x1 -0.8228898
## x2 -4.1427422
## x3 -0.8757848
## x4 1.1353507

18
## LD1
## x1 -0.8228898
## x2 -4.1427422
## x3 -0.8757848
## x4 1.1353507

## [1] 6.44578

## [1] 41.54808
0.0

−4 −3 −2 −1 0 1 2 3

group 0
0.0

−4 −3 −2 −1 0 1 2 3

group 1

19
4

Commenter une possible sélection des variables ratios.


On a vu dans la question 1, qu’il y a un problème de multicolinéarité entre x1 et x2. On en enlèvera une des
2. On a vu dans la question 2 la force discriminante, on garde x3 et x1 qui sont les 2 meilleurs.

On s’intéresse dans cette partie aux seuls ratios x1, x3 pour réaliser une prévision de faillite. Déterminer et
traçer la droite frontière de discrimination sur le plan (x1,x3).

## Call:
## lda(y ~ x1 + x3, data = entreprise)
##
## Prior probabilities of groups:
## 0 1
## 0.5434783 0.4565217
##
## Group means:
## x1 x3
## 0 0.23520000 2.593600
## 1 -0.07285714 1.366667
##
## Coefficients of linear discriminants:
## LD1
## x1 -2.7174883
## x3 -0.8046296

20
6

Expliciter la fonction discriminante et déterminer analytiquement le classement des individus n°15, 16 et 35.
Fonction decriminante : y = -2.7174883 * x1 -0.8046296 * x3 (Faux)

## y x1 x2 x3 x4
## 15 1 0.15 0.05 1.88 0.27

## y x1 x2 x3 x4
## 16 1 0.37 0.11 1.99 0.38

## y x1 x2 x3 x4
## 35 0 0.14 0.07 2.61 0.52

## [1] -1.920327

## [1] -2.606684

## [1] -2.480532

Selon notre modèle tous ces individus sont dans le groupe 0, ce qui n’est vrai que pour l’individu 35.

## LD1
## 15 -0.02715023

21
## x1 x3
## x1 0.04530621 0.05444525
## x3 0.05444525 0.60553867

## x1 x3
## x1 24.745782 -2.224945
## x3 -2.224945 1.851472

## [,1]
## [1,] 0.8518986

## [,1]
## [1,] 1.207823

x15 est parmi le groupe 0 (entreprise qui n’ont pas fait faillite) ce qui contre nos données.

22
On voit que x16 est parmi le groupe 0 (entreprise qui n’ont pas fait faillite) ce qui est contre nos données.

On voit que x16 est parmi le groupe 0 (entreprise qui n’ont pas fait faillite) ce qui d’accord avec nos données.

23
7

Evaluation de la qualité de discrimination par la méthode de resubstitution (fonction predict). Construire le


tableau de classement des individus avec la fonction predict et identifier les individus mal classés. Construire
la matrice de confusion et déterminer le pourcentage de bien – mal classés.

## Call:
## lda(y ~ x1 + x2 + x3 + x4, data = entreprise)
##
## Prior probabilities of groups:
## 0 1
## 0.5434783 0.4565217
##
## Group means:
## x1 x2 x3 x4
## 0 0.23520000 0.05560000 2.593600 0.426800
## 1 -0.07285714 -0.08142857 1.366667 0.437619
##
## Coefficients of linear discriminants:
## LD1
## x1 -0.8228898
## x2 -4.1427422
## x3 -0.8757848
## x4 1.1353507

lda.test <- predict(lda.q7,entreprise)


entreprise$lda <- lda.test$class
table(entreprise$lda,entreprise$y)

##
## 0 1
## 0 24 3
## 1 1 18

Il y a 4 erreurs sur 46, soit 8,7% d’erreur. Cela s’explique par le fait que notre échantillon est petit, je pense
que l’on peut s’estimer heureux.

L’estimation précédente des taux de bonne discrimination est optimiste (biais de surestimation). On va donc
faire de la validation croisée pour évaluer la qualité de discrimination.

## Call:
## lda(y ~ ., data = train)
##
## Prior probabilities of groups:
## 0 1
## 0.6129032 0.3870968
##
## Group means:
## x1 x2 x3 x4 lda1
## 0 0.24315789 0.06000000 2.870526 0.4247368 0.0000000

24
## 1 -0.06083333 -0.07083333 1.468333 0.4600000 0.9166667
##
## Coefficients of linear discriminants:
## LD1
## x1 1.71419509
## x2 -2.15468030
## x3 -0.46661428
## x4 -0.06101441
## lda1 5.46681696

##
## 0 1
## 0 5 2
## 1 1 7

Il y a 3 erreurs de prédiction sur 15, cela fait 20% d’erreur.

Comparer les résultats obtenus sur ces données avec différentes méthodes LDA – QDA – Knn.

• LDA : Fait à la question 8, 20% d’erreur


• QDA :

##
## 0 1
## 0 5 2
## 1 1 7

Il y a 3 erreurs sur 15, soit 20% d’erreur.

• Knn :

## knn.entreprise
## 0 1
## 0 5 1
## 1 0 9

Il y a 1 erreur sur 15 , soit 6,7% d’erreur.

25

Vous aimerez peut-être aussi