Notes de travail sur les réseaux de collaboration législative

J’ai eu la chance d’intervenir, il y a dix jours, dans le séminaire interne du CEVIPOL, le laboratoire de science politique de l’Université Libre de Bruxelles. J’étais invité par Émilien Paulis, que je remercie au passage pour l’invitation, pour la logistique et pour l’accueil sur place.

Mon intervention portait sur l’étude des réseaux de collaboration législative. Les slides que j’ai utilisées sont proches de celles que j’avais présentées en juin 2016 dans une conférence d’utilisateurs de R, et que j’ai présentées à nouveau cette même année dans une conférence « quanti » à Lille et dans le séminaire du Médialab de Sciences Po.

Quelques extraits ci-dessous, à cliquer pour obtenir les slides au complet :

Magrit, une interface de cartographie thématique en ligne

Un outil qui fera date :

Le thème de la cartographie revient périodiquement sur ce blog : je n’y connais rien et me contente de bricolages approximatifs, mais Joël s’y connaît beaucoup, beaucoup plus, et produit régulièrement de très chouettes résultats cartographiques.

Nous avons tous les deux été impressionnés – et comme le montrent les premiers retours sur les listes de diffusion, nous ne sommes pas les seuls – par la qualité de Magrit, qui permet de faire de la cartographie thématique depuis une interface interactive très bien documentée. Les résultats sont proches de ceux que permet d’obtenir le package cartography, et pour cause, c’est en partie la même équipe qui produit les deux outils.

Plus de détails sur le site de l’UMS RIATE, où officie Timothée Giraud, que je suspecte d’être le gentil organisateur des deux communautés de développeurs du package cartography d’un côté, de Magrit de l’autre.

Exemple de carte tirée de la galerie Magrit :

À suivre sur Hypothèses

La plateforme Hypothèses est définitivement the place to be pour suivre ce qui se fait en cartographie avec R (et d3.js, et autres trucs associés). Je vous conseille :

Encart publicitaire : encore plus de cartographies réticulaires

Si vous avez aimé l’exemple de « cartographie réticulaire » publié il y a un mois au sujet des théories du complot, vous en trouverez naturellement plein d’autres sur ce blog, mais aussi dans mes notes sur R, en anglais (voir l’encart publicitaire précédent).

L’une de mes dernières notes sur R porte sur la construction d’un petit réseau de co-occurrences de mots-clés, dont voici le premier résultat :

réseau de co-occurrences

Les mots-clés que vous voyez ci-dessus m’ont été fournis par une classe de cobayes gentils étudiants du Master Governing the Large Metropolis, qui est objectivement le Master le plus chouette de la planète1. Les (17) étudiants étaient tenus de lister leurs centres d’intérêt intellectuels, ce qui a donné ce petit réseau de co-occurrences.

Ce graphe repose, à peu de choses près, sur la même méthodologie que celle utilisée pour cartographier les théories du complot, à ceci près que la note qui l’accompagne contient plus de détails techniques, notamment sur la pondération des liens dans les réseaux de co-occurrence2.

À ce stade, je n’ai pas eu recours à la détection de communautés pour classer les mots-clés en fonction de leurs co-occurrences : une lecture rapide du graphe m’a suffi. En revanche, dans une seconde note utilisant les mêmes données, je me suis amusé à reprendre le réseau bipartite initial des étudiants et de leurs mots-clés :

réseau bipartite

Or, si l’on réduit ce graphe à des liens entre étudiants plutôt qu’entre mots-clés, alors la détection de communautés devient assez intéressante, puisque l’on va pouvoir s’en servir pour repérer les clusters d’étudiants partageant les mêmes centres d’intérêt, en utilisant le même algorithme de détection de communautés que dans ma cartographie des théories du complot :

réseau unipartite avec clusters

Remarquez que j’ai la composition réelle des groupes de travail qu’ont formé les étudiants suivant mon cours, et qu’elle ne correspond pas du tout, mais alors pas du tout, à celle qui apparaît ci-dessus… Autrement dit, dans l’immense majorité des cas, les étudiants ont formé leurs groupes de travail en se fondant sur d’autres critères que leurs centres d’intérêt communs.

  1. J’aime vraiment beaucoup enseigner dans ce Master où l’on trouve, dès la deuxième semaine de cours, un exemplaire de Seeing Like A State dans les sacs des étudiants. []
  2. Voir aussi cette autre note sur la pondération des liens dans des réseaux de co-auteurs. []

