Notes sur R et l’analyse de réseaux

Comme promis la semaine dernière, nouvelle annonce qui consacre mes deux obsessions pour la programmation statistique avec R et l’analyse de réseaux, toujours avec R :

r-notes

Le blog est syndiqué sur R-Bloggers, qui agrège plein de blogs sur R. Vous pouvez aussi vous y abonner par son flux Atom ou par son flux RSS.

Le moteur du blog est une version bidouillée de Dropplets.

Quelques notes déjà rédigées

J’ai commencé ce nouveau blog pour stocker des notes dont je suis le premier utilisateur, notamment sur les sujets suivants :

Je me suis aussi servi du blog pour documenter des résultats bizarres, faire des suggestions sur l’enseignement avec RStudio, et tenter des petites expériences avec jQuery, telles que celle-ci avec l’API Pinboard.

Il s’agit vraiment de notes plus que d’un blog : tout est rédigé dans un jargon pas très amusant, et il n’y a pas de commentaires, ni même de lien évident pour me contacter — d’où cette nouvelle publication en dehors du ‘bistro.

Dernière petite chose, vous pouvez désormais apercevoir les derniers billets du Polit’bistro et de R / Notes sur ma homepage universitaire, encore une fois grâce à jQuery, et plus précisément grâce au plugin FeedEk, qui permet de récupérer des contenus de fils RSS :

blogs-rss-feedek

Pour les fans, il y a aussi un peu de jQuery (avec beaucoup de JavaScript et un peu d’animations CSS3) sur la page où j’héberge ma frimousse.

Bonne(s) lecture(s) !

Enseigner le “quanti”

enseigner-le-quanti Vous l’aviez vue annoncée sur le blog Quanti / Sciences sociales : hier avait lieu la journée d’étude “Enseigner le quanti dans le supérieur”, à l’initiative d’un comité d’organisation qui incluait notamment Pierre Mercklé et Anton Perdoncin, qui s’occupe du Séminaire de quantitativisme réflexif.

Cette journée m’a renvoyé quelques années en arrière : à Édimbourg, en 2008, les enseignants de méthodes quantitatives avaient créé un petit groupe de réflexion de quantitativistes, dont la liste de discussion s’est tarie en 2013. La journée d’étude d’hier avait une toute autre dimension : il devait y avoir 75 enseignants d’un peu partout.

La réflexion portait sur l’enseignement des méthodes quantitatives, assez rarement évoqué sur ce blog de manière frontale, sauf peut-être indirectement par les utilisations de logiciels comme Microsoft Excel (il y a longtemps), Stata (pendant plusieurs années) ou R (depuis quelques années).

La journée était très bien fichue, et je vous conseille vivement de garder un oeil sur le blog Quanti / Sciences sociales pour en récupérer ce qui en ressortira. L’enseignement du « quanti » est un secteur intéressant à plus d’un titre, et ce qui s’y produit en termes de pédagogie vaut peut-être un détour particulier.

De mon côté, j’ai retenu les points suivants :

  • L’enseignement du « quanti » est profondément par le stigmate d’être, au mieux, inintéressant (voire traumatique) pour un public qui conçoit les sciences humaines comme des humanités littéraires.
  • Le premier thème qui revenait systématiquement dans toutes les discussions était toujours celui du support informatique (du logiciel à utiliser). La seule transition qui revient tout le temps est celle vers R.
  • Le second thème qui revenait de manière latente était celui des données : des conditions éthiques et juridiques de l’accès aux données, mais aussi du type d’enquête à employer, et de ce qu’il serait possible d’envisager à l’avenir.

Le dernier point est intéressant, parce qu’il montre bien qu’il y a une forme d’ingéniérie (voire même un style cognitif) du maniement de données, qu’elles soient quantitatives ou pas, d’ailleurs—ce qui ouvre la perspective d’un enseignement du « quanti » assez proche des compétences regroupées sous l’intitulé hybride data science.

La conséquence pour l’enseignement me semble être qu’il faut envisager trois échelles parallèles de progression pédagogique :

  • une échelle d’apprentissage technique, celle de l’outil informatique et du logiciel utilisé, en particulier dès qu’il s’agit de rendre les analyses réplicables ;
  • une échelle d’apprentissage formel, qui consiste, d’une manière ou d’une autre, à faire comprendre ce que l’on mesure, et avec quelle marge d’erreur ; et
  • une échelle d’apprentissage disciplinaire, qui consiste à (faire) comprendre comment les deux apprentissages précédents contribuent à celui de le discipline.

