Version classiqueVersion mobile
OpenEdition Books

Les méthodes d’analyse d’enquêtes

 | 
Philippe Cibois

Annexe au chapitre II : algorithme

Texte intégral

1Le lecteur qui souhaiterait ouvrir la « boite noire » qui était évoquée au début de cet ouvrage, trouvera ici des éléments de réponse à la question de savoir comment fait l’analyse factorielle pour trouver un couple de vecteurs, propres à des données, et qui permettent d’en construire une approximation.

2Ce que nous cherchons c’est, à partir d’un tableau quelconque, à trouver un jeu de coefficients pour des lignes et des colonnes qui permettent, par multiplication terme à terme, de trouver un tableau connu par ses marges. Pour montrer comment peut se faire cette recherche, nous allons utiliser un tableau à trois lignes (marquées A, B et C) et deux colonnes (I et II) : il s’agit d’un exemple choisi pour sa simplicité, mais qui ne correspond à aucune donnée précise.

I

II

A

  0

  1

B

  1

  2

C

  3

  3

Recherche de coefficients lignes et colonnes

3Examinons les colonnes du tableau : dans les deux cas, le premier élément est inférieur au deuxième, lui-même inférieur au troisième. La suite de coefficients colonnes que nous recherchons, et désormais nous appellerons ces suites de nombres des vecteurs, ce vecteur colonne donc, qui doit être un résumé des deux colonnes, doit avoir leur structure et doit donc ressembler à quelque chose comme (1, 2, 4) ou (1, 5, 10) mais certainement pas (10, 5, 1).

4L’algorithme que nous allons utiliser (et qui est plus simple que celui de l’analyse des correspondances que nous verrons ensuite) suppose une valeur de départ, même imprécise, qui sera améliorée dans la suite.

5Nous prendrons donc comme point de départ à améliorer le vecteur colonne (1, 2, 4). Ici la suite des opérations consiste à multiplier scalairement le vecteur colonne par chacune des deux colonnes. Cette multiplication scalaire nous est familière mais dans le registre de l’opération « facture », qui consiste, pour chacun des éléments achetés, à multiplier chacun par son prix individuel et à additionner le tout. Le résultat de la multiplication des deux vecteurs n’est pas un vecteur mais un résultat sur l’échelle numérique (scala est l’échelle en italien).

6Faisons l’opération en appelant le vecteur initial du nom de F0 et le résultat final en ligne du nom de F1:

I

II

F0

A

  0

  1

1

B

  1

  2

2

C

  3

  3

4

F1

14

17

7Le premier élément de F1 s’obtient en multipliant scalairement la colonne I et F0, le détail du calcul est le suivant :

I

F0

0

x

1

=

  0

1

x

2

=

  2

3

x

4

=

12

Total=

14

8En faisant de même pour la colonne II, on obtient le nouveau vecteur F1, constitué à partir des deux résultats. On constate que ce vecteur respecte la structure des trois lignes où le premier élément est inférieur ou à la limite égal au deuxième. Sans prétendre justifier l’algorithme, on voit qu’il intègre progressivement la structure des données du tableau. Pour continuer, il faut répéter la multiplication scalaire du vecteur F1 mais cette fois avec chacune des lignes du tableau.

I

II

F0

F2

A

  0

  1

1

17

B

  1

  2

2

48

C

  3

  3

4

93

F1

14

17

9Pour la ligne C le détail du calcul est le suivant :

C

F1

3

×

14

=

42

3

×

17

=

51

Total =

93

10La structure de F2 est comparable à celle de F0, notre point de départ arbitraire (mais choisi avec vraisemblance), en arrondissant, on peut dire que F2 a pour structure (20, 50, 90), soit, en divisant chaque élément par 20, ce qui ne modifie pas la structure (1, 2,5, 4,5) assez proche du point de départ à une multiplication par 20 près. Pour pouvoir voir le phénomène avec plus de précision, examinons la structure en proportion de chacun des vecteurs. Par exemple pour F2, le premier élément 17 représente 17 / 158 = 0,108 soit 10,8 %.

I

II

F0

PropF0

F2

PropF2

A

  0

  1

1

0,143

  17

0,108

B

  1

  2

2

0,286

  48

0,304

C

  3

  3

4

0,571

  93

0,589

Total

7

1,000

158

1,000

F1

14

17

       31

PropF1

0,452

0,548

1,000

