Ressources numériques en sciences humaines et sociales OpenEdition Nos plateformes OpenEdition Books OpenEdition Journals Hypothèses Calenda Bibliothèques OpenEdition Freemium Suivez-nous

PSRM (Une nouvelle revue ! Une nouvelle revue…)

Cambridge University Press publie une nouvelle revue de science politique pour l’EPSA, dont nous annoncions la création il y a deux ans (jetez aussi un coup d’oeil au programme de sa conférence générale, on y trouve plein de trucs chouettes).

Cette nouvelle revue ressemble à s’y méprendre à un clone européen de l’APSR, bien plus d’ailleurs que l’EPSR : articles ultra-cadrés et très formalisés. Celles et ceux qui connaissent le QJPS auront l’impression de lire presque la même chose. D’ailleurs :

PSRM strives to become a top-tier outlet for the best quantitative, formal, positivist and rigorous work in the discipline, and for research that lies at the substantive intersection of politics and economics and other cognate fields.

Extrait de la présentation du numéro par les éditeurs.

Outre cette imitation de l’existant, le premier numéro a aussi les défauts habituels des publications idoines : des liens compliqués et des DOI qui ne fonctionnent pas toujours, des annexes sans scripts de réplication, trois décimales de précision, …

Bref, un gros air de déjà-vu et une pointe de déception, car les nouvelles revues devraient servir à faire changer les codes de la publication universitaire, et même si les idées ne manquent pas, elles peinent à s’inscrire dans les pratiques éditoriales.

Le premier numéro est libre d’accès (c’est déjà ça).

Une fonction pour passer des réseaux à ggplot2

Mise à jour : la fonction ggnet a été publiée dans le package GGally (merci à Barret, qui se charge de tenir le package à jour et qui a fourni une excellente relecture du code).

J’ai terminé de travailler sur la fonction ggnet évoquée dans un récent billet. Ça donne des graphiques comme ça :

example3

La fonction est à présent robuste à chacune de ses options : vous pouvez omettre n’importe quel argument (sauf le premier !) et toujours obtenir quelque chose de graphiquement potable. Il reste juste une petite faiblesse sur l’option quantize.weights, qui doit probablement planter si une classification par quartiles ne parvient pas à identifier les noeuds (les points) de manière unique.

Les exemples de la fonction couvrent les cas les plus simples avec des données simulées et montrent bien la filiation avec le code original de Moritz Marbach :

rnd = network::network.initialize(10)
cat = LETTERS[rbinom(10, 4, .5)]
ggnet(rnd, 
      label = TRUE,
      color = "white",
      segment.color = "grey10",
      node.group = cat)

rnd

L’option label.nodes est particulièrement flexible grâce à l’aide de Joël sur un bout du code. Un point du graphique, ou n’importe quelle série de points identifiés par l’attribut vertex.names, peuvent être légendés, ce qui donne des combinaisons faciles avec l’argument node.group, comme dans ce graphique qui distingue les “followers” de NKM de tous les autres :

example4

Pour des calculs plus avancés, jetez un coup d’oeil aux fonctions du fichier functions.R, qui simplifient un peu le boulot en calculant les “followers/followings” ou en calculant des mesures de centralité pour chaque groupe parlementaire. Les packages à consulter pour l’analyse de réseau sont les packages igraph, network et sna (ou alors un logiciel comme Pajek, mais l’analyse ne sera pas réplicable comme elle peut l’être avec R).

Rajout #1 : nouvel exemple avec des données sur la répartition des sièges de grands groupes industriels et de cabinets d’avocats dans 55 villes mondiales.

cities

En six lignes de code, dont trois pour récupérer les données :

url = url("http://networkdata.ics.uci.edu/netdata/data/cities.RData")
print(load(url))
close(url)
type = network::get.vertex.attribute(cities, "type")
type = ifelse(grepl("City|Law", type), gsub("I+", "", type), "Firm")
ggnet(cities,
      mode = "kamadakawai",
      alpha = .2,
      node.group = type,
      label = c("Paris", "Beijing", "Chicago"),
      color = "darkred")

