Lorsque j’étais à l’INSEE j’ai
étudié puis enseigné l’analyse des données, qui permet d'extraire des
tableaux de nombres ce qu'ils peuvent contenir de plus significatif et facilite
ainsi leur interprétation. J'ai considéré l'analyse des données sous son aspect
mathématique, mais je dépendais des informaticiens pour la réalisation des
programmes car je ne savais pas comment programmer les algorithmes de calcul.
Utiliser un programme écrit par
quelqu'un d'autre - ce que nous faisons tous les jours avec nos tableurs et
autres logiciels de traitement de texte -, cela fait gagner du temps, certes,
mais cela confronte parfois à des bizarreries que l'on ne sait comment
contourner.
Avec Scheme j’ai pu enfin
écrire un programme d’analyse factorielle des
correspondances, ou AFC. Je n’ai pas cherché à optimiser les algorithmes :
je les ai construits de la façon la plus simple qui soit. Je peux encore les améliorer,
m'a dit Laurent Bloch,
en utilisant la notation vectorielle et l'instruction
DO. Je ne
suis pas très savant en algorithmique même si j'aime à lire Donald Knuth. Si
quelqu'un veut bien me signaler des astuces utiles (pour diagonaliser plus vite une
matrice, par exemple), je lui en serai très reconnaissant.
Confronté à un tableau de grande dimension, ou si l'on
veut extraire des facteurs de rang élevé, le programme doit mouliner longtemps.
Mais il fonctionne ! Pour l'utiliser, il faut avoir
téléchargé DrScheme
(c'est gratuit). Si l'on veut qu'il soit un peu plus rapide, on peut avec
DrScheme créer un fichier exécutable (Cliquer sur le menu "Scheme", puis sur la
commande "Create Executable".
La programmation m'a, comme
cela se produit souvent, contraint à surmonter la confusion de mes idées. J'ai
eu bien du mal, en particulier, à écrire l'instruction qui donne les aides à
l'interprétation : elle est loin, l'époque où les propriétés géométriques de l'analyse des
données m'étaient aussi familières que mon appartement !
* *
L'AFC est sans doute la plus
intéressante des méthodes d'analyse des données. Elle permet d'analyser les
tableaux de contingence, c'est-à-dire les tableaux qui donnent la ventilation
d'une population selon le croisement de deux caractères qualitatifs. On
rencontre souvent de tels tableaux lorsqu'on utilise des statistiques (pour
découvrir l’AFC voir Michel Volle, Analyse
des données, Economica 1997, p. 130). Le programme que je présente
ici est destiné aux
personnes qui savent déjà ce qu'est l'AFC !
* *
Pour analyser un tableau de
contingence avec ce programme il faudra le saisir sous le format suivant, qui
parle de lui-même :
((() (andré) (bernard) (charles)
(denise) (ernest) (françois) (gérard) (henri) (rené) (suzanne))
((alpha) 436 829 953 226 482 704 151 568 694 832)
((beta) 827 284 730 164 651 926 466 326 701 572)
((gamma) 21 222 671 745 123 999 825 342 472 219)
((delta) 553 792 127 346 813 942 136 684 598 234)
((heta) 992 653 225 718 268 437 857 139 851 136))
La première ligne contient une
case vide, suivie du titre des colonnes. La première colonne contient une case
vide, suivie du titre des lignes. Les autres cases contiennent des nombres. Le
programme propose un modèle de tableau pour faciliter la saisie.
Il demande ensuite la liste des
facteurs à extraire. On doit les saisir sous forme d'une liste (par exemple : (1
2 3) ).
Puis le programme mouline...
pour chaque axe, les résultats sont édités sous la forme suivante (ici les résultats relatifs à l’axe 2) :
% de l'inertie
29.551065583066205
((NOM) 2#AXE CTR% CO2%)
((andré) -0.483 34.36 71.2)
((bernard) -0.225 7.38 27.98)
((charles) 0.498 34.91 81.03)
((denise) 0.008 0.0 0.01)
((ernest) -0.21 5.4 17.13)
((françois) 0.161 5.45 28.75)
((gérard) 0.052 0.34 0.56)
((henri) 0.068 0.49 2.22)
((rené) -0.117 2.37 55.11)
((suzanne) 0.298 9.24 26.0)
((alpha) 0.192 11.37 18.5)
((beta) 0.032 0.3 0.93)
((gamma) 0.395 37.67 40.31)
((delta) -0.246 16.5 25.42)
((heta) -0.352 34.13 39.66)
Le calcul fournit d’abord, dans la
première ligne le
pourcentage de l’inertie totale expliqué par l’axe. Puis les quatre colonnes
contiennent, pour chacun des points qui représentent les lignes et les colonnes du
tableau :
- le nom de la ligne ou de la colonne (NOM) ;
- sa coordonnée sur l’axe dont le numéro est indiqué (ici 2#AXE) ;
- sa contribution en pourcentage à l’inertie de l’axe (CTR%) ;
- en pourcentage, le carré de son cosinus avec l’axe (CO2%).
Je n’ai pas programmé en Scheme
la présentation graphique des résultats - cela excéderait mes compétences
actuelles - mais on peut l’obtenir assez par un copier-coller vers Excel, suivi
de quelques manipulations
simples (convertir les données de sorte qu'elles s'affichent sur plusieurs
colonnes, supprimer les parenthèses, remplacer les points par des virgules ; voir exemple de présentation).
Un exemple d'application à des données réelles est fourni dans la dernière
feuille du fichier pop1999.xls.
|