David Madore's WebLog: De la difficulté de faire une régression linéaire contrainte en politique

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]

↓Entry #2039 [older| permalink|newer] / ↓Entrée #2039 [précédente| permalien|suivante] ↓

(lundi)

De la difficulté de faire une régression linéaire contrainte en politique

Dans l'entrée précédente, j'ai suggéré l'idée de faire une régression linéaire multivariée entre les deux tours des résultats de l'élection présidentielle, c'est-à-dire, essayer de calculer quelle combinaison linéaire des résultats du premier tour de la présidentielle (considérés comme un vecteur de N+2 nombres, à savoir le nombre de voix pour chacun des N candidats + bulletins blancs/nuls + abstentions) approche le mieux, sur l'ensemble des communes de France, les résultats du second tour (considérés comme un vecteur de 4 nombres, pour 2 candidats + blancs/nuls + abstentions). J'espérais[#] — un peu naïvement comme on va le voir — que ce calcul permettrait de connaître la matrice de reports des voix, c'est-à-dire, la proportion, dans chacun des N+2 votes possibles au premier tour, des 4 votes possibles au second tour : par exemple savoir que les électeurs de François Bayrou au premier tour se seraient reportés à 30% sur l'abstention, à 5% sur le vote blanc, à 35% sur Nicolas Sarkozy et à 30% sur François Hollande (chiffres imaginaires mais pas aberrants).

Les résultats du second tour n'étant pas encore disponibles sur www.data.gouv.fr au moment où j'écris, je me suis dit que j'allais m'exercer sur les résultats de 2007 (pour calculer les reports entre les deux tours de celle-ci soit, de façon plus osée, entre 2007 et 2012). Je passe sur les différentes petites crottes de ragondin rencontrées en chemin pour préformater les données sous une forme sympathique (par exemple les communes qui ont eu la fort sotte idée de fusionner ou de se séparer ; je passe aussi sur le fait qu'il n'y a pas de version détaillée des résultats de Paris, parce que Paris a le malheur d'être une unique commune). Disons que j'ai un gros tableau de données raisonnables, d'où j'ai retiré tout ce qui me chagrine.

Il n'est alors pas difficile de faire les régressions linéaires, avec un programme comme R[#2]. C'est-à-dire trouver les (2+2)×(12+2)=56 coefficients tels que, pour chaque vote possible au second tour, le nombre de ces votes soit au mieux prédit par la combinaison, affectée par les coefficients correspondants, des 14 votes possibles au premier tour (il y avait 12 candidats en 2007, ce qui fait 14 avec blancs et abstention). Il est assez facile de se convaincre, dans la mesure où le nombre d'inscrits ne change pas entre les deux tours (ce qui est quasiment vrai — pas rigoureusement, et ça fait partie des petites crottes de ragondin — mais suffisamment pour qu'on puisse faire comme si), que la somme des coefficients sur une colonne de cette matrice (c'est-à-dire pour chaque vote possible de premier tour) vaut 1. Maintenant, j'espérais que quelque chose ferait que ces coefficients seraient aussi tous positifs, et auraient l'interprétation naïve que j'ai décrite ci-dessus comme matrice de transfert des voix. Or ce n'est pas le cas, et voici la matrice des coefficients :

1er tour→
↓2d tour
Abstentions Blancs/nuls Besancenot Buffet Schivardi Bayrou Bové Voynet De Villiers Royal Nihous Le Pen Laguiller Sarkozy
Abstentions 0.8519 −0.4145 0.1060 0.0578 −0.2845 0.1705 0.5994 −0.5476 0.0281 0.0002 −0.5410 −0.0405 0.3789 0.0047
Blancs/nuls 0.0035 0.4859 0.1085 0.0113 0.5714 0.0867 −0.1229 0.0775 0.0596 −0.0019 0.2442 0.0119 0.2184 0.0153
Sarkozy 0.0910 0.5596 −0.0944 −0.0309 0.8717 0.3499 0.0586 0.9280 0.9056 −0.1129 0.7721 0.9979 −1.2629 1.0427
Royal 0.0532 0.3785 0.8656 0.9573 −0.1743 0.3938 0.5116 0.5719 0.0021 1.1131 0.5122 0.0283 1.6956 −0.0627

Le fit linéaire est excellent : même si je ne sais pas lire exactement les données de marges d'erreur que R me sort, je sais lire qu'elles sont très faibles (par exemple s'il me dit que 99.99% de la variance est expliquée par ce modèle linéaire, ou que dans 50% des communes l'écart est inférieur à 6 voix) ; bref, ces coefficients ont un sens. Mais pas exactement celui que je veux !

Il est relativement concevable que 85% des abstentionnistes du premier tour en 2007 l'aient encore été au second, tandis que 9% seraient allés voter Sarkozy et 5% Royal ; ou que les électeurs de Bayrou se soient reportés à 17% sur l'abstention, à 9% sur le vote blanc, à 35% sur Sarkozy et à 39% sur Royal : j'y crois assez ; ou encore que, comme le tableau le suggère, ceux de Villiers aient voté à 91% pour Sarkozy au second tour tandis que 3% se seraient abstenus et 6% auraient voté blanc. Mais il est impossible que 93% des électeurs de Voynet aient voté Sarkozy au second tour, 57% pour Royal, et un pourcentage négatif, −55%, se soient abstenus.

C'est assez perturbant : ce tableau montre des chiffres relativement sensés, dans un monde où un vote négatif serait possible. ☺️

Bon, ben si les chiffres ne veulent pas d'eux-mêmes être raisonnables, il n'y a qu'à les forcer à l'être : je peux demander à chercher, après tout, quelle est la matrice à coefficients positifs, où chaque colonne a pour somme 1, et qui réalise la meilleure approximation linéaire parmi celles vérifiant ces contraintes : on parle de régression linéaire avec contraintes. Il s'agit là d'un problème d'optimisation quadratique (avec contraintes linéaires, et terme quadratique positif défini) : quelque chose qu'on sait très bien faire. En principe, R a ce qu'il faut pour y arriver : mais nouvelle petite crotte de ragondin, ce package ne marche pas chez moi, il prétend que mes contraintes (=la positivité des variables) sont impossibles à satisfaire, je ne sais pas ce qu'il a fumé. À la place, j'ai dû passer par Octave, qui est encore plus pénible à manipuler et que je connais encore moins, mais enfin qui sait faire le boulot (quand on réussit à exporter les matrices du problème de R vers Octave, ce qui n'est pas la chose la plus agréable qui soit).

