0% ont trouvé ce document utile (0 vote)
100 vues69 pages

2AFC TP Python

Cet article décrit l'analyse factorielle des correspondances (AFC), une méthode statistique permettant de résumer les informations essentielles d'un tableau de contingence. L'AFC permet d'étudier les similarités et différences entre les profils en ligne et en colonne du tableau, ainsi que les associations et répulsions entre les modalités. Le document présente le principe de l'AFC et illustre ses calculs avec un exemple de tableau croisant l'origine sociale et le choix de filière d'étudiants.

Transféré par

younesssebatiane
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
100 vues69 pages

2AFC TP Python

Cet article décrit l'analyse factorielle des correspondances (AFC), une méthode statistique permettant de résumer les informations essentielles d'un tableau de contingence. L'AFC permet d'étudier les similarités et différences entre les profils en ligne et en colonne du tableau, ainsi que les associations et répulsions entre les modalités. Le document présente le principe de l'AFC et illustre ses calculs avec un exemple de tableau croisant l'origine sociale et le choix de filière d'étudiants.

Transféré par

younesssebatiane
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

4 Analyse factorielle des correspondances (AFC)

L’analyse factorielle des correspondances (AFC) – ou analyse des correspondances pour

simplifier - propose une vision synthétique des informations « saillantes » portées par un

tableau de contingence. Elle permet de débroussailler rapidement les grands tableaux. Son

pouvoir de séduction repose en grande partie sur les représentations graphiques qu’elle propose.

Elles nous permettent de situer facilement les similarités (dissimilarités) entre les profils et les

attractions (répulsions) entre les modalités. L’AFC est bien une technique factorielle. Les

facteurs – les variables latentes – qui en sont issus sont des combinaisons linéaires des points

modalités (lignes ou colonnes) exprimés par des profils (lignes ou colonnes).

Techniquement, on peut voir l’AFC comme une méthode d’ajustement des nuages de profils

lignes et colonnes, permettant leur représentation simultanée, c.-à-d. dans le même repère.

Nous pouvons aussi la voir sous l’angle de la décomposition orthogonale du ² d’écart à

l’indépendance. Ce prisme est intéressant parce qu’il montre clairement qu’avant de nous

intéresser à la structure des écarts, il est très important de considérer leur importance et se

poser la question : y a –t-il de l’information pertinente dans le tableau à analyser ? Si le ² (ou

le ²) est trop faible, l’étude subséquente est illusoire.

Enfin, si l’AFC s’applique en priorité sur les tableaux de contingence (tableau de comptage). Elle

est en réalité valable dès lors que les valeurs sont positives, que les notions de marges (sommes

en ligne et colonne) et profils (ratios en ligne et colonne) ont un sens dans le tableau que nous

analysons.

Méthodes Factorielles 218


AFC 1
4.1 Principe de l’analyse factorielle des correspondances

4.1.1 Tableau de contingence

Pour illustrer notre propos, nous utilisons la base « CSP Filières » qui est le fruit d’une enquête

où l’on a croisé l’origine sociale des étudiants (à travers la CSP – catégorie social professionnelle,

version très simplifiée - des parents) avec les choix de filières à l’Université. Elle est tirée de la

page de cours de F-G. Carpentier de l’Université de Brest.

CSP\Filière Droit Sciences Médecine IUT Total


Exp.agri 80 99 65 58 302
Patron 168 137 208 62 575
Cadre.sup 470 400 876 79 1825
Employé 145 133 135 54 467
Ouvrier 166 193 127 129 615
Total 1029 962 1411 382 3784

Figure 98 - CSP et Choix de filières avec les marges – Tableau des effectifs observés

Un tableau de contingence peut s’appréhender comme un croisement entre deux variables

qualitatives (mais il peut être plus riche comme nous le verrons dans la section 4.5). On cherche

à savoir si l’un apporte de l’information sur l’autre et inversement en caractérisant la relation de

différentes manières :

1. Quelle est la structure des filières choisies selon la CSP ? On parle alors de profil ligne.

2. Est-ce que la structure est différente d’une CSP à l’autre ? Nous matérialisons les écarts à

l’aide d’une distance adaptée à notre étude.

3. Nous pouvons mener la même étude mais sous l’angle des profils colonnes : les compositions

des filières sont-elles différentes en termes de CSP ?

4. Nous pouvons enfin étudier les associations et répulsions entre CSP et filières : certaines

CSP ont-elles une préférences pour certaines filières ? Des filières spécifiques attirent-elles

des catégories particulières de CSP ?

Nous pouvons compléter les marges en ligne et colonnes en effectuant la somme des effectifs.

Il s’agit de la partie grisée de notre tableau ci-dessus (Figure 98). Nous disposons de (n = 3874)

Méthodes Factorielles 219


AFC 2
observations, 302 étaient des enfants d’exploitants agricoles (« Exp.Agri »), 1029 ont choisi la

filière « Droit », etc. Dans ce chapitre, nous utiliserons les notations suivantes pour représenter

les différents effectifs (Figure 99) :

Y/X x1 xl xL 
y1

yk  nkl  nk .

yK
 n.l n

Figure 99 - Tableau des effectifs – Notations - AFC

Nous pouvons utiliser les fréquences relatives pour estimer les différentes probabilités :

1825
5. 𝑃(𝐶𝑎𝑑𝑟𝑒. 𝑆𝑢𝑝) = 3784 = 48.2% est la proportion des enfants de « Cadre.Sup » ;
1411
6. 𝑃(𝑀é𝑑𝑒𝑐𝑖𝑛𝑒) = = 37.3% est la proportion des étudiants qui ont fait le choix de la filière
3784

« Médecine ».
876
7. 𝑃(𝑀é𝑑𝑒𝑐𝑖𝑛𝑒 & 𝐶𝑎𝑑𝑟𝑒. 𝑆𝑢𝑝) = 3784 = 23.2% est la proportion de personnes qui ont choisi

« Médecine » et qui sont des enfants de « Cadre.Sup ». On a une idée de concomitance,

d’une association.
876
8. 𝑃(𝑀é𝑑𝑒𝑐𝑖𝑛𝑒 / 𝐶𝑎𝑑𝑟𝑒. 𝑆𝑢𝑝) = 1825
= 48.0% est la proportion de personnes qui ont choisi

« Médecine » parmi les enfants de « Cadres.Sup ». On serait plutôt sur une idée de

causalité.

Dans ce qui suit, nous étudions les différentes manières d’explorer ces proportions, qui sont

autant de points de vue sur l’analyse factorielle des correspondances.

Python. Comme de coutume, nous retraçons les calculs sous Python. Nous chargeons la feuille

« AFC_ETUDES » du classeur « Data_Methodes_Factorielles.xlsx ».

#chargement - index_col = 0 pour indiquer que la colonne n°0 est un label


import pandas
D = pandas.read_excel("Data_Methodes_Factorielles.xlsx",sheet_name="AFC_ETUDES",index_col=0)

#affichage des données


print(D)

Méthodes Factorielles 220


AFC 3
Droit Sciences Medecine IUT
CSP_vs_Filiere
ExpAgri 80 99 65 58
Patron 168 137 208 62
CadreSup 470 400 876 79
Employe 145 133 135 54
Ouvrier 166 193 127 129

#librairie
import numpy

#calcul des totaux en ligne


tot_lig = numpy.sum(D.values,axis=1)
print(tot_lig)

[ 302 575 1825 467 615]

#calcul des totaux en colonne


tot_col = numpy.sum(D.values,axis=0)
print(tot_col)

[1029 962 1411 382]

4.1.2 Analyse des profils lignes

4.1.2.1 Profils lignes

Le premier prisme consiste à analyser les profils lignes – les proportions en ligne – du tableau

de contingence. Ils sont calculés sous la forme du ratio :

𝑛𝑘𝑙
𝑃(𝑋 = 𝑙 / 𝑌 = 𝑘) =
𝑛𝑘.

Ils se présentent comme suit pour nos données « CSP Filières » :

CSP\Filière Droit Sciences Médecine IUT Total


Exp.agri 0.265 0.328 0.215 0.192 1
Patron 0.292 0.238 0.362 0.108 1
Cadre.sup 0.258 0.219 0.480 0.043 1
Employé 0.310 0.285 0.289 0.116 1
Ouvrier 0.270 0.314 0.207 0.210 1
Total 0.272 0.254 0.373 0.101 1

Figure 100 - Profils lignes - Données "CSP Filières"

Nous lisons ainsi :

962
1. P(Sciences) = 3784 = 25.4%, la proportion de personnes qui ont choisi la filière « Sciences ».

Méthodes Factorielles 221


AFC 4
400
2. P(Sciences / Cadres.Sup) = = 21.9%, la proportion de personnes qui ont choisi la filière
1825

« Sciences » parmi les enfants de « Cadres.Sup ».


193
3. P(Sciences / Ouvrier) = 615
= 31.4%, la proportion de personnes qui ont choisi la filière

« Sciences » parmi les enfants d’ouvriers. Etc.

Deux types de questions peuvent être posés au regard de ce mode de présentation des données :

(1) Est-ce que les structures de choix sont les mêmes d’un CSP à l’autre, on parle de distances

entre profils (section 4.1.2.2) ; (2) Est-ce que la structure de choix d’un CSP est différent de la

structure globale, sans distinction de CSP, on parle de distance à l’origine (section 4.1.2.3).

Nous calculons ces proportions en ligne sous Python, que nous agrémentons à l’aide d’une

représentation graphique en « barplot » empilés (Figure 101).

#profils lignes
prof_lig = numpy.apply_along_axis(arr=D.values,axis=1,func1d=lambda x:x/numpy.sum(x))
print(prof_lig)

[[0.26490066 0.32781457 0.21523179 0.19205298]


[0.29217391 0.23826087 0.36173913 0.10782609]
[0.25753425 0.21917808 0.48 0.04328767]
[0.31049251 0.28479657 0.28907923 0.11563169]
[0.2699187 0.31382114 0.20650407 0.2097561 ]]

#représentation graphique
import matplotlib.pyplot as plt
somme = numpy.zeros(shape=(prof_lig.shape[0]))
for i in range(prof_lig.shape[1]):
plt.barh(range(prof_lig.shape[0]),prof_lig[:,i],left=somme)
somme = somme + prof_lig[:,i]

plt.yticks(range(prof_lig.shape[0]),D.index)
plt.show()

Figure 101 - Structure des choix de filières selon les CSP - Données "CSP - Filières"

Méthodes Factorielles 222


AFC 5
Sans trop s’avancer, nous observons quand-même une préférence certaine des enfants de

« Cadres.Sup » pour la « Médecine ». Par rapport aux autres catégories, les « ouvriers » et

« exploitants agricoles » s’investissent plus dans les IUT. Etc. Le rôle de l’AFC justement sera

de mettre en évidence les différences entre les profils et d’identifier les éventuelles

accointances entre les CSP et les choix de filières.

4.1.2.2 Distance entre profils

Distance entre profils. La distance entre profils met en exergue les différences entre

proportions en exacerbant celles qui ont trait aux modalités rares. Le même écart est d’autant

plus marquant qu’il concerne une modalité peu représentée. On parle de distance du KHI-2 (𝜒 2) :

𝐿
1 𝑛𝑘𝑙 𝑛𝑘′𝑙 2
𝑑2 (𝑘, 𝑘 ′ ) = ∑ 𝑛 ( − )
.𝑙 𝑛𝑘. 𝑛𝑘 ′ .
𝑙=1 𝑛

Voyons quelques exemples pour préciser les calculs :

𝑑 2 (𝑐𝑎𝑑𝑟𝑒, 𝑜𝑢𝑣𝑟𝑖𝑒𝑟)
1 1 1
= (0.258 − 0.270)2 + (0.219 − 0.314)2 + (0.480 − 0.207)2
0.272 0.254 0.373
1
+ (0.043 − 0.210)2 = 0.5109
101

𝑑 2 (𝑐𝑎𝑑𝑟𝑒, 𝑝𝑎𝑡𝑟𝑜𝑛)
1 1 1
= (0.258 − 0.292)2 + (0.219 − 0.238)2 + (0.480 − 0.362)2
0.272 0.254 0.373
1
+ (0.043 − 0.108)2 = 0.0846
101

On en conclut que la structure des choix de filières des enfants de cadres est plus proche

(similaire) de celle des cadres supérieurs qu’elle ne l’est de celle des enfants d’ouvrier.

Ces distances sont très faciles à produire sous Python, merci à la librairie Numpy.

#calul du profil marginal corresp. – ligne grisée de Figure 100


prof_marg_lig = tot_col/numpy.sum(tot_col)
print(prof_marg_lig)

[0.27193446 0.25422833 0.37288584 0.10095137]

Méthodes Factorielles 223


AFC 6
#distance du KHI-2 entre cadre(2) et ouvrier(4)
print(numpy.sum((prof_lig[2,:]-prof_lig[4,:])**2/prof_marg_lig))

0.510900786777672

#distance du KHI-2 entre cadre(2) et patron(1)


print(numpy.sum((prof_lig[2,:]-prof_lig[1,:])**2/prof_marg_lig))

0.08461088232967051

Distances par paires des profils. Nous pouvons dès lors approfondir l’analyse en calculant les

distances entre paires de modalités pour identifier les ressemblances et dissemblances.

#distance entre paires de modalités lignes


distPairesLig = numpy.zeros(shape=(prof_lig.shape[0],prof_lig.shape[0]))

#double boucle
for i in range(prof_lig.shape[0]-1):
for j in range(i+1,prof_lig.shape[0]):
distPairesLig[i,j] = numpy.sum((prof_lig[i,:]-prof_lig[j,:])**2/prof_marg_lig)
#distPairesLig[j,i] = distPairesLig[i,j]

#affichage
print(pandas.DataFrame(distPairesLig,index=D.index,columns=D.index))

CSP_vs_Filiere ExpAgri Patron CadreSup Employe Ouvrier


CSP_vs_Filiere
ExpAgri 0.0 0.162117 0.453847 0.087400 0.004172
Patron 0.0 0.000000 0.084611 0.024514 0.191823
CadreSup 0.0 0.000000 0.000000 0.176847 0.510901
Employe 0.0 0.000000 0.000000 0.000000 0.115413
Ouvrier 0.0 0.000000 0.000000 0.000000 0.000000

Une représentation graphique sous forme de « heatmap » donne une vision globale des écarts.

#affichage sous forme de heatmap


import seaborn as sns
sns.heatmap(distPairesLig,vmin=0,vmax=numpy.max(distPairesLig),linewidth=0.1,cmap=
'Blues',xticklabels=D.index,yticklabels=D.index)

Figure 102 - Distances (au carré) entre les paires de modalités lignes - Données "CSP Filières"

Méthodes Factorielles 224


AFC 7
Les enfants d’ouvriers et d’exploitants agricoles présentent des structures de choix assez

proches (Figure 102). Il en est de même aussi, à un degré moindre cependant, entre les patrons

et les employés. Finalement, il n’y a que les cadres supérieurs qui la ramènent avec des

préférences qui les démarquent fortement des autres, en particulier des ouvriers et des

exploitants agricoles.

Analyse factorielle des correspondances. Pour l’analyse des grands tableaux, lorsque le

nombre de modalités lignes est élevé, comparer les profils (Figure 101) et inspecter les distances

par paires (Figure 102) deviennent rapidement inextricables. L’AFC a pour objectif de produire

un repère factoriel qui rend compte du positionnement relatif des modalités à l’aide de

graphiques « nuages de points », en fournissant des indicateurs permettant d’apprécier la

fidélité de la représentation par rapport à la matrice des distances initiale.

4.1.2.3 Distance à l’origine