11On voit que de F0 à F2, la proportion du premier élément à baissé, celle des autres a augmenté. Continuons les itérations de l’algorithme, c’est-à-dire reprenons les étapes précédentes en prenant la valeur de F2 à la place de celle de F0. Nous multiplions scalairement chacune des colonnes du tableau par F2 et nous obtenons F3 puis à partir de F3 multiplié par chacune des lignes nous obtenons F4.

I

II

F0

PropF0

F2

PropF2

F4

PropF4

A

0

1

1

0,143

17

0,108

392

0,107

B

1

2

2

0,286

48

0,304

1111

0,304

C

3

3

4

0,571

93

0,589

2157

0,589

Total

7

1,000

158

1,000

3660

1,000

F1

14

17

31

PropF1

0,452

0,548

1,000

F3

327

392

719

PropF3

0,455

0,545

1,000

F5

7582

9085

16667

PropF5

0,455

0,545

1,000

Stop

12En comparant les proportions de F2 et F4, on constate que, pour une précision de trois chiffres significatifs, les proportions sont égales sauf pour le premier élément qui passe de 10,8 % à 10,7 %. On voit ce qu’on appelle la convergence de l’algorithme qui se stabilise pour une précision donnée. Il suffit de faire une itération supplémentaire et passer de F4 à F5 pour retrouver strictement les proportions de F3. L’algorithme est terminé. Nous nous sommes affranchis de la valeur arbitraire du point de départ, les vecteurs sont maintenant propres aux données. Pour s’en rendre compte, il suffit de changer F0 et de prendre par exemple la valeur la plus neutre possible (1, 1, 1).

13Prendre un vecteur initial quelconque modifierait tous les effectifs mais non les proportions, on verrait seulement qu’il faudrait une itération supplémentaire (PropF6 = PropF4) pour arriver à la convergence de l’algorithme. De même, si on prenait un point de départ (qui peut tout aussi bien être pris en ligne), complètement erroné comme (10, 5, 1), on constaterait que la convergence n’est pas assurée à l’itération 6. Prendre un mauvais point de départ a pour effet simplement d’augmenter le nombre d’itération. Dans une programmation en machine, on prend toujours le point de départ le plus neutre possible, soit (1, 1, 1).

14Nous avons donc maintenant un couple de coefficients lignes et colonnes, des vecteurs propres aux données, qui expriment le mieux possible la structure du tableau, à condition qu’ils soient pris ensemble, par multiplication.

Reconstitution du tableau d’approximation

15La reconstitution se fait donc par multiplication terme à terme des coefficients marginaux lignes et colonnes. Il faut prendre les vecteurs propres (donc après convergence de l’algorithme), c’est-à-dire à l’étape 5 pour le vecteur en ligne et à l’étape 4 pour le vecteur en colonne. Se pose simplement le problème de savoir quel vecteur propre choisir, celui en effectifs ou celui en proportions ? Comme ils sont proportionnels, ils expriment tous la même structure et il en existe donc une infinité de semblables. Pour rendre plus claires les opérations (mais on sort du cadre d’une analyse standard), il s’agit de faire l’approximation d’un tableau d’origine dont la somme des éléments est égale à 10 (cf. le tableau ci-dessous où les marges du tableau et son total sont calculés).

Tableau d’origine

I

II

Total

A

0

1

1

B

1

2

3

C

3

3

6

Total

4

6

10

Approximation

I

II

F4

I

II

F4

A

0,049

0,058

0,107

A

0,49

0,58

0,107

B

0,138

0,166

0,304

B

1,38

1,66

0,304

C

0,268

0,321

0,589

C

2,68

3,21

0,589

F5

0,455

0,545

1

F5

0,455

0,545

10

Proportion

Multiplié par 10

16On calcule d’abord l’approximation en proportion par multiplication terme à terme (par exemple pour la première case A-I 0,107 × 0,455 = 0,049), puis, pour rendre la comparaison possible, on multiplie le résultat obtenu par 10. On voit alors que cette première case est approximée par 0,49. On voit que l’approximation est plutôt « bonne ». Pour la dernière ligne, pour la première colonne, il manque 3 – 2,68 = 0,32 et pour la deuxième, il y a 0, 21 en trop. Examinons toutes les erreurs en étendant le calcul par soustraction à l’ensemble : on obtient le tableau du reste, ce qu’il faut ajouter à l’approximation pour retrouver le tableau d’origine.