Voilà ce que ça donne :

1er tour→
↓2d tour
Abstentions Blancs/nuls Besancenot Buffet Schivardi Bayrou Bové Voynet De Villiers Royal Nihous Le Pen Laguiller Sarkozy
Abstentions 0.8424 0.0000 0.0000 0.0000 0.0000 0.1679 0.0275 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
Blancs/nuls 0.0424 0.2600 0.0000 0.0000 1.0000 0.1093 0.0000 0.0000 0.0026 0.0000 0.5503 0.0004 0.0000 0.0000
Sarkozy 0.0495 0.0900 0.0000 0.0000 0.0000 0.3283 0.0000 0.0000 0.9974 0.0000 0.1999 0.9996 0.0000 1.0000
Royal 0.0657 0.6500 1.0000 1.0000 0.0000 0.3945 0.9725 1.0000 0.0000 1.0000 0.2498 0.0000 1.0000 0.0000

De nouveau, il est relativement raisonnable de penser que les électeurs de François Bayrou au premier tour en 2007 se seraient divisés au second tour entre l'abstention à 17%, le vote blanc à 11%, Sarkozy à 33% et Royal à 39% (les chiffres diffèrent très peu du tableau précédent, et sont toujours crédibles). À la limite, il n'est pas totalement délirant d'imaginer que, avec la précision des mesures, près de 100% des électeurs de Marie-George Buffet, ou même d'Olivier Besancenot, se soient reportés sur Ségolène Royal au second tour, comme d'ailleurs les électeurs du premier tour de Ségolène Royal elle-même. Mais alors croire que les électeurs de Gérard Schivardi au premier tour auraient tous voté blanc au second (sans s'abstenir, mais vraiment voté blanc), ou croire que ceux qui ont voté blanc au premier tour auraient été 65% à voter pour Royal au second, ce n'est, comme qui dirait, pas très crédible. Je suis aussi amusé du 99.96% de report calculé de Le Pen sur Sarkozy (les 0.04% restants ayant censément voté blanc, c'est très précis) !

Voici donc la question à 100¤ : ces chiffres ont-ils une quelconque signification en rapport avec la réalité, ou un quelconque intérêt pour l'analyse politique ? À défaut, y a-t-il un autre traitement statistique que je puisse mener pour en obtenir de meilleurs ? Et en tout état de cause, quand (et si) le ministère de l'intérieur se sortira les doigts du c** pour fournir les chiffres complets du second tour de 2012 en Open Data, sera-t-il intéressant de mener la même analyse ou doit-on considérer que c'est du temps perdu ?

[#] Pourquoi espérer ça ? Parce que si les reports de voix du premier vers le second tour se font à peu près de la même façon partout, et notamment, indépendamment de ce pour quoi votent les autres électeurs de la commune, ce qui a priori ne semblait pas une hypothèse délirante, alors on devrait bien retomber dessus en faisant une régression linéaire.

[#2] Programme au nom incroyablement stupide quand on pense à la difficulté que cela cause de chercher dans Google des informations sur un truc à une lettre.

↑Entry #2039 [older| permalink|newer] / ↑Entrée #2039 [précédente| permalien|suivante] ↑

[Index of all entries / Index de toutes les entréesLatest entries / Dernières entréesXML (RSS 1.0) • Recent comments / Commentaires récents]