Le profil marginal, la partie grisée dans le tableau de la Figure 100, correspond à la structure de

choix dans distinction de CSP. Il représente le « profil moyen » c.-à-d. la moyenne pondérée
1029
des profils lignes. Par exemple, la P(droit) = 3784 = 0.272 comme définit plus haut, mais elle peut

être calculée également par la moyenne des probabilités conditionnelles associées :

302 × 0.265 + 575 × 0.292 + 1825 × 0.258 + 467 × 0.310 + 615 × 0.270
𝑃(𝑑𝑟𝑜𝑖𝑡) = = 0.272
3784

Remarque : Cela veut dire aussi que si une modalité ligne est surreprésentée dans le fichier, elle

pèsera énormément sur la définition du profil moyen.

La distance à l’origine est tout simplement la distance au profil moyen. Pour les enfants de

cadres.sup par exemple :

1 1 1
𝑑 2 (𝑐𝑎𝑑𝑟𝑒) = (0.258 − 0.272)2 + (0.219 − 0.254)2 + (0.480 − 0.373)2
0.272 0.254 0.373
1
+ (0.043 − 0.101)2 = 0.0693
0.101

Nous obtenons le tableau suivant en calculant les distance à l’origine des CSP :

Méthodes Factorielles 225


AFC 8
CSP\Filière DISTO²
Exp.agri 0.1703
Patron 0.0033
Cadre.sup 0.0693
Employé 0.0301
Ouvrier 0.2055

Figure 103 - Distance à l'origine - AFC - Données "CSP Filières"

Nous remarquons par exemple que les enfants d’ouvriers et d’exploitants agricoles présentent

des structures de choix (profils) les plus différentes de l’ensemble (la moyenne) des étudiants.

4.1.2.4 Inertie

L’inertie traduit la quantité d’information portée par une modalité. Elle est définie par le produit

entre le poids de la modalité et sa distance à l’origine.

𝐼𝑛𝑒𝑟𝑡𝑖𝑒(𝑦𝑘 ) = 𝑃(𝑦𝑘 ) × 𝑑 2 (𝑦𝑘 )

Prenons l’exemple des CSP « cadres.sup » :

𝐼𝑛𝑒𝑟𝑡𝑖𝑒(𝑐𝑎𝑑𝑟𝑒) = 𝑃(𝑐𝑎𝑑𝑟𝑒) × 𝑑 2 (𝑐𝑎𝑑𝑟𝑒)


1825
= × 0.0693
3784
= 0.4832 × 0.0693
= 0.0334

Réalisons les calculs pour l’ensemble des modalités.

#distance à l'origine
distoLig = numpy.apply_along_axis(arr=prof_lig,axis=1,func1d=lambda x:numpy.sum((x
-prof_marg_lig)**2/prof_marg_lig))

#affichage
print(pandas.DataFrame(distoLig,index=D.index))

0
CSP_vs_Filiere
ExpAgri 0.170350
Patron 0.003311
CadreSup 0.069302
Employe 0.030113
Ouvrier 0.205492

#poids des lignes


poidsLig = tot_lig/numpy.sum(tot_lig)

Méthodes Factorielles 226


AFC 9
#inertie des lignes
inertieLig = distoLig * poidsLig