Tableau d’origine      =

Approximation

+

Reste

I

II

   I

   II

   I

   II

A

0

1

A

0,49

0,58

A

– 0,49

   0,42

B

1

2

B

1,38

1,66

B

– 0,38

   0,34

C

3

3

C

2,68

3,21

C

   0,32

– 0,21

17On voit sur cet exemple que l’approximation a beaucoup plus d’importance que le reste : la plus petite valeur qu’on y rencontre, 0,49 est la plus grande (en valeur absolue) du reste. L’algorithme utilisé nous a permis de décomposer un tableau en deux tableaux dont le premier est une bonne approximation du tableau d’origine.

18Mais il y a plusieurs types d’algorithmes : celui qui est le plus utilisé aujourd’hui est l’algorithme de l’analyse des correspondances qui, pour ne pas que les colonnes ou les lignes les plus importantes en effectif imposent le choix de l’élément prépondérant du facteur, introduit une pondération par les marges. À chaque pas de l’algorithme, quand un vecteur est obtenu, il est pondéré par les marges, c’est-à-dire divisé par elles. Reprenons l’exemple précédent en utilisant le point de départ le plus neutre possible, c’est-à-dire (1, 1, 1).

I

II

Total

F0

F2NonPond

F2Pond

A

0

1

1

1

1

1

B

1

2

3

1

3

1

C

3

3

6

1

6

1

Total

4

6

F1NonPond

4

6

F1Pond

1

1

19Comme on l’a vu plus haut, le résultat obtenu pour F1 est (4, 6). Il est encore ici non pondéré. Le pondérer, c’est le diviser par les marges et trouver comme vecteur F1 pondéré la valeur (1, 1). Le processus se répète dans l’autre sens et, en multipliant le vecteur F1 pondéré par le tableau, on obtient un vecteur F2 non pondéré égal à la marge en colonne. En pondérant on retrouve le vecteur F0 de départ et l’algorithme se termine ici puisque la convergence est immédiate.

20Pour la reconstitution, on se sert des vecteurs non pondérés (identiques aux marges) et le produit des marges est (à la division par le total près) identique à l’effectif théorique correspondant à l’indépendance.

Tableau d’origine

Approximation

I

II

Total

I

II

F2NP

I

II

A

0

1

1

A

4

6

1

A

0,40

0,60

B

1

2

3

B

12

18

3

B

1,20

1,80

C

3

3

6

C

24

36

6

C

2,40

3,60

Total

4

6

10

F1NP

4

6

Divisé par 10

21Dans ce cas particulier, la première approximation correspond à l’indépendance et le reste constitue les écarts à l’indépendance.

Tableau d’origine      =

     Indépendance      +

      Écart à l’indépendance

I

II

   I

   II

   I

   II

A

0

1

A

0,40

0,60

A

– 0,40

   0,40

B

1

2

B

1,20

1,80

B

– 0,20

   0,20

C

3

3

C

2,40

3,6

C

   0,60

– 0,60

22Cette particularité est un des atouts de l’analyse des correspondances : la première approximation du tableau est l’indépendance ce qui veut dire que l’information pertinente se trouve dans le tableau des écarts à l’indépendance.

23En résumé, nous avons vu qu’un tableau quelconque pouvait par le biais d’un algorithme être décomposé en une série de plusieurs tableaux : le premier, reconstitué par multiplication terme à terme des coefficients obtenus après convergence de l’algorithme, est une bonne approximation du tableau d’origine. Nous allons étudier maintenant la méthode la plus couramment utilisée en analyse factorielle, l’analyse des correspondances.

L’algorithme de l’analyse des correspondances

24Pour montrer son fonctionnement, nous l’appliquons à des données réelles déjà vues, le tableau 1, intérêt vis-à-vis de la religion en fonction de la proximité politique. Comme en analyse des correspondances la première approximation est le tableau correspondant à l’indépendance (tableau 2, chapitre II, section I), ce qui reste du tableau initial après soustraction de cette première approximation est le tableau des écarts à l’indépendance (tableau 3, ibid.). Pour la suite des calculs il est mis en proportion : les marges, qui vont servir de pondération dans la suite, sont également en proportion et le total général est de 1.

Tableau des écarts à l’indépendance en proportion

Écarts

Intérêt pour la religion

Fort

Moyen

Nul

Total