Sur ce dernier point, mais Étienne l’a exprimé mieux que moi, la contribution du « quanti » aux sciences sociales passe en partie par sa capacité à fournir des données d’enquête, mais aussi des données intégralement numériques (initialement produites sur Internet).

Enfin, je profite de ce billet pour citer le blog ElementR, que je ne mentionne pas assez souvent. Le blog est animé par une équipe d’utilisateurs de R venant de plusieurs laboratoires de sciences sociales. À souligner dans leur excellente série de tutoriels, l’ouvrage (gratuit) “R et espace”, pour apprendre la cartographie et l’analyse spatiale avec R.

Mise à jour : les slides des interventions sont en ligne !

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 :)

Calcul du khi-deux sous Excel, en version accélérée

Note : une version améliorée de ce billet sortira dans quelques semaines.

Un exemple classique en statistiques vient du manuel de Ronald A. Fisher, Statistical Methods for Research Workers, publié en 1925. L’exemple consiste à observer les couleurs de cheveux des filles et des garçons, et de chercher à savoir si la distribution de la couleur de cheveux est indépendante du sexe ou non.

Le texte du manuel est disponible en ligne. Voici la table 17 de l’exemple 11 :

Fisher table 17

La réponse à la question de l’indépendance statistique entre sexe et couleurs de cheveux est fournie par un test très simple, le “khi-deux” de Pearson, qu’il est également très simple d’obtenir avec R, comme indiqué dans l’ouvrage de Pierre-André Cornillon et al., Statistiques avec R.

L’ouvrage fournit le code, que je modifie à la marge et où je re-traduis les entrées vers l’anglais, à partir du manuel de Fisher :

data <- c(592,544,119,97,849,677,504,451,36,14)
tab <- matrix(data,ncol=5)
rownames(tab) <- c("Boys","Girls")
colnames(tab) <- c("Fair","Red","Medium","Dark","Jet Black")
k2 <- chisq.test(tab); k2

L’ouvrage montre aussi qu’il est très simple de transformer la matrice tab sous R pour obtenir plusieurs tableaux de fréquences utiles pour comprendre ce que l’on fait lorsque l’on calcule le “khi-deux”, de même qu’il est très simple d’obtenir ces tableaux sous Microsoft Excel.

Pour obtenir le “khi-deux” sous Microsoft Excel, la manoeuvre n’est pas beaucoup plus compliquée. Il faut commencer par obtenir le tableau des valeurs qui devraient être observées si le sexe et la couleur de cheveux étaient indépendantes l’une de l’autre.

Voici le tableau de Fisher, moins la dernière ligne, qui ne nous servira pas ici. Pour obtenir la valeur attendue (sous hypothèse d’indépendance) de garçons aux cheveux blonds (fair, dans la délicieuse appellation britannique), on multiplie le nombre total de blonds dans l’échantillon par le nombre total de garçons dans l’échantillon, en divisant par la taille totale de l’échantillon :

Pour obtenir le “khi-deux”, on construit un autre tableau, où l’on calcule le carré de la différence entre valeurs observées et valeurs attendues, divisé par les valeurs attendues. On n’a pas encore utilisé la moindre fonction Excel, excepté la fonction SUM pour calculer les totaux en lignes et en colonnes.

Le “khi-deux” est la somme de ces valeurs. Pour connaître le nombre de degrés de liberté (df), on multiplie (nombre total de lignes – 1) par (nombre total de colonnes – 1) dans notre tableau de valeurs, en utilisant les fonctions ROWS et COLUMNS. Il reste à calculer la probabilité que la relation observée soit accidentelle (p), avec la fonction CHIDIST qui demande le “khi-deux” et df comme arguments.

On a utilisé la version de base d’Excel, qui présente le seul avantage d’être installée sur presque n’importe quel poste informatique. Le test est plus rapide à produire sous R, STATA, SPSS ou avec un module d’analyse statistique pour Excel, mais cette version tient en un fichier Excel assez simple d’utilisation.


Question-bonus : pourquoi certaines cellules apparaissent en vert ? Parce que je “vérifie” toujours mes calculs avec un peu de formatage conditionnel. De la même manière, les bordures des tableaux me servent à “protéger” les tableaux contre les insertions sauvages de rangées ou de colonnes.


Mise à jour : bienvenue aux lectrices et lecteurs de la note de bas-de-page de la page 248 du manuel d’Yves Surel, La science politique et ses méthodes, Armand Colin, 2015 :) Disclaimer : l’auteur du billet fut l’étudiant de l’auteur du manuel.