Une carto du complot

En fouillant les archives du ‘Bistro, je n’ai pas trouvé trace d’un billet évoquant cette petite cartographie des théories du complot, établie à partir des archives de trois blogs français documentant ce phénomène :

cartographie du complot

Le code pour produire le graphe est déjà vieux d’un an, mais il devrait tourner avec quelques ajustements mineurs. Je m’en sers parfois comme « demo » de ce que l’on peut faire avec un minimum de scraping et de visualisation de réseaux avec R.

Construction et résultats

Le graphe est un simple réseau de co-occurrence des mots-clés choisis par les auteurs des blogs pour thématiser leurs billets. Les groupes de mots-clés en gris correspondent aux différentes communautés du graphe, détectées à partir de l’algorithme de Louvain, et les mots-clés les plus foncés sont simplement les plus centraux.

Cette visualisation permet de repérer d’un coup d’oeil les différents éléments du conspirationnisme français tel que documenté par les blogs utilisés comme sources des mots-clés : extrême-droite (et extrême-gauche), « 11 septembre », anti-sémitisme, et « politique étrangère » à base d’empire états-unien et de conflit israélo-palestinien.

On retrouve aussi ces éléments dans le conspirationnisme « off-line », par exemple chez les négationnistes français, dont l’idéologie est aussi une sorte de syncrétisme permettant d’expliquer l’ordre mondial à partir des Juifs et de leurs alliés dans la fabrication de mensonges destinés à tromper les masses.

Données et références

La principale source du réseau présenté ci-dessus est le blog Conspiracy Watch de Rudy Reichstadt, qui a aussi signé une note sur le conspirationnisme pour la Fondation Jean Jaurès. Ce blog fournit l’immense majorité des données utilisées pour construire le réseau.

Mon cher co-blogueur Joël avait aussi signé un rapport sur le conspirationnisme en France, ainsi qu’une très utile visualisation en ligne des différentes composantes de la nébuleuse conspirationniste francophone sur Internet (cliquer sur l’image pour la version interactive) :

joel-complosphere

L’analyse de la « complosphère » n’en est qu’à ses débuts, mas il y a déjà quelques travaux là-dessus, et vu l’actualité prise par ce sujet depuis l’irruption de Dieudonné et d’Alain Soral dans cet espace d’expression, il y aura aussi une section thématique sur la « Sociologie politique du conspirationnisme » au prochain Congrès de l’Association Française de Science Politique1.

  1. La section (ST 52) sera co-animée par Philippe Aldrin, qui a récemment signé une Sociologie politique des rumeurs, et Pierre France. []

Collecte et visualisation de données législatives avec R

Le groupe d’utilisateurs R du Muséum national d’Histoire naturelle de Paris (le groupe “Sémin-R”) organise une conférence R demain. Cliquez sur l’image ci-dessous pour le programme complet :

JourneeR-2016-Programme

J’y présenterai les slides résumées ci-dessous (cliquez sur n’importe quelle image pour la version PDF complète, ou utilisez la version en ligne), et si tout se passe bien, j’aurai un court papier technique à partager sur le sujet dans moins d’un mois :

Briatte_R_MNHN_2016-2

Briatte_R_MNHN_2016-3

Briatte_R_MNHN_2016-4

La présentation reprend, en substance, une brève note que j’ai récemment publiée dans Network Science. Cliquez sur l’image ci-dessous pour accéder au preprint ou lisez directement son annexe pour le détail des données :

Briatte_NWS_published

Comme d’habitude, le code et les données sont en ligne — j’en ai déjà parlé à plusieurs occasions cette année, et vous risquez d’en entendre encore parler dans les années qui arrivent (plus de détails quand il y en aura à partager).

Affaire à suivre, donc, mais bon, c’est pas comme si je ne vous avais pas déjà un peu cassé les pieds avec R et la visualisation de réseaux de collaborations législatives depuis quelques temps déjà.

J’en profite pour saluer amicalement les collègues suisses, et Marion Deville en particulier, qui participent à la Semaine de la démocratie de Genève, et qui ont prévu d’utiliser certains de mes graphiques dans une présentation de leurs travaux lors d’un hackathon organisé le 23 septembre. Je n’ai pas beaucoup plus d’informations là-dessus, mais vous pouvez écrire à Marion si vous êtes intéressés.