Droite

   0,0161

   0,0133

– 0,0294

0,1406

Centre

   0,0034

   0,0067

– 0,0101

0,1094

Gauche

– 0,0269

– 0,0032

   0,0301

0,3730

NiGniD

   0,0074

– 0,0168

   0,0094

0,3770

Total

   0,2188

   0,4746

   0,3066

1

25Dans l’extrait de tableur ci-dessous, on présente les deux premières itérations de l’algorithme où 4 opérations sont utilisées :

  • 1 Les résultats affichés le sont à une certaine précision mais les calculs sont faits avec la précisi (...)

261/ le produit scalaire : par exemple entre le point de départ V0 (point de départ arbitraire fait d’unités avec cependant des signes plus ou moins aléatoires, pour accélérer la convergence) et chacune des colonnes du tableau. Par exemple – 0,0391 est égal à – 1 × 0,0161 + – 1 × 0,034 + 1 × – 0,0269 + 1 × 0,00741.

Analyse des correspondances, 1er facteur, Itérations 1 et 2

Fort

Moyen

Nul

Pond

V0

V2CNP

V2CPnd

CarPnd

V2RNP

V2RPnd

Droite

   0,0161

   0,0133

– 0,0294

0,1406

– 1

– 0,07

– 0,470

0,03

– 0,29

– 2,10

Centre

   0,0034

   0,0067

– 0,0101

0,1094

– 1

– 0,02

– 0,197

0,00

– 0,10

– 0,88

Gauche

– 0,0269

– 0,0032

   0,0301

0,3730

   1

   0,07

   0,196

0,01

   0,33

   0,88

NiGniD

   0,0074

– 0,0168

   0,0094

0,3770

   1

   0,01

   0,038

0,00

   0,06

   0,17

Pond

   0,2188

   0,4746

   0,3066

Somme

0,05

V1CNP

– 0,0391

– 0,0400

   0,0791

Norme

0,2243

V1CPnd

– 0,1786

– 0,0844

   0,2580

Somme

Norme

CarPnd

   0,0070

   0,0034

   0,0204

0,0308

0,1754

V1RNP

– 0,22

– 0,23

   0,45

Itération 1

V1RPnd

– 1,02

– 0,48

   1,47

 

Fort

Moyen

Nul

Pond

V2RPnd

V4CNP

V4CPnd

CarPnd

V4RNP

V4RPnd

Droite

   0,0161

   0,0133

– 0,0294

0,1406

– 2,10

– 0,07

– 0,470

0,03

– 0,29

– 2,08

Centre

   0,0034

   0,0067

– 0,0101

0,1094

– 0,88

– 0,02

– 0,191

0,00

– 0,09

– 0,85

Gauche

– 0,0269

– 0,0032

   0,0301

0,3730

   0,88

   0,08

   0,205

0,02

   0,34

   0,91

NiGniD

   0,0074

– 0,0168

   0,0094

0,3770

   0,17

   0,01

   0,029

0,00

   0,05

   0,13

Pond

   0,2188

   0,4746

   0,3066

Somme

0,05

V3CNP

– 0,06

– 0,04

   0,10

Norme

0,2260

V3CPnd

– 0,270

– 0,083

   0,322

Somme

Norme

CarPnd

   0,02

   0,00

   0,03

0,0510

0,2258

V3RNP

– 0,26

– 0,18

   0,44

Itération 2

V3RPnd

– 1,20

– 0,37

   1,42

27Le résultat de chaque produit scalaire est noté par la première ligne du vecteur V1 qui est « calibré » (c’est-à-dire qui a subi une augmentation de son importance) et qui n’est pas encore pondéré par les marges (notation : C pour calibré ; Np pour non pondéré et dans la suite Pnd pour pondéré). Tous les résultats successifs des produits scalaires sont calibrés et non pondérés CNP.

282/ La deuxième opération est la pondération qui permet de relativiser l’importance des lignes ou colonnes trop importantes. Chaque élément d’un vecteur calibré est divisé par l’élément marginal correspondant (noté Pond dans le tableau). Le vecteur résultant est noté Pnd pour pondéré : en ligne il est sous le précédent non pondéré, en colonne à droite. Par exemple le premier élément de V1CPnd – 0,1786 est égal à – 0,0391 / 0,2188.

