Quantification du travail parlementaire, pour quelques variables en plus

À l’occasion d’un coup de ménage estival, voici une mise à jour prévue depuis longtemps au dossier flegscrap, qui permet de récupérer les documents déposés sous les cinq dernières législatures de l’Assemblée nationale :

[image depots.year.png effacée, désolé ; voir les nouveaux graphes ]

Collecter des données pendant la session législative implique de récupérer des documents déposés le jour même, ce qui donne des comparatifs intéressants où l’on voit, par exemple, le déplacement des amendements sur les articles d’une loi en cours d’examen :

Screen Shot 2013-07-14 at 12.16.51 AM

Les projets et propositions de loi qui s’insèrent sur l’agenda parlementaires apparaissent d’abord dans les sources HTML que le code télécharge, puis rejoignent le jeu de données entre chaque itération, donnant à voir comment les données sont progressivement complétées :

Screen Shot 2013-07-18 at 8.27.59 PM

Les données montrent deux espaces, dominés respectivement par les projets de loi (probabilités de discussion et d’adoption élevées) et les propositions de loi (probabilités de discussion et d’adoption faibles). En rentrant dans le détail, on voit aussi que la distribution des séances de débat en séance publique s’achètent cher (auprès de la conférence des Présidents, si je ne m’abuse).

[ image depots.quadrant.png effacée, désolé ; voir les nouveaux graphes ]

En attendant que le site Internet de l’Assemblée nationale réorganise ses données, voire mieux, en rajoute. Cela ne fera pas disparaître la nécessité de bien nettoyer les données.

Un réseau de 68 203 co-signatures sur 11 569 amendements

J’ai récemment évoqué les co-signatures d’amendements, en me demandant tout du long si le réseau des co-signataires reflétait la même structuration partisane que le réseau des députés sur Twitter. Voici le résultat final sur les 11 500 amendements co-signés depuis le début de la 14e législature en cours :

network.fruchtermanreingold

J’ai rapidement annoté le graphique que m’a sorti ggnet après un calcul de douze minutes pour constituer le réseau1. Pour générer ou actualiser les données, il suffit de récupérer les dossiers parlementaires puis d’en extraire les co-signataires. Le résultat est une gigantesque liste de listes à décomposer en 68 203 paires uniques de co-signataires :

neta.prep

Pour tester mes versions intermédiaires, j’ai utilisé des échantillons réduits. Sur ces échantillons, le groupe GDR est complètement isolé, car il rédige moins d’amendements en valeur absolue et n’en co-signe pas souvent avec des membres d’autres groupes parlementaires. Voici le réseau avec 500 co-signatures sélectionnées au hasard :

neta.500

Puis, lorsque l’on augmente la “résolution” en prenant un échantillon dix fois plus large de 5 000 amendements, les connexions commencent à apparaître, plaçant le groupe GDR dans l’opposition, en dehors du groupe de “soutien” radical-écologiste placé à côté de la majorité socialiste :

neta.5000

Le réseau place également les élus frontistes dans cette opposition, mais comme il manque quelques données, les points gris ne sont pas tous des élus NI. Tout est perfectible, mais je n’ai pas le temps de corriger ce problème, créé par la présence d’homonymes. J’ai rédigé cette version dans le train et vais m’en tenir à ça.

La force du marqueur partisan est aussi évident que dans le cas des députés sur Twitter : l’immense majorité des liens se tisse à l’intérieur des groupes parlementaires. Cet effet ne révèle toutefois rien d’inconnu, et surtout rien de complet : le travail parlementaire trans-groupe, déjà identifiable dans ces visualisations, est simplement plus discret que ces signaux publics que sont les liens par Twitter ou par co-signature d’amendements2.

Pour terminer, une visualisation de la centralité des points montre les inégalités d’investissement dans le travail de co-signature d’amendements (tout en sachant que ce travail exclut de facto celui, non négligeable en quantité et certainement en temps, sur les amendements déposés au nom d’un seul député) :

network.centrality

Le code et les données sont en ligne, avec les notes de construction et les instructions pour actualiser les données. Il doit être possible, moyennant des retouches mineures au code du scraper, de récupérer les mêmes données pour les législatures précédentes.

Mise à jour : le code permet désormais de travailler sur les deux législatures précédentes et de visualiser les données sous forme de réseaux bipartites, un type de réseau à “deux modes” où l’on représente les acteurs et les événements (ici, les co-signatures d’amendements) sur le même graphe. Ces réseaux sont à l’honneur dans le dernier numéro de Social Networks.

Voici à quoi ressemble un réseau bipartite de la législature en cours, à partir d’un échantillon aléatoire de 5 500 amendements. La stratégie d’obstruction législative dans l’opposition est parfaitement lisible, de même que la division du travail entre les groupes et leurs positions respectives vis-à-vis du nexus majorité/opposition :

network.bipartite.14

Je n’avais pas prévu d’aller vers ce type de visualisation, mais Pedro Jordano m’a convaincu et a fourni le code qui sert à convertir les données entre single-mode et two-mode. En raison de la taille et de la nature du réseau, il faut également penser à le stocker dans une matrice “économe” qui compresse l’espace pris par les tonnes de “zéros” qu’on trouve dans les réseaux bipartites : le code pour cette sparse matrix est venu d’un billet de Solomon Messing sur le sujet.

  1. Ce n’est pas du “big data”, mais il faut quand même aplanir une matrice de plusieurs millions de lignes pour créer le réseau. []
  2. Il suffit de penser, par exemple, aux amendements déposés en commission, exclus des données uniquement nominatives montrées ici. []

Députés stratèges : un travail en cours sur des co-signatures d’amendements

Quand un député choisit de co-signer un amendement, avec combien d’autres députés co-signe-t-il ? On peut supposer que cela dépend avant tout de son groupe parlementaire, avec une stratégie « de masse » dans les groupes de la majorité (SRC) et de l’opposition (UMP), et une stratégie « isolationniste » dans les autres groupes.

C’est plus ou moins ce que l’on peut voir sur les 11,568 co-signatures d’amendements de la législature en cours. Le graphique suivant montre le nombre moyen et l’écart-type de ces co-signatures pour cent députés pris au hasard dans la masse des données, et où l’on voit bien la stratégie des députés écologistes ou frontistes :

demo_mu
(Cliquer sur le graphique pour une version PDF un peu plus lisible.)

Add. Voici la version complète, qui fait 171 cm de long et qui a mis vingt minutes à sortir sur un processeur 1.8GHz/8GB, même en vectorisant l’intégralité du calcul.

Les données proviennent d’un petit exercice de scraping qui permet aussi de dessiner le réseau des co-signatures. Le graphique suivant montre ce réseau sur les 10 000 derniers amendements déposés, et l’on y voit clairement la position centrale, isolée ou carrément décentrée de chaque groupe parlementaire :

demo
(Cliquer sur le graphique pour une version PDF avec quelques explications.)

Le matériau de réplication pour ces graphiques est en cours de constitution, sur une idée de Baptiste Coulmont qui avait produit un travail similaire. Mon obsession pour les réseaux de députés a enfin trouvé un nouveau support empirique ! Plus de nouvelles quand j’arriverai à finaliser les (très, très longues) routines d’extraction des données.