RECHERCHE :
Bienvenue sur le site de Michel VOLLE
Powered by picosearch  


Vous êtes libre de copier, distribuer et/ou modifier les documents de ce site, à la seule condition de citer la source.
 GNU Free Documentation License.

Un programme d’analyse factorielle des correspondances

17 avril 2006

Pour lire un peu plus :

- Analyse des données
- Le programme afc.scm
- Exemple de présentation
- La programmation comme hobby
- The Little Schemer
- Télécharger DrScheme
- Une méthode simple pour analyser rapidement de grands tableaux de nombres

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.