293/ La troisième opération est nécessaire pour réduire le vecteur, c’est-à-dire le rendre de « longueur » unitaire. À cette fin on calcule le carré de chaque élément non pondéré et on le divise par la pondération : cela revient à faire le produit d’un élément non pondéré par un élément pondéré. Une ligne (ou une colonne) présente ces carrés pondérés : elle est notée CarPnd. Sa somme est donnée ainsi que sa racine carrée appelée norme. Quand l’algorithme a convergé, cette somme est la valeur propre du facteur. Par exemple le premier élément 0,0070 est égal à – 0,0391² / 0,2188. La somme des trois éléments est égale à 0,308 et la norme 0,1754 en est la racine carrée.

304/ Muni de cette norme on va réduire les vecteurs calibrés, c’est-à-dire diviser chaque élément par la norme. On a ainsi une version réduite notée R des vecteurs non pondérés et pondérés. Par exemple le premier élément – 0,22 de V1Rnp = – 0,0391 / 0,1754 et le premier élément – 1,02 de V1RPnd = – 0,1786 / 0,1754.

31Quand on a pondéré V1, calculé sa norme et qu’on l’a normé, on recommence le produit scalaire mais cette fois entre les lignes du tableau et le vecteur réduit pondéré V1RPnd : on obtient le vecteur 2, en colonne cette fois, V2CNP dont par exemple le premier élément – 0,07 est égal à 0,0161 × – 1,02 + 0,0133 × – 0,48 + – 0,0294 × 1,47. On le pondère, on calcule sa norme, on le réduit et le vecteur V2RPnd sert maintenant de vecteur initial pour la 2e itération. On peut effectuer simplement les itérations suivantes avec un tableur en dupliquant la première itération et en remplaçant les valeurs de V0 par celle de V2RPnd.

32On répète les opérations jusqu’à fixité des valeurs (ici pas tout à fait obtenue entre V2 et V4, par contre V6, non indiqué ici, redonne les mêmes valeurs que V4). Les valeurs données par les programmes sont les vecteurs calibrés pondérés (ici en gras).

  • 2 Cependant comme les programmes usuels donnent la version pondérée de ces vecteurs, on utilise ici c (...)

33Ce sont les vecteurs non pondérés qui multipliés termes à termes et divisés par leur norme commune redonnent l’approximation2. Par exemple la première case du tableau (Droite, fort intérêt) 0,018 est égale à – 0,470 × 0,1406 × – 0,274 × 0,2188 / 0,2260.

Reconstitution des écarts : premier facteur

Fort

Moyen

Nul

Pond

V6CPnd

Droite

   0,018

   0,011

– 0,029

0,1406

– 0,470

Centre

   0,006

   0,004

– 0,009

0,1094

– 0,191

Gauche

– 0,020

– 0,013

   0,033

0,3730

   0,205

NiGniD

– 0,003

– 0,002

   0,005

0,3770

   0,028

Pond

   0,2188

   0,4746

   0,3066

Norme

V5CPnd

– 0,274

– 0,081

   0,321

0,2260

  • 3 Les coefficients marginaux du tableau 4 sont une simplification des calculs : chaque élément est ég (...)

34Si l’on veut retrouver ce tableau en effectif tel qu’il est présenté plus haut au tableau 4 (chapitre II, section I), il suffit de multiplier chaque case par l’effectif total 512 pour passer des proportions aux effectifs (aux arrondis près)3.

35En ôtant cette reconstitution des écarts à l’indépendance initiaux, on trouve un nouveau reste sur lequel on réitère le processus pour avoir le 2e facteur (ici le dernier).

Notes

1 Les résultats affichés le sont à une certaine précision mais les calculs sont faits avec la précision maximum.

2 Cependant comme les programmes usuels donnent la version pondérée de ces vecteurs, on utilise ici cette version et on dépondère en multipliant par la pondération.

3 Les coefficients marginaux du tableau 4 sont une simplification des calculs : chaque élément est égal au vecteur calibré non pondéré divisé par la racine carrée de la norme et multiplié par la racine carrée de l’effectif. Par exemple l’élément « droite » du coefficient – 3,147 est égal à – 0,066 (affiché – 0,07) élément correspondant de V4CNP, divisé par la racine carrée de la norme 0,2258 soit 0,4752 multiplié par la racine carrée de l’effectif total 512 soit 22,63. Du fait de la multiplication terme à terme, on retrouve la formule générale donnée ici.

Acheter

Volume papier

Chargement

Unavailable