Plus de données pour tester la fonction ici et .

Rajout #2 : spécial dédicace aux carnetiers d’Hypothèses ! On reprend les données de Josquin Debaz et on représente le réseau des bloggers en décembre 2010, en pondérant les noeuds par le nombre de liens sortants :

hypo.net

En cinq trois lignes de code, dont quatre pour convertir le réseau au bon format :

url = "http://gspr.ehess.free.fr/media/hypothesosphere10C07.net"
hyp = network::read.paj(url)
ggnet(hyp, 
      label = TRUE, 
      size = 12, 
      vjust = -1.5, 
      weight = "outdegree")

Rajout #3 : le même réseau en d3 grâce au package en cours de développement d3Network, de Christopher Gangrud (cliquer sur l’aperçu pour la version interactive, hébergée ailleurs) :

d3Network screenshot

Le code est encore une fois assez court, puisqu’il ne faut qu’une dizaine de lignes pour convertir de Pajek (.net) à igraph à d3 :

# data
require(igraph)
url = "http://gspr.ehess.free.fr/media/hypothesosphere10C07.net"
hyp = read.graph(url, format = "pajek")
df = asDF(hyp)
Source = df$vertexes[df$edges$V1, 2]
Target = df$vertexes[df$edges$V2, 2]
df = data.frame(Source, Target)
# d3Network
devtools::install_github("d3Network", "christophergandrud")
require(d3Network)
d3Network(df,
          file = "hypothesosphere.html",
          width = 900,
          height = 750,
          fontsize = 12)

S’il vous venait l’idée de vouloir représenter le réseau des députés sur Twitter en d3, essayez ceci, mais attendez-vous à un gros amas de points qui mettra longtemps à se stabiliser :

file = "network.txt"
link = "https://raw.github.com/briatte/ggnet/master/network.txt"
## downloader::download(link, file)
df = read.csv(file, sep = "\t")
names(df)
## devtools::install_github("d3Network", "christophergandrud")
require(d3Network)
d3Network(df, "network.html")

Lancement de la revue “Statistique et société”

Emmanuel Didier, dont les lecteurs de ce blog ont déjà entendu parler à propos de statactivisme (conférence, émission), a annoncé cette semaine la mise en ligne du premier numéro de Statistique et société :

S & S

Cette revue se propose de montrer comment la statistique intervient dans la société, y joue un rôle souvent inaperçu, et est en retour transformée par elle.

L’information d’ordre statistique irrigue la société contemporaine de part en part, et lui donne sa propre inflexion. Il suffit de feuilleter le journal pour voir qu’elle se trouve dans chacune de ses sections : l’économie bien sûr ; la politique aussi avec les sondages ou le souci d’efficacité mesurée par des objectifs quantitatifs ; l’éducation, qui engendre non seulement des notes, mais aussi de très nombreuses enquêtes ; la santé, qui pose des questions de politique publique ; les affaires étrangères qui ont besoin de chiffres pour mettre en évidence les rapports de force entre États ; et même la culture que l’on pourrait croire rétive à la quantification, qui est pénétrée partout par des équivalents de l’audimat. D’une façon ou d’une autre, et de manière plus ou moins explicite, les statistiques sous toutes leurs formes participent au débat public.

La revue Statistique et Société, une revue de la Société Française de Statistique, se donne pour objectif de mettre en évidence les effets propres de ces quantités. Nous faisons le pari que l’on comprend mieux notre actualité si on l’envisage depuis ce point de vue, crucial mais pourtant souvent laissé dans l’ombre.

Cette revue va certainement contribuer à faire progresser les “sciences sociales du statistique”, qui sont bien représentées en sociologie des sciences et qui parlent de plus en plus fréquemment dans d’autres “langues sociologiques”, aidée dans cette évolution par la sociologie économique, la sociologie de la quantification, de la valuation, …

Ce blog trahit régulièrement sa curiosité en la matière : vous connaissez déjà mon attachement personnel à cette thématique1, et j’imagine sans difficulté que Joël sera content de parcourir un article comme “Faut-il confier à des statisticiens des responsabilités en matière électorale ?” Nos billets parlent souvent de statistiques parce que cette notion nous fait travailler au double titre d’enseignants en méthodes quantitatives et de sociologues rencontrant les statistiques à chaque coin de page de nos terrains respectifs.

Pour en revenir à la revue, les articles sont (très) courts et font parfois penser à ceux de l’initiative History and Policy, un réseau d’historiens britanniques qui publie des textes avec la volonté d’occuper un espace de réflexion tiers-sécant entre l’université et la décision publique. Le premier numéro contient un éditorial de Cédric Villani, qui évoque la légitimité du boson de Higgs en parlant de sa précision à “cinq sigma2.

Bonne lecture (et jetez un coup d’oeil aux Cafés de la statistique) !

  1. Réflexivement, je crois que c’est mon intérêt pour la notion de causalité (autre lancement revue à suivre) qui m’a entraîné sur ce domaine, outre ma curiosité dévorante pour la programmation statistique. []
  2. La physique fait, comme tout le monde, des choses assez étranges aux erreurs standard, en particulier à travers sa technique de modélisation connue sous le nom de “sigma clipping”, une sorte de rabot statistique (ce n’est pas la seule technique de “découpage” connue dans le domaine : on peut aussi faire des sandwiches avec les erreurs standard, même si ce n’est pas très recommandé). []

339 députés sur Twitter

Les données sur la classe politique semblant toujours trouver preneur, voici un encart publicitaire pour un jeu de données contenant les comptes Twitter de 339 députés de la législature en cours :

example1

J’ai récolté les données pour illustrer une fonction qui sert à visualiser des données de type “réseau” avec ggplot2 (note : plus de détails sur le code ici). Voici quelques compléments sur les données :

  • Le “gris central” est Jacques Bompard, mais il est central au réseau malgré lui : il est là à cause des députés qu’il suit ou qui le suivent, et qui l’attirent au centre. Voir ci-dessous pour les détails.
  • L’anomalie “rose chez les bleus” est Kheira Bouziane, dont le compte Twitter est à présent fermé et le site Internet en reconstruction. Je n’ai aucune explication. Il ne faut pas surlire les données.
  • La “rose très excentrée” est Pascale Boistard. Il y a aussi ce député UMP qui m’a fait rigoler : plein de gens le suivent, mais lui ne suit absolument personne. Il n’apparaît pas dans le graphique.

Si vous souhaitez explorer le réseau, voici une rapide fonction “qui est suivi par qui” :

who.is.followed.by <- function(df, x) {
  f = df[which(df$Source == x), ]$Target
  print(as.character(f))
  print(table(ids$Groupe[which(ids$Twitter %in% f)]))
}

Amusez-vous bien :

who.is.followed.by(df, "JacquesBompard")
who.is.followed.by(df, "Marion_M_Le_Pen")

Exercice : rédiger la fonction inverse who.follows() (qui, comme celle ci-dessus, peut s’écrire en une ligne).

Notes de construction : les données sont un mashup entre les données du site Tweet Député (qui est bourré d’erreurs et de fautes d’orthographe), celles réunies par le Lab Europe 1 lors de la campagne électorale de juin 2012 (avec beaucoup de comptes de campagne plus ou moins temporaires et les députés devenus ministres), celles du compte Twitter de l’Assemblée nationale, et le fichier sur les députés en mandat du site Nos Députés, établi par Regards Citoyens avant les partielles de décembre 2012. Le scraping des comptes a eu lieu au cours des quatre dernières semaines.

Envoyez vos corrections, et allez voir d’autres travaux similaires chez Arthur Charpentier, qui avait relayé une visualisation des données de juin 2012 avec Gephi par Ewen Gallic, chez Jonathan Chibois, qui travaille sur ces données en conservant une perspective longitudinale, ou chez Baptiste Coulmont, qui m’a inspiré ce graphique.

