This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
library(FactoMineR); library(factoextra)
## Warning: package 'FactoMineR' was built under R version 4.6.1
## Warning: package 'factoextra' was built under R version 4.6.1
## Loading required package: ggplot2
## Warning: package 'ggplot2' was built under R version 4.6.1
## Welcome to factoextra!
## Want to learn more? See two factoextra-related books at https://www.datanovia.com/library/principal-component-methods
data(decathlon)
res.pca <- PCA(decathlon[, 1:10], graph = FALSE)
fviz_eig(res.pca, addlabels = TRUE)
## Warning: This FactoMineR PCA result contains only 5 eigenvalues and does not
## include the complete spectrum. Refit the PCA with a larger `ncp` before drawing
## a complete scree plot.
fviz_pca_var(res.pca, col.var = "contrib")
res.pca$var$contrib
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
## 100m 18.34376957 2.016090 2.42049891 0.13532858 13.336184
## Long.jump 16.82246707 6.868559 2.36319121 0.98030118 0.196456
## Shot.put 11.84353954 20.606785 0.03890276 3.43711486 1.804174
## High.jump 9.99788710 7.063694 4.79362526 1.73967752 45.053306
## 400m 14.11622887 18.666374 1.23027094 0.08124195 1.122971
## 110m.hurdle 17.02011495 3.013382 0.61083225 8.00327927 3.943110
## Discus 9.32848615 21.162245 0.13131711 6.38020830 1.604724
## Pole.vault 0.07745541 1.872547 34.06090024 28.78266727 15.899147
## Javeline 2.34696326 5.784369 10.80714169 48.00480246 13.596270
## 1500m 0.10308808 12.945954 43.54331962 2.45537861 3.443657
res.pca$var$cos2
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5
## 100m 0.600190812 0.03502213 0.0340059930 0.0014302206 0.091322660
## Long.jump 0.550415232 0.11931587 0.0332008675 0.0103603165 0.001345279
## Shot.put 0.387509426 0.35796686 0.0005465513 0.0363251605 0.012354505
## High.jump 0.327121422 0.12270561 0.0673464410 0.0183857880 0.308513117
## 400m 0.461869674 0.32425938 0.0172842817 0.0008586058 0.007689811
## 110m.hurdle 0.556882084 0.05234639 0.0085816841 0.0845826853 0.027001375
## Discus 0.305219255 0.36761593 0.0018448960 0.0674292539 0.010988725
## Pole.vault 0.002534268 0.03252860 0.4785272696 0.3041897208 0.108873151
## Javeline 0.076790421 0.10048206 0.1518313365 0.5073389244 0.093103658
## 1500m 0.003372945 0.22488818 0.6117473613 0.0259496775 0.023581254
fviz_pca_ind(res.pca, repel = TRUE)
Extrait de la table cos2 (qualité de représentation par variable, colonnes Dim1 à Dim5) : on voit par exemple que 400m et 110m.hurdle ont un cos² élevé sur Dim1 (0,46 et 0,56), ce qui signifie que ces épreuves sont bien représentées et bien corrélées avec le premier axe. À l’inverse, Discus, Pole.vault, Javeline ont des cos² plus faibles et plus dispersés sur plusieurs axes — elles sont donc moins bien captées par le seul premier plan.
Interprétation du plan des individus (Dim1 × Dim2)
Axe 1 (32,7 %) sépare clairement deux groupes :
À droite (Dim1 positif) : Sebrle, Clay, Karpov, Macey, Zsivoczky — des athlètes globalement performants, regroupés du côté où se projettent les épreuves de vitesse/explosivité (400m, 110m haies, notamment, d’après le cos² relevé). À gauche (Dim1 négatif) : Casarsa, Parkhomenko, Bourguignon, Martineau, Lorenzo — profils moins performants sur ces mêmes épreuves, ou performants sur des disciplines opposées (probablement les lancers, à confirmer avec le cercle des corrélations).
Axe 2 (17,4 %) oppose des profils atypiques isolés en haut et en bas du nuage :
Casarsa est très excentré en haut à gauche (Dim2 élevé), signe d’un profil atypique — probablement un athlète fort sur certaines épreuves spécifiques (souvent le 1500m ou le disque dans ce jeu de données classique) mais faible ailleurs. Drews est très bas (Dim2 très négatif) — profil inverse, également atypique. Sebrle, à l’extrême droite, se distingue par une performance globalement élevée et homogène sur l’axe 1.
Les individus proches du centre (Uldal, BARRAS, Qi, Schoenbeck) ont des profils de performance proches de la moyenne de l’échantillon — peu différenciés sur ces deux premiers axes.
Ce qu’il me faut pour compléter l’interprétation
Pour répondre pleinement aux points 2, 3 et 4 de l’énoncé, il me faudrait :
L’éboulis (fviz_eig) — pour trancher sur le nombre d’axes à retenir (règle du coude vs critère de Kaiser : valeur propre > 1, soit ici une part d’inertie > 10 % puisque p = 10 variables normées). Le cercle des corrélations (fviz_pca_var) — pour identifier précisément quelles épreuves tirent l’axe 1 vs l’axe 2, et si elles sont corrélées entre elles (angle des vecteurs). La table complète des contributions (res.pca\(var\)contrib) — pour dire noir sur blanc quelles variables contribuent le plus à l’axe 1.
data(tea)
res.mca <- MCA(tea[, 1:18], graph = FALSE)
fviz_mca_var(res.mca, repel = TRUE) # modalites
fviz_mca_ind(res.mca, alpha.ind = 0.4)
Interprétation — Exercice 2 : ACM sur le jeu tea Variance expliquée
Dim1 = 9,9 %, Dim2 = 8,1 % → le premier plan ne capture que 18 % de l’inertie totale. C’est normal et attendu en ACM : avec de nombreuses variables qualitatives à plusieurs modalités, l’inertie totale se répartit sur un grand nombre d’axes (contrairement à l’ACP), donc des pourcentages faibles par axe ne signifient pas que l’analyse est inintéressante — il faut interpréter les proximités relatives, pas la part de variance en valeur absolue.
Interprétation du plan des modalités (fviz_mca_var)
Axe 1 (9,9 %) oppose deux profils de consommation nettement contrastés :
À gauche (Dim1 négatif) : p_cheap, p_branded, p_private.label, chain.store, tea.bag, Not.tearoom, Not.friends, Not.pub — un profil de consommation économique, à domicile, en sachet, associé à un rejet des lieux de sociabilité (pub, salon de thé, amis). À droite (Dim1 positif) : pub, lunch, resto, work, tearoom, other, p_variable, friends — un profil de consommation hors domicile, sociale, dans des contextes variés (travail, restaurant, entre amis).
Axe 2 (8,1 %) oppose :
En haut : tea.shop, unpackaged, p_upscale — un profil haut de gamme, thé en vrac acheté en boutique spécialisée. En bas : green, dinner — plutôt le thé vert consommé au dîner.
Les modalités de type « Not.xxx » (négations) se regroupent toutes près de l’origine, ce qui est typique en ACM : elles correspondent aux réponses majoritaires/communes (la plupart des gens répondent « non » à la plupart des questions de contexte), donc peu discriminantes.
Proximités notables : tea.bag est proche de chain.store et p_cheap — cohérent, le sachet de thé est associé à un achat en grande surface, à bas coût. À l’opposé, tea.shop + unpackaged + p_upscale forment un groupe cohérent de consommateurs haut de gamme achetant du thé en vrac en boutique spécialisée.
Interprétation du plan des individus (fviz_mca_ind)
Le nuage d’individus est très dense et peu structuré en groupes nets — la majorité des points se concentre autour de l’origine et légèrement à gauche, ce qui reflète la modalité dominante « Not… » / consommation standard identifiée sur le plan des modalités : la plupart des consommateurs de l’échantillon ont un profil “moyen”, peu différenciant.
On distingue cependant :
Un groupe en haut à gauche/centre (individus 195, 211, 227, 168, 190, 202…) qui se détachent sur Dim2 positif — probablement des consommateurs au profil plus haut de gamme (thé en boutique, vrac), en écho aux modalités tea.shop / unpackaged situées dans cette zone du plan des modalités. Quelques individus isolés à droite (66, 273, 278, 207) qui s’écartent nettement sur Dim1 positif — des profils de consommation atypiques, orientés « hors domicile / social » (pub, restaurant, travail), en cohérence avec les modalités pub, resto, work situées du même côté. La masse principale, en bas à gauche et au centre, correspond aux consommateurs « classiques » : thé en sachet, à la maison, sans caractéristique marquée — reflet direct de la concentration des modalités négatives (« Not… ») près de l’origine. Synthèse
L’ACM révèle deux dimensions structurantes de la consommation de thé dans cet échantillon : d’une part un axe économique/social vs domestique/personnel (Dim1 : pub-restaurant-travail vs sachet-économique-maison), d’autre part un axe gamme de produit (Dim2 : vrac-boutique-haut de gamme vs thé vert-dîner). La majorité des consommateurs se situe toutefois dans une zone centrale peu différenciée, ce qui est cohérent avec la faible variance expliquée par le premier plan — les comportements de consommation de thé dans cet échantillon sont globalement homogènes, avec seulement quelques profils marqués qui s’en détachent.
don <- decathlon[, c(1:10, 13)]
res.famd <- FAMD(don, graph = FALSE)
fviz_famd_var(res.famd)
fviz_screeplot(res.famd)
saveRDS(res.famd, "res_famd.rds")
Interprétation — Exercice 3 : AFDM sur decathlon (variables quantitatives + Competition) Éboulis des valeurs propres (scree plot) Axe Part d’inertie Dim1 30,4 % Dim2 15,8 % Dim3 13,7 % Dim4 10,7 % Dim5 9,2 %
Interprétation. La règle du coude fait apparaître une cassure nette entre l’axe 1 (30,4 %) et les axes suivants, qui décroissent ensuite de façon beaucoup plus progressive (15,8 % → 9,2 %). On retiendrait donc raisonnablement 2 axes (cumul 46,2 %) pour l’interprétation principale, l’axe 1 concentrant à lui seul l’essentiel de la structure. Le décrochage moins marqué qu’en ACP classique est cohérent avec la présence d’une variable qualitative (Competition), qui dilue davantage l’inertie sur plusieurs axes en AFDM.
Interprétation du graphique des variables (fviz_famd_var)
Ce graphique représente, pour chaque variable (quantitative et qualitative), sa contribution/qualité de représentation sur le plan (Dim1, Dim2) — plus une variable est éloignée de l’origine, plus elle est bien représentée et contribue fortement à la construction des axes.
Axe 1 (30,4 %) est structuré par un net gradient de gauche à droite :
Proches de l’origine (Dim1 ≈ 0) : Pole.vault, 1500m — ces variables contribuent peu à l’axe 1. À droite, bien représentées : 100m, 110m.hurdle, Long.jump, 400m, Shot.put, Discus — ce sont les variables quantitatives qui contribuent le plus à l’axe 1. Cet axe oppose donc essentiellement les épreuves de vitesse/explosivité/force (sprint, saut, lancers) aux épreuves d’endurance (1500m) et de technique pure (perche).
Axe 2 (15,8 %) est porté surtout par Discus, Shot.put, 400m (Dim2 élevé) d’un côté, et 1500m, Pole.vault, Competition proches de zéro de l’autre — un axe qui distingue davantage les épreuves de lancer/force du reste.
Point clé de l’exercice — contribution des deux types de variables : la variable qualitative Competition se situe très proche de l’origine sur les deux axes (Dim1 ≈ 0,10, Dim2 ≈ 0,01), donc elle contribue très peu à la construction du premier plan factoriel, contrairement aux variables quantitatives qui dominent largement (notamment 100m, 110m.hurdle, Shot.put, Discus). Cela signifie que le type de compétition (Olympic vs Decastar, typiquement) n’explique quasiment pas la variabilité des performances captée par ces deux premiers axes — la performance des athlètes se structure ici presque uniquement autour des épreuves elles-mêmes, indépendamment du contexte de compétition.
Synthèse
L’AFDM confirme que les deux types de variables sont bien intégrés dans une même analyse (comme attendu, puisque l’AFDM généralise ACP + ACM), mais avec des poids très inégaux ici : les 10 épreuves quantitatives structurent l’essentiel de l’axe 1 (opposition vitesse/force vs endurance/technique), tandis que la variable qualitative Competition reste marginale — un résultat cohérent puisqu’une seule variable qualitative binaire pèse naturellement moins qu’une dizaine de variables quantitatives corrélées entre elles. L’objet res.famd est sauvegardé (res_famd.rds) pour être réutilisé en classification au TD3.
library(readxl); library(FactoMineR); library(factoextra)
## Warning: package 'readxl' was built under R version 4.6.1
d <- read_excel("TD_eau_assainissement.xlsx", sheet = "menages")
num <- d |> dplyr::select(revenu_kFCFA, taille_menage, distance_point_eau_km,
consommation_eau_L_j, turbidite_NTU)
res <- PCA(num, graph = FALSE); fviz_eig(res, addlabels = TRUE)
fviz_pca_var(res, col.var = "contrib")
getwd()
## [1] "C:/Users/wandj/OneDrive/Documents"
Interprétation — Exercice 4 : ACP sur les ménages (GEAAH) Éboulis des valeurs propres Axe Part d’inertie Dim1 39,4 % Dim2 30,8 % Dim3 18,7 % Dim4 9,4 % Dim5 1,7 %
Interprétation. La règle du coude montre une cassure nette après l’axe 2 : la pente est forte entre Dim1 et Dim2, se poursuit encore un peu jusqu’à Dim3, puis chute brutalement à Dim4 et Dim5 (1,7 %). On retient donc 2 axes pour l’interprétation, qui cumulent 70,2 % de l’inertie totale — un très bon niveau de synthèse pour 5 variables. Le critère de Kaiser (valeur propre > 1, soit ici une part d’inertie > 20 % puisque p = 5 variables normées) confirme ce choix : seuls Dim1 (39,4 %) et Dim2 (30,8 %) dépassent ce seuil, Dim3 (18,7 %) restant juste en dessous.
Interprétation du cercle des corrélations
Toutes les variables sont bien représentées (flèches proches du cercle, notamment taille_menage, consommation_eau_L_j, revenu_kFCFA), ce qui valide la qualité du premier plan.
Axe 1 (39,4 %) est porté principalement par taille_menage et consommation_eau_L_j, fortement corrélées entre elles (flèches presque superposées, angle très faible) et bien représentées (contribution élevée, couleur claire). Cet axe oppose donc les grands ménages à forte consommation d’eau (Dim1 positif) aux petits ménages à faible consommation (Dim1 négatif). C’est logique : plus un ménage compte de membres, plus sa consommation d’eau quotidienne est élevée.
Axe 2 (30,8 %) est structuré par deux oppositions :
En haut : distance_point_eau_km et turbidite_NTU, corrélées positivement entre elles (angle faible) — un ménage éloigné du point d’eau a souvent une eau de moins bonne qualité (turbidité plus élevée). En bas : revenu_kFCFA, quasiment orthogonale à distance_point_eau_km/turbidite_NTU sur Dim1 mais opposée sur Dim2.
Cet axe 2 peut donc se lire comme un axe de vulnérabilité sanitaire et d’accès : en haut, des ménages éloignés de l’eau et exposés à une eau turbide (mauvaise qualité) ; en bas, des ménages à revenu plus élevé.
Angle entre revenu_kFCFA et distance_point_eau_km/turbidite_NTU : ces vecteurs sont presque perpendiculaires, ce qui indique une quasi-absence de corrélation linéaire entre le revenu et l’éloignement au point d’eau / la turbidité dans ce plan — le revenu ne semble pas expliquer directement la qualité d’accès à l’eau, contrairement à ce qu’on pourrait attendre.
Lecture en « gradient de vulnérabilité »
En combinant les deux axes, on peut identifier plusieurs profils-types de ménages selon leur position dans le plan :
Cadran haut-droit (Dim1+, Dim2+) : grands ménages, forte consommation, mais aussi éloignés du point d’eau et exposés à une eau turbide → profil de vulnérabilité mixte (besoins élevés + accès dégradé). Cadran bas-droit (Dim1+, Dim2−) : grands ménages à forte consommation, mais avec un revenu plus élevé → capacité financière à compenser leurs besoins. Cadran haut-gauche (Dim1−, Dim2+) : petits ménages mais éloignés du point d’eau / eau turbide → vulnérabilité liée à l’accès plutôt qu’à la taille du foyer. Cadran bas-gauche (Dim1−, Dim2−) : petits ménages, revenu plus élevé, situation la plus favorable a priori.
Les ménages les plus atypiques seraient ceux combinant simultanément une position extrême sur les deux axes (par exemple très excentrés en haut à droite = grande taille + forte turbidité + grande distance), qu’il faudrait repérer précisément sur le graphe des individus (fviz_pca_ind) — je n’ai pas encore cette capture. Si tu peux me l’envoyer (idéalement coloré par zone comme suggéré dans le prompt IA de l’énoncé), je complèterai l’interprétation en identifiant les ménages spécifiques et en croisant avec la variable zone (urbaine/rurale), ce qui donnerait une lecture bien plus riche du gradient de vulnérabilité.