L’Analyse Factorielle des Correspondances (AFC) permet de résumer et de visualiser un tableau de contingence, c’est-à-dire un tableau croisant deux variables qualitatives. Ce tableau donne, au croisement de la ligne i et de la colonne j, le nombre d’individus prenant la modalité i de la première variable et j de la seconde. Les objectifs de l’AFC sont de comparer les lignes entre elles, de comparer les colonnes entre elles et d’interpréter les positions entre les lignes et les colonnes, autrement dit de visualiser les associations des modalités des deux variables.
Pour l’AFC, on utilise la fonction CA du package FactoMineR, package dédié à l’analyse factorielle.
Le jeu de données représente le nombre d’étudiants des universités françaises par discipline et par cursus selon le sexe lors de l’année 2007-2008. Le tableau croise les variables qualitatives Discipline et Niveau-sexe. Il comprend en lignes les 10 disciplines de l’université et en colonnes les croisements des variables niveau (licence, master et doctorat) et sexe (homme et femme). L’AFC est alors appliquée entre une variable (Discipline) et le croisement de deux variables (Niveau-sexe), ce qui est fréquent en AFC. Nous disposons de plus par discipline du nombre total d’étudiants par niveau, par sexe et du total global.
Importer le jeu de données
data(mtcars)
summary(mtcars)
## mpg cyl disp hp
## Min. :10.40 Min. :4.000 Min. : 71.1 Min. : 52.0
## 1st Qu.:15.43 1st Qu.:4.000 1st Qu.:120.8 1st Qu.: 96.5
## Median :19.20 Median :6.000 Median :196.3 Median :123.0
## Mean :20.09 Mean :6.188 Mean :230.7 Mean :146.7
## 3rd Qu.:22.80 3rd Qu.:8.000 3rd Qu.:326.0 3rd Qu.:180.0
## Max. :33.90 Max. :8.000 Max. :472.0 Max. :335.0
## drat wt qsec vs
## Min. :2.760 Min. :1.513 Min. :14.50 Min. :0.0000
## 1st Qu.:3.080 1st Qu.:2.581 1st Qu.:16.89 1st Qu.:0.0000
## Median :3.695 Median :3.325 Median :17.71 Median :0.0000
## Mean :3.597 Mean :3.217 Mean :17.85 Mean :0.4375
## 3rd Qu.:3.920 3rd Qu.:3.610 3rd Qu.:18.90 3rd Qu.:1.0000
## Max. :4.930 Max. :5.424 Max. :22.90 Max. :1.0000
## am gear carb
## Min. :0.0000 Min. :3.000 Min. :1.000
## 1st Qu.:0.0000 1st Qu.:3.000 1st Qu.:2.000
## Median :0.0000 Median :4.000 Median :2.000
## Mean :0.4062 Mean :3.688 Mean :2.812
## 3rd Qu.:1.0000 3rd Qu.:4.000 3rd Qu.:4.000
## Max. :1.0000 Max. :5.000 Max. :8.000
Construisons maintenant l’AFC à l’aide de la fonction CA du package FactoMineR en précisant que les colonnes 7 à 12 sont illustratives :
library(FactoMineR)
## Warning: package 'FactoMineR' was built under R version 4.2.3
res.ca <- CA(mtcars)
## Warning: ggrepel: 20 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
L’objet res.ca contient l’ensemble des résultats qui peuvent être résumés par la fonction summary.CA, qui peut être appelée indifféremment par summary ou summary.CA.
Pour avoir les résultats sur tous les individus et toutes les variables.
summary(res.ca, nb.dec=2, ncp=2, nbelements=3)
##
## Call:
## CA(X = mtcars)
##
## The chi square of independence between the two variables is equal to 1029.214 (p-value = 5.498314e-78 ).
##
## Eigenvalues
## Dim.1 Dim.2 Dim.3 Dim.4 Dim.5 Dim.6 Dim.7 Dim.8
## Variance 0.05 0.02 0.00 0.00 0.00 0.00 0.00 0.00
## % of var. 73.41 21.78 2.06 1.41 0.51 0.38 0.20 0.11
## Cumulative % of var. 73.41 95.19 97.25 98.67 99.17 99.55 99.75 99.87
## Dim.9 Dim.10
## Variance 0.00 0.00
## % of var. 0.09 0.04
## Cumulative % of var. 99.96 100.00
##
## Rows (the 3 first)
## Iner*1000 Dim.1 ctr cos2 Dim.2 ctr cos2
## Mazda RX4 | 0.65 | 0.13 0.73 0.61 | -0.02 0.07 0.02 |
## Mazda RX4 Wag | 0.67 | 0.13 0.78 0.63 | -0.02 0.06 0.01 |
## Datsun 710 | 2.16 | 0.33 3.75 0.94 | -0.03 0.07 0.01 |
##
## Columns (the 3 first)
## Iner*1000 Dim.1 ctr cos2 Dim.2 ctr cos2
## mpg | 26.93 | 0.75 47.83 0.96 | 0.13 4.57 0.03 |
## cyl | 0.43 | 0.12 0.39 0.50 | 0.02 0.05 0.02 |
## disp | 14.04 | -0.14 18.35 0.71 | 0.09 25.30 0.29 |
Par défaut, un test du \(\chi^2\) est construit pour tester l’indépendance des variables Discipline et Niveau-sexe sur les modalités (lignes et colonnes) actives.
Choisir le nombre d’axes
Pour déterminer le nombre d’axes à analyser, on se base sur la décomposition de l’inertie associée à chaque axe. Celle-ci est donnée en début de sortie précédenteet l’on peut représenter le diagramme en bâtons de cette décomposition.
barplot(res.ca$eig[,2],names=paste("Dim",1:nrow(res.ca$eig)))
plot(res.ca)
## Warning: ggrepel: 20 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps