######################################################################
# TP 2 : Analyse des Correspondances Multiples (ACM) avec le logiciel R
# (code R avec commentaires)
######################################################################
#===================================
# Jeu de donnees : chiens
#===================================
# Chargement du jeu de donnees
load("../data/chiens.rda")
chiens
## taille poids velocite intellig affect agress
## beauceron T++ P+ V++ I+ Af+ Ag+
## basset T- P- V- I- Af- Ag+
## ber_allem T++ P+ V++ I++ Af+ Ag+
## boxer T+ P+ V+ I+ Af+ Ag+
## bull-dog T- P- V- I+ Af+ Ag-
## bull-mass T++ P++ V- I++ Af- Ag+
## caniche T- P- V+ I++ Af+ Ag-
## chihuahua T- P- V- I- Af+ Ag-
## cocker T+ P- V- I+ Af+ Ag+
## colley T++ P+ V++ I+ Af+ Ag-
## dalmatien T+ P+ V+ I+ Af+ Ag-
## dobermann T++ P+ V++ I++ Af- Ag+
## dogue_all T++ P++ V++ I- Af- Ag+
## epagn_bre T+ P+ V+ I++ Af+ Ag-
## epagn_fra T++ P+ V+ I+ Af- Ag-
## fox_hound T++ P+ V++ I- Af- Ag+
## fox_terri T- P- V+ I+ Af+ Ag+
## grand_ble T++ P+ V+ I- Af- Ag+
## labrador T+ P+ V+ I+ Af+ Ag-
## levrier T++ P+ V++ I- Af- Ag-
## mastiff T++ P++ V- I- Af- Ag+
## pekinois T- P- V- I- Af+ Ag-
## pointer T++ P+ V++ I++ Af- Ag-
## saint_ber T++ P++ V- I+ Af- Ag+
## setter T++ P+ V++ I+ Af- Ag-
## teckel T- P- V- I+ Af+ Ag-
## terre_neu T++ P++ V- I+ Af- Ag-
n <- nrow(chiens)
p <- ncol(chiens)
# Chargement du package PCAmixdata
library(FactoMineR) # permet de charger le package "FactoMineR"
# afin de pouvoir l'utiliser par la suite
help(MCA)
summary(chiens)
## taille poids velocite intellig affect agress
## T- : 7 P- : 8 V- :10 I- : 8 Af-:13 Ag-:14
## T+ : 5 P+ :14 V+ : 8 I+ :13 Af+:14 Ag+:13
## T++:15 P++: 5 V++: 9 I++: 6
# Mise en oeuvre de l'ACM
res <-MCA(chiens) # tous les calculs de l'ACM sont stockes dans l'objet "res"
# NB : par défaut les graphiques des plans factoriels 1-2
# sont affichés a l'écran :
# - projection des individus sur le plan 1-2
# - projection des modalités du plan 1-2
# - représentation des variables pour le plan 1-2
res <- MCA(chiens, graph=FALSE) # idem sans les graphiques
res # permet de voir la liste de l'ensemble des sorties numeriques disponibles
## **Results of the Multiple Correspondence Analysis (MCA)**
## The analysis was performed on 27 individuals, described by 6 variables
## *The results are available in the following objects:
##
## name description
## 1 "$eig" "eigenvalues"
## 2 "$var" "results for the variables"
## 3 "$var$coord" "coord. of the categories"
## 4 "$var$cos2" "cos2 for the categories"
## 5 "$var$contrib" "contributions of the categories"
## 6 "$var$v.test" "v-test for the categories"
## 7 "$ind" "results for the individuals"
## 8 "$ind$coord" "coord. for the individuals"
## 9 "$ind$cos2" "cos2 for the individuals"
## 10 "$ind$contrib" "contributions of the individuals"
## 11 "$call" "intermediate results"
## 12 "$call$marge.col" "weights of columns"
## 13 "$call$marge.li" "weights of rows"
# COMMENTAIRES : une ACM est une ACP centrée "réduite" du tableau disjonctif complet
# qui est faite avec le même poids (1/n) pour tous les individus de l'étude (ici les chiens).
# L'espace des individus est R^16 car les p=6 variables qualitatives mesurées sur chaque individu
# possèdent un total de 16 modalités.
# L'espace des variables est R^27 car chaque variable a été mesurée sur n=27 individus.
#
# NB : il s'agit d'un tout petit jeu de données (n=27, p=6).
# Cependant, on va voir que l'ACM permet de faire ressortir rapidement et visuellement les grandes
# informations contenues dans ce jeu de données.
# Choix du nombre d'axes à retenir
round(res$eig,digit=2) # permet d'afficher les valeurs propres et les pourcentages
## eigenvalue percentage of variance cumulative percentage of variance
## dim 1 0.48 28.90 28.90
## dim 2 0.38 23.08 51.98
## dim 3 0.21 12.66 64.64
## dim 4 0.16 9.45 74.09
## dim 5 0.15 9.01 83.10
## dim 6 0.12 7.40 90.50
## dim 7 0.08 4.89 95.38
## dim 8 0.05 2.74 98.12
## dim 9 0.02 1.41 99.54
## dim 10 0.01 0.46 100.00
# de variances expliquees par chaque axe
sum(res$eig[,1]) # la somme des valeurs propres en ACM vaut (K-p)/p
## [1] 1.666667
length(res$eig[,1]) # le nombre de valeurs propres non nulles est K-p
## [1] 10
1/p # l'inertie moyenne par axe vaut donc 1/p
## [1] 0.1666667
# Graphique de l'ebouli des valeurs propres
barplot(res$eig[,1], main="Eigenvalues", names.arg=1:nrow(res$eig))
abline(h=1/p,col=2,lwd=2)
# COMMENTAIRES : comme une ACM et une ACP particulière, on peut utiliser le critère de Kaiser qui
# nous dit que seuls les axes factoriels associés à une valeur propre (eigenvalue) plus grande que 1/p
# sont des axes intéressants à retenir. En effet, en ACM, les variables synthétiques (composantes
# principales) construites ne seront intéressantes que si elles ont une dispersion plus importante
# que la dispersion moyenne par axe. Or par construction, la variance d'une composante principale
# est égale à la valeur propre de l'axe correspondant. D'où le critère de Kaiser qui nous préconise de ne retenir que
# les axes ayant une valeur propre supérieure à 1/p.
#
# NB 1 : si on a une valeur propre inférieure à 1/p, mais proche de 1, je recommande de regarder tout de même quelle est
# l'information apportée par l'axe correspondant.
#
# NB 2 : si on une valeur propre plus grande que 1/p (et proche de 1/p) qui correspond à un axe factoriel
# pour lequel on n'arrive pas à faire des commentaires intéressants, je recommende de ne pas retenir
# cet axe factoriel pour la suite des interprétations.
#
# NB 3 : il y a au maximum K-p valeurs propres (si n-1 > K-p) car on peut fabriquer au maximum K-p
# composantes principale (= nouvelles variables synthétiques, deux à deux non corrélées, combinaisons
# linéaires des indicatrices des modalités initiales) à partir de K indicatrices initiales. En effet,
# pour chacune des p variables, les indicatrices des modalités de cette variable somment à 1.
#
# Ici on obtient les sorties numériques suivantes :
# Eigenvalue Proportion Cumulative
#dim 1 0.48 28.90 28.90
#dim 2 0.38 23.08 51.98
#dim 3 0.21 12.66 64.64
#dim 4 0.16 9.45 74.09
#dim 5 0.15 9.01 83.10
#dim 6 0.12 7.40 90.50
#dim 7 0.08 4.89 95.38
#dim 8 0.05 2.74 98.12
#dim 9 0.02 1.41 99.54
#dim 10 0.01 0.46 100.00
#
# On a donc les trois premières valeurs propres (les valeurs propres sont toujours rangées par ordre décroissant)
# supérieures à 1/p. Selon le critère de Kaiser, il convient donc de retenir 3 axes factoriels et l'ébouli des valeurs
# propres montre bien une "cassure" après 3 axes.
# Le premier axe factoriel permet d'expliquer 28,9% de l'inertie (ou de la variance), le second axe factoriel permet
# d'expliquer 23,08% d'inertie supplémentaire et le troisième 12,66% d'inertie en plus.
# Ainsi, en considérant le plan 1-2, on récupère 51,98% de l'information (c'est à dire en quoi
# les individus diffèrent = inertie avec un regard d'algèbre linéaire = variance avec un regard de statisticien).
# Si on conserve 3 composantes principales, on récupère 64,64% de l'information.
#
# NB 4 : En ACM les pourcentages d'inertie expliquée par les axes sont par construction souvent plus petits
# qu'en ACP du fait du nombre important d'axes (K-p). Il ne faut donc pas trop regarder ce critère dans le chois
# des axes à retenir.
# Graphiques des individus, des modalités et des variables sur le plan factoriel 1-2
?plot.MCA # permet d'afficher la fenetre d'aide de la commande "plot.MCA"
plot(res, axes=c(1,2), choix="var") # on retrouve ici la représentation des variables (plan 1-2)
# en fonction de leurs rapports de corrélations avec les composantes principales
# (contributions à l'inertie des axes)
# Commentaires de la représentation des variables du plan 1-2 :
# Chaque variable qualitative est représentée en fonction de son rapport de corrélation avec
# la première composante principale (Dim1) et son rapport de corrélation avec la seconde composante principale (Dim2).
# Un rapport de corrélation proche de 1 (resp. proche de 0) indique que les individus sont bien (resp. mal)
# discriminés sur la dimension correspondante. Ce rapport de corrélation est également égal à la contribution
# de la variable à l'inertie de l'axe. Un variable qui contribue beaucoup "explique" l'axe.
#
# 1) Les 3 variables "poids", "vélocité" et "taille" vont permettre d'expliquer la position des chiens sur le plan 1-2.
# 2) Sur l'axe 1 (horizontal), la variable taille a un rapport de corrélation avec la première composante proche de 1.
# Cela signigie que les chiens sont bien discriminés sur cette axe en fonction de leurs tailles. On n'a pas en revanche
# l'information sur la position des chiens (droite ou à gauche) en fonction de leur taille. Il faut regarder le graphique
# des modalités pour cela ou encore habiller les chiens avec différentes couleurs en fonction de leur taille.
# 3) L'axe 2 (vertical) est essentiellement caractérisé par la variable "poids" (et dans une moindre mesure "velocité"
# et "taille")
# 4) On peut penser qu'il existe un lien entre les variables "poids", "vélocité" et "taille" sachant qu'elles sont liées
# de manière assez similaires aux composantes principales. Un chien petit et léger serait-il rapide...?
#
# Il convient maintenant de projeter les modalités sur le plan factoriel 1-2 associé :
# sous-espace de dimension 2 de R^3 (espace des individus) qui apportent le plus d'information (maximisation de l'inertie
# du nuage projeté). Ceci nous permettra alors de caractériser les individus en fonction des variables.
plot(res,axes=c(1,2),choix="ind", invisible = "ind")
# Commentaires du plan factoriel 1-2 des modalités :
# sous-espace de dimension 2 de R^27 (espace des modalités) qui apportent le plus d'information (maximisation de l'inertie
# du nuage projeté). Ceci nous permettra alors de caractériser les axes et de visualiser certaines liaisons entre modalités.
# 1) Deux modalités qui sont bien projetées et qui sont proches sont possédées par les mêmes individus.
# On en déduit qu'il existe une liaison entre les modalités V-, P- et T- (en haut à droite du plan factoriel) indiquant
# que les chiens de petites tailles ont tendance à être légers et véloces.
# 2) Sur l'axe 1, on voit une opposition entre les modalités V++, P++ à gauche et les modalités T-, P- à droite. Cela
# permettra de caractériser les chiens à gauche et à droite du plan factoriel 1-2.
# 3) Sur l'axe 2, on voit une opposition entre les modalités V-, T-, P- à en haut et les modalitésV+, T+ et P+ à bas. Cela
# permettra de caractériser les chiens en haut et en bas du plan factoriel 1-2.
# Il convient maintenant de projeter les individus (chiens) sur le plan factoriel 1-2 associé :
# sous-espace de dimension 2 de R^16 (espace des individus) qui apportent le plus d'information (maximisation de l'inertie
# du nuage projeté). Ceci nous permettra alors de caractériser les individus en fonction des modalités.
plot(res,axes=c(1,2),choix="ind", invisible = "var") # on retrouve ici le graphique des individus (plan 1-2)
# On a vu que 4 variables sont importantes pour interpréter le plan factoriel 1-2.
# On peut habiller les chiens avec des couleurs en foncton des modalités de ces variables.
plot(res,axes=c(1,2),choix="ind", invisible = "var", habillage=1)
plot(res,axes=c(1,2),choix="ind", invisible = "var", habillage=2)
plot(res,axes=c(1,2),choix="ind", invisible = "var", habillage=3)
plot(res,axes=c(1,2),choix="ind", invisible = "var", habillage=5)
plot(res,axes=c(3,4),choix="ind", invisible = "var", habillage=4)
# Commentaires du plan factoriel 1-2 des individus :
# 1) Sur l'axe 1 (horizontal), on voit par exemple une opposition très claire entre les chiens de grande
# taille à gauche et les chiens de taille petite ou moyenne à droite.
# 2) Sur l'axe 2 (vertical), on voit par exemple une opposition très claire entre les chiens de poids moyen en
# bas et les chiens de léger ou fort en haut.
# On retrouve cette interprétation avec la représentation simultanée des chiens et des modalités
# (possible grace à la relation quasi-barycentrique)
plot(res,axes=c(1,2),choix="ind")
# Commentaires de la représentation simultanée des individus et des modalités sur le plan factoriel 1-2:
# On distinge 3 groupes de chiens :
# - en haut à droite, les petits chiens rapides et affectueux (pekinois, teckel....)
# - en bas à droite, les chiens de taille, poids et vélocité moyenne et plutôt affectueux
# - en haut à gauche, les gros chiens aggressifs et pas très affectueux.
# Au delà des sorties graphiques, des sorties numériques sont disponibles et peuvent être utiles pour quantifier certaines
# observations graphiques.
# Sorties numeriques pour les individus et pour les variables
res$ind # permet d'afficher l'ensemble des sorties numériques associées aux individus :
## $coord
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## beauceron -0.3172001 -0.41770130 -0.10146771 -0.21143628 -0.1185095442
## basset 0.2541098 1.10122699 -0.19070097 0.29263727 -0.5240085192
## ber_allem -0.4863955 -0.46444958 -0.49813388 0.57742525 0.2759020523
## boxer 0.4473649 -0.88177794 0.69201580 0.26000184 -0.4555898365
## bull-dog 1.0133522 0.54987949 -0.16342320 -0.34991927 0.3307864847
## bull-mass -0.7525745 0.54691183 0.49757307 0.65515266 0.7219463555
## caniche 0.9123015 -0.01618767 -0.57656972 0.62813340 0.4340165309
## chihuahua 0.8407994 0.84385216 -0.46994714 -0.08634287 -0.1773464546
## cocker 0.7332953 0.07907317 0.66223042 0.18974319 -0.1046272364
## colley -0.1173252 -0.52610765 -0.33489373 -0.65775454 0.1921301958
## dalmatien 0.6472398 -0.99018429 0.45858978 -0.18631642 -0.1449500965
## dobermann -0.8732102 -0.31548110 -0.45231373 0.51008713 0.2398797276
## dogue_all -1.0470168 0.50695768 0.16503476 0.06288820 -0.3165215706
## epagn_bre 0.4780443 -1.03693257 0.06192362 0.60254511 0.2494614999
## epagn_fra -0.1449101 -0.51578295 0.11712661 -0.46892219 0.0008497112
## fox_hound -0.8765675 0.02523985 -0.36217150 -0.01519800 -0.6626648082
## fox_terri 0.8816221 0.13896696 0.05352247 0.28559012 -0.2710348055
## grand_ble -0.5173377 -0.11340393 0.04402869 0.24097247 -0.8179229680
## labrador 0.6472398 -0.99018429 0.45858978 -0.18631642 -0.1449500965
## levrier -0.6766927 -0.08316651 -0.59559752 -0.46151625 -0.3520250682
## mastiff -0.7559318 0.88763278 0.58771530 0.12986753 -0.1805981803
## pekinois 0.8407994 0.84385216 -0.46994714 -0.08634287 -0.1773464546
## pointer -0.6733354 -0.42388745 -0.68573975 0.06376888 0.5505194676
## saint_ber -0.5833790 0.59366011 0.89423924 -0.13370887 0.3275347590
## setter -0.5041399 -0.37713917 -0.28907358 -0.72509266 0.1561078711
## teckel 1.0133522 0.54987949 -0.16342320 -0.34991927 0.3307864847
## terre_neu -0.3835042 0.48525376 0.66081322 -0.58002713 0.6381744990
##
## $contrib
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## beauceron 0.7737679 1.679591265 0.18076074 1.050910561 3.464716e-01
## basset 0.4965777 11.674160199 0.63849009 2.013103024 6.773884e+00
## ber_allem 1.8193797 2.076582082 4.35652825 7.837873991 1.877893e+00
## boxer 1.5391043 7.484976084 8.40776174 1.589130486 5.120461e+00
## bull-dog 7.8970523 2.910764017 0.46889522 2.878342428 2.699333e+00
## bull-mass 4.3555519 2.879430481 4.34672445 10.090013598 1.285792e+01
## caniche 6.4006040 0.002522556 5.83649387 9.274927018 4.647010e+00
## chihuahua 5.4366197 6.854956241 3.87745169 0.175250667 7.759005e-01
## cocker 4.1352521 0.060190825 7.69957277 0.846328783 2.700540e-01
## colley 0.1058588 2.664533548 1.96907570 10.170315797 9.106516e-01
## dalmatien 3.2216221 9.438522677 3.69230120 0.816035401 5.183201e-01
## dobermann 5.8638360 0.958117236 3.59193035 6.116394210 1.419542e+00
## dogue_all 8.4304649 2.474089271 0.47818860 0.092970491 2.471540e+00
## epagn_bre 1.7574399 10.350777943 0.06732262 8.534652985 1.535211e+00
## epagn_fra 0.1614884 2.560978462 0.24085714 5.169021122 1.781163e-05
## fox_hound 5.9090133 0.006132611 2.30290971 0.005429745 1.083300e+01
## fox_terri 5.9773564 0.185906708 0.05029451 1.917313317 1.812221e+00
## grand_ble 2.0582234 0.123802149 0.03403454 1.365028075 1.650387e+01
## labrador 3.2216221 9.438522677 3.69230120 0.816035401 5.183201e-01
## levrier 3.5214957 0.066583845 6.22807925 5.007036206 3.057090e+00
## mastiff 4.3944998 7.584703763 6.06432357 0.396467792 8.046143e-01
## pekinois 5.4366197 6.854956241 3.87745169 0.175250667 7.759005e-01
## pointer 3.4866395 1.729709149 8.25594928 0.095592596 7.476639e+00
## saint_ber 2.6172536 3.392717496 14.03963501 0.420268830 2.646524e+00
## setter 1.9545479 1.369226351 1.46711842 12.359296374 6.011885e-01
## teckel 7.8970523 2.910764017 0.46889522 2.878342428 2.699333e+00
## terre_neu 1.1310567 2.266782110 7.66665317 7.908668005 1.004708e+01
##
## $cos2
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## beauceron 0.08863547 0.1536995944 0.009069781 0.0393822110 1.237222e-02
## basset 0.03380431 0.6348671357 0.019038597 0.0448320320 1.437493e-01
## ber_allem 0.15372250 0.1401636585 0.161231704 0.2166455755 4.946160e-02
## boxer 0.11133075 0.4325235284 0.266393303 0.0376048711 1.154621e-01
## bull-dog 0.62448464 0.1838806326 0.016241584 0.0744623393 6.654209e-02
## bull-mass 0.27069077 0.1429582059 0.118328181 0.2051443062 2.491061e-01
## caniche 0.38519392 0.0001212751 0.153853124 0.1826023765 8.717967e-02
## chihuahua 0.37993129 0.3826952203 0.118691149 0.0040065748 1.690306e-02
## cocker 0.27915682 0.0032460020 0.227671518 0.0186905820 5.683030e-03
## colley 0.01239617 0.2492609870 0.100999475 0.3896124090 3.324270e-02
## dalmatien 0.23628517 0.5530165596 0.118619154 0.0195798039 1.185067e-02
## dobermann 0.48761169 0.0636477694 0.130832617 0.1663892363 3.679795e-02
## dogue_all 0.56079391 0.1314738467 0.013933070 0.0020231792 5.125103e-02
## epagn_bre 0.10498339 0.4939526916 0.001761558 0.1667874837 2.858850e-02
## epagn_fra 0.01753323 0.2221256292 0.011454493 0.1835972941 6.028475e-07
## fox_hound 0.55831304 0.0004628928 0.095309358 0.0001678339 3.190765e-01
## fox_terri 0.43627101 0.0108396312 0.001607917 0.0457802078 4.123268e-02
## grand_ble 0.18602321 0.0089387139 0.001347381 0.0403602327 4.649900e-01
## labrador 0.23628517 0.5530165596 0.118619154 0.0195798039 1.185067e-02
## levrier 0.33881559 0.0051177295 0.262473933 0.1575993487 9.169119e-02
## mastiff 0.29999507 0.4136333336 0.181335511 0.0088542146 1.712283e-02
## pekinois 0.37993129 0.3826952203 0.118691149 0.0040065748 1.690306e-02
## pointer 0.29459212 0.1167506763 0.305546227 0.0026422615 1.969263e-01
## saint_ber 0.20156282 0.2087298540 0.473604996 0.0105883741 6.353655e-02
## setter 0.22389437 0.1252980645 0.073613569 0.4631568432 2.146795e-02
## teckel 0.62448464 0.1838806326 0.016241584 0.0744623393 6.654209e-02
## terre_neu 0.08840069 0.1415315741 0.262465947 0.2022144235 2.447904e-01
# coordonnées, contributions, cosinus carrés.
# NB : les coordonnées peuvent être utiles dans le cas où deux individus sont projetés au même endroit sur
# le plan factoriel et qu'il est difficile de lire leurs noms graphiquement...
round(res$ind$cos2,digits=3) # uniquement les cosinus carres (arrondis à 3 chiffres après la virgule)
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## beauceron 0.089 0.154 0.009 0.039 0.012
## basset 0.034 0.635 0.019 0.045 0.144
## ber_allem 0.154 0.140 0.161 0.217 0.049
## boxer 0.111 0.433 0.266 0.038 0.115
## bull-dog 0.624 0.184 0.016 0.074 0.067
## bull-mass 0.271 0.143 0.118 0.205 0.249
## caniche 0.385 0.000 0.154 0.183 0.087
## chihuahua 0.380 0.383 0.119 0.004 0.017
## cocker 0.279 0.003 0.228 0.019 0.006
## colley 0.012 0.249 0.101 0.390 0.033
## dalmatien 0.236 0.553 0.119 0.020 0.012
## dobermann 0.488 0.064 0.131 0.166 0.037
## dogue_all 0.561 0.131 0.014 0.002 0.051
## epagn_bre 0.105 0.494 0.002 0.167 0.029
## epagn_fra 0.018 0.222 0.011 0.184 0.000
## fox_hound 0.558 0.000 0.095 0.000 0.319
## fox_terri 0.436 0.011 0.002 0.046 0.041
## grand_ble 0.186 0.009 0.001 0.040 0.465
## labrador 0.236 0.553 0.119 0.020 0.012
## levrier 0.339 0.005 0.262 0.158 0.092
## mastiff 0.300 0.414 0.181 0.009 0.017
## pekinois 0.380 0.383 0.119 0.004 0.017
## pointer 0.295 0.117 0.306 0.003 0.197
## saint_ber 0.202 0.209 0.474 0.011 0.064
## setter 0.224 0.125 0.074 0.463 0.021
## teckel 0.624 0.184 0.016 0.074 0.067
## terre_neu 0.088 0.142 0.262 0.202 0.245
apply(res$ind$cos2[,1:2], 1, sum)
## beauceron basset ber_allem boxer bull-dog bull-mass caniche chihuahua
## 0.2423351 0.6686714 0.2938862 0.5438543 0.8083653 0.4136490 0.3853152 0.7626265
## cocker colley dalmatien dobermann dogue_all epagn_bre epagn_fra fox_hound
## 0.2824028 0.2616572 0.7893017 0.5512595 0.6922678 0.5989361 0.2396589 0.5587759
## fox_terri grand_ble labrador levrier mastiff pekinois pointer saint_ber
## 0.4471106 0.1949619 0.7893017 0.3439333 0.7136284 0.7626265 0.4113428 0.4102927
## setter teckel terre_neu
## 0.3491924 0.8083653 0.2299323
sort(apply(res$ind$cos2[,1:2], 1,sum), decreasing = TRUE)
## bull-dog teckel dalmatien labrador chihuahua pekinois mastiff dogue_all
## 0.8083653 0.8083653 0.7893017 0.7893017 0.7626265 0.7626265 0.7136284 0.6922678
## basset epagn_bre fox_hound dobermann boxer fox_terri bull-mass pointer
## 0.6686714 0.5989361 0.5587759 0.5512595 0.5438543 0.4471106 0.4136490 0.4113428
## saint_ber caniche setter levrier ber_allem cocker colley beauceron
## 0.4102927 0.3853152 0.3491924 0.3439333 0.2938862 0.2824028 0.2616572 0.2423351
## epagn_fra terre_neu grand_ble
## 0.2396589 0.2299323 0.1949619
round(sort(apply(res$ind$cos2[,1:2], 1,sum), decreasing = TRUE) , digit=3) # cos2 avec le plan et trié par ordre décroissant
## bull-dog teckel dalmatien labrador chihuahua pekinois mastiff dogue_all
## 0.808 0.808 0.789 0.789 0.763 0.763 0.714 0.692
## basset epagn_bre fox_hound dobermann boxer fox_terri bull-mass pointer
## 0.669 0.599 0.559 0.551 0.544 0.447 0.414 0.411
## saint_ber caniche setter levrier ber_allem cocker colley beauceron
## 0.410 0.385 0.349 0.344 0.294 0.282 0.262 0.242
## epagn_fra terre_neu grand_ble
## 0.240 0.230 0.195
plot(res,axes=c(1,2), choix="ind", invisible="var", select = "cos2 9")
# Commentaires : les cosinus carrés nous donnent la qualité de représentation (en %) des individus
# sur les axes factoriels.
# Par exemple : 62.4 % de l'information de "teckel" est recupérée sur l'axe 1, 18,4% sur l'axe 2.
# Vu que les axes sont orhtogonaux, on a 62,4+18,4=80.8% de l'information de "teckel" qui est fournie par le plan 1-2.
# "teckel" est bien représenté sur le plan factoriel 1-2.
# On observe ici que les deux chiens les mieux représentés sur ce plan sont "bull-dog" et
# "teckel". On peut choisir de représenter uniquement les 8 chiens les mieux projetés.
#
# NB : Ne jamais faire des commentaires sur des individus qui seraient mal représentés sur le plan factoriel que l'on
# regarder ! car on ne ferait que des fausses déductions...
round(res$ind$contrib,digits=1) # uniquement les contributions en % (arrondies à un chiffre après la virgule)
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## beauceron 0.8 1.7 0.2 1.1 0.3
## basset 0.5 11.7 0.6 2.0 6.8
## ber_allem 1.8 2.1 4.4 7.8 1.9
## boxer 1.5 7.5 8.4 1.6 5.1
## bull-dog 7.9 2.9 0.5 2.9 2.7
## bull-mass 4.4 2.9 4.3 10.1 12.9
## caniche 6.4 0.0 5.8 9.3 4.6
## chihuahua 5.4 6.9 3.9 0.2 0.8
## cocker 4.1 0.1 7.7 0.8 0.3
## colley 0.1 2.7 2.0 10.2 0.9
## dalmatien 3.2 9.4 3.7 0.8 0.5
## dobermann 5.9 1.0 3.6 6.1 1.4
## dogue_all 8.4 2.5 0.5 0.1 2.5
## epagn_bre 1.8 10.4 0.1 8.5 1.5
## epagn_fra 0.2 2.6 0.2 5.2 0.0
## fox_hound 5.9 0.0 2.3 0.0 10.8
## fox_terri 6.0 0.2 0.1 1.9 1.8
## grand_ble 2.1 0.1 0.0 1.4 16.5
## labrador 3.2 9.4 3.7 0.8 0.5
## levrier 3.5 0.1 6.2 5.0 3.1
## mastiff 4.4 7.6 6.1 0.4 0.8
## pekinois 5.4 6.9 3.9 0.2 0.8
## pointer 3.5 1.7 8.3 0.1 7.5
## saint_ber 2.6 3.4 14.0 0.4 2.6
## setter 2.0 1.4 1.5 12.4 0.6
## teckel 7.9 2.9 0.5 2.9 2.7
## terre_neu 1.1 2.3 7.7 7.9 10.0
# Commentaires : On voit que 2 individus contribuent formement à l'axe 1 "bull-dog", "dog_all"
# (avec des contributions de l'ordre de 8%). "colley" n'a pas du tout contribué à la fabrication de ce premier
# axe factoriel.
# Pour l'axe 2, c'est essentiellement "basset", "dalmatien", "epagn_bre" et "labrador" qui ont fortement contribué à sa fabrication.
#
# NB : je rappelle que l'on ne souhaite pas que seul un individu (ou peu d'invidus lorsque n est grand)
# contribue à la fabrication du (ou des) premier(s) axe(s)
# factoriels car cela rendrait alors les résultats de l'étude instables dans le sens où la présence ou pas de cet
# individu dans les données va entrainer une modification dans la construction des premiers axes factoriels.
# Ici, ce n'est pas le cas.
res$var # permet d'afficher l'ensemble des sorties numériques associées aux variables :
## $coord
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## T- 1.1849557 0.92389650 -0.61599962 0.12014924 -0.01996350
## T+ 0.8510880 -1.23171972 1.01605178 0.34245635 -0.31004022
## T++ -0.8366753 -0.02057846 -0.05121744 -0.17022176 0.11266304
## P- 1.1689180 0.82434462 -0.35877044 0.16488382 -0.05122143
## P+ -0.3054053 -0.81887572 -0.23127208 -0.11836395 -0.19020146
## P++ -1.0151341 0.97390062 1.22159452 0.06760494 0.61451838
## V- 0.3199406 1.04490006 0.40172878 -0.08033130 0.30590834
## V+ 0.6036867 -0.88781355 0.35631249 0.37024339 -0.37103561
## V++ -0.8920999 -0.37183247 -0.76308752 -0.23984823 -0.01008873
## I- -0.3490450 0.80855486 -0.35151126 0.02423769 -1.03505999
## I+ 0.3694426 -0.28550314 0.49320252 -0.60349180 0.14625633
## I++ -0.3350656 -0.45948302 -0.59992378 1.27524863 1.06319128
## Af- -0.8351500 0.28746968 0.06547357 -0.08315555 -0.04342350
## Af+ 0.7754964 -0.26693613 -0.06079688 0.07721587 0.04032182
## Ag- 0.4007145 -0.19425299 -0.30972341 -0.51178817 0.34771663
## Ag+ -0.4315386 0.20919553 0.33354829 0.55115649 -0.37446406
##
## $contrib
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## T- 12.5978150 9.58661729 7.7724161 0.39590918 0.011470466
## T+ 4.6420727 12.17067028 15.1042375 2.29739639 1.976131613
## T++ 13.4585463 0.01019149 0.1151394 1.70285200 0.782823704
## P- 14.0104164 8.72224556 3.0131477 0.85212159 0.086298489
## P+ 1.6736860 15.06207234 2.1911472 0.76846202 2.082406452
## P++ 6.6040417 7.60886705 21.8333953 0.08953284 7.763356494
## V- 1.3119931 17.51742290 4.7224026 0.25282794 3.847622109
## V+ 3.7368537 10.11705778 2.9720027 4.29655213 4.528255671
## V++ 9.1804174 1.99644722 15.3351608 2.02848142 0.003766389
## I- 1.2492400 8.39130827 2.8924483 0.01841315 35.239586898
## I+ 2.2742083 1.70014447 9.2531808 18.54990013 1.143358563
## I++ 0.8633836 2.03240794 6.3188861 38.22931061 27.885847123
## Af- 11.6215827 1.72364624 0.1630694 0.35219351 0.100786614
## Af+ 10.7914697 1.60052866 0.1514216 0.32703683 0.093587570
## Ag- 2.8813167 0.84758676 3.9298252 14.36693087 6.959671259
## Ag+ 3.1029565 0.91278575 4.2321194 15.47207940 7.495030587
##
## $cos2
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## T- 0.49144201 0.2987546600 0.132809435 0.005052544 1.394894e-04
## T+ 0.16462520 0.3448030588 0.234627550 0.026653716 2.184658e-02
## T++ 0.87503205 0.0005293413 0.003279033 0.036219310 1.586620e-02
## P- 0.57531341 0.2861238116 0.054196308 0.011447021 1.104688e-03
## P+ 0.10044717 0.7221387844 0.057601141 0.015087719 3.895941e-02
## P++ 0.23420393 0.2155641859 0.339157541 0.001038734 8.582564e-02
## V- 0.06021292 0.6422447857 0.094932948 0.003795952 5.504701e-02
## V+ 0.15344741 0.3318791146 0.053456249 0.057717964 5.796523e-02
## V++ 0.39792110 0.0691296921 0.291151283 0.028763587 5.089122e-05
## I- 0.05129787 0.2752677726 0.052025334 0.000247354 4.510944e-01
## I+ 0.12673870 0.0756897524 0.225873819 0.338187895 1.986299e-02
## I++ 0.03207684 0.0603213262 0.102831012 0.464645451 3.229645e-01
## Af- 0.64765585 0.0767360421 0.003980589 0.006420928 1.750915e-03
## Af+ 0.64765585 0.0767360421 0.003980589 0.006420928 1.750915e-03
## Ag- 0.17292377 0.0406368567 0.103307716 0.282075371 1.302074e-01
## Ag+ 0.17292377 0.0406368567 0.103307716 0.282075371 1.302074e-01
##
## $v.test
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## T- 3.5745618 2.7870452 -1.8582372 0.36244468 -0.06022230
## T+ 2.0688777 -2.9941409 2.4698818 0.83246419 -0.75366505
## T++ -4.7697834 -0.1173153 -0.2919843 -0.97041335 0.64227815
## P- 3.8675766 2.7274932 -1.1870569 0.54554794 -0.16947537
## P+ -1.6160527 -4.3330830 -1.2237768 -0.62632315 -1.00645152
## P++ -2.4676512 2.3674182 2.9695279 0.16433829 1.49380947
## V- 1.2512138 4.0863632 1.5710686 -0.31415719 1.19633699
## V+ 1.9974065 -2.9374916 1.1789243 1.22501717 -1.22763837
## V++ -3.2165119 -1.3406610 -2.7513512 -0.86478510 -0.03637543
## I- -1.1548786 2.6752499 -1.1630386 0.08019479 -3.42468309
## I+ 1.8152703 -1.4028306 2.4233694 -2.96527996 0.71863604
## I++ -0.9132348 -1.2523396 -1.6351166 3.47574190 2.89777098
## Af- -4.1035414 1.4124932 0.3217069 -0.40858798 -0.21336304
## Af+ 4.1035414 -1.4124932 -0.3217069 0.40858798 0.21336304
## Ag- 2.1203816 -1.0278902 -1.6389023 -2.70812844 1.83994344
## Ag+ -2.1203816 1.0278902 1.6389023 2.70812844 -1.83994344
##
## $eta2
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## taille 0.8870733 0.50248565 0.291012710 0.041557939 0.024955885
## poids 0.6440465 0.72468773 0.342222614 0.016166144 0.089467614
## velocite 0.4111741 0.68400737 0.291490812 0.062182113 0.075483501
## intellig 0.1267635 0.27987008 0.233709854 0.536921657 0.578930725
## affect 0.6476559 0.07673604 0.003980589 0.006420928 0.001750915
## agress 0.1729238 0.04063686 0.103307716 0.282075371 0.130207379
# coordonnées, contributions, cosinus carrés des modalités, rapports de corrélations des variables
# NB : les coordonnées peuvent être utiles dans le cas où deux modalités sont projetées au même endroit.
round(res$var$cos2,digits=3) # uniquement les cosinus carres (arrondis à 3 chiffres après la virgule)
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## T- 0.491 0.299 0.133 0.005 0.000
## T+ 0.165 0.345 0.235 0.027 0.022
## T++ 0.875 0.001 0.003 0.036 0.016
## P- 0.575 0.286 0.054 0.011 0.001
## P+ 0.100 0.722 0.058 0.015 0.039
## P++ 0.234 0.216 0.339 0.001 0.086
## V- 0.060 0.642 0.095 0.004 0.055
## V+ 0.153 0.332 0.053 0.058 0.058
## V++ 0.398 0.069 0.291 0.029 0.000
## I- 0.051 0.275 0.052 0.000 0.451
## I+ 0.127 0.076 0.226 0.338 0.020
## I++ 0.032 0.060 0.103 0.465 0.323
## Af- 0.648 0.077 0.004 0.006 0.002
## Af+ 0.648 0.077 0.004 0.006 0.002
## Ag- 0.173 0.041 0.103 0.282 0.130
## Ag+ 0.173 0.041 0.103 0.282 0.130
round(sort(apply(res$var$cos2[,1:2], 1,sum), decreasing = TRUE) , digit=3) # cos2 avec le plan et trié par ordre décroissant
## T++ P- P+ T- Af+ Af- V- T+ V+ V++ P++ I- Ag-
## 0.876 0.861 0.823 0.790 0.724 0.724 0.702 0.509 0.485 0.467 0.450 0.327 0.214
## Ag+ I+ I++
## 0.214 0.202 0.092
plot(res,axes=c(1,2),choix="ind", invisible="ind", selectMod = "cos2 7")
# Comme pour les individus, les cosinus carrés nous donnent la qualité (en %) de réprésentation des modalités sur les
# axes factoriels.
# Par exemple, la modalité "V-" est mal représentée sur l'axe 1 (6% seulement de
# l'information de cette modalité est portée par cet axe), mais elle est bien représentée sur l'axe 2 (64,2% de
# l'information de cette modalité est fournie par l'axe vertical).
# Globalement sur le plan principal (1-2), cette modalité "V-" a une qualité de représentation
# égale à 7% + 64,2% = 70,2%, elle est donc plutôt bien représentée sur le plan 1-2.
#
# NB : on peut sommer les qualités de représentation de l'axe 1 et de l'axe 2 pour avoir la qualité de représentation
# sur le plan 1-2, car les axes sont construits orthogonaux entre eux, et il n'y a donc pas de redondance d'information
# entre les axes factoriels.
#
# Sept modalités (T++, P-, P+, T-, Af+, Af-, V-) sont bien représentée sur le plan factoriel 1-2 (qualité supérieure à 70%) et
# et seule la modalité I++ est vraiment mal représentée avec 9,2% de qualité de représentation..
round(res$var$contrib,digits=1) # uniquement les contributions en % (arrondies à un chiffre après la virgule)
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## T- 12.6 9.6 7.8 0.4 0.0
## T+ 4.6 12.2 15.1 2.3 2.0
## T++ 13.5 0.0 0.1 1.7 0.8
## P- 14.0 8.7 3.0 0.9 0.1
## P+ 1.7 15.1 2.2 0.8 2.1
## P++ 6.6 7.6 21.8 0.1 7.8
## V- 1.3 17.5 4.7 0.3 3.8
## V+ 3.7 10.1 3.0 4.3 4.5
## V++ 9.2 2.0 15.3 2.0 0.0
## I- 1.2 8.4 2.9 0.0 35.2
## I+ 2.3 1.7 9.3 18.5 1.1
## I++ 0.9 2.0 6.3 38.2 27.9
## Af- 11.6 1.7 0.2 0.4 0.1
## Af+ 10.8 1.6 0.2 0.3 0.1
## Ag- 2.9 0.8 3.9 14.4 7.0
## Ag+ 3.1 0.9 4.2 15.5 7.5
# Les contributions (en %) des modalités à la fabrication des axes factoriels nous indiquent naturellement que seules les
# modalités T-, T++, P-, Af- et Af+ ont beaucoup contribué à la fabrication de l'axe 1
# (avec un pourcentage de contribution de l'ordre de 85,4%). Ces modalités vont permettrent de caractériser cet axe.
# Les modalités T+, P+, V-, V+ ) sont les plus contributrice à la fabrication de l'axe 2
# (avec un pourcentage de contribution supérieur à 10%).
#######################################################################################
#######################################################################################
#######################################################################################
#=========================================================================
# Jeu de données "the" (code et commentaires rapides des sorties)
#=========================================================================
library(FactoMineR)
the <- read.table("../data/the.csv" , header=TRUE, sep=";")
for (j in 1:18)
the[,j] <- as.factor(the[,j])
summary(the[,1:18])
## ptt.dej gouter soiree apres.dejeuner
## Pas.ptt dej:156 gouter :169 Pas.soiree:197 apres dej : 44
## ptt dej :144 Pas.gouter:131 soiree :103 Pas.apres dej:256
##
##
##
##
## apres.diner tt.moment maison travail
## apres diner : 21 Pas.tt moment:197 maison :291 Pas.travail:213
## Pas.apres diner:279 tt moment :103 Pas.maison: 9 travail : 87
##
##
##
##
## salon.de.t amis resto bar
## Pas.salon de t:242 amis :196 Pas.resto:221 bar : 63
## salon de t : 58 Pas.amis:104 resto : 79 Pas.bar:237
##
##
##
##
## variete comment sucre forme
## noir : 74 autre : 9 Pas.sucre:155 sachet :170
## parfume:193 citron: 33 sucre :145 sachet+vrac: 94
## vert : 33 lait : 63 vrac : 36
## pur :195
##
##
## lieuachat type
## GMS :192 t_bas_de_gamme : 7
## GMS+mag.spe. : 78 t_haut_de_gamme: 53
## magasin specialise: 30 t_inconnu : 12
## t_marque_connue: 95
## t_MDD : 21
## t_variable :112
head(the)
## ptt.dej gouter soiree apres.dejeuner apres.diner
## 1 ptt dej Pas.gouter Pas.soiree Pas.apres dej Pas.apres diner
## 2 ptt dej Pas.gouter Pas.soiree Pas.apres dej Pas.apres diner
## 3 Pas.ptt dej gouter soiree Pas.apres dej apres diner
## 4 Pas.ptt dej Pas.gouter Pas.soiree Pas.apres dej apres diner
## 5 ptt dej Pas.gouter soiree Pas.apres dej Pas.apres diner
## 6 Pas.ptt dej Pas.gouter Pas.soiree Pas.apres dej apres diner
## tt.moment maison travail salon.de.t amis resto bar
## 1 Pas.tt moment maison Pas.travail Pas.salon de t Pas.amis Pas.resto Pas.bar
## 2 Pas.tt moment maison Pas.travail Pas.salon de t Pas.amis Pas.resto Pas.bar
## 3 Pas.tt moment maison travail Pas.salon de t amis resto Pas.bar
## 4 Pas.tt moment maison Pas.travail Pas.salon de t Pas.amis Pas.resto Pas.bar
## 5 tt moment maison Pas.travail Pas.salon de t Pas.amis Pas.resto Pas.bar
## 6 Pas.tt moment maison Pas.travail Pas.salon de t Pas.amis Pas.resto Pas.bar
## variete comment sucre forme lieuachat type age sexe CSP
## 1 noir pur sucre sachet GMS t_inconnu 39 H cadre moyen
## 2 noir lait Pas.sucre sachet GMS t_variable 45 F cadre moyen
## 3 parfume pur Pas.sucre sachet GMS t_variable 47 F autre actif
## 4 parfume pur sucre sachet GMS t_variable 23 H etudiant
## 5 parfume pur Pas.sucre sachet GMS t_variable 48 H employe
## 6 parfume pur Pas.sucre sachet GMS t_MDD 21 H etudiant
## Sport age_Q frequence evasion.exotisme spiritualite
## 1 sportif 35-44 1/jour Pas.evasion-exotisme Pas.spiritualite
## 2 sportif 45-59 1/jour evasion-exotisme Pas.spiritualite
## 3 sportif 45-59 + de 2/jour Pas.evasion-exotisme Pas.spiritualite
## 4 Pas.sportif 15-24 1/jour evasion-exotisme spiritualite
## 5 sportif 45-59 + de 2/jour evasion-exotisme spiritualite
## 6 sportif 15-24 1/jour Pas.evasion-exotisme Pas.spiritualite
## bon.pr.la.sante diuretique convivialite absorption.fer
## 1 bon pr la sante Pas.diuretique Pas.convivialite Pas.absorption fer
## 2 bon pr la sante diuretique Pas.convivialite Pas.absorption fer
## 3 bon pr la sante diuretique convivialite Pas.absorption fer
## 4 bon pr la sante Pas.diuretique Pas.convivialite Pas.absorption fer
## 5 Pas.bon pr la sante diuretique convivialite Pas.absorption fer
## 6 bon pr la sante Pas.diuretique Pas.convivialite Pas.absorption fer
## feminin raffine amaigrissant excitant relaxant
## 1 Pas.feminin Pas.raffine Pas.amaigrissant Pas.excitant Pas.relaxant
## 2 Pas.feminin Pas.raffine Pas.amaigrissant excitant Pas.relaxant
## 3 Pas.feminin Pas.raffine Pas.amaigrissant Pas.excitant relaxant
## 4 Pas.feminin raffine Pas.amaigrissant Pas.excitant relaxant
## 5 Pas.feminin Pas.raffine Pas.amaigrissant Pas.excitant relaxant
## 6 Pas.feminin Pas.raffine Pas.amaigrissant Pas.excitant relaxant
## ss.effet.sante
## 1 Pas.ss effet sante
## 2 Pas.ss effet sante
## 3 Pas.ss effet sante
## 4 Pas.ss effet sante
## 5 Pas.ss effet sante
## 6 Pas.ss effet sante
# l'ACM est réalisée avec:
# les 18 questions premières variables de comportement en variables actives
# la variable quantitative age en illustrative
# les autres variable qualitative (questions signalétiques ou sur l'image du produit) en illustratives
res <- MCA(the, quanti.sup = 19, quali.sup = 20:36, graph=FALSE)
res <- MCA(the[,1:18], graph=FALSE)
# Etude du nombre d'axes à retenir
round(res$eig, digit=3)
## eigenvalue percentage of variance cumulative percentage of variance
## dim 1 0.148 9.885 9.885
## dim 2 0.122 8.103 17.988
## dim 3 0.090 6.001 23.989
## dim 4 0.078 5.204 29.192
## dim 5 0.074 4.917 34.109
## dim 6 0.071 4.759 38.868
## dim 7 0.068 4.522 43.390
## dim 8 0.065 4.355 47.745
## dim 9 0.062 4.123 51.867
## dim 10 0.059 3.902 55.769
## dim 11 0.057 3.805 59.574
## dim 12 0.054 3.628 63.202
## dim 13 0.052 3.462 66.664
## dim 14 0.049 3.250 69.914
## dim 15 0.048 3.221 73.135
## dim 16 0.047 3.127 76.262
## dim 17 0.046 3.037 79.298
## dim 18 0.040 2.683 81.982
## dim 19 0.038 2.541 84.523
## dim 20 0.037 2.438 86.961
## dim 21 0.036 2.378 89.339
## dim 22 0.035 2.323 91.662
## dim 23 0.031 2.055 93.717
## dim 24 0.029 1.915 95.633
## dim 25 0.027 1.821 97.454
## dim 26 0.021 1.407 98.861
## dim 27 0.017 1.139 100.000
barplot(res$eig[,1], main="Eigenvalues", names.arg=1:nrow(res$eig))
# Commentaires rapides : si l'on se base l'ébouli des valeurs propres, il semblerait
#raisonnable de regarder 3 dimensions. On note cependant que seulement 23,9% de
# l'inertie est expliquée par ces 3 dimensions. En ACM, les pourcentages d'inertie
# expliquée par les axes sont souvent petits.
# Du point de vue des variables, on regarde quelles les informations qui ressortent
# du plan 1-2 ?
plot(res, choix="var", graph.type = "classic")
plot(res, choix="var", invisible = c("quali.sup", "quanti.sup"))
plot(res, choix="var", invisible = c("quali.sup", "quanti.sup"),
graph.type = "classic")
round(res$var$eta2, digit=3)
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## ptt.dej 0.025 0.026 0.215 0.083 0.013
## gouter 0.192 0.007 0.054 0.059 0.013
## soiree 0.053 0.002 0.106 0.019 0.000
## apres.dejeuner 0.075 0.026 0.016 0.049 0.173
## apres.diner 0.033 0.048 0.022 0.295 0.046
## tt.moment 0.045 0.001 0.101 0.049 0.009
## maison 0.005 0.000 0.134 0.003 0.009
## travail 0.112 0.043 0.005 0.065 0.008
## salon.de.t 0.372 0.022 0.008 0.003 0.014
## amis 0.243 0.015 0.103 0.001 0.011
## resto 0.226 0.059 0.002 0.006 0.143
## bar 0.147 0.007 0.043 0.001 0.028
## variete 0.090 0.160 0.332 0.032 0.162
## comment 0.103 0.043 0.196 0.303 0.241
## sucre 0.015 0.031 0.210 0.007 0.034
## forme 0.299 0.513 0.016 0.185 0.097
## lieuachat 0.418 0.626 0.042 0.106 0.007
## type 0.216 0.561 0.015 0.142 0.318
# Trois variables sont globalement liées aux deux dimensions : lieu d'achat, type et forme.
# En effet, ces trois variables ont des valeurs de rapports de corrélation plus élevées
# (contribuent plus).
# On regarde maintenant le graphique des modalités sur le plan 1-2 en choisissant
# de n'afficher que les 10 modalités qui contribuent le plus.
plot(res, choix="ind")
plot(res, choix="ind", invisible=c("ind","quali.sup"), graph.type = "classic")
round(res$var$contrib[,1:2] , digit=3) # affiche les contributions des modalités
## Dim 1 Dim 2
## Pas.ptt dej 0.457 0.560
## ptt dej 0.495 0.607
## gouter 3.142 0.135
## Pas.gouter 4.053 0.174
## Pas.soiree 0.683 0.028
## soiree 1.307 0.053
## apres dej 2.385 1.018
## Pas.apres dej 0.410 0.175
## apres diner 1.146 2.025
## Pas.apres diner 0.086 0.152
## Pas.tt moment 0.576 0.014
## tt moment 1.102 0.027
## maison 0.006 0.000
## Pas.maison 0.193 0.005
## Pas.travail 1.212 0.575
## travail 2.967 1.407
## Pas.salon de t 2.694 0.191
## salon de t 11.240 0.796
## amis 3.159 0.242
## Pas.amis 5.953 0.456
## Pas.resto 2.234 0.708
## resto 6.251 1.981
## bar 4.358 0.248
## Pas.bar 1.158 0.066
## noir 0.108 1.657
## parfume 0.261 2.390
## vert 2.985 3.282
## autre 2.324 0.000
## citron 0.941 0.472
## lait 0.004 1.353
## pur 0.584 0.140
## Pas.sucre 0.277 0.680
## sucre 0.296 0.727
## sachet 4.317 4.494
## sachet+vrac 6.787 0.025
## vrac 0.093 18.923
## GMS 4.383 4.592
## GMS+mag.spe. 11.263 0.110
## magasin specialise 0.013 23.888
## t_bas_de_gamme 0.408 0.076
## t_haut_de_gamme 0.336 20.511
## t_inconnu 0.157 1.039
## t_marque_connue 3.002 2.455
## t_MDD 0.739 0.732
## t_variable 3.454 0.808
round(sort(apply(res$var$contrib[,1:2], 1,sum),
decreasing = TRUE) , digit=3) # modalité par ordre décroissant de contribution au plan
## magasin specialise t_haut_de_gamme vrac salon de t
## 23.902 20.847 19.016 12.036
## GMS+mag.spe. GMS sachet resto
## 11.372 8.975 8.811 8.232
## sachet+vrac Pas.amis vert t_marque_connue
## 6.812 6.409 6.266 5.458
## bar travail t_variable Pas.gouter
## 4.605 4.374 4.263 4.228
## apres dej amis gouter apres diner
## 3.402 3.401 3.277 3.171
## Pas.resto Pas.salon de t parfume autre
## 2.943 2.885 2.651 2.325
## Pas.travail noir t_MDD citron
## 1.786 1.765 1.471 1.413
## soiree lait Pas.bar t_inconnu
## 1.360 1.357 1.224 1.196
## tt moment ptt dej sucre Pas.ptt dej
## 1.129 1.102 1.023 1.017
## Pas.sucre pur Pas.soiree Pas.tt moment
## 0.957 0.724 0.711 0.590
## Pas.apres dej t_bas_de_gamme Pas.apres diner Pas.maison
## 0.585 0.484 0.239 0.198
## maison
## 0.006
plot(res, choix="ind", invisible=c("ind","quali.sup"), selectMod = "contrib 15")
plot(res, choix="ind", invisible=c("ind","quali.sup"), selectMod = "cos2 15",
graph.type="classic")
# On retrouve principalement les modalités des variables globalement liées aux axes.
# On observe dans ce graphique les modalités qui s'associent.
# On regarde maintenant le graphiques des individus sur les plans 1-2
plot(res, choix="ind", invisible=c("var", "quali.sup"), habillage= 17) # individus colorés selon le lieu d'achat
plot(res, choix="ind", invisible=c("var", "quali.sup"), label = "none")
# On retrouve que les individus sont bien discriminés par les modalités de la variable lieu d'achat.
# Enfin on peut récuperer la matrice des coordonnées factorielles pour faire une classification par exemple
head(res$ind$coord) # uniquement 5 composantes principales
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5
## 1 -0.54101455 -0.14860555 -0.305906004 0.15876105 0.57785384
## 2 -0.36124010 -0.07798738 -0.632765190 0.06073348 0.03260245
## 3 0.07293693 -0.16924589 0.246028962 -0.45077746 0.17693914
## 4 -0.57183186 0.01762074 0.203297634 -0.63925837 0.12019206
## 5 -0.25322802 -0.11780164 0.006393492 0.01678726 -0.12655040
## 6 -0.68442482 0.03204058 -0.018115492 -0.45844399 0.15371015
res <- MCA(the, ncp=27, quanti.sup = 19, quali.sup = 20:36, graph=FALSE)
head(res$ind$coord) # toutes (27) les composantes principales
## Dim 1 Dim 2 Dim 3 Dim 4 Dim 5 Dim 6
## 1 -0.54101455 -0.14860555 -0.305906004 0.15876105 0.57785384 0.07733873
## 2 -0.36124010 -0.07798738 -0.632765190 0.06073348 0.03260245 0.00160563
## 3 0.07293693 -0.16924589 0.246028962 -0.45077746 0.17693914 0.22281083
## 4 -0.57183186 0.01762074 0.203297634 -0.63925837 0.12019206 -0.12559503
## 5 -0.25322802 -0.11780164 0.006393492 0.01678726 -0.12655040 0.06221474
## 6 -0.68442482 0.03204058 -0.018115492 -0.45844399 0.15371015 -0.21750956
## Dim 7 Dim 8 Dim 9 Dim 10 Dim 11 Dim 12
## 1 0.31557695 -0.07697798 0.173105013 -0.01241095 -0.3767219 0.48647935
## 2 0.21070940 0.02838910 0.076187307 0.26291088 -0.1465449 0.01896905
## 3 -0.19676185 0.18821853 0.233542083 -0.30636042 -0.2999194 0.19480636
## 4 0.21613673 0.22497091 0.002686475 0.06676405 -0.2113344 0.22206691
## 5 -0.01312595 -0.30022882 -0.033916454 0.39212977 -0.1050746 0.14466831
## 6 -0.17247853 0.45378240 -0.010024705 -0.03212454 0.1610227 0.62264992
## Dim 13 Dim 14 Dim 15 Dim 16 Dim 17 Dim 18
## 1 0.06082607 -0.26137757 -0.09597679 0.20432984 -0.07405680 0.33079078
## 2 0.09420543 -0.02136289 0.07131184 0.25214458 -0.20754203 -0.03520720
## 3 -0.20975292 0.45444679 0.22820247 -0.45215907 -0.09292604 0.08649407
## 4 0.09007325 0.25315824 0.02541344 -0.26004008 -0.16376606 -0.17802360
## 5 0.14272626 -0.02103863 0.09716002 -0.05680411 -0.29394505 0.28194771
## 6 -0.01022813 0.25374700 0.33416764 -0.33476739 0.01210859 -0.23215867
## Dim 19 Dim 20 Dim 21 Dim 22 Dim 23 Dim 24
## 1 0.463168755 -0.22581617 -0.02519934 0.194609555 0.30354001 -0.334499273
## 2 -0.264736950 0.18821805 -0.13456054 0.180844168 -0.09826942 0.021621255
## 3 -0.357709420 0.25011390 0.09866294 0.005536224 -0.22910076 0.022940799
## 4 -0.115819383 0.21980991 0.03777782 0.105915301 -0.09936206 -0.266002482
## 5 -0.005795833 0.36492967 -0.14125473 -0.175047930 -0.13289421 0.083404716
## 6 -0.273938362 0.06994365 -0.17525400 -0.264279962 0.09348759 -0.001541189
## Dim 25 Dim 26 Dim 27
## 1 0.06764422 0.06106436 0.06965033
## 2 -0.01171576 -0.07401422 -0.01727775
## 3 -0.20878634 0.22685989 -0.08415140
## 4 0.01320069 0.16145597 -0.09660558
## 5 0.11358795 0.12713404 0.05057909
## 6 0.26052696 0.17017986 -0.02436056
X <- res$ind$coord
# On a ainsi recodé toutes les variables qualitatives (actives) en 27 variables quantitatives.
d <- dist(X)
n <- 300
tree <- hclust(d^2/(2*n), method="ward.D")
plot(tree, main="CAH de Ward", xlab ="", sub="", hang=-1,labels = FALSE)
rect.hclust(tree, k=4)
part <- cutree(tree, k=4)
# Interprétation via l'ACM
part <- as.factor(part)
levels(part) <- paste("cluster",1:4,sep="")
res <- MCA(data.frame(the, part), quanti.sup = 19, quali.sup = 20:37, graph=FALSE)
plot(res, habillage=37, invisible=c("var", "quali.sup"), title="") #
plot(res,choix="var", invisible=c("quanti.sup", "quali.sup"),
title="", graph.type = "classic")
# Interprétation avec les variables quantitatives
des <- catdes(data.frame(the, part), num.var=37)
print(des$category,digits=2) #
## $cluster1
## Cla/Mod Mod/Cla Global p.value v.test
## lieuachat=GMS 65 89.2 64.0 2.4e-18 8.7
## forme=sachet 63 77.0 56.7 2.7e-11 6.7
## salon.de.t=Pas.salon de t 55 95.7 80.7 1.3e-10 6.4
## type=t_MDD 100 15.1 7.0 4.0e-08 5.5
## bar=Pas.bar 54 92.1 79.0 1.1e-07 5.3
## gouter=Pas.gouter 63 59.0 43.7 6.8e-07 5.0
## type=t_marque_connue 67 46.0 31.7 6.9e-07 5.0
## frequence=1/jour 64 43.9 31.7 2.6e-05 4.2
## amis=Pas.amis 62 46.8 34.7 4.7e-05 4.1
## type=t_inconnu 100 8.6 4.0 7.5e-05 4.0
## resto=Pas.resto 53 84.2 73.7 1.1e-04 3.9
## apres.dejeuner=Pas.apres dej 51 93.5 85.3 1.5e-04 3.8
## apres.diner=apres diner 86 12.9 7.0 1.6e-04 3.8
## variete=vert 76 18.0 11.0 3.5e-04 3.6
## maison=Pas.maison 100 6.5 3.0 8.5e-04 3.3
## type=t_bas_de_gamme 100 5.0 2.3 4.2e-03 2.9
## soiree=Pas.soiree 52 74.1 65.7 4.3e-03 2.9
## convivialite=Pas.convivialite 62 25.9 19.3 8.1e-03 2.6
## tt.moment=Pas.tt moment 52 73.4 65.7 9.1e-03 2.6
## amaigrissant=amaigrissant 62 20.1 15.0 2.2e-02 2.3
## comment=lait 59 26.6 21.0 2.8e-02 2.2
## CSP=ouvrier 75 6.5 4.0 4.9e-02 2.0
## variete=parfume 42 58.3 64.3 4.3e-02 -2.0
## lieuachat=magasin specialise 27 5.8 10.0 2.3e-02 -2.3
## amaigrissant=Pas.amaigrissant 44 79.9 85.0 2.2e-02 -2.3
## tt.moment=tt moment 36 26.6 34.3 9.1e-03 -2.6
## convivialite=convivialite 43 74.1 80.7 8.1e-03 -2.6
## comment=citron 24 5.8 11.0 6.7e-03 -2.7
## soiree=soiree 35 25.9 34.3 4.3e-03 -2.9
## comment=autre 0 0.0 3.0 3.3e-03 -2.9
## maison=maison 45 93.5 97.0 8.5e-04 -3.3
## apres.diner=Pas.apres diner 43 87.1 93.0 1.6e-04 -3.8
## apres.dejeuner=apres dej 20 6.5 14.7 1.5e-04 -3.8
## resto=resto 28 15.8 26.3 1.1e-04 -3.9
## forme=vrac 17 4.3 12.0 9.7e-05 -3.9
## amis=amis 38 53.2 65.3 4.7e-05 -4.1
## type=t_haut_de_gamme 21 7.9 17.7 2.8e-05 -4.2
## forme=sachet+vrac 28 18.7 31.3 1.0e-05 -4.4
## frequence=+ de 2/jour 30 27.3 42.3 9.7e-07 -4.9
## gouter=gouter 34 41.0 56.3 6.8e-07 -5.0
## bar=bar 17 7.9 21.0 1.1e-07 -5.3
## salon.de.t=salon de t 10 4.3 19.3 1.3e-10 -6.4
## type=t_variable 21 17.3 37.3 1.2e-11 -6.8
## lieuachat=GMS+mag.spe. 9 5.0 26.0 4.8e-16 -8.1
##
## $cluster2
## Cla/Mod Mod/Cla Global p.value v.test
## lieuachat=GMS+mag.spe. 83.3 49.62 26.0 8.5e-17 8.3
## type=t_variable 72.3 61.83 37.3 8.2e-15 7.8
## forme=sachet+vrac 67.0 48.09 31.3 4.1e-08 5.5
## bar=bar 69.8 33.59 21.0 2.9e-06 4.7
## gouter=gouter 55.0 70.99 56.3 6.3e-06 4.5
## frequence=+ de 2/jour 58.3 56.49 42.3 1.4e-05 4.4
## apres.dejeuner=apres dej 72.7 24.43 14.7 3.1e-05 4.2
## salon.de.t=salon de t 67.2 29.77 19.3 6.6e-05 4.0
## apres.diner=Pas.apres diner 46.6 99.24 93.0 6.7e-05 4.0
## variete=parfume 51.8 76.34 64.3 1.3e-04 3.8
## resto=resto 62.0 37.40 26.3 1.5e-04 3.8
## amis=amis 51.5 77.10 65.3 1.5e-04 3.8
## maison=maison 45.0 100.00 97.0 5.2e-03 2.8
## soiree=soiree 54.4 42.75 34.3 7.4e-03 2.7
## sexe=F 50.0 67.94 59.3 7.7e-03 2.7
## amaigrissant=Pas.amaigrissant 46.7 90.84 85.0 1.2e-02 2.5
## convivialite=convivialite 46.7 86.26 80.7 3.1e-02 2.2
## CSP=etudiant 54.3 29.01 23.3 4.3e-02 2.0
## convivialite=Pas.convivialite 31.0 13.74 19.3 3.1e-02 -2.2
## type=t_bas_de_gamme 0.0 0.00 2.3 1.7e-02 -2.4
## amaigrissant=amaigrissant 26.7 9.16 15.0 1.2e-02 -2.5
## sexe=H 34.4 32.06 40.7 7.7e-03 -2.7
## soiree=Pas.soiree 38.1 57.25 65.7 7.4e-03 -2.7
## comment=autre 0.0 0.00 3.0 5.2e-03 -2.8
## maison=Pas.maison 0.0 0.00 3.0 5.2e-03 -2.8
## age_Q=45-59 27.9 12.98 20.3 5.1e-03 -2.8
## type=t_inconnu 0.0 0.00 4.0 8.6e-04 -3.3
## frequence=1/jour 28.4 20.61 31.7 2.7e-04 -3.6
## type=t_marque_connue 28.4 20.61 31.7 2.7e-04 -3.6
## amis=Pas.amis 28.8 22.90 34.7 1.5e-04 -3.8
## resto=Pas.resto 37.1 62.60 73.7 1.5e-04 -3.8
## apres.diner=apres diner 4.8 0.76 7.0 6.7e-05 -4.0
## salon.de.t=Pas.salon de t 38.0 70.23 80.7 6.6e-05 -4.0
## apres.dejeuner=Pas.apres dej 38.7 75.57 85.3 3.1e-05 -4.2
## forme=sachet 32.9 42.75 56.7 2.0e-05 -4.3
## variete=vert 9.1 2.29 11.0 7.3e-06 -4.5
## gouter=Pas.gouter 29.0 29.01 43.7 6.3e-06 -4.5
## lieuachat=GMS 33.9 49.62 64.0 5.6e-06 -4.5
## type=t_MDD 0.0 0.00 7.0 3.3e-06 -4.7
## bar=Pas.bar 36.7 66.41 79.0 2.9e-06 -4.7
## lieuachat=magasin specialise 3.3 0.76 10.0 2.9e-07 -5.1
##
## $cluster3
## Cla/Mod Mod/Cla Global p.value v.test
## comment=autre 100.0 100 3 2.1e-17 8.5
## resto=resto 8.9 78 26 1.7e-03 3.1
## salon.de.t=salon de t 10.3 67 19 2.3e-03 3.0
## variete=noir 8.1 67 25 9.4e-03 2.6
## lieuachat=GMS+mag.spe. 7.7 67 26 1.3e-02 2.5
## age_Q=60 et + 10.5 44 13 2.0e-02 2.3
## bon.pr.la.sante=bon pr la sante 4.3 100 70 3.8e-02 2.1
## bon.pr.la.sante=Pas.bon pr la sante 0.0 0 30 3.8e-02 -2.1
## salon.de.t=Pas.salon de t 1.2 33 81 2.3e-03 -3.0
## resto=Pas.resto 0.9 22 74 1.7e-03 -3.1
## comment=pur 0.0 0 65 6.3e-05 -4.0
##
## $cluster4
## Cla/Mod Mod/Cla Global p.value v.test
## lieuachat=magasin specialise 70.0 100.0 10 1.4e-25 10.5
## forme=vrac 50.0 85.7 12 2.8e-16 8.2
## type=t_haut_de_gamme 32.1 81.0 18 5.2e-11 6.6
## raffine=raffine 9.3 95.2 72 7.6e-03 2.7
## resto=Pas.resto 9.0 95.2 74 1.3e-02 2.5
## CSP=cadre moyen 17.5 33.3 13 1.5e-02 2.4
## comment=citron 18.2 28.6 11 2.2e-02 2.3
## sexe=H 10.7 61.9 41 4.7e-02 2.0
## sexe=F 4.5 38.1 59 4.7e-02 -2.0
## variete=parfume 4.7 42.9 64 4.1e-02 -2.0
## type=t_marque_connue 2.1 9.5 32 1.9e-02 -2.4
## resto=resto 1.3 4.8 26 1.3e-02 -2.5
## CSP=employe 0.0 0.0 20 8.4e-03 -2.6
## raffine=Pas.raffine 1.2 4.8 28 7.6e-03 -2.7
## type=t_variable 1.8 9.5 37 4.3e-03 -2.9
## forme=sachet+vrac 1.1 4.8 31 3.4e-03 -2.9
## lieuachat=GMS+mag.spe. 0.0 0.0 26 1.4e-03 -3.2
## age_Q=15-24 0.0 0.0 31 3.3e-04 -3.6
## forme=sachet 1.2 9.5 57 4.9e-06 -4.6
## lieuachat=GMS 0.0 0.0 64 1.2e-10 -6.4