En attendant, il reste quelques places pour la conférence de demain : écrivez aux gentils organisateurs (leurs coordonnées sont sur le site du Sémin-R), ou faîtes-moi très vite signe, et je ferai suivre. À demain !

Mise à jour, le jour même : malgré un léger gros problème qui m’a fait rater la matinée, je peux confirmer que la journée R du MNHN était, comme prévu, hyper-chouette, le cadre du Muséum d’Histoire Naturelle étant très agréable par ailleurs.

À noter dans les présentations, qui seront bientôt en ligne sur le site du RUG MNHN :

  • les dernières améliorations du package FactoMineR – et Factoshiny
  • l’utilisation de scripts R sur un serveur Apache
  • la visualisation de cartes auto-organisatrices
  • un exemple d’interfaçage R + Java
  • la sonification (!) de graphiques R/ggplot2

La dernière présentation, par Jérôme Sueur (l’un des deux organisateurs de la journée, avec Amandine Blin) était très divertissante. Pour comprendre pourquoi, jetez un coup d’oeil au package playitbyr.

Porngrams avec R

Pour celles et ceux qui auront besoin d’inclure les résultats de Sexualitics dans leurs papiers, voici la fonction R qui renvoie le graphique correspondant, avec la possibilité de visualiser jusqu’à dix mots-clés :

porngram("asian", "american", "french", adjust = FALSE)

porngram1

Il est assez fréquent de vouloir ajuster les courbes en incluant un diviseur commun pour contrôler par le volume de données disponible pour chaque année. Reprise du même exemple avec ce paramètre :

porngram("asian", "american", "french", adjust = "xxx")

porngram2

La fonction reprend des bouts de code que j’avais écrit pour le package ngramr. Malheureusement, les données de Google Ngram s’arrêtent en 2008, ce qui ne permet pas d’ajuster les Porngrams par les Ngrams.

Un exemple plus complet :

geo

Pour analyser ces bêtises, il faut faire un petit effort de manipulation en différenciant la série temporelle de chaque mot-clé sur les années 2008-2012, et en extrayant les composantes principales de la transposée du résultat : l’année 2011 est celle où les variations de volume des mots-clés sélectionnés ont été les plus importantes.

Des réseaux et des mots

Histoire d’en terminer avec les réseaux de députés, voici quelques slides publicitaires pour la fonction ggnet du package GGally, qui rassemble plusieurs fonctions graphiques exploitant la syntaxe de ggplot2 :

Côté analyse, le réseau « Twitter » des députés est moins parlant que celui de leur travail législatif, même s’il lui ressemble structurellement, mais je ne reviens pas là-dessus, n’ayant pas beaucoup plus de données qu’il y a quelques mois.

Je présenterai les slides sur ggnet mercredi à R Addicts Paris, aux côtés d’autres présentations beaucoup plus avancées dans la manipulation de graphiques. Côté réseaux, il y a plein de pistes pour produire des réseaux manipulables, comme sigma.js ou d3Network. Voici un exemple de réseau textuel visualisé avec cette dernière fonction, qui utilise d3.js :

d3Network

Cliquez sur l’image pour la version dynamique. Les données sont tirées d’un petit exemple de modélisation textuelle dans un corpus faiblement structuré, conçu pour Baptiste Coulmont.

Dans cet exemple, les liens entre les termes correspondent à leur probabilité d’association dans un ensemble de termes lemmatisés, où les termes sont groupés par « thèmes possibles« . La modélisation utilise des distributions de Dirichlet et s’estime, grosso modo, de manière “fixe”, “aléatoire” ou “bayésienne” — ce qui prend des plombes dès que le corpus contient plus de quelques centaines de documents…

Dernier truc en cours, un autre exemple de temps de calcul très lent, et qui demande en plus un très long processus préalable de récupération des données. Le graphique suivant contient un peu plus d’un million d’observations, agrégées par semaine de publication et séparées visuellement par institution d’origine :

fig4_week

Le projet auquel se rattache les données est trop peu construit pour en dire vraiment plus, sinon que R et RStudio gèrent très bien les manipulations graphiques sur un million de points, à condition d’être disposé à aller se faire un café (ou même en racheter à côté) pendant que les objets ggplot2 (environ 250 MB par objet) percolent. Peut-être bigvis peut-il encore réduire ce temps de calcul, mais dans tous les cas, R fonctionne à un million de points : testé, approuvé.

Bonnes fêtes :)