Rajout #1 : j’avais oublié de citer la visualisation d’Ewen Gallic, c’est fait. Par ailleurs, j’ai tenté de rendre les données de mon graphique disponibles en deux fichiers “nodes/edges” pour Gephi : le résultat est là (pour autant de temps que possible), et inclut aussi un fichier GEXF exporté avec le package rgexf. Je n’ai pas réussi à utiliser ces fichiers correctement avec Gephi 0.82, que je connais très mal. Have fun!

Rajout #2 : si vous vous demandez comment analyser ce genre de réseau, jetez un coup d’oeil à ce qui a été fait sur les meilleurs tennismen mondiaux.

Rapide retour sur Reinhart et Rogoff

Ce billet reprend une petite collection de liens sur l’affaire “Reinhart et Rogoff”, deux économistes qui ne savent pas très bien compter, si l’on reprend le titre de l’émission qu’y a consacré France Culture peu de temps après la “révélation” des erreurs de leurs papiers. Voici un aperçu des données à partir desquelles les deux économistes avaient conclu, en 2010, qu’un niveau élevé de dette publique nuisait à la croissance du produit intérieur brut (plutôt que l’inverse…) :

R&R - Violin plots

Si cet aperçu ne vous suffit pas, voici à quoi ressemble les données de Reinhart et Rogoff si l’on se donne la peine de les modéliser a minima. Il devient alors évident que l’effet de la dette publique sur la croissance du PIB est un artefact pur et simple, lié au fait que cette croissance est plus faible dès le départ :

R&R - regression lines

L’émission est très intéressante, et j’ai beaucoup aimé les excellentes interventions d’Arthur Jatteau. Un autre intervenant y évoque rapidement les erreurs d’un autre modèle récemment critiqué, celui du multiplicateur fiscal dans le rapport FMI-WEO 2012. J’en avais fait un exercice de cours, et suis en train de tourner Reinhart et Rogoff en un exercice (dont les graphiques ci-dessus sont tirés), sur le modèle de ceux que d’autres ont déjà produit. Le produit presque fini est en ligne sur GitHub. En revanche, cette chouette représentation graphique interactive publiée il y a quelques semaines ne semble plus fonctionner.

Pour ceux qui n’auraient pas suivi, commencez ici, puis continuez au même endroit, et enfin tournez-vous vers vos sources habituelles : Gelman, Krugman, Simply Statistics, Crooked Timber… Arthur Charpentier a publié beaucoup plus de liens si vous voulez reconstituer tout l’historique de la controverse.

La presse, jusque dans ses parodies, a naturellement adoré cette histoire : un doctorant (!) qui démolit (avec deux de ses enseignants !) deux professeurs cités par les élites de la décision macroéconomique… Sans compter que ce n’est pas le premier cas. La réponse de “R & R” à la critique ne fut pas très convaincante, et leur théorie semble définitivement enterrée.

Maintenant que les choses se sont un peu tassées, s’il fallait retenir une seule des erreurs de Reinhart et Rogoff (car il y en a beaucoup : utiliser Excel et se planter dans une colonne, faire des moyennes pondérées pas vraiment pondérées, échouer devant un problème élémentaire de causalité inversée, etc.), je retiendrais celle qui porte sur la fraction traitée des données complètes : les deux économistes ont exclu certains points sans aucune justification. Les outliers méritaient naturellement mieux. L’infini ballet des tragédies fractionnelles ne s’observe pas que chez les professeurs d’Harvard : cette erreur est observable un peu partout.

La tribune plutôt bien ficelée que Le Monde vient par ailleurs de publier, un peu en retard, sur le sujet, rappelle le plus important : la réplication joue actuellement un rôle mineur dans l’organisation du travail scientifique, alors qu’elle devrait y être élevée au rang de routine scientifique.