#affichage
print(pandas.DataFrame(numpy.transpose([distoLig,poidsLig,inertieLig]),columns=['D
isto2','Poids','Inertie'],index=D.index))

Disto2 Poids Inertie


CSP_vs_Filiere
ExpAgri 0.170350 0.079810 0.013596
Patron 0.003311 0.151956 0.000503
CadreSup 0.069302 0.482294 0.033424
Employe 0.030113 0.123414 0.003716
Ouvrier 0.205492 0.162526 0.033398

Nous notons par exemple que les enfants des exploitants agricoles ont certes un profil différent

(distance à l’origine), mais sont peu représentés (poids), leur inertie ne se démarque pas

vraiment. A contrario, les « cadres.sup » ne sont pas si différents, mais nombreux, ils pèseront

beaucoup plus dans l’analyse.

Somme des inerties. La somme des inerties – l’inertie totale - représente la quantité

d’information disponible dans les données. C’est un indicateur fondamental. Chaque facteur

produit par l’AFC en représentera une partie.

Pour les données « CSP Filières », l’inertie totale - que nous noterons 𝜙 2, nous comprendrons

mieux plus loin - est égale à : 𝜙 2 = 0.0846.

#total inertie
tot_InertieLig = numpy.sum(inertieLig)
print(tot_InertieLig)

0.08463685828547157

4.1.2.5 Principe de l’analyse factorielle des correspondances – Version 1

Principe. L’AFC a pour mission de produire une successions de facteurs – des axes factoriels,

combinaisons linéaires des profils - qui permettent de positionner les modalités de la manière la

plus dispersée possible. Les facteurs sont deux à deux orthogonaux parce que le qème facteur est

élaboré à partir de la partie résiduelle des (q-1) qui le précèdent.

De ce point de vue, l’AFC se présente comme une ACP où les individus sont les modalités lignes,

décrit par les profils lignes, et pondérés par les effectifs totaux des lignes.

Méthodes Factorielles 227


AFC 10
Si on s’en tient au premier facteur (n°1), l’algorithme va maximiser la quantité 𝜆1 tel que :

𝐾
𝑛𝑘. 2
𝜆1 = ∑ × 𝐹𝑘1
𝑛
𝑘=1

− 𝐹𝑘1 est la coordonnée de la modalité (𝑦𝑘 ) sur le facteur n°1.

− La moyenne des points modalités est nulle c.-à-d. (∑𝐾


𝑘=1 𝐹𝑘1 = 0)

− 𝜆1 représente par conséquent la variance des points modalités. Il s’agit de la valeur

propre.

𝜆1
La quantité ( ) indique la crédibilité du facteur. Il représente la part de d’inertie qu’il restitue.
𝜙2

Lorsque nous avons produit l’ensemble des facteurs, leur nombre maximal est égal à min (𝐾 −

1, 𝐿 − 1), toute l’information est restituée c.-à-d.

min (𝐾−1, 𝐿−1)

∑ 𝜆ℎ = 𝜙 2
ℎ=1

Concrètement. Pour le facteur n°h, l’algorithme de l’AFC va produire un jeu de coefficients

(𝑎ℎ1 , 𝑎ℎ2 , … , 𝑎ℎ𝐿 ) – nous verrons comment dans la section 4.2 - qui permet de calculer la

coordonnée de la modalité (𝑦𝑘 ) à partir de son profil ligne. Pour le premier facteur par exemple,

les coefficients fournis par l’AFC sont (0.098, 0.559, -1.056, 2.230). Sachant que les coordonnées

– son profil ligne – de la modalité « Cadres.Sup » sont (0.258, 0.219, 0.480, 0.043) (Figure 100),

sa coordonnée sur le premier facteur sera égale à :

0.098 × 0.258 + 0.559 × 0.219 − 1.056 × 0.480 + 2.230 × 0.043 = −0.263

Nous positionnons ainsi les différentes modalités lignes sur le premier facteur :

Figure 104 - Position des modalités lignes sur le 1er facteur de l'AFC - Données "CSP Filières"

Méthodes Factorielles 228


AFC 11
Les positions relatives (Figure 104) corroborent ce que nous avions commencé à percevoir ci-

dessus (Figure 101 et Figure 102) : les « Cadres.Sup » représentent un profil spécifique,

différent (éloigné) des autres ; les enfants d’exploitants agricoles et d’ouvrier sont proches sur

le 1er facteur, ils présentent des profils – structures de choix de filières – similaires.

Calculs sous Python. Nous réalisons une AFC avec le package « fanalysis » que nous

présenterons plus en détail plus loin (section 4.3). Nous affichons les valeurs propres.

#importation de la librairie
from fanalysis.ca import CA

#lancer les calculs


afc = CA(row_labels=D.index,col_labels=D.columns)
afc.fit(D.values)

#information restituée sur les facteurs


print(afc.eig_)

[[8.23936026e-02 1.70344867e-03 5.39807038e-04]


[9.73495522e+01 2.01265584e+00 6.37791913e-01]
[9.73495522e+01 9.93622081e+01 1.00000000e+02]]

Nous observons pour chaque ligne de la matrice « eig_ »: les valeurs propres des [min(5-1, 4-1)

= 3} facteurs, la fraction d’inertie restituée par facteur et cumulée. La variance du 1er facteur
0.08239
est égale à (𝜆1 = 0.08239), elle représente déjà ( = 97.35%) de l’inertie totale.
0.0846

Nous affichons ensuite les coordonnées des modalités lignes par facteur.

#coordonnées des modalités lignes


print(pandas.DataFrame(afc.row_coord_,index=D.index))

0 1 2
CSP_vs_Filiere
ExpAgri 0.410115 -0.026253 0.038284
Patron 0.020151 0.026585 -0.046881
CadreSup -0.262717 -0.015596 0.006199
Employe 0.142090 0.097326 0.021242
Ouvrier 0.451481 -0.039588 -0.009493

Pour le 1er facteur, vérifions que la moyenne pondérée des coordonnées est bien nulle.

#vérification de la moyenne pondérée des modalités - 1er facteur


print(numpy.sum(poidsLig * afc.row_coord_[:,0]))

6.938893903907228e-17

Et que sa variance est égale à la valeur propre.

Méthodes Factorielles 229


AFC 12
#variance des modalités - 1er facteur
print(numpy.sum(poidsLig * afc.row_coord_[:,0]**2))

0.0823936025778933

Tout va pour le mieux.

Nous représentons les individus lignes dans le premier plan factoriel qui restitue 99.36% de

l’information disponible (Figure 105).

#affichage dans le premier plan factoriel


fig, ax = plt.subplots(figsize=(10,10))
ax.axis([-0.5,+0.5,-0.5,+0.5])
ax.plot([-0.5,+0.5],[0,0],color='silver',linestyle='--')
ax.plot([0,0],[-0.5,+0.5],color='silver',linestyle='--')
ax.set_xlabel("Dim.1")
ax.set_ylabel("Dim.2")
plt.title("Carte des modalités lignes")

for i in range(D.shape[0]):
ax.text(afc.row_coord_[i,0],afc.row_coord_[i,1],D.index[i])

plt.show()

Figure 105 - Position des modalités lignes dans le plan - AFC - Données "CSP Filières"

Méthodes Factorielles 230


AFC 13
En mettant la même échelle en abscisse et ordonnées, nous constatons que la différenciation

des modalités lignes se joue quasi-exclusivement sur le premier axe factoriel.

4.1.2.6 Restitution de la distance entre profils

La distance du 𝜒 2 entre les modalités lignes dans l’espace initial devient distance euclidienne

dans l’espace factoriel. Et comme en ACP (concernant la distance entre individus), la restitution

est parfaite lorsque nous utilisons tous les facteurs. Nous avons une approximation en revanche

si nous n’en utilisons qu’une partie, sa précision dépend d’une part de la qualité de restitution

du repère factoriel choisi, d’autre part de la qualité de représentation des modalités impliquées

dans le calcul (on retrouve les fameux COS2, mais calculés différemment dans le cadre de l’AFC).

Pour les (q) premiers facteurs, la distance entre deux modalités lignes s’écrit :

𝑞
2
𝑑{𝐹 (𝑘, 𝑘 ′ ) = ∑(𝐹𝑘ℎ − 𝐹𝑘 ′ ℎ )2
1 ,…,𝐹𝑞 }
ℎ=1

Reprenons les distances de la section 4.1.2.2 sur le 1er facteur (F1) :

2
𝑑{𝐹1}
(𝑐𝑎𝑑𝑟𝑒, 𝑜𝑢𝑣𝑟𝑖𝑒𝑟) = (−0.26272 − 0.45148)2 = 0.5101

2
𝑑{𝐹1}
(𝑐𝑎𝑑𝑟𝑒, 𝑝𝑎𝑡𝑟𝑜𝑛) = (−0.26272 − 0.02015)2 = 0.0800

Nous comparons ci-dessous les matrices des distances originelles et estimées :

CSP Exp.agri Patron Cadre.sup Employé Ouvrier CSP Exp.agri Patron Cadre.sup Employé Ouvrier
Exp.agri 0 0.1621 0.4538 0.0874 0.0042 Exp.agri 0 0.1521 0.4527 0.0718 0.0017
Patron 0 0.0846 0.0245 0.1918 Patron 0 0.0800 0.0149 0.1860
Cadre.sup 0 0.1768 0.5109 Cadre.sup 0 0.1639 0.5101
Employé 0 0.1154 Employé 0 0.0957
Ouvrier 0 Ouvrier 0
Distance du KHI-2 entre modalités (tableau initial) Distance euclidienne entre modalités (1er facteur)

Figure 106 - Comparaison des distances exactes et approchées entre modalités - Données "CSP Filières"

En fond bleu, les distances plutôt bien estimées, elles concernent les modalités situées aux

extrémités du 1er facteur, celles qui sont bien représentées comme nous le constaterons plus

loin (section 4.3.2). En fond rose, les distances mal restituées, elles concernent les modalités

(les deux ou une des deux) proches de l’origine.

Méthodes Factorielles 231


AFC 14
Sous Python, le calcul des distances entre modalités sur le 1er facteur ne pose aucune difficulté.

#distances euclidienne dans le 1er plan


distPairesLigF1 = numpy.zeros(shape=(prof_lig.shape[0],prof_lig.shape[0]))

#double boucle
for i in range(prof_lig.shape[0]-1):
for j in range(i+1,prof_lig.shape[0]):
distPairesLigF1[i,j] = numpy.sum((afc.row_coord_[i,0]-afc.row_coord_[j,0])**2)

#affichage
print(pandas.DataFrame(distPairesLigF1,index=D.index,columns=D.index))

CSP_vs_Filiere ExpAgri Patron CadreSup Employe Ouvrier


CSP_vs_Filiere
ExpAgri 0.0 0.152072 0.452704 0.071837 0.001711
Patron 0.0 0.000000 0.080014 0.014869 0.186046
CadreSup 0.0 0.000000 0.000000 0.163869 0.510079
Employe 0.0 0.000000 0.000000 0.000000 0.095723
Ouvrier 0.0 0.000000 0.000000 0.000000 0.000000

4.1.3 Analyse des profils colonnes

4.1.3.1 Profils colonnes

Nous pouvons mener la même analyse sur les profils colonnes du tableau de données :

𝑛𝑘𝑙
𝑃(𝑌 = 𝑘 / 𝑋 = 𝑙) =
𝑛.𝑙

Les proportions se présentent comme suit :

CSP\Filière Droit Sciences Médecine IUT Total


Exp.agri 0.078 0.103 0.046 0.152 0.080
Patron 0.163 0.142 0.147 0.162 0.152
Cadre.sup 0.457 0.416 0.621 0.207 0.482
Employé 0.141 0.138 0.096 0.141 0.123
Ouvrier 0.161 0.201 0.090 0.338 0.163
Total 1 1 1 1 1

Figure 107 - Tableau des profils colonnes - Données "CSP Filières"

Nous lisons entres autres :

1. P(Cadres.Sup) = 48.2%

2. P(Cadres.Sup / Droit) = 45.7%, etc.

La question en filigrane ici est : Observe-t-on les mêmes structures de CSP dans les filières ?

Méthodes Factorielles 232


AFC 15
4.1.3.2 Distances entre profils, distance à l’origine, inertie

De fait, nous allons à l’essentiel dans cette section. La distance du 𝜒 2 entre profils s’écrit :

𝐾
2 (𝑙, ′ )
1 𝑛𝑘𝑙 𝑛𝑘𝑙′ 2
𝑑 𝑙 =∑𝑛 ( − )
𝑘. 𝑛.𝑙 𝑛.𝑙′
𝑘=1 𝑛

Par exemple,

1 1
𝑑 2 (𝑑𝑟𝑜𝑖𝑡, 𝑠𝑐𝑖𝑒𝑛𝑐𝑒𝑠) = (0.078 − 0.103)2 + (0.163 − 0.142)2 + ⋯ = 0.024
0.080 0.152

1 1
𝑑 2 (𝑑𝑟𝑜𝑖𝑡, 𝑚é𝑑𝑒𝑐𝑖𝑛𝑒) = (0.078 − 0.046)2 + (0.163 − 0.147)2 + ⋯ = 0.118
0.080 152

Le profil sociologique des étudiants en « droit » est plus proche de ceux en « sciences » qu’en

« médecine ».

De la même manière que pour les profils lignes, nous pouvons calculer les distances à l’origine

(représenté par la marge colonne du tableau de la Figure 107), les poids (des colonnes) et les

inerties. Nous égrenons les calculs sous Python.

Nous calculons tout d’abord le profil « moyen » des filières.

#profil marginal des filières


prof_marg_col = tot_lig/numpy.sum(tot_lig)
print(prof_marg_col)

[0.07980973 0.1519556 0.48229387 0.12341438 0.16252643]

Puis les profils par filière.

#tableau des profils colonnes


prof_col = numpy.apply_along_axis(arr=D.values,axis=0,func1d=lambda x:x/numpy.sum(x))
print(pandas.DataFrame(prof_col,index=D.index,columns=D.columns))

Droit Sciences Medecine IUT


CSP_vs_Filiere
ExpAgri 0.077745 0.102911 0.046067 0.151832
Patron 0.163265 0.142412 0.147413 0.162304
CadreSup 0.456754 0.415800 0.620836 0.206806
Employe 0.140914 0.138254 0.095677 0.141361
Ouvrier 0.161322 0.200624 0.090007 0.337696

Pour chaque filière, nous formons la distance à l’origine.

Méthodes Factorielles 233


AFC 16
#distance**2 à l'orgine
distoCol = numpy.apply_along_axis(arr=prof_col,axis=0,func1d=lambda x:numpy.sum((x
-prof_marg_col)**2/prof_marg_col))

#affichage
print(pandas.DataFrame(distoCol,index=D.columns))

0
Droit 0.004738
Sciences 0.027168
Medecine 0.092792
IUT 0.414466

La composition sociologique des étudiants en IUT est manifestement différente de la globalité.

En comparant son profil avec le profil marginal, nous notons une surreprésentation des enfants

d’exploitants agricoles et ouvrier, et une sous-représentation des cadres supérieurs.

Nous calculons ensuite le poids des filières.

#poids de chaque colonne


poidsCol = tot_col/numpy.sum(tot_col)
print(pandas.DataFrame(poidsCol,index=D.columns))

0
Droit 0.271934
Sciences 0.254228
Medecine 0.372886
IUT 0.100951

Puis des inerties.

#inertie
inertieCol = distoCol*poidsCol
print(pandas.DataFrame(inertieCol,index=D.columns))

0
Droit 0.001288
Sciences 0.006907
Medecine 0.034601
IUT 0.041841

Les filières IUT et Médecine sont celles qui pèseront le plus dans l’analyse, mais pas pour les

mêmes raisons : la première parce que sa distance à l’origine est élevée, la seconde parce qu’elle

rassemble un grand nombre d’étudiants (poids).

La somme des inerties des modalités colonnes (filières) est égale à 𝜙 2 = 0.0486,…

#somme des inerties


print(numpy.sum(inertieCol))

0.08463685828547156

Méthodes Factorielles 234


AFC 17
… identique à la somme des inerties des modalités lignes (CSP). Ce n’est pas un hasard. Nous

analysons le même tableau qui porte la même quantité totale d’information, mais avec un prisme

différent, celui des filières.

4.1.3.3 Principe de l’analyse factorielle des correspondances – Version 2

Principe. L’objectif est toujours de produire une succession de facteurs, combinaisons linéaires

des profils, qui étalent au mieux les modalités colonnes. Si on s’en tient au premier facteur, la

variance restituée s’écrit :

𝐿
𝑛.𝑙 2
𝜆1 = ∑ × 𝐺𝑙1
𝑛
𝑙=1

Avec quelques éléments importants :

1. Les 𝐺𝑙1 correspondent aux coordonnées des modalités colonnes (les filières) sur le 1er facteur.

2. Leur moyenne pondérée est nulle.

3. La variance 𝜆1 calculée ici coïncide avec celle calculée pour les modalités lignes, nous parlons

bien du même facteur.

Nous reprenons le calcul avec la librairie « fanalysis », nous affichons les coordonnées des

modalités colonnes (les filières) pour les 3 facteurs de l’AFC sur les données « CSP Filières ».

#coordonnées des filières


print(pandas.DataFrame(afc.col_coord_,index=D.columns))

0 1 2
Droit 0.027987 0.060669 -0.016545
Sciences 0.160462 0.002734 0.037583
Medecine -0.303125 -0.029662 -0.005200
IUT 0.640174 -0.060749 -0.030870

Et nous passons à la représentation graphique dans le plan.

#affichage dans le premier plan factoriel


fig, ax = plt.subplots(figsize=(10,10))
ax.axis([-0.7,+0.7,-0.7,+0.7])
ax.plot([-0.7,+0.7],[0,0],color='silver',linestyle='--')
ax.plot([0,0],[-0.7,+0.7],color='silver',linestyle='--')
ax.set_xlabel("Dim.1")
ax.set_ylabel("Dim.2")
plt.title("Carte des modalités colonnes")

Méthodes Factorielles 235


AFC 18
for i in range(D.shape[1]):
ax.text(afc.col_coord_[i,0],afc.col_coord_[i,1],D.columns[i])

plt.show()

Figure 108 - Carte des modalités colonnes - 1er plan factoriel - Données "CSP Filières"

Les différenciations se jouent encore une fois essentiellement sur le 1er facteur. L’IUT présente

visiblement un profil à part, à l’opposé de celui de « Médecine » notamment.

Remarque : Nous le verrons dans la section suivante, il est licite de fondre des cartes des

modalités lignes et colonnes dans un seul graphique et, dans un sens que nous préciserons,

d’interpréter les proximités.

Méthodes Factorielles 236


AFC 19
4.1.4 Analyse de l’association lignes-colonnes

4.1.4.1 Statistique de l’écart à l’indépendance

Au-delà de la comparaison des profils, l’intérêt majeur de l’AFC est d’identifier les associations

entre les modalités lignes et colonnes. Est-ce que les enfants de « Cadres.Sup » sont plus attiré

par la « Médecine » que les autres ? Est-ce que les IUT exercent une attraction pour les enfants

d’ouvriers ? Lesquels se détourneraient de la « Médecine » ? Etc.

Avant de s’intéresser aux relations entre les modalités, il faudrait déjà vérifier qu’il existe bien

une liaison exploitable entre les variables en ligne et colonne du tableau de contingence. La

statistique du 𝜒 2 de l’écart à l’indépendance, dite de Pearson, est l’outil privilégié pour ce faire.

Le 𝜒 2 de Pearson repose sur un mécanisme de test d’hypothèses. Il compare les effectifs

observés (𝑛𝑘𝑙 ) avec les effectifs théoriques (𝑒𝑘𝑙 ) du tableau sous l’hypothèse (nulle)

d’indépendance des variables (Rakotomalala R., « Dépendances des variables qualitatives »,

version 2.1, avril 2020). Dans ce cas, le contenu du tableau est entièrement défini par ses marges.

En effet, sous H0, la probabilité conjointe est égale au produit des probabilités marginales :

𝑃(𝑌 = 𝑦𝑘 & 𝑋 = 𝑥𝑙 ) = 𝑃(𝑌 = 𝑦𝑘 ) × 𝑃(𝑋 = 𝑥𝑙 )

Le même principe est appliqué aux effectifs :

𝑛𝑘. × 𝑛.𝑙
𝑒𝑘𝑙 =
𝑛

Au tableau des effectifs observés (Figure 98), nous opposons donc le tableau des effectifs sous

l’hypothèse nulle (Figure 109).

CSP\Filière Droit Sciences Médecine IUT Total


Exp.agri 82.1 76.8 112.6 30.5 302
Patron 156.4 146.2 214.4 58.0 575
Cadre.sup 496.3 464.0 680.5 184.2 1825
Employé 127.0 118.7 174.1 47.1 467
Ouvrier 167.2 156.4 229.3 62.1 615
Total 1029 962 1411 382 3784

Figure 109 - Tableau des effectifs sous hypothèse d'indépendance - Données "CSP Filières"

La statistique de test s’écrit comme suit :

Méthodes Factorielles 237


AFC 20
𝐾 𝐿
2 2
(𝑛𝑘𝑙 − 𝑒𝑘𝑙 )2
𝜒 = 𝜒𝑡𝑜𝑡𝑎𝑙 = ∑∑
𝑒𝑘𝑙
𝑘=1 𝑙=1

Sous H0, elle suit une loi du 𝜒 2 à [(𝐾 − 1) × (𝐿 − 1)] degrés de liberté.

Avec Python, nous formons le tableau des effectifs théoriques :

#effectifs totaux
n = numpy.sum(D.values)

#tableau sous indépendance


E = numpy.dot(numpy.reshape(tot_lig,(5,1)),numpy.reshape(tot_col,(1,4)))/n
print(E)

[[ 82.12420719 76.7769556 112.6115222 30.48731501]


[156.36231501 146.18128964 214.40935518 58.04704017]
[496.28039112 463.9667019 680.51664905 184.23625793]
[126.99339323 118.72463002 174.13768499 47.14429175]
[167.23969345 156.35042283 229.32478858 62.08509514]]

Nous pouvons calculer la statistique de test et la probabilité critique :

#statistique du KHI-2
KHI2 = numpy.sum(((D.values-E)**2)/E)
print(KHI2)

320.2658717522244

#degré de liberté
ddl = (E.shape[0]-1)*(E.shape[1]-1)
print(ddl)

12

#librairie scipy pour calcul des CDF


import scipy

#p-value du test
print(1-scipy.stats.chi2.cdf(KHI2,ddl))

0.0

Le test conduit au rejet de l’hypothèse nulle (p-value ≈ 0). Manifestement, les variables CSP

des parents et choix de filières sont fortement liées.

Remarque : On émet souvent des restrictions quant à la validité de ce test : il faut que 80% des

cellules présentent en effectif théorique supérieur ou égal à 5, mais au-delà il faut surtout se

rendre compte que les faibles valeurs de (𝑒𝑘𝑙 ) peut gonfler exagérément la valeur de la

statistique de test ; le test conduit quasi-systématiquement au rejet de l’hypothèse

Méthodes Factorielles 238


AFC 21
d’indépendance quand l’effectif total (n) est élevé, parce que les degrés de liberté ne tiennent

pas compte de (n) justement.

4.1.4.2 Mesures dérivées du KHI-2

On sait que les valeurs de la statistique 𝜒 2 sont bornées par :

0 ≤ 𝜒 2 ≤ 𝑛 × min(𝐾 − 1, 𝐿 − 1)

En pratique, on procède à des normalisations pour disposer d’une mesure qui ne dépend pas des

effectifs :

− Le PHI-2 est le rapport entre le 𝜒 2 et l’effectif total :

𝜒 2 320.3
𝜙2 = = = 0.0846
𝑛 3784
− Le t de Tschuprow qui est une normalisation du 𝜙 2 par les degrés de liberté. Sous certaines

conditions, il varie entre 0 et 1 :

𝜙2 0.0846
𝑡=√ =√ = 0.1563
√(𝐾 − 1)(𝐿 − 1) √(5 − 1)(4 − 1)

− Le v de Cramer, une autre normalisation qui, elle, varie toujours entre 0 et 1 :

𝜙2 0.0846
𝑣=√ =√ = 0.1680
min (𝐾 − 1, 𝐿 − 1) min (5 − 1,4 − 1)

L’indicateur qui nous intéresse au premier chef est le 𝜙 2 dans cette section. Il est égal à l’inertie

totale. Ainsi, l’information disponible dans le tableau, qui était présentée sous la forme d’une

dispersion des modalités autour du profil moyen, peut être également perçue sous l’angle de

l’association entre Y et X.

4.1.4.3 Résidus standardisés et contributions au KHI-2

L’information globale associant les variables lignes et colonnes peut être dispatchée en

informations locales associant les modalités lignes et colonnes. Elles permettent d’approfondir

la nature de la liaison. Parmi les différents indicateurs disponibles, nous nous intéressons au

Méthodes Factorielles 239


AFC 22
résidu standardisé dans ce section. Il est souvent utilisé pour identifier le caractère significatif

de l’écart à l’indépendance d’une case. Il s‘écrit :

𝑛𝑘𝑙 − 𝑒𝑘𝑙
𝑟𝑘𝑙 =
√𝑒𝑘𝑙

Il suit très approximativement une loi normale centrée et réduite. La liaison entre deux modalités

de Y et X s’écarte significativement de l’indépendance lorsque |𝑟𝑘𝑙 | > 1.96 pour un test à 5%.

Mais le résidu standardisé nous intéresse surtout parce qu’il est directement impliqué dans le

calcul de la solution l’analyse factorielle des correspondances (section 4.2), et parce qu’il permet

de décomposer en éléments additifs le 𝜒 2 global, on parle de contributions au 𝜒 2 .

En effet,

𝐾 𝐿
2
∑ ∑ 𝑟𝑘𝑙 = 𝜒2
𝑘=1 𝑙=1

Et la contribution au 𝜒 2 correspond à la fraction d’information portée par chaque case du tableau

de contingence,

2
𝑟𝑘𝑙
𝑐𝑘𝑙 = 2
𝜒

Pour les données « CSP Filières », voici le tableau des résidus standardisés (Figure 110) :

CSP\Filière Droit Sciences Médecine IUT


Exp.agri -0.23 2.54 -4.49 4.98
Patron 0.93 -0.76 -0.44 0.52
Cadre.sup -1.18 -2.97 7.49 -7.75
Employé 1.60 1.31 -2.97 1.00
Ouvrier -0.10 2.93 -6.76 8.49

Figure 110 - Tableau des résidus standardisés - Données "CSP Filières"

Premier commentaire important, le résidu standardisé est signé. Nous observons une attraction

entre les modalités lorsque (𝑟𝑘𝑙 > 0), une répulsion dans le cas inverse (𝑟𝑘𝑙 < 0).

Méthodes Factorielles 240


AFC 23
Dans le cas des données « CSP Filières », nous observons notamment des attractions fortes –

que nous avions confusément pressentis lors de l’étude des profils lignes et colonnes – entre

(IUT & Ouvrier), (Médecine & Cadres.Sup) ; des répulsions tout aussi radicales entre (IUT &

Cadres.Sup), (Ouvrier & Médecine).

Les contributions au 𝜒 2 ne sont pas signés. Elles permettent de hiérarchiser les couples de

modalités selon leur importance dans le tableau de contingence. Elles s’additionnent en ligne et

en colonne pour identifier les modalités porteuses d’information. Nous les avons exprimées en

pourcentages (Figure 111).

CSP\Filière Droit Sciences Médecine IUT Total


Exp.agri 0.02% 2.01% 6.29% 7.75% 16.06%
Patron 0.27% 0.18% 0.06% 0.08% 0.59%
Cadre.sup 0.43% 2.75% 17.53% 18.77% 39.49%
Employé 0.80% 0.54% 2.75% 0.31% 4.39%
Ouvrier 0.00% 2.68% 14.26% 22.52% 39.46%
Total 1.52% 8.16% 40.88% 49.44%

Figure 111 – Tableau des contributions – Données « CSP – Filières »

Les contributions sont forcément en adéquation avec les résidus standardisés. Mais nous

observons de surcroit que les modalités les plus contributives en ligne sont « Cadres.Sup » et

« Ouvrier », pour 78.95% ; en colonne, ce sont « Médecine » et « IUT » pour 90.32%.

4.1.4.4 Indice d’attraction et répulsion – Test du rapport de vraisemblance

L’indice d’attraction-répulsion est un autre indicateur qui permet d’approfondir la nature des

relations entre les modalités lignes et colonnes du tableau. Il est défini par le ratio :

𝑃(𝑌 = 𝑦𝑘 & 𝑋 = 𝑥𝑙 )
𝑃(𝑌 = 𝑦𝑘 ) × 𝑃(𝑋 = 𝑥𝑙 )

En pratique, nous le calculons par le rapport entre les effectifs observés et théoriques :

𝑜𝑘𝑙
𝑖𝑘𝑙 =
𝑒𝑘𝑙

Si l’indice est supérieur à 1, nous avons une attraction ; s’il est inférieur, nous avons une

répulsion entre les modalités.

Méthodes Factorielles 241


AFC 24
Il est sous-jacent à la statistique du rapport de vraisemblance permettant d’éprouver la réalité

de l’association entre les variables en ligne et colonne du tableau de contingence :

𝐾 𝐿

𝐺 = 2 ∑ ∑ 𝑛𝑘𝑙 × ln(𝑖𝑘𝑙 )
𝑘=1 𝑙=1

Laquelle suit une loi du 𝜒 2 à [(K-1)(L-1)] degrés de liberté sous l’hypothèse d’indépendance.

Voici le tableau des indices pour les données « CSP Filières » (Figure 112) :

Figure 112 - Tableau des indices d'attractions et répulsions - Données "CSP Filières"

Les informations sont de même nature et cohérentes avec le tableau des résidus standardisés.

Le calcul de la statistique de test ne présente aucune difficulté sous Python. Les résultats sont

très proches de la statistique du 𝜒 2 de Pearson.

#tableau des indices d'attraction et répulsion


IAR = D.values/E

#stat. de test du rapport de vraisemblance


G = 2*numpy.sum(D.values*numpy.log(IAR))
print(G)

321.96365868622877

#degrés de liberté (4 x 3)
print(ddl)

12

#p-value du test du rapport de vraisemblance


print(1-scipy.stats.chi2.cdf(G,ddl))

0.0

Remarque 1 : En réalité, la statistique de Pearson est une approximation pratique du rapport de

vraisemblance, mise en avant du temps où les opérations à l’aide des tables de logarithmes ou

Méthodes Factorielles 242


AFC 25
des règles à calcul étaient malaisés. Finalement, la première s’est imposée auprès des praticiens,

même aujourd’hui, alors que les ordinateurs sont légion.

Remarque 2 : L’intérêt de l’indice d’attraction-répulsion par rapport au résidu standardisé peut

paraître très relatif. Les deux indicateurs sont le fruit de la confrontation entre les probabilités

conjointes et les produits des probabilités marginales. Ils produisent des résultats aux lectures

comparables. Son utilité sera plus évidente lorsque nous étudierons la reconstitution du tableau

des indices à partir des coordonnées factorielles des modalités lignes et colonnes (section

4.1.4.6). L’indice est en relation directe avec les positions relatives et par rapport à l’origine des

modalités dans le repère factoriel.

4.1.4.5 Représentation simultanée des profils – Relation de transition

3 points de vue pour la même analyse. L’analyse factorielle des correspondances permet de

positionner les modalités lignes dans un repère factoriel. Il en est de même pour les modalités

colonne. Nous avons vu aussi que les facteurs (𝐹ℎ , 𝐺ℎ ) avaient le même pouvoir de

représentation. Nous irons plus loin dans cette section en affirmant qu’il s’agit en réalité des

mêmes facteurs et qu’il est possible de projeter les modalités lignes et colonnes dans le même

repère. Les proximités donnent alors des indications sur l’étude des attractions et répulsions,

qui constitue le 3ème prisme de l’analyse du tableau de contingence.

Relation quasi-barycentrique entre les coordonnées factorielles. Les coordonnées

factorielles des modalités lignes et colonnes sont liées par les relations de transition dites quasi-

barycentriques. En effet, sur un facteur (𝐹ℎ ) quelconque, il est possible d’obtenir les

coordonnées des modalités lignes (𝐹𝑘ℎ ) à partir des modalités colonnes (𝐺𝑙ℎ ) avec :

𝐿
1 𝑛𝑘𝑙
𝐹𝑘ℎ = ∑ × 𝐺𝑙ℎ
√𝜆ℎ 𝑛𝑘.
𝑙=1

Et inversement :

𝐾
1 𝑛𝑘𝑙
𝐺𝑙ℎ = ∑ × 𝐹𝑘ℎ
√𝜆ℎ 𝑘=1 𝑛.𝑙

Méthodes Factorielles 243


AFC 26
La coordonnée d’un point modalité ligne (resp. colonne) est obtenue par la moyenne pondérée

- par son profil - des coordonnées de l’ensemble des modalités colonne (resp. ligne), déflaté par

la racine de la valeur propre c.-à-d. de la variance restituée par le facteur.

Exemple. Prenons un exemple pour le 1er facteur (F1) où (𝜆1 = 0.08239), le profil – ligne – de

choix de filières des enfants d’ouvrier (5ème modalité ligne) est (Figure 100) :

𝑜𝑢𝑣𝑟𝑖𝑒𝑟 = (0.270, 0.314, 0.207, 0.210)

Les coordonnées des modalités colonnes (𝐺1 ), les filières, sur ce 1er facteur est (Figure 108) :

𝐺1 = (0.02799, 0.16046, −0.30313, 0.64017)

La position de la modalité « Ouvrier » sur ce premier facteur est donc égal à :

1
𝐹51 = (0.270 × 0.02799 + 0.314 × 0.16046 + ⋯ ) = 0.45148
√0.08239

Nous retrouvons bien cette coordonnée des « Ouvrier » sur le 1er facteur de la carte des

modalités lignes (Figure 105).

Proximités entre les modalités lignes et colonnes. Ainsi, le rapprochement des coordonnées

des modalités lignes et colonnes est licite grâce à la relation quasi-barycentrique. Attention

néanmoins, proximité ne veut pas dire automatiquement association. L’appréciation ne peut se

faire que globalement c.-à-d. une modalité ligne doit être située par rapport à l’ensemble des

modalités colonnes, et inversement.

Nous représentons les modalités lignes et colonnes sur le 1er facteur pour approfondir ces idées

de positionnement global et de rapprochement (Figure 113).

Figure 113 - Positions des modalités lignes et colonnes sur le 1er facteur - Données "CSP Filières"

Méthodes Factorielles 244


AFC 27
Voyons deux exemples :

1. (IUT, Ouvrier) sont proches sur le 1er facteur. Est-ce à dire que les enfants d’ouvriers

sont attirés par les IUT ? Réponse OUI. Parce que le point IUT est éloigné de l’ensemble

modalités lignes sauf de « Ouvrier » (et « Exp.Agricole » aussi d’ailleurs). Conclure à une

attraction est valable.

2. (Droit, Patron) sont proches sur le 1er facteur. Peut-on dire que les enfants de « Patron »

sont attirés préférentiellement par le « Droit » ? Réponse NON. Parce que « Patron »

est positionné quasiment au milieu de l’ensemble des filières. En réalité, ils (les enfants

de « Patron ») ne sont attirés par aucune filière en particulier.

Et surtout, ces conclusions sont confirmées par le tableau des indices d’attraction-répulsion

(Figure 112) – ou à défaut, le tableau des contributions au 𝜒 2 - que l’on devrait toujours avoir

sous la main quand on se lance dans l’interprétation des plans factoriels en AFC.

Représentation dans le plan. Forts de ces précautions, nous représentons les modalités lignes

et colonnes des données « CSP Filières » dans le premier plan factoriel (Figure 114). J’ai cerclé à

la main les attractions fortes (supérieures à 1.2 pour cet exemple).

#représentation simultanée
fig, ax = plt.subplots(figsize=(10,10))
ax.axis([-0.7,+0.7,-0.7,+0.7])
ax.plot([-0.7,+0.7],[0,0],color='silver',linestyle='--')
ax.plot([0,0],[-0.7,+0.7],color='silver',linestyle='--')
ax.set_xlabel("Dim.1")
ax.set_ylabel("Dim.2")
plt.title("Carte des modalités lignes et colonnes")

#modalités ligne
for i in range(D.shape[0]):
ax.text(afc.row_coord_[i,0],afc.row_coord_[i,1],D.index[i],color='blue')

#modalités colonne
for i in range(D.shape[1]):
ax.text(afc.col_coord_[i,0],afc.col_coord_[i,1],D.columns[i],color='green')

plt.show()

Méthodes Factorielles 245


AFC 28
Figure 114 - Représentation simultanée dans le plan - Données "CSP Filières"

4.1.4.6 Restitution des indices d’attraction et répulsion

Comme en ACP où il est possible de reconstituer approximativement les données originelles à

partir des coordonnées factorielles des individus (section 1.4), nous pouvons approcher le tableau

des indices d’attraction-répulsion (𝑖𝑘𝑙 ) à partir des coordonnées factorielles des modalités lignes

et colonnes. La formule s’écrit comme suit si l’on prend en compte les H premiers facteurs :

𝐻
(𝐻) 𝐹𝑘ℎ × 𝐺𝑙ℎ
𝑖̂𝑘𝑙 =1+∑
ℎ=1
√𝜆ℎ

Méthodes Factorielles 246


AFC 29
L’initiative de représenter les points lignes et colonnes dans le même repère s’en retrouve

renforcée. En effet, nous lisons avec cette formule :

a. 2 modalités s’attirent (resp. se repoussent) si leurs coordonnées sont de même signe (resp.

de signe contraire) sur les axes factoriels.

b. Le trait est d’autant plus marqué que les valeurs des coordonnées sont élevées (en valeur

absolue) c.-à-d. que les points sont situés aux extrémités des facteurs.

c. Lesquelles coordonnées doivent être relativisées par le pouvoir de restitution du facteur (𝜆ℎ ).

A l’instar de l’ACP, la reconstitution du tableau des indices est parfaite si nous utilisons tous les

facteurs disponible [𝐻𝑚𝑎𝑥 = min (𝐾 − 1, 𝐿 − 1)].

Exemple. Pour les données « CSP Filières », si l’on s’en tient au 1er facteur qui capte déjà 97.4%

de l’information disponible, nous calculons les indices d’attraction-répulsion estimés, et nous

effectuons le parallèle avec le tableau initial. Nous constatons que l’approximation est déjà de

très bonne tenue parce que le pouvoir de représentation du facteur est très bon (Figure 115).

Figure 115 - Indices d'attraction-répulsion observés et reconstitués sur le 1er facteur

Le calcul est aisé sous Python. Nous affichons pour contrôle les indices calculés précédemment

pour le test du rapport de vraisemblance (section 4.1.4.4). Nous affichons ensuite les indices

estimés à l’aide de la formule ci-dessus.

#pour rappel - les indices observés


print(pandas.DataFrame(IAR,index=D.index,columns=D.columns))

Droit Sciences Medecine IUT


CSP_vs_Filiere
ExpAgri 0.974134 1.289449 0.577206 1.902431
Patron 1.074428 0.937192 0.970107 1.068099
CadreSup 0.947045 0.862131 1.287257 0.428797
Employe 1.141792 1.120239 0.775249 1.145420
Ouvrier 0.992587 1.234407 0.553800 2.077793

Méthodes Factorielles 247


AFC 30
#approximation des indices d'attraction-répulsion
estIAR = 1+numpy.dot(numpy.reshape(afc.row_coord_[:,0],(D.shape[0],1)),numpy.resha
pe(afc.col_coord_[:,0],(1,D.shape[1])))/numpy.sqrt(afc.eig_[0][0])
print(pandas.DataFrame(estIAR,index=D.index,columns=D.columns))

Droit Sciences Medecine IUT


CSP_vs_Filiere
ExpAgri 1.039987 1.229261 0.566907 1.914655
Patron 1.001965 1.011265 0.978720 1.044941
CadreSup 0.974385 0.853137 1.277436 0.414078
Employe 1.013854 1.079431 0.849949 1.316895
Ouvrier 1.044020 1.252385 0.523224 2.006911

4.1.4.7 Décomposition orthogonale du KHI-2

2
L’AFC permet de décomposer la quantité totale d’information (𝜒𝑡𝑜𝑡𝑎𝑙 ) en éléments additifs. En
effet, la reconstitution des données peut être étendue aux effectifs originels (𝑛𝑘𝑙 ). Si l’on prend

en compte les H premiers facteurs, l’effectif estimé s’écrit :

(𝐻) 𝑛𝑘. × 𝑛.𝑙 (𝐻)


𝑛̂𝑘𝑙 = × 𝑖̂𝑘𝑙
𝑛
(𝐻) (𝐻)
𝑛̂𝑘𝑙 = 𝑒𝑘𝑙 × 𝑖̂𝑘𝑙

Où (𝑒𝑘𝑙 ) est l’effectif sous l’hypothèse d’indépendance.

Nous pouvons dès lors calculer (1) l’information restituée par les H premiers facteurs…

2
(𝐻)
(𝑛̂𝑘𝑙 − 𝑒𝑘𝑙 )
2
𝜒(𝐻) = ∑∑
𝑒𝑘𝑙
𝑘 𝑙

… et (2) l’information résiduelle sur les derniers facteurs restants :

2
(𝐻)
(𝑛𝑘𝑙 − 𝑛̂𝑘𝑙 )
2
𝜒𝑟𝑒𝑠𝑖𝑑𝑢𝑒𝑙 = ∑∑
𝑒𝑘𝑙
𝑘 𝑙

Ces deux résultats sont liés par la relation suivante :

2 2 2
𝜒𝑡𝑜𝑡𝑎𝑙 = 𝜒(𝐻) + 𝜒𝑟𝑒𝑠𝑖𝑑𝑢𝑒𝑙

On parle de décomposition orthogonale du 𝜒 2.

Méthodes Factorielles 248


AFC 31
Nous montrons le détail des calculs pour les données « CSP Filières » avec (H=1) premier facteur

vs. les deux suivants dans notre support de cours consacré à l’AFC (COURS AFC, page 28). Pour

varier les plaisirs, nous réalisons – sous Python - les manipulations pour (H = 2) premiers

facteurs vs. la dernière dans ce support.

Pour rappel, nous affichons tout d’abord les effectifs (𝑒𝑘𝑙 ) sous H0, les coordonnées factorielles

des modalités lignes (𝐹𝑘ℎ ) et colonnes (𝐺𝑙ℎ ) dans le plan, les valeurs propres (𝜆ℎ ), et enfin la

quantité totale d’information (𝜒𝑡𝑜𝑡𝑎𝑙


2
).

#effectifs sous H0
print(E)

[[ 82.12420719 76.7769556 112.6115222 30.48731501]


[156.36231501 146.18128964 214.40935518 58.04704017]
[496.28039112 463.9667019 680.51664905 184.23625793]
[126.99339323 118.72463002 174.13768499 47.14429175]
[167.23969345 156.35042283 229.32478858 62.08509514]]

#coordonnées des modalités lignes dans le plan


print(pandas.DataFrame(afc.row_coord_[:,:2],index=D.index))

0 1
CSP_vs_Filiere
ExpAgri 0.410115 -0.026253
Patron 0.020151 0.026585
CadreSup -0.262717 -0.015596
Employe 0.142090 0.097326
Ouvrier 0.451481 -0.039588

#coordonnées des modalités colonnes dans le plan


print(pandas.DataFrame(afc.col_coord_[:,:2],index=D.columns))

0 1
Droit 0.027987 0.060669
Sciences 0.160462 0.002734
Medecine -0.303125 -0.029662
IUT 0.640174 -0.060749

#les valeurs propres des 2 premiers facteurs


print(afc.eig_[0][:2])

[0.0823936 0.00170345]

#quantité totale d'information -- KHI2 total


print(KHI2)

320.2658717522244

Plusieurs étapes sont nécessaires pour obtenir les effectifs approchés du tableau de

contingence.

Méthodes Factorielles 249


AFC 32
#produit des coordonnées croisés dans le plan
#axe 1
s1 = numpy.dot(numpy.reshape(afc.row_coord_[:,0],(5,1)),numpy.reshape(afc.col_coor
d_[:,0],(1,4)))/numpy.sqrt(afc.eig_[0][0])
#axe 2
s2 = numpy.dot(numpy.reshape(afc.row_coord_[:,1],(5,1)),numpy.reshape(afc.col_coor
d_[:,1],(1,4)))/numpy.sqrt(afc.eig_[0][1])

#indice d'attraction répulsion dans le plan


IAR_plan = 1+(s1+s2)
print(IAR_plan)

[[1.00139614 1.22752211 0.58577439 1.95329696]


[1.04104396 1.01302582 0.95961396 1.00581056]
[0.95145948 0.85210367 1.28864471 0.43703345]
[1.15691823 1.08587835 0.7800031 1.17364341]
[0.98582719 1.24976275 0.5516749 2.06518005]]

#effectifs estimés dans le plan


est_n_plan = E*IAR_plan
print(est_n_plan)

[[ 82.23886415 94.24541071 65.96494546 59.55077968]


[162.7800432 148.08542057 205.75021025 58.38432598]
[472.19068402 395.34772898 876.94417993 80.51740706]
[146.9209723 128.92050534 135.82793478 55.33058757]
[164.86943632 195.4009344 126.51272957 128.2168997 ]]

Reste à calculer le 𝜒(𝐻)


2
restitué sur ces (H= 2) premiers facteurs…

#KHI2 dans le premier plan factoriel


KHI2plan = numpy.sum((est_n_plan-E)**2/E)
print(KHI2plan)

318.2232419212952

… et le 𝜒𝑟𝑒𝑠𝑖𝑑𝑢𝑒𝑙
2
sur le dernier.

#KHI2 résiduel
KHI2residuel = numpy.sum((D.values-est_n_plan)**2/E)
print(KHI2residuel)

2.0426298309291298

Nous effectuons la somme. Elle correspond bien à la quantité totale d’information véhiculée par

les données.

#addition des deux = KHI2 total


print(KHI2plan+KHI2residuel)

320.2658717522243

Méthodes Factorielles 250


AFC 33
4.2 Organisation des calculs

Mettre les mains dans le cambouis permet toujours de mieux appréhender la teneur des

méthodes. Concernant l’AFC, une solution simple consiste à appliquer un programme d’ACP aux

profils lignes (ou colonnes) en pondérant les modalités par les effectifs marginaux. Dans cette

section, nous préférons mettre en exergue une implémentation qui met en lumière la recherche

des associations entre les modalités lignes et colonnes inhérente à l’AFC.

Soit la matrice M avec :

1
𝑀= 𝑅
√𝑛

Où R est la matrice des résidus standardisés dans ce contexte de l’AFC (section 4.1.4.3).

La solution de l’AFC correspond à la décomposition en valeurs singulières de M :

𝑀 = 𝑈 Δ 𝑉𝑇

Où :

− La matrice U, de dimension (K,K), contient les K vecteurs singuliers à gauche. U est

orthonormée. Ils permettent d’obtenir les coordonnées factorielles des modalités lignes.

− Δ (K, L) est une matrice diagonale dont les éléments correspondent aux valeurs singulières.

− 𝑉 (L, L) contient les vecteurs singuliers à droite. V est orthonormé.

Rappelons que la valeurs singulières (𝛿ℎ ) sont définies comme suit :

𝑀 𝑣ℎ = 𝛿ℎ 𝑢ℎ
{ 𝑇
𝑀 𝑢ℎ = 𝛿ℎ 𝑣ℎ

Nous percevons distinctement la nature croisée de l’analyse. Concrètement, la solution répond

aux caractéristiques suivantes :

− Les dispersions des modalités lignes sont maximales sur les facteurs. Il en est de même pour

les points colonnes.

Méthodes Factorielles 251


AFC 34
− Les dispersions sont identiques pour les modalités lignes et colonnes.

− Les facteurs sont deux à deux orthogonaux.

Reste à retrouver les résultats usuels de l’AFC.

a. La variance restitue par les facteurs, les valeurs propres, correspondent au carré des valeur

singulières, avec (𝜆ℎ ≤ 1) (Lebart et al., 2000, pages 85 et 86)

𝜆ℎ = 𝛿ℎ2

b. Les coordonnées des modalités lignes sont obtenues à partir des vecteurs de U

𝑢𝑘ℎ × 𝛿ℎ
𝐹𝑘ℎ =
𝑛𝑘.

𝑛

c. Les coordonnées des modalités colonnes sont obtenues à partir des vecteurs de V

𝑣𝑙ℎ × 𝛿ℎ
𝐺𝑙ℎ =
𝑛.𝑙

𝑛

Voyons tout cela sous Python. Nous essayons de retrouver à l’identique les résultats de l’objet

« afc » de la librairie « fanalysis » que nous avions instancié plus haut (section 4.1.2.5). Nous

calculons tout d’abord la matrice des résidus standardisés à partir des effectifs observés et

théoriques (sous H0), puis nous formons la matrice M.

#matrice des résidus standardisé


R = (D.values - E)/numpy.sqrt(E)
print(R)

[[-0.23440198 2.53622693 -4.48663409 4.98279921]


[ 0.93068037 -0.75937762 -0.43771605 0.5188387 ]
[-1.179691 -2.96968614 7.49359811 -7.7531439 ]
[ 1.59786954 1.31013775 -2.96584705 0.99847632]
[-0.09586159 2.93102443 -6.75702234 8.49237551]]

#matrice M
M = R/numpy.sqrt(n)
print(M)

[[-0.00381053 0.04122993 -0.07293653 0.08100239]


[ 0.01512951 -0.01234475 -0.00711569 0.00843445]
[-0.01917753 -0.04827641 0.12181894 -0.12603823]

Méthodes Factorielles 252


AFC 35
[ 0.02597561 0.02129813 -0.048214 0.01623163]
[-0.00155836 0.04764791 -0.10984487 0.13805547]]

Nous faisons ensuite appel à la fonction svd() de la librairie « Numpy » pour effectuer la

décomposition en valeurs singulières.

Valeurs propres. Nous affichons les valeurs singulières.

#décomposition en valeurs singulières


sol = numpy.linalg.svd(M)

#valeurs singulières
print(sol[1])

[2.87042858e-01 4.12728563e-02 2.32337478e-02 1.31134238e-17]

Seules les 3 premières valeurs sont non-nulles, conformément à ce qui est attendu [le nombre

maximal de facteurs est égal à min(K-1, L-1) = min(5-1,4-1) = 3].

Nous les passons au carré et nous les comparons aux valeurs propres fournies par l’objet « afc »

de la librairie « fanalysis ». Nous retrouvons les bons résultats.

#passés au carré
numpy.set_printoptions(suppress=True)
print(sol[1]**2)

[0.0823936 0.00170345 0.00053981 0. ]

#valeurs propres de l'objet fanalysis


print(afc.eig_[0])

[0.0823936 0.00170345 0.00053981]

Coordonnées des modalités lignes. Passons maintenant aux vecteurs singuliers à gauche.

#vecteurs singuliers à gauche - les facteurs en colonne


print(sol[0])

[[ 0.40363357 -0.17969877 0.46550401 -0.75304822 -0.14495751]


[ 0.02736552 0.25109394 -0.78656052 -0.55264881 0.11002184]
[-0.63561972 -0.2624212 0.18528807 -0.28686474 0.64070246]
[ 0.17390042 0.82841073 0.32118986 0.01236585 0.42447434]
[ 0.63409564 -0.38669233 -0.1647239 0.21225781 0.61335504]]

Nous appliquons la formule pour produire les coordonnées factorielles des CSP, que nous

confrontons avec ceux de « afc ».

#coordonnées sur les 3 premiers facteurs


F = numpy.apply_along_axis(arr=sol[0][:,:3]*sol[1][:3],axis=0,func1d=lambda x:x/nu

Méthodes Factorielles 253


AFC 36
mpy.sqrt(poidsLig))
print(pandas.DataFrame(F,index=D.index))

0 1 2
CSP_vs_Filiere
ExpAgri 0.410115 -0.026253 0.038284
Patron 0.020151 0.026585 -0.046881
CadreSup -0.262717 -0.015596 0.006199
Employe 0.142090 0.097326 0.021242
Ouvrier 0.451481 -0.039588 -0.009493

#coordonnées des modalités lignes -- objet "afc"


print(pandas.DataFrame(afc.row_coord_,index=D.index))

0 1 2
CSP_vs_Filiere
ExpAgri 0.410115 -0.026253 0.038284
Patron 0.020151 0.026585 -0.046881
CadreSup -0.262717 -0.015596 0.006199
Employe 0.142090 0.097326 0.021242
Ouvrier 0.451481 -0.039588 -0.009493

Coordonnées des modalités colonnes. La matrice des vecteurs singuliers à droite est le dernier

résultat à exploiter.

#vecteurs singuliers à droite - les facteurs en ligne


print(sol[2])

[[ 0.05084468 0.28186205 -0.64485656 0.70861035]


[ 0.76654132 0.03340234 -0.43885508 -0.46765896]
[-0.37134184 0.81560391 -0.13667626 -0.4221553 ]
[ 0.52147336 0.5042106 0.61064379 0.31772846]]

Nous appliquons la formule pour obtenir les coordonnées des « Filières ». Encore une fois, nous

comparons les résultats avec ceux de « afc ».

#calcul des coordonnées sur les 3 premiers facteurs


G = numpy.apply_along_axis(arr=numpy.transpose(sol[2][:3,:])*sol[1][:3],axis=0,fun
c1d=lambda x:x/numpy.sqrt(poidsCol))
print(pandas.DataFrame(G,index=D.columns))

0 1 2
Droit 0.027987 0.060669 -0.016545
Sciences 0.160462 0.002734 0.037583
Medecine -0.303125 -0.029662 -0.005200
IUT 0.640174 -0.060749 -0.030870

#coordonnées des modalités colonnes -- objet "afc"


print(pandas.DataFrame(afc.col_coord_,index=D.columns))

0 1 2
Droit 0.027987 0.060669 -0.016545
Sciences 0.160462 0.002734 0.037583
Medecine -0.303125 -0.029662 -0.005200
IUT 0.640174 -0.060749 -0.030870

Méthodes Factorielles 254


AFC 37
Nous le constatons avec cet exemple, il est très facile d’implémenter l’AFC avec une bonne

bibliothèque de calcul matriciel. Pour ma part, je m’étais beaucoup appuyé sur l’excellente

librairie TPMATH de Jean Debord pour la programmation de la méthode dans TANAGRA.

4.3 Pratique de l’AFC avec « fanalysis » sous Python

Dans cette section, nous déroulons l’analyse complète en mettant en avant les fonctionnalités

du package « fanalysis », les outils d’aides à l’interprétation qui permettent de mieux

comprendre les résultats numériques fournis par l’AFC, la possibilité de projeter une ligne ou

colonne supplémentaire dans le repère factoriel. Pour plus de clarté, nous recommençons

entièrement le processus à partir de l’importation des données.

#chargement - index_col = 0 pour indiquer que la colonne n°0 est un label


import pandas
D = pandas.read_excel("Data_Methodes_Factorielles.xlsx",sheet_name="AFC_ETUDES",in
dex_col=0)

#affichage des données


print(D)

Droit Sciences Medecine IUT


CSP_vs_Filiere
ExpAgri 80 99 65 58
Patron 168 137 208 62
CadreSup 470 400 876 79
Employe 145 133 135 54
Ouvrier 166 193 127 129

#nombre de modalités ligne


K = D.shape[0]

#nombre de modalités colonnes


L = D.shape[1]

#numpy
import numpy

#effectif total
n = numpy.sum(D.values)
print(n)

3784

#nombre max. de facteur


Hmax = numpy.min([K-1,L-1])
print(Hmax)

Le nombre maximal de facteurs est égal à Hmax = min(K – 1, L – 1) = 3.

Méthodes Factorielles 255


AFC 38
Pour lancer les calculs, nous importons la classe « CA » de « fanalysis », nous l’instancions et

nous passons le tableau à traiter à la méthode fit(). Nous affichons les propriétés de l’objet.

#importation de la librairie
from fanalysis.ca import CA

#lancer les calculs


afc = CA(row_labels=D.index,col_labels=D.columns)
afc.fit(D.values)

CA(col_labels=Index(['Droit', 'Sciences', 'Medecine', 'IUT'], dtype='object'),


n_components=None, row_labels=Index(['ExpAgri', 'Patron', 'CadreSup', 'Employe'
, 'Ouvrier'], dtype='object', name='CSP_vs_Filiere'), stats=True)

#propriétés de l'objet
print(dir(afc))

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format


__', '__ge__', '__getattribute__', '__getstate__', '__gt__', '__hash__', '__init__
', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__
reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setstate__', '__sizeof__
', '__str__', '__subclasshook__', '__weakref__', '_compute_stats', '_compute_svd',
'_get_param_names', '_get_tags', '_more_tags', 'c_', 'col_contrib_', 'col_coord_',
'col_cos2_', 'col_labels', 'col_labels_', 'col_labels_short_', 'col_topandas', 'ei
g_', 'fit', 'fit_transform', 'get_params', 'mapping', 'mapping_col', 'mapping_row'
, 'model_', 'n_', 'n_components', 'n_components_', 'plot_col_contrib', 'plot_col_c
os2', 'plot_eigenvalues', 'plot_row_contrib', 'plot_row_cos2', 'r_', 'row_contrib_
', 'row_coord_', 'row_cos2_', 'row_labels', 'row_labels_', 'row_topandas', 'set_pa
rams', 'stats', 'transform']

4.3.1 Détermination du nombre de facteurs

Les valeurs propres sont fournies de 3 manières par « fanalysis » : les valeurs brutes, en

pourcentages, et en pourcentages cumulés.

#affichage des valeurs propres


print(afc.eig_)

[[8.23936026e-02 1.70344867e-03 5.39807038e-04]


[9.73495522e+01 2.01265584e+00 6.37791913e-01]
[9.73495522e+01 9.93622081e+01 1.00000000e+02]]

Règle de Kaiser. La règle de Kaiser est une approche simple pour identifier le nombre de

facteurs pertinents. Elle peut s’appliquer sur les valeurs propres brutes, dans ce cas le seuil

d’acceptation serait la moyenne des valeurs observées. Pour notre exemple « CSP Filières », il

est égal à :

#seuil -- moyenne des valeurs propres


meanValPropre = numpy.mean(afc.eig_[0])
print(meanValPropre)

Méthodes Factorielles 256


AFC 39
0.028212286095157187

La règle d’acceptation peut aussi s’appliquer aux pourcentages de variance restituée. Le seuil
1
devient ( × 100), soit :
𝐻𝑚𝑎𝑥

#ou seuil sur les pourcentages


print(1/Hmax * 100)

33.333333333

Ces deux approches sont totalement équivalentes. Seul le 1er facteur serait pertinent pour

décrire nos données « CSP Filières ». Nous en conserverons 2 quand-même ne serait-ce que

pour pouvoir réaliser les représentations graphiques.

Scree plot. L’éboulis des valeurs propres est de mise également en analyse factorielle des

correspondances, avec la fameuse règle du coude.

#affichage graphique des v.p.


afc.plot_eigenvalues()

Pour notre exemple, le graphique n’est pas des plus déterminants au regard du faible nombre

total de facteurs (Hmax = 3) et l’écrasante influence du 1er.

Test statistique. Dans Saporta (2006, page 209) est décrit un test statistique pour tester la

significativité des (q) derniers facteurs. Malheureusement (TUTO 15, section 3.4.2), surtout si

nous travaillons sur des effectifs un tant soit peu élevés, il tend à sélectionner trop d’axes

factoriels. Finalement, les méthodes empiriques restent les plus utilisés en pratique.

Méthodes Factorielles 257


AFC 40
4.3.2 Coordonnées factorielles et aides à l’interprétation

Les informations sur les modalités lignes peuvent être regroupés dans une structure commune.

#informations sur les modalités lignes


print(afc.row_topandas())

row_coord_dim1 row_coord_dim2 row_coord_dim3 \


CSP_vs_Filiere
ExpAgri 0.410115 -0.026253 0.038284
Patron 0.020151 0.026585 -0.046881
CadreSup -0.262717 -0.015596 0.006199
Employe 0.142090 0.097326 0.021242
Ouvrier 0.451481 -0.039588 -0.009493

row_contrib_dim1 row_contrib_dim2 row_contrib_dim3 \


CSP_vs_Filiere
ExpAgri 16.292006 3.229165 21.669399
Patron 0.074887 6.304816 61.867745
CadreSup 40.401242 6.886489 3.433167
Employe 3.024136 68.626434 10.316292
Ouvrier 40.207729 14.953096 2.713396

row_cos2_dim1 row_cos2_dim2 row_cos2_dim3


CSP_vs_Filiere
ExpAgri 0.987350 0.004046 0.008604
Patron 0.122652 0.213489 0.663859
CadreSup 0.995936 0.003510 0.000554
Employe 0.670459 0.314556 0.014984
Ouvrier 0.991935 0.007627 0.000439

Coordonnées des points lignes. Nous savons comment ils sont calculés (section 4.2).

Contributions des modalités lignes aux facteurs – CTR. Elles qualifient l’influence relative

des modalités dans la définition des axes factoriels. La contribution d’une modalité correspond

à la fraction d’information qu’elle porte dans la variance restituée par le facteur (𝜆ℎ ).

Concrètement, pour la CTR de la modalité (k) sur le facteur (h) :

𝑛𝑘. 2 𝑛𝑘. 2
𝐹𝑘ℎ
𝐶𝑇𝑅ℎ (𝑘) = 𝑛 = 𝑛 𝐹𝑘ℎ
𝑛𝑘. 2 𝜆ℎ
∑𝐾
𝑘=1 𝑛 𝐹𝑘ℎ

Les contributions des modalités sur un facteur s’additionnent. La somme intra-facteur de

l’ensemble des modalités est égale à 100% (si on raisonne en pourcentages).

Pour notre exemple, nous constatons que les modalités « Cadres.Sup » et « Ouvrier » sont les

plus déterminantes sur le 1er facteur, avec des rôles opposés puisqu’elles sont situées de part et

Méthodes Factorielles 258


AFC 41
d’autre de l’origine. Pour le 2nd, « Employe » est important, mais n’oublions pas que ce facteur

ne restitue que 2.01% de l’information disponible. Le résultat doit être fortement relativisé.

Pour réaliser les calculs sous Python, il nous faut tout d’abord produire le profil marginal des
𝑛𝑘.
modalités lignes ( ) puis appliquer la formule. Nous retrouvons les valeurs de l’objet « afc ».
𝑛

#profil marginal des modalités lignes


profMargLig = numpy.sum(D.values,axis=1)/n
print(profMargLig)

[0.07980973 0.1519556 0.48229387 0.12341438 0.16252643]

#contributions
contribLig = (numpy.reshape(profMargLig,(5,1))*afc.row_coord_**2)/afc.eig_[0]*100
print(contribLig)

[[16.2920062 3.22916478 21.66939863]


[ 0.07488716 6.30481646 61.86774549]
[40.40124242 6.88648879 3.43316701]
[ 3.02413561 68.62643393 10.31629239]
[40.20772861 14.95309604 2.71339648]]

Qualité de la représentation – Les COS2. Les COS2 indiquent la qualité de représentation

individuelle et cumulée des points modalités sur les H premiers facteurs. Il représente

l’information de la modalité rapportée par le ou les facteurs concernés. Il a le même numérateur

que la CTR, mais normalisée cette fois-ci par l’inertie totale de la modalité (section 4.1.2.4). Il

peut être éventuellement exprimé en pourcentages. La somme inter-facteur des COS2 d’une

modalité sur l’ensemble des axes est égale à 100%. Pour le facteur n°h, le COS2 s’écrit :

𝑛𝑘. 2
𝐹𝑘ℎ 2
𝐹𝑘ℎ
2 (𝑘)
𝐶𝑂𝑆ℎ =𝑛 𝑛 = 2
𝑘. 2 (𝑘)
𝑑 𝑑 (𝑘)
𝑛

La formule est en réalité simplifiée, elle revient à relativiser le carré de la coordonnée par la

distance à l’origine (section 4.1.2.3).

Le COS2 est important pour l’appréciation des proximités entre les modalités homologues (soit

lignes, soit colonnes). Lorsque deux modalités de la même variable sont proches et bien

représentées (COS2 élevé), nous pouvons conclure à une similarité des profils. Si elles sont

éloignées au contraire, on peut penser qu’ils sont dissemblables. Concernant notre exemple,

« Ouvrier », « Cadres.Sup » et « Exp.Agri » sont très bien représentées sur le 1er facteur. Leur

Méthodes Factorielles 259


AFC 42
positionnement (Figure 105) donne une indication assez précise sur les similitudes et disparités

entre les profils (Figure 101, et Figure 102 pour le calcul des distances entre profils).

Le cas de « Exp.Agri » attire notre attention car il nous éclaire sur la différence de nature entre

COS2 et CTR. La modalité est très bien représentée (COS2 élevé) parce qu’elle est quasiment

située sur l’axe F1 (coordonnée sur F2 proche de 0) ; mais sa contribution (CTR) est moindre, par

rapport à « Ouvrier » notamment, parce que son poids relatif est nettement moindre.

Pour reproduire les COS2 de l’objet « afc » sous Python, nous calculons donc tout d’abord les

distances à l’origine puis nous appliquons la formule.

#distance à l'origine - distance du KHI2


distoLig = numpy.sum(afc.row_coord_**2,axis=1)
print(distoLig)

[0.17034955 0.00331062 0.0693019 0.03011317 0.2054925 ]

#cos2 des lignes


cos2Lig = afc.row_coord_**2/numpy.reshape(distoLig,(5,1))*100
print(cos2Lig)

[[9.87350266e+01 4.04596803e-01 8.60376599e-01]


[1.22651866e+01 2.13488665e+01 6.63859469e+01]
[9.95935831e+01 3.50970036e-01 5.54468168e-02]
[6.70459405e+01 3.14556176e+01 1.49844193e+00]
[9.91934675e+01 7.62676235e-01 4.38562850e-02]]

Informations sur les modalités colonnes. Le principe et les indicateurs sont les mêmes pour

les modalités colonnes.

#statistiques pour les points colonnes


print(afc.col_topandas())

col_coord_dim1 col_coord_dim2 col_coord_dim3 col_contrib_dim1 \


Droit 0.027987 0.060669 -0.016545 0.258518
Sciences 0.160462 0.002734 0.037583 7.944621
Medecine -0.303125 -0.029662 -0.005200 41.583998
IUT 0.640174 -0.060749 -0.030870 50.212862

col_contrib_dim2 col_contrib_dim3 col_cos2_dim1 col_cos2_dim2 \


Droit 58.758560 13.789476 0.165328 0.776896
Sciences 0.111572 66.520974 0.947735 0.000275
Medecine 19.259378 1.868040 0.990227 0.009482
IUT 21.870490 17.821510 0.988797 0.008904

col_cos2_dim3
Droit 0.057776
Sciences 0.051990
Medecine 0.000291
IUT 0.002299

Méthodes Factorielles 260


AFC 43
4.3.3 Représentation simultanée

Nous représentons les modalités lignes et colonnes dans le premier plan factoriel. L’instruction

tient en une ligne de commande avec « fanalysis ».

#représentation simultanée
afc.mapping(num_x_axis=1,num_y_axis=2,figsize=(7,7))

Figure 116 - Représentation simultanée "fanalysis" - AFC - Données "CSP Filières"

Attention. L’outil graphique ajuste automatiquement les échelles en abscise et ordonnées. Les

indications sur les parts d’inerties restituées sur les axes sont fondamentales pour une bonne

lecture des positions relatives et des proximités entres modalités lignes et colonnes, lesquelles

doivent toujours s’apprécier globalement rappelons-le.

Tableau des contributions et/ou des indices d’attraction-répulsion. La librairie

« fanalysis » ne les propose pas mais, je le répète encore une fois, la lecture des résultats d’une

AFC lorsqu’on se lance dans l’étude des associations entre modalités lignes et colonnes est

périlleuse. Elle doit être accompagnée par, au choix : le tableau des résidus standardisés, celui

des contributions au 𝜒 2, ou celui des indices d’attraction-répulsion. En effet, les proximités sont

parfois trompeuses en AFC, guider notre interprétation par les données sous-jacentes aux

représentations est un garde-fou forcément salutaire.

Méthodes Factorielles 261


AFC 44
4.3.4 Traitement des lignes-colonnes supplémentaires

Coordonnées. Même s’il est moins mis en lumière dans la littérature, le mécanisme des

modalités supplémentaires existe pour l’analyse factorielle des correspondances. Il permet déjà

de prendre en compte les profils atypiques qu’on a dû écarter de la construction des facteurs

parce qu’ils risquaient de fausser les calculs. Il permet aussi de situer les modalités particulières,

de nature différente, ou dont on ne maîtrise pas très bien le statut.

Dans cette section, nous essayons de situer les choix de filières des enfants de « Bourgeois ».

Nous sommes d’accord, « Bourgeois » n’est pas une CSP. Il s’agirait d’une catégorie sociale aux

contours assez flous, mais qu’on identifie quand-même assez bien lorsque nous les croisons.

L’introduire parmi les modalités actives n’avait pas de sens à cause de sa définition incertaine.

En revanche, après coup, nous pouvons analyser son positionnement par rapport aux autres

catégories (CSP) qui, elles, ont une définition reconnue.

Remarque : Nous décrivons la procédure pour une modalité ligne ici, mais la démarche est très

facilement généralisable aux modalités colonnes supplémentaires.

La modalité supplémentaire « Bourgeois » (choix d’études des enfants de « Bourgeois ») se

présente comme une ligne additionnelle dans le tableau de contingence (Figure 117).

CSP\Filière Droit Sciences Médecine IUT Total


Exp.agri 80 99 65 58 302
Patron 168 137 208 62 575
Cadre.sup 470 400 876 79 1825
Employé 145 133 135 54 467
Ouvrier 166 193 127 129 615
Bourgeois 638 537 1084 141 2400

Figure 117 - Effectifs de la modalité supplémentaire "Bourgeois" - Données "CSP Filières"

Nous utilisons la relation quasi-barycentrique (section 4.1.4.5) pour positionner cette modalité

ligne supplémentaire dans l’espace factoriel. Nous avons besoin pour ce faire de sa description

sous forme de profil ligne (Figure 118)...

Méthodes Factorielles 262


AFC 45
CSP\Filière Droit Sciences Médecine IUT Total
Exp.agri 0.265 0.328 0.215 0.192 1
Patron 0.292 0.238 0.362 0.108 1
Cadre.sup 0.258 0.219 0.480 0.043 1
Employé 0.310 0.285 0.289 0.116 1
Ouvrier 0.270 0.314 0.207 0.210 1
Bourgeois 0.266 0.224 0.452 0.059 1

Figure 118 - Profils lignes, dont celui de la modalité supplémentaire - Données "CSP Filières"

… et des coordonnées factorielles des modalités colonnes (Figure 119).

Lambda.1 Lambda.2
0.0824 0.001703
Values Coord.1 Coord.2
Droit 0.0280 -0.0607
Sciences 0.1605 -0.0027
Médecine -0.3031 0.0297
IUT 0.6402 0.0608

Figure 119 - Coordonnées factorielles (F1, F2) des modalités colonnes - Données "CSP Filières"

La coordonnée de la modalité supplémentaire (yk*) sur le facteur (Fh) est obtenue avec :

𝐿
1 𝑛𝑘 ∗𝑙
𝐹𝑘 ∗ℎ = ∑ × 𝐺𝑙ℎ
√𝜆ℎ 𝑙=1 𝑛𝑘 ∗ .

Par exemple, sur le premier facteur (F1), la coordonnée est égale à :

1
𝐹𝐵𝑜𝑢𝑟𝑔𝑒𝑜𝑖𝑠,1 = (0.266 × 0.0280 + ⋯ + 0.059 × 0.6402) = −0.1949
√0.0824

Sous « fanalysis », l’opération est encapsulée dans la fonction transform(). Nous créons un

vecteur de description de la modalité supplémentaire et nous la passons à la fonction.

#point supplémentaire – vecteur de drerscription


bourgeois = numpy.array([638,537,1084,141])

#coordonnées factorielles (F1, F2, F3)


coordBourges = afc.transform(numpy.reshape(bourgeois,(1,4)))
print(coordBourges)

[[-0.19494662 -0.0054899 -0.0065181 ]]

Nous insérons la modalité « Bourgeois » dans le premier plan factoriel à l’aide de ces

coordonnées (Figure 120).

Méthodes Factorielles 263


AFC 46
#librairie graphique
import matplotlib.pyplot as plt

#reste à l'ajouter dans le plan factoriel


fig, ax = plt.subplots(figsize=(10,10))
ax.axis([-0.7,+0.7,-0.7,+0.7])
ax.plot([-0.7,+0.7],[0,0],color='silver',linestyle='--')
ax.plot([0,0],[-0.7,+0.7],color='silver',linestyle='--')
ax.set_xlabel("Dim.1")
ax.set_ylabel("Dim.2")
plt.title("Modalité ligne supplémentaire")

#modalités ligne
for i in range(D.shape[0]):
ax.text(afc.row_coord_[i,0],afc.row_coord_[i,1],D.index[i],color='red')

#modalités colonne
for i in range(D.shape[1]):
ax.text(afc.col_coord_[i,0],afc.col_coord_[i,1],D.columns[i],color='blue')

#point supplémentaire
ax.text(coordBourges[0][0],coordBourges[0][1],"Bourgeois",color='green')

plt.show()

Figure 120 - Position de la modalité supplémentaire dans le plan factoriel - Données "CSP Filières"

Méthodes Factorielles 264


AFC 47
Que le profil de choix d’études des enfants de bourgeois soient proches de celui des cadres

supérieurs n’est pas fait pour me surprendre j’avoue.

Qualité de représentation – COS2. Calculer la contribution aux facteurs n’a pas de sens pour

une modalité supplémentaire. En revanche, nous pouvons évaluer la qualité de sa représentation

sur les facteurs (individuellement ou cumulés). Nous appliquons la formule de la section 4.3.2 :

le COS2 d’une modalité sur un facteur est défini par le rapport entre le carré de sa coordonnée

et sa distance (au carré) à l’origine (au profil marginal).

Sous Python, nous calculons le profil marginal (moyen), puis le profil des « Bourgeois », pour

produire la distance à l’origine. Il reste à appliquer la définition du COS2. Attention, comme la

modalité n’a pas participer à la construction des facteurs, la somme inter-facteur des COS2 n’est

pas forcément égale à 1 (ou 100% si on travaille en pourcentages).

#profil marginal des modalités colonnes


profMargCol = numpy.sum(D.values,axis=0)/n
print(profMargCol)

[0.27193446 0.25422833 0.37288584 0.10095137]

#profil des bourgeois


profBourges = bourgeois/numpy.sum(bourgeois)

#distance à l'origine de la modalité supplémentaire


distoBourges = numpy.sum(1/profMargCol*(profBourges-profMargCol)**2)
print(distoBourges)

0.03807680914376361

#COS2 de la représentation
cos2Bourges = (coordBourges**2)/distoBourges
print(cos2Bourges)

[[9.98092681e-01 7.91530897e-04 1.11578809e-03]]

#soit pour récapituler


print(pandas.DataFrame(numpy.transpose([coordBourges[0],cos2Bourges[0]]),index=['D
im.1','Dim.2','Dim.3'],columns=['Coord','Cos2']))

Coord Cos2
Dim.1 -0.194947 0.998093
Dim.2 -0.005490 0.000792
Dim.3 -0.006518 0.001116

La modalité « Bourgeois » est très bien représentée sur le 1er facteur. On pouvait le deviner

d’emblée dans le graphique précédent (Figure 120), la modalité est quasiment située sur l’axe.

Méthodes Factorielles 265


AFC 48
4.4 Quelques formes caractéristiques

Les nuages de points modalités peuvent présenter des formes caractéristiques qu’il faut savoir

reconnaître en AFC parce qu’elles correspondent à des configurations particulières du tableau

de contingence (Lebart et al., 2000, pages 92 à 94 ; Tenenhaus, 2007, pages 241 à 248).

− Deux blocs distincts dans le tableau après réorganisation selon la position des modalités

sur le premier facteur. Les points modalité sont disposés en 2 groupes. Il est peut-être

nécessaire de scinder les données en deux parties pour mener des analyses distinctes.

− Des blocs distincts dans le tableau (après réorganisation). L’idée d’analyses distinctes

reste de mise.

− Diagonale chargée (après réorganisation). La forme parabolique du nuage est

caractéristique de que ce qu’on appelle « Effet Guttman ». Il y a une relation non-linéaire

entre les facteurs.

Méthodes Factorielles 266


AFC 49
Ce type de configuration survient surtout lorsqu’il y a un ordonnancement sous-jacent aux

modalités lignes et/ou colonnes. Nous l’avions étudié en détail dans un tutoriel (TUTO 12) où

nous mettions en relation le niveau d’études (variable en ligne) de personnes et le type

d’emploi (colonne) qu’ils occupent. Il y avait clairement un ordre sur les modalités de la

première variable qui correspondent simplement au nombre d’années d’études. Il est moins

évident pour la seconde. Mais on peut imaginer que les différents types d’emploi requièrent

une qualification en lien avec les études. Les positions des points-modalités dans le premier

plan factoriel sont très caractéristiques de l’effet Guttman (Figure 121).

F1 horizontal et F2 vertical
1.45

0.95 Prof_school
Doctorate
Preschool
1st_4th 5th_6th

Priv_house_serv
7th_8th
0.45 9th
10th
11th Farming_fishing
Prof_specialty
Machine_op_inspct
Masters 12th Handlers_cleaners
Transport_moving
Armed_Forces Other_service
HS_grad
-0.05
Craft_repair
Assoc_voc
Bachelors Some_college
Exec_managerial Sales Adm_clerical
Assoc_acdm Protective_serv

-0.55 Tech_support

-1.05
-1.5 -1 -0.5 0 0.5 1

Figure 121 - Lien entre le niveau d'études et le type d'emploi occupé - TUTO 12

4.5 AFC avec d’autres outils (SAS, TANAGRA, R)

Nous explorons d’autres outils qui permettent de pratiquer l’analyse factorielle des

correspondances dans cette section. D’une manière assez succincte toujours. L’objectif est de

montrer dans les grandes lignes les fonctionnalités des logiciels.

Méthodes Factorielles 267


AFC 50
4.5.1 Données « Qualificatifs Aliments »

Nous inaugurons un nouveau jeu de données décrit dans un tutoriel accessible en ligne

(Bendixen, 1996). Le tableau de contingence - issu d’une enquête auprès de 100 ménages - croise

8 types d’aliments pour petit déjeuner avec 14 mots clés destinés à les qualifier. Nous avons un

tableau avec K = 14 lignes et L = 8 colonnes. Les réponses multiples étant autorisées, l’effectif

total est de n = 1760. L’étude cherche à mettre en évidence d’une part les ressemblances et

dissemblances entre les profils, d’autre part les relations (attractions ou répulsions) les plus

marquantes entre les mots clés et les aliments.

Figure 122 - Données "Qualificatifs aliments"

J’ai décrit en détail la mise en œuvre de l’AFC sur ces données dans un tutoriel qui avait pour

objectif de comparer les fonctionnalités de plusieurs logiciels (TUTO 15). J’en étais arrivé au

constat qu’ils produisaient des résultats numériques identiques. En revanche, de par le prisme

adopté, ils éclairaient avec plus ou moins d’acuité différentes facettes de l’analyse.

4.5.2 AFC avec TANAGRA

Le composant « CORRESPONDENCE ANALYSIS » (onglet FACTORIAL ANALYSIS) implémente

l’analyse factorielle des correspondances. L’importation des données et le mode de paramétrage

de l’outil sont décrits dans notre précédent tutoriel (TUTO 15, sections 3.2 et 3.3). Dans ce

support, nous demandons :

1. La production de 2 facteurs (nous comprendrons mieux pourquoi plus loin).

Méthodes Factorielles 268


AFC 51
2. Le calcul des contributions au 𝜒 2 des couples de modalités.

3. De trier les modalités selon les contributions dans les tableaux de résultats (coordonnées

des modalités sur les facteurs notamment).

(1)
(2)
(3)

Figure 123 - Boîte de dialogue de paramétrage - AFC - Tanagra

Les sorties sont subdivisées en plusieurs zones, énumérerons-les tour à tour dans ce qui suit.

4.5.2.1 KHI-2 (global) de l’écart à l’indépendance

Le premier tableau indique la statistique du test du ² d’écart à l’indépendance3. Ce résultat est

fondamental. En effet, si la liaison globale est trop faible, l’étude des relations entre les

modalités ne sert à rien. Il faut s’assurer qu’il existe une information exploitable dans le tableau.

Figure 124 -Test du 𝜒 2 - AFC – Tanagra

3
Le test du ² n’est pas strictement applicable ici. En effet chaque individu a pu choisir plusieurs couples de
valeurs (statement x food). De fait, les observations ne sont pas indépendantes. Il faut dès lors voir le ² plutôt
comme un indicateur de la quantité d’information exploitable dans le tableau.

Méthodes Factorielles 269


AFC 52
En l’occurrence, nous avons ²global = 647.31, avec un degré de liberté égal à 91 [ (14 - 1) x (8 – 1)],

la liaison est très significative (p-value < 0.0001). De plus, Tanagra fournit la valeur du
𝜒2 647.31
coefficient ² (Trace), avec 𝜙 2 = = = 0.3678), il symbolise la quantité d’information
𝑛 1760

disponible. En pratique, on peut penser que le tableau recèle des informations intéressantes à

partir de (𝜙 2 > 0.2) (Bendixen, 1996, page 7). L’AFC va décomposer cette quantité sur les

différents axes factoriels.

4.5.2.2 Tableau des valeurs propres – Choix du nombre d’axes

Tableau des valeurs propres. Tanagra affiche ensuite le tableau des valeurs propres (𝜆ℎ ). Elles

expriment la part d’inertie expliquée par les axes. Ainsi, puisque la décomposition est

orthogonale, elles s’additionnent et la somme (0.193095 + 0.077731 + … + 0.002363) est égale à

² = 0.3678. Nous pouvons réécrire les valeurs en pourcentage d’inertie expliquée par les axes

(ex. % axe 1 : 0.193095 / 0.3678 = 52.50 % ; % axe 2 : 0.07731 = 21.13 %).

Figure 125 - Tableau des valeurs propres - AFC - Tanagra

Choix du nombre d’axes – Scree plot. La règle du coude peut être mise à contribution pour la

détection du nombre de facteurs pertinents. Dans le diagramme ci-dessus (Figure 125), on peut

imaginer observer une inflexion au niveau de (Axis = 2).

Choix du nombre d’axes – Règle de Kaiser. L’autre approche consiste à utiliser la règle de Kaiser.

Le nombre maximum d’axes factoriels que nous pouvons produire est Hmax = MIN(L -1, C-1) =

Méthodes Factorielles 270


AFC 53
MIN (13, 7) = 7. Dès lors, une règle très simple consiste à choisir les axes pour lesquels la part

d’inertie restituée est supérieure à (1 / Hmax) = 14.3 %, soit les axes 1 (52.50 %) et 2 (21.13 %).

Le même raisonnement peut porter sur les valeurs propres brutes. Nous retenons les axes

factoriels portés par une valeur propre supérieure à leur moyenne c.-à-d. supérieure à (0.3678

/ 7) = 0.0525 ; nous avons bien les axes 1 (1=0.19309) et 2 (2= 0.07773). TANAGRA met

automatiquement en surbrillance (très légèrement parce que ce n’est pas une règle irréfragable)

les valeurs concernées.

4.5.2.3 Représentation des modalités lignes

La représentation des lignes couvre plusieurs informations : les statistiques sur les points lignes

(poids, distance à l’origine, l’inertie) [A] ; les coordonnées factorielles [B] ; les contributions

(CTR) aux axes (en %) [C] ; et la qualité de représentation (COS²) par axe et cumulée [D].

(A) (B) (C) (D)

Figure 126 - Représentation des lignes - AFC - Tanagra

TANAGRA intègre une fonctionnalité assez pratique : il peut trier en cascade les modalités lignes

selon leur contributions aux facteurs, en mettant des codes couleurs pour identifier les

coordonnées selon leur signe. Comme l’information est décomposée sur plusieurs facteurs, on

ne peut pas se contenter d’effectuer un tri sur le premier uniquement. Tanagra s’appuie sur la

stratégie suivante : pour le premier axe, il identifie les variables qui contribuent plus que la

Méthodes Factorielles 271


AFC 54
moyenne non pondérée (1/K pour les lignes, 1/L pour les colonnes), il trie les modalités selon

leurs contributions ; parmi les modalités restantes, il identifie celles qui pèsent sur le second

axe, il les trie de nouveau, etc. Ainsi, nous avons une représentation en cascade (en diagonale)

qui permet d’identifier très rapidement la nature des informations véhiculées par les facteurs.

TANAGRA met en surbrillance les coordonnées des modalités répondant aux conditions

suivantes : (CTR > 1/K)4 et (COS² > 1/Hmax) c.-à-d. la modalité contribue plus que la moyenne

(non pondérée), et l’information qu’elle véhicule est concentrée sur le facteur (plus que la

moyenne). L’idée est d’attirer l’œil de l’utilisateur sur les éléments saillants du tableau qui est,

reconnaissons-le, assez rébarbatif à lire.

Ainsi, le 1er facteur est déterminé par l’opposition entre (TooLongToPrepare, ForWeekends,

ForATreat) et (QuickEasy, ForWeekdays), avec l’idée de l’antagonisme entre la cuisine des

grandes occasions vs. celle de tous les jours. Le 2nd par l’opposition (Healthy, Expensive,

Nutritous) et (ForWeekdays, Economical, FamilyFavourite), la cuisine saine, onéreuse, serait

incompatible avec la boustifaille de tous les jours, économique, pourtant favorite des familles

(on mange des frites aux pâtes aujourd’hui les enfants, ça vous va ? ouaiiiis !!!).

On notera surtout que les modalités à inertie élevée vont souvent conditionner les résultats sur

les premiers axes. Ce n’est pas un problème en soi. Il faut en avoir conscience simplement pour

une lecture distanciée. Il est important que ces éléments (poids, distance à l’origine, inertie – la

partie A du tableau) soient visibles en même que les coordonnées, CTR et COS2.

Enfin, les COS² indiquent la qualité de représentation individuelle et cumulée des modalités sur

les H premiers facteurs. Dans notre exemple, les modalités « GoodWinter » et « TasteLess »

sont les moins bien restituées par (F1, F2) (moins que les autres modalités tout du moins).

4
Nous avons préféré cette règle à (CTR > poids de la modalité) (Saporta, 2006 ; page 207) pour éviter de mettre
en surbrillance des modalités sous-représentées qui, de toute manière, contribuent faiblement au ²global. Par
exemple, avec cette seconde condition, nous aurions dû mettre « tasteless » en évidence sur le premier axe
(CTR = 1.26%, poids = 1.19%). Or, cette modalité pèse finalement très peu dans l’analyse. Elle ne correspond ni à
une attraction ni à une répulsion réellement marquée avec l’une des modalités colonnes.

Méthodes Factorielles 272


AFC 55
4.5.2.4 Représentation des modalités colonnes

Les mêmes schémas que la représentation des lignes s’applique pour les modalités colonne.

Figure 127 - Représentation des modalités colonnes - AFC - Tanagra

Il faut connaître un peu les aliments pour se lancer dans des commentaires circonstanciés. Il me

semblait par exemple que les « Muesli » étaient des céréales. Le fait que la modalité soit en

opposition avec « Cereals » me laisse à penser qu’elle recouvre peut-être autre chose dans la

culture des personnes enquêtées.

4.5.2.5 Représentation simultanée

Dans l’onglet CHART, TANAGRA propose la représentation simultanée par couple de facteurs

(Figure 128). La popularité des analyses factorielles repose pour beaucoup sur les « cartes »

graphiques. On a l’impression de tout comprendre en un coup d’œil. Il est toujours très stimulant

de pouvoir associer visuellement des points. Certains outils proposent même la visualisation 3D.

On passe un temps fou alors à tourner le graphique dans tous les sens, à voir le nuage par en

dessous, sur le côté, de travers, etc., en perdant complètement le fil de l’analyse au passage.

Pour nos données, nous observons bien les proximités et oppositions entre les modalités

homologues (les aliments entre eux d’une part, les qualificatifs entre eux d’autre part), en se

cantonnant aux points à forts CTR et/ou COS2 toujours.

L’affaire est plus périlleuse lorsqu’il s’agit de rapprocher (ou opposer) les modalités lignes et

colonnes pour identifier les attractions (ou les répulsions). Il faut toujours s’astreindre à une

Méthodes Factorielles 273


AFC 56
vision relative des points (une modalité ligne est positionnée globalement par rapport à

l’ensemble des modalités colonnes) en raison de la relation quasi-barycentrique.

Correspondance Analysis
Economical

FamilyFavourite ToastTea

TooLongToPrepare Cereals
ForWeekdays

Porridge
ForWeekends Tasteless
BaconEggs GoodWinter
QuickEasy

0
ForATreat
Tasty GoodSummer

StewedFruit Yoghurt FreshFruit


Nutritious
Muesli
Expensive Healthy

-1

-1.2 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6

Figure 128 - Représentation simultanée - AFC - Tanagra

4.5.2.6 Contributions au KHI-2

Pour guider le praticien dans l’étude des attractions et répulsions entre les modalités lignes et

colonnes, TANAGRA fournir le tableau des contributions au 𝜒𝑔𝑙𝑜𝑏𝑎𝑙


2
.

Pour chaque combinaison des modalités lignes / colonnes, TANAGRA propose : l’effectif

observé, l’effectif théorique (sous indépendance), le résidu standardisé, la contribution absolue

au ² [(+) attraction ou (-) répulsion], et la contribution relative (en pourcentage). Il trie le

tableau de manière décroissante pour que les informations les plus marquantes apparaissent au

premier plan. Seules les contributions supérieures à la moyenne [contribution relative > 1 / (K x

L)] sont affichées (Figure 129).

Méthodes Factorielles 274


AFC 57
Mettre en relation ce tableau avec la représentation simultanée nous évite bien des déboires

dans la lecture des résultats de l’analyse factorielle des correspondances. On se rend compte

notamment que l’information portée par le tableau de contingence est en réalité « écrasée »

par l’attraction entre « BaconEggs » et « TooLongToPrepare » (10.10%).

Figure 129 - Contributions au KHI-2 - AFC – Tanagra

Méthodes Factorielles 275


AFC 58
4.5.2.7 Traitement des lignes ou colonnes supplémentaires

Le principe des observations supplémentaires est applicable en AFC. Dans le tutoriel originel,

l’auteur décrit un tableau croisant la fréquence de consommation avec le type d’aliment.

Cereals Muesli Porridge BaconEggs ToastTea FreshFruit StewedFruit Yoghurt


I 24 3 4 8 18 2 9 11
II 58 15 8 13 16 10 10 29
III 6 10 12 46 8 14 15 8
IV 2 4 28 9 4 47 4 2
V 10 68 48 24 54 27 62 50

I : Daily ; II : Several times per week ; III : Several times per month ; IV : Every few months ; V : Never.

A partir de la relation quasi-barycentrique, il est possible de les positionner sur les 2 premiers

facteurs à l’aide des coordonnées des modalités colonnes (section 4.3.4). Mais l’idée n’est pas

toujours très bien comprise, surtout que la plupart des outils proposent de le faire directement

en interne, masquant le mécanisme de projection aux utilisateurs. Tanagra propose une

approche simplifiée. Il fournit les coefficients de fonctions score c.-à-d. les fonctions

permettant de projeter les points supplémentaires dans le repère factoriel à partir de leur profil.

Ces coefficients peuvent être exportés facilement dans d’autres outils (ex. dans le tableur

Excel), permettant de calculer facilement les coordonnées des points supplémentaires.

Voici les coefficients de la fonction score pour les lignes additionnelles (Figure 130).

Figure 130 - Coefficients des fonctions score - Lignes supplémentaires - AFC – Tanagra

Méthodes Factorielles 276


AFC 59
Pour être applicable aux modalités supplémentaires, nous devons transformer le tableau des

effectifs en profils.

Cereals Muesli Porridge BaconEggs ToastTea FreshFruit StewedFruit Yoghurt


I 0.304 0.038 0.051 0.101 0.228 0.025 0.114 0.139
II 0.365 0.094 0.050 0.082 0.101 0.063 0.063 0.182
III 0.050 0.084 0.101 0.387 0.067 0.118 0.126 0.067
IV 0.020 0.040 0.280 0.090 0.040 0.470 0.040 0.020
V 0.029 0.198 0.140 0.070 0.157 0.079 0.181 0.146

Figure 131 - Modalités supplémentaires – Profils lignes - AFC - Tanagra

Nous pouvons dès lors calculer leurs coordonnées pour les deux premiers axes.

Scores
Factor.1 Factor.2
I 0.280 0.551
II 0.448 0.321
III -0.562 0.082
IV 0.114 -0.161
V 0.042 -0.157

Figure 132 - Coordonnées factorielles des modalités lignes supplémentaires - AFC – Tanagra

Détaillons le calcul pour « III : Several times per month » sur le 1er facteur.

C(III, Factor 1) = 1.280579 x 0.050 + 0.712525 x 0.084 + (-0.122041) x 0.101 + (-1.782883) x 0.387 + 0.399026 x 0.067 +
0.560261 x 0.118 + (-0.717755) x 0.126 + 0.195685 x 0.067 = -0.562

Ce qui le situerait plutôt du côté de (TooLongToPrepare, ForATreat, ForWeekends). Cela semble

logique dans la mesure où « BaconEggs » est l’aliment le plus prisé dans ce cas (38.7 % dixit le

tableau des profils lignes, Figure 131).

Remarque : Le même dispositif existe pour les modalités colonnes supplémentaires. Il sera

possible de positionner un nouveau produit alimentaire à partir de ses qualificatifs.

4.5.3 AFC avec SAS – PROC CORRESP

J’ai énormément étudié la PROC CORRESP de SAS pour développer l’AFC dans TANAGRA. La

procédure s’applique aussi à l’analyse des correspondances multiples (chapitre 5). Elle regorge

d’options multiples qu’il faut savoir cerner. Quoiqu’en en dise, elle constitue une référence

incontournable qu’il faut absolument connaître.

Méthodes Factorielles 277


AFC 60
Voici la commande utilisée sur les données « Qualificatifs Aliments » : (DIMENS = 2) nous fixons

à 2 le nombre de facteurs à générer pour éviter d’être noyés sous les tableaux de chiffres ;

(CELLCHI2) fait apparaître les contributions au 𝜒 2, si importants pour identifier les associations

lignes-colonnes, dans les sorties.

PROC CORRESP DATA=FOODS DIMENS=2 CELLCHI2;


VAR Cereals -- Yoghurt;
ID Statement;
RUN;

Voici les « Displayed Output » de la PROC CORRESP sur nos données.

Tableau des contributions au 𝝌𝟐. SAS attaque directement par le tableau des contributions

exprimés en valeur absolue c.-à-d. en effectuant la somme des contributions, nous aboutissons

au 𝜒𝑔𝑙𝑜𝑏𝑎𝑙
2
. L’enjeu consiste à repérer rapidement les associations les plus significatives. Un

formatage en ce sens aurait été appréciable. Pouvoir lire facilement le sens de la relation

(attraction ou répulsion) aurait été salutaire également. J’ai surligné manuellement (fond vert)

les 5 attractions/contributions les plus marquantes (Figure 133). Nous remarquons que les

contributions s’additionnent en ligne et en colonne. Nous pouvons également identifier les

modalités lignes et colonnes les plus importantes (fond bleu).

Figure 133 - Tableau des contributions au KHI-2 - AFC - SAS PROC CORRESP

Méthodes Factorielles 278


AFC 61
Tableau des inerties. Il ressemble beaucoup au tableau des valeurs propres de TANAGRA

(section 4.5.2.2) (plutôt l’inverse). Nous avons pour chaque facteur : la valeur singulière, son

carré qui correspond à la valeur propre (inertie principale), le 𝜒 2 (n x inertie), la proportion

individuelle et cumulée.

Figure 134 - Tableau des inerties - AFC - SAS PROC CORRESP

Coordonnées, CTR et COS2. Ils sont dispatchés dans plusieurs tableau. J’ai fait un petit

montage pour que nous ayons une vision synthétique. Voici les informations pour les modalités

lignes (Figure 135). Nous disposons des mêmes tableaux pour les modalités colonnes.

Figure 135 - Coordonnés, Contributions, COS2 - AFC - SAS PROC CORRESP

Statistiques des points lignes. Le tableau des statistiques regroupe le COS2 cumulé de chaque
𝑛𝑘.
modalité sur le nombre de facteurs spécifié (DIMENS) (Qualité), son poids relatif ( ) (Masse),
𝑛

Méthodes Factorielles 279


AFC 62
𝐼𝑛𝑒𝑟𝑡𝑖𝑒(𝑦𝑘 )
la part qui lui est imputable dans l’inertie globale [ 2 ] (Inertie). Un tableau équivalent est
𝜒𝑔𝑙𝑜𝑏𝑎𝑙

proposé pour les modalités colonnes.

Figure 136 - Statistiques pour les points lignes - SAS PROC CORRESP

Indices des coordonnées contributives. SAS propose un tableau des « indices des

coordonnées qui contribuent le plus à l’inertie des points ». Il permet d’identifier les modalités

présentant les plus fortes contributions sur chaque facteur. Je n’ai pas trouvé la valeur seuil

dans la documentation. Pour les modalités lignes, nous avons (Figure 137) :

Figure 137 - Identification des modalités à fortes contributions sur les facteurs - SAS PROC CORRESP

Méthodes Factorielles 280


AFC 63
Par rapport à TANAGRA (Figure 126), SAS a intégré - en plus - « Good Summer » (CTR = 6.55%)

parmi les modalités « remarquables » pour le 1er facteur. On note que « ForWeekdays » est

déterminant sur les deux facteurs.

Bien évidemment, un tableau avec la même finalité est proposé pour les modalités colonnes.

Carte des modalités – Représentation simultanée. Que seraient les méthodes factorielles

sans les représentations graphiques ? SAS propose par défaut la carte des modalités lignes et

colonnes fondus dans la même plan factoriel (nous n’avions demandé que DIMENS = 2

dimensions) (Figure 138).

Figure 138 - Représentation simultanée - SAS PROC CORRESP

4.5.4 AFC avec R – Package « ade4 »

Plusieurs packages peuvent faire l’affaire sous R. Cette multiplicité est à la fois un atout et une

faiblesse. Un atout parce que nous disposons de plusieurs points de vue pour un même

traitement. Cela ne peut qu’enrichir l’analyse. Une faiblesse parce qu’obtenir des résultats

Méthodes Factorielles 281


AFC 64
présentés différemment pour un même problème est toujours compliqué, surtout lorsqu’on a

peu de recul par rapport aux techniques. Parfois, les sorties de certaines librairies ne

correspondent pas aux présentations que l’on retrouve dans les ouvrages de référence. Cela peut

rapidement semer la confusion dans l’esprit de l’utilisateur.

Heureusement, les packages sont de qualité pour l’analyse factorielle sous R. Nous avions déjà

exploré « FactoMineR » (TUTO 14), « ca » et « ade4 » (TUTO 15). Nous reprenons l’étude avec

la librairie « ade4 » en mettant l’accent sur les outils graphiques.

Nous chargeons les données – 7ème feuille du fichier « Data_Methodes_Factorielles.xlsx » -

avec le package « openxlsx ». La première colonne représente les étiquettes de ligne.

#charger les données


library(openxlsx)
D <- read.xlsx("Data_Methodes_Factorielles.xlsx",sheet=7,rowNames=TRUE)
str(D)

## 'data.frame': 14 obs. of 8 variables:


## $ Cereals : num 14 14 42 10 6 54 24 24 5 47 ...
## $ Muesli : num 38 28 22 10 33 33 21 3 3 24 ...
## $ Porridge : num 25 25 11 32 5 8 16 20 3 15 ...
## $ BaconEggs : num 18 25 13 26 27 2 34 3 31 9 ...
## $ ToastTea : num 8 7 7 6 3 15 11 16 4 13 ...
## $ FreshFruit : num 31 32 37 11 9 26 33 7 4 11 ...
## $ StewedFruit: num 28 26 16 19 18 8 26 3 16 6 ...
## $ Yoghurt : num 34 31 35 8 10 20 26 7 17 10 ...

Nous importons la librairie « ade4 », après l’avoir installé préalablement si nécessaire. Nous

faisons appel ensuite à la fonction dudi.coa() pour l’AFC. Nous lui passons les données (D), nous

demandons la production de (nf = 2) facteurs, il n’est pas nécessaire de demander

interactivement le nombre de facteurs (scannf = FALSE).

#librairie ade4
library(ade4)

#afc
afc <- dudi.coa(D,nf=2,scannf=FALSE)
summary(afc)

## Class: coa dudi


## Call: dudi.coa(df = D, scannf = FALSE, nf = 2)
##
## Total inertia: 0.3678
##
## Eigenvalues:
## Ax1 Ax2 Ax3 Ax4 Ax5
## 0.19309 0.07773 0.04385 0.03280 0.01226

Méthodes Factorielles 282


AFC 65
##
## Projected inertia (%):
## Ax1 Ax2 Ax3 Ax4 Ax5
## 52.501 21.135 11.924 8.919 3.333
##
## Cumulative projected inertia (%):
## Ax1 Ax1:2 Ax1:3 Ax1:4 Ax1:5
## 52.50 73.64 85.56 94.48 97.81
##
## (Only 5 dimensions (out of 7) are shown)

La fonction summary() affiche l’inertie totale et la qualité de restitution des axes factoriels en

valeur propre, en pourcentage d’information restituée, et en pourcentage cumulé. Nous

affichons l’éboulis des valeurs propres. Le « coude » est assez marqué pour (Axis = 2).

#screeplot pour le diagramme des val.propres


screeplot(afc,main="Eboulis des val. propres",type="lines")

Figure 139 - Eboulis des valeurs propres - AFC - R, package "ade4"

Nous affichons les positions des modalités lignes et colonnes sur un facteur. Ce type de

graphique remplace d’une certaine manière les coordonnées brutes empilées dans les tableaux,

avec l’avantage certain d’une présentation triée, limité au facteur étudié, facilitant les

comparaisons des modalités intra et inter-variables. Voici la représentation pour le 1er facteur

(F1). Nous ne disposons pas en revanche, dans le même temps, des contributions et des COS2

pour situer l’influence ou la qualité de représentation des modalités.

Méthodes Factorielles 283


AFC 66
#position des modalités sur l'axe numéro "xax"
score(afc,xax=1,clab.r=0.7,clab.c=0.75)

Figure 140 - Variante de la représentation simultanée - AFC - R, package "ade4"

Enfin, nous disposons de la représentation simultanée dans le premier plan factoriel. Nous

spécifions l’option (method = 1) pour que les dispersions des points modalités lignes et colonnes

soient identiques sur les facteurs.

#représentation simultanée
scatter(afc,method=1)

Figure 141 - Représentation simultanée - AFC - R, package "ade4"

Méthodes Factorielles 284


AFC 67
Méthodes Factorielles 285
AFC 68
5 Analyse des correspondances multiples (ACM)

L’analyse factorielle des correspondances multiples (AFCM) ou, plus simplement, l’analyse des

correspondances multiples (ACM), est le pendant de l’analyse en composantes principales

lorsque les variables actives sont catégorielles. Les deux approches se rejoignent d’ailleurs

lorsque les variables sont exclusivement binaires. Elle répond donc à la même problématique, elle

cherche à projeter les individus dans un espace de dimension réduit, en respectant au mieux les

proximités entre eux, mais en se plaçant dans un cadre théorique différent : elle substitue la

distance du 𝜒 2 à la distance euclidienne pour mesurer les proximités entre les individus. Bien

sûr, au-delà du traitement des observations, comme pour toute méthode factorielle, la

description synthétique des données met également en évidence les association entre les

descripteurs et, dans le cas de l’analyse des correspondances multiples, leurs modalités.

L'ACM peut être aussi vue comme une technique de transformation de variables. Elle permet de

passer d'un espace discret, décrit par les variables originales, en un espace continu, décrit par

les axes factoriels. Sans perte d'informations si l'on choisit de conserver tous les axes. Avec une

perte d'information contrôlée lorsque l'on ne conserve que les premiers axes. En effet, les

derniers facteurs traduisent essentiellement les fluctuations aléatoires dues à l'échantillonnage,

on lisse ainsi les données en nous concentrant sur les informations essentielles. Elle rend ainsi

possible d’utilisation subséquente d’algorithmes de machine learning qui ne savent appréhender

que les descripteurs quantitatifs. On citera, entres autres, l’exemple bien connu de la méthode

DISQUAL (Saporta, 2006) en analyse prédictive. Elle consiste à projeter les observations dans

un espace continu avant d’appliquer une analyse discriminante linéaire pour expliquer et prédire

Méthodes Factorielles 286


AFC 69

Vous aimerez peut-être aussi