Archives pour la catégorie statistiques

Représentation graphique des victimes d’attentats en France depuis 2 siècles

cliquez sur l'image

cliquez sur l’image

En suivant un lien vers les victimes d’attentats au Liban, j’ai découvert que Wikipedia a une liste des attentats avec les victimes au Liban. Du coup j’ai regardé pour la France, et il y a aussi une telle liste, et dans le cas de la France il y a un tableau analysable. Du coup, cela permet de mettre les attentats récents en perspective.

D’abord, je récupère le tableau de chiffres depuis Wikipedia. Il y a des accès programmatiques élégants, mais j’ai fait ça « quick and dirty », donc copier-coller dans un fichier texte puis importation dans R. R est un environnement de statistiques gratuit et open source, puissant si peu facile d’usage pour les débutants (page officielle, petite explication sur le blog bioinfo-fr).

Puis j’ai mis en forme : remplacer les entrées de type « 50+ » par le nombre seul, par exemple « 50 » dans ce cas, pour permettre le traitement. Et transformer le format bizarre de dates dans Wikipedia en un format reconnu par R, en mettant des tabulations entre les éléments des dates dans le fichier texte (récupérable ici), puis en important dans R et transformant avec as.Date().

Ensuite, c’est simplement une histoire de faire des graphiques simples avec la fonction plot(). Comme je suis chef d’équipe et que j’utilise à peine R (ou d’autres languages) de nos jours, mon code est tout moche mais le voici :

terror_france<-read.delim("~/Desktop/terror_france.txt")
terror_france$date<-as.Date(with(terror_france, paste(Year, Month, Day, sep='-'), "%Y-%m-%d"))
terror_france<-terror_france[order(terror_france$date),]
terror_france$cumulative_dead<-cumsum(terror_france$Dead)
terror_france$cumulative_injured<-cumsum(terror_france$Injured)

plot(terror_france$date, terror_france$cumulative_dead, type='o', xlab="date", ylab="cumulative number of dead", col=ifelse(terror_france$Dead>50, "red", "black"))
text(x=2000, y=350, "These are the dead of 13th November 2015", col="red", pos=2)
text(x=2000, y=330, "in context of 2 centuries of terrorism", col="red", pos=2)

plot(terror_france$date, terror_france$cumulative_injured, type='o', xlab="date", ylab="cumulative number of injured", col=ifelse(terror_france$Injured>200, "red", "black"))
text(x=2000, y=1900, "These are the injured of 13th November 2015", col="red", pos=2)
text(x=2000, y=1800, "in context of 2 centuries of terrorism", col="red", pos=2)

Voici les résultats :cumulative_dead

On voit immédiatement que les attentats de ce vendredi 13 novembre ont fait beaucoup plus de morts que n’est habituel (je n’ai pas envie d’utiliser le mot « normal » pour des attentats qui ne devraient pas l’être). On voit aussi que la guerre d’Algérie n’a pas fait tant de morts que ça en France métropolitaine par attentats (clairement d’autres sources de victimes ne sont pas comptées ici). Mais que les années 1980 ont été marquées par de nombreux attentats, chacun d’amplitude pas très forte, mais qui cumulent un grand nombre de morts au final.cumulative_injuredPour les blessés les années 1980 sont encore plus marquantes, et les attentats récents moins, ce qui met en avant à quel point ces attentats ont été meurtriers en nombre de morts relativement au nombre total de victimes.

En réagissant à une version préliminaire de ces graphiques, Alexander Doria a remarqué :

Bonne question, je ne sais pas. Lecteurs historiens ?

Mise à jour suite au commentaire de MAthieu : courbe en escalier :

staircase_deadMise à jour 2 : un article similaire sur le site Les Décodeurs du Monde.

Mise à jour 3 : suite à demande populaire, le graphe en non cumulé, que personnellement je trouve moins clair mais voici.

non_cumumative_dead

Introduction au bricolage de significativité des tests statistiques

cliquez pour lire la BD

cliquez pour lire la BD

Il y aurait beaucoup à dire si la manipulation volontaire ou involontaire de la significativité statistique, et d’ailleurs si vous êtes sages c’est un sujet sur lequel j’ai l’intention de revenir. Mais en attendant un billet plus sérieux, voici un jeu proposé par le site de statistiques FiveThirtyEight.

Le paragraphe suivant est un peu chiant, vous pouvez le sauter pour aller à la partie amusante. Ou le lire, c’est un blog sciences ici après tout.

Lorsque l’on veut déterminer si une relation observée pourrait l’être aisément par hasard, ou est suffisamment peu probable pour être intéressante, on calcule la valeur dite « p ». De manière pas très intuitive, c’est la probabilité d’observer les données (ou un résultat encore plus extrême) si « l’hypothèse nulle était vraie », c’est–à-dire s’il ne se passait rien d’intéressant. Par exemple si on compare deux mesures pour voir si elles sont corrélées (la taille des gens et le nombre de chansons dans leur ipod/smartphone), si on a un p élevé ça veut dire qu’on a une probabilité élevée de voir ces mesures alors qu’il n’y a pas de corrélation. Alors qu’on a un p faible si on avait peu de chances d’observer ça par hasard. Habituellement, on fixe une limite en dessous de laquelle on rejette l’hypothèse nulle. Par exemple, limite à 5%, p observé à 2%, on rejette l’hypothèse « pas de relation entre taille et nombre de chansons ». Du coup on accepte implicitement l’hypothèse « il y a une relation », même si c’est un peu sioux (pour critique voir billets bayésiens ici et ailleurs au cafe-sciences). Mais ces maths ont été calculées en supposant que vous n’observiez qu’une série de mesures, et rapportiez votre résultat fidèlement. Or si vous observez plein de séries, même s’il ne se passe rien (l’hypothèse nulle est vraie), on aura parfois des valeurs extrêmes par hasard (par exemple dans 1 cas sur 50 p ≤ 2% = 1/50ème) (voir ancien billet sur Google Trends). Si on fait ça assez et qu’on ne rapporte sournoisement que le p le plus faible, on a un magnifique résultat « significatif » qui ne signifie rien du tout. La plupart des choses peuvent se mesurer de plusieurs manières. La taille, c’est la taille en cm, ou divisée par l’âge, ou le poids ; le nombre de chansons, c’est leur nombre, leur longueur d’écoute totale, seulement celles écoutées récemment ? Donc avec une seule série d’observations on peut faire plein de comparaisons.

Le site FiveThirtyEight, dans un billet sur les problèmes de la science (« Science Isn’t Broken. It’s just a hell of a lot harder than we give it credit for. ») propose aux lecteurs d’essayer plusieurs manières de mesurer d’une part le taux de Démocrates ou Républicains au pouvoir aux Etats-Unis, et d’autre part plusieurs manières de mesurer l’économie. Ainsi, en jouant avec les paramètres, on peut obtenir des résultats montrant que les Démocrates sont bons ou mauvais pour l’économie, avec des tests statistiques tout-à-fait « significatifs ». Essayez en cliquant ci-dessous :

cliquez pour aller jouer au "p-value hacking"

cliquez pour aller jouer au « p-value hacking »

Ce qui est terrible c’est qu’un résultat final d’un tel tripatouillage, pris en isolation, est techniquement correct (pas de fraude, pas de trucage visible), mais pourtant représente volontairement mal la réalité. Alors que le but des statistiques est de nous aider à mieux représenter et comprendre la réalité. Ceci est l’illustration d’un problème important en recherche scientifique : les chercheurs peuvent modifier leur analyse jusqu’à trouver un résultat apparemment convaincant et conforme à leurs attentes, mais qui en fait n’a pas réellement été testé.

C’est le « p-value hacking », que j’ai essayé de traduire par « bricolage de significativité » dans le titre, et c’est un problème important. Les solutions sont difficiles, mais la plus importante est d’avoir le problème à l’esprit.

Pour finir une petite blague statistique en anglais (vu ici) : « that’s rather mean » « you mean average? that’s a standard error. » (traduction difficile, jouant sur mean = méchant ou moyenne ; average = moyenne ; standard error = erreur typique ou erreur-type). Bon ça m’a fait rire, je suis un horrible geek, désolé.

Redif : Probablement

Tiens c’est l’été, je vais rediffuser des billets de mon ancien blog. Pour commencer, un qui essaye d’expliquer les statistiques bayésiennes et de vraisemblance (billet d’origine sur le vieux blog).

Un exemple cliché dans l’enseignement des probabilités concerne la manière dont sont habillés les étudiants dans la salle. Le produit des probabilités que chacun ait mis exactement ces habits-là ce jour-là est très faible, et pourtant cela s’est produit. Ceci illustre le fait que des évènements très peu probables peuvent se produire, et parfois doivent se produire. La probabilité que tous les étudiants soient habillés d’une manière ou d’une autre était proche de 1. Ce qui correspond à la somme de toutes les manières (peu probables chacune) qu’ils soient habillés.

Un autre exemple classique d’évènement peu probable qui doit se produire est le tirage du loto. Chaque combinaison de chiffres est très peu probable, mais il est certain que l’une de ces combinaisons (aussi peu probable que les autres) sera tirée. Pour donner un sens intuitif à cette notion de « peu probable » en l’occurrence, essayez de vous rendre compte que la série tirée la dernière fois avait la même probabilité que de tirer 1, 2, 3, 4, 5, 6, 7, 8, 9 (s’ils tirent neuf boules, je ne suis pas très au fait du loto).

Vous suivez ? Bon.

Parce que ça m’a donné l’idée d’une façon d’illustrer des stats plus élaborées, nommément la vraisemblance et le Bayesien (qui a droit à une majuscule car nommé d’après le révérend Bayes). Je veux dire l’exemple des habits, le loto c’est chiant. Je ne suis pas sur que mon idée soit originale, mais on va faire comme si.

Supposons que vous entriez dans un amphi de fac au hasard, et vous voyez des étudiants tous habillés de manière très formelle (cravates pour les garçons, tailleurs pour les filles). Dans quelle filière êtes-vous arrivé ? Biologie ou finances ? Et si vous entrez et que vous voyez les étudiants habillés avec des châles et des grandes jupes pour les filles, des pulls tricotés et des chemises Mao pour les garçons, et des lunettes rondes de partout ? Littérature ou médecine ?

La combinaison exacte de cravates, costumes, tailleurs, chemisiers, etc, que vous voyez dans l’amphi est très peu probable de toutes façons (voir raisonnement précédent). Mais elle est plus probable dans un amphi de finances que dans un amphi de biologie. Donc quand vous entrez dans cet amphi, vous vous dites que vous êtes probablement en finances (ou en droit admettons). C’est l’idée de base de la vraisemblance en statistiques : on cherche sous quelle hypothèse (étudiants de biologie ou de finances ?) les données sont les plus probables.

Ce qui paraît tarabiscoté, vu qu’on sait que les données sont vraies, et qu’en plus les probabilités sont très faibles. Mais c’est exactement le raisonnement qui conduit à penser que l’amphi plein de costards-cravates n’est probablement pas la biologie ou la littérature.

Donc la vraisemblance de l’hypothèse H (étudiants de biologie) est la probabilité des données (comment qu’ils sont fringués) sous cette hypothèse. Et on retiendra l’hypothèse du maximum de vraisemblance, donc dans le cas costard-cravate, finances. On peut même noter qu’on n’a pas les données pour distinguer deux hypothèses de vraisemblance également élevée, finances ou droit.

C’est très utile en biologie, parce que souvent on a des données très peu probables sous un raisonnement probabilistique classique (par exemple des séquences d’ADN uniques), mais pour lesquelles on peut proposer une hypothèse de maximum de vraisemblance (concernant l’homologie, la structure, etc, ça dépend de la question posée).

(Oui parce qu’on peut poser différentes questions avec les mêmes données. Avec les habits, on pourrait voir la vraisemblance de la saison, d’une situation d’examen / cours / travaux pratiques, etc.)

Ce qui n’est pas intuitif dans cette histoire, c’est qu’on aimerait bien connaître non la probabilité des données, mais celle de l’hypothèse qu’on teste. C’est vrai quoi, on s’en fout de la probabilité ultra-faible de toutes ces paires de chaussettes.

Entre en scène le révérend Bayes.

Il a donné son nom à un théorème qui est pratiquement une évidence. Parfois formaliser les évidences c’est utile, voir aussi l’équilibre de Hardy-Weinberg en génétique.

Reprenons d’abord les étudiants habillés. Maintenant on n’entre plus dans un amphi au hasard, mais dans un amphi qui a écrit sur la porte « Grand amphithéâtre de Lettres ». On s’attend a priori avant même d’entrer à trouver des étudiants de lettres. On a donc une probabilité a priori forte pour l’hypothèse « étudiants de lettres », et faible pour les autres hypothèses. Si on entre et que l’on voit plein de châles et de lunettes rondes et de barbiches, on confirme notre a priori. Mais si on entre et que l’on voit un amphi plein de costards-cravates et de tailleurs ? Est-ce que les nouvelles données (la façon dont ils sont habillés) sont suffisants pour modifier notre a priori ? C’est ce que formalise Bayes.

Proba(Etudiants de lettres, sachant Habillés en costards) = Proba(Etudiants de lettres) x Proba(Habillés en costards, sachant Etudiants de lettres) / Proba(Habillés en costards)

(Jolies équations dans Wikipedia)

Proba(Etudiants de lettres) c’est notre idée a priori que l’amphi de lettres sera plein d’étudiants de lettres ;

Proba(Habillés en costards, sachant Etudiants de lettres) c’est la probabilité que les étudiants de lettres aient tous mis des costards ;

Proba(Habillés en costards) c’est la probabilité pour les gens en général de mettre des costards, qu’ils soient en lettres ou non.

Donc à la fin c’est à voir qui gagne : la probabilité d’avoir des étudiants en lettres dans l’amphi de lettres est-elle suffisamment forte pour accepter l’idée farfelue qu’ils se soient tous habillés en costard ? Ou la probabilité d’avoir des lettreux en costard est-elle suffisamment faible pour accepter l’idée que l’amphi de lettres a été occupé par les étudiants en finances ?

Deux choses sont très intéressantes dans la formulation de Bayes : D’une part, on obtient le nombre qu’on veut vraiment, qui est la probabilité de l’hypothèse étant donné les données (on dit plutôt « sachant les données »). Et d’autre part, on prend en compte explicitement notre a priori. Or lorsque l’on obtient de nouvelles données, on a toujours un a priori, qui conditionne la confiance que l’on a dans les conditions autant que les données elles-mêmes. Votre réaction au rapport d’un miracle à Lourdes sera très différente selon que vous soyez catholique (a priori = les miracles à Lourdes sont probables) ou athée (a priori = les miracles sont très improbables). C’est pareil en sciences. Si l’analyse d’un gène m’indique que les humains sont proches parents des chimpanzés, cela est cohérent avec mon a priori, et je l’accepte facilement. Si un autre gène m’indique que les humains sont plutôt proches de la bactérie E. coli, j’aurais tendance à bien bien vérifier s’il n’y a pas eu d’erreur expérimentale, puis proposer un scénario de transfert de ce gène uniquement entre E. coli (qui vit dans notre système digestif) et l’ancêtre des humains. Il me faudrait beaucoup plus de données qu’un seul gène pour réviser mon fort a priori concernant les relations de parenté humain – chimpanzé – bactérie.

Ca peut paraître de la triche comme ça, mais c’est en fait une bonne façon de faire. Il faut être un peu conservateur, étant donné que la plupart de nos a priori largement acceptés (ceux avec une forte probabilité) sont acceptés pour de bonnes raisons. Exemple : les premières analyses moléculaires de l’évolution des mammifères séparaient les rongeurs. Dans une logique « vraisemblance », on retient cette hypothèse ; dans une logique Bayesienne, on note qu’on avait 200 ans de paléontologie et morphologie comparée regroupant les rongeurs ensemble, donc on demande une évidence vraiment forte de la part des données moléculaires. Ce qu’elles étaient incapables de fournir au début des années 1990. Par la suite, avec d’avantage de données moléculaires, un signal fort a émergé regroupant les rongeurs à nouveau. Donc prudence. Même si des fois les révolutionnaires ont raison bien sûr. Les mêmes études du début des années 1990 plaçaient les cétacés (baleines et dauphins) comme cousins des hippopotames, en contradiction aussi avec les paléontologues. Avec plus et mieux de données moléculaires, le signal est devenu tellement fort que les paléontologues ont du convenir que c’était la meilleure interprétation des données.

Le problème majeur de l’approche Bayesienne, c’est de donner une valeur précise à la probabilité a priori (appelée aussi « prior »). Il y a deux réponses à cela. L’une que je n’aime pas beaucoup (mais ça se discute) est de donner égale probabilité à toutes les possibilités. Dans ce cas, je ne vois pas l’intérêt de faire du Bayesien. L’autre (que je préfère) est d’utiliser le Bayesien lorsque l’on a une bonne estimation du prior, et d’utiliser la vraisemblance sinon.

En conclusion, j’aime bien le Bayesien, a priori.

Comment utiliser les maths et la génomique à la ENCODE pour mieux comprendre les variations génomiques humaines

cliquez sur l'image

cliquez sur l’image

J’ai lu récemment un article qui est assez technique, mais dont je voudrais parler ici d’une part parce qu’il m’a beaucoup plu (geek alert), et d’autre part parce qu’il illustre bien je pense deux points intéressants : le pouvoir de la recherche interdisciplinaire (maths et biologie en l’occurence), et la façon dont les progrès de la génomique et de la bioinformatique augmentent notre compréhension du génome. Ce dernier point implique à la fois des espoirs de diagnostic médical, et des inquiétudes sur la vie privée…

Joseph K. Pickrell 2014 Joint Analysis of Functional Genomic Data and Genome-wide Association Studies of 18 Human Traits. Am J Hum Genetics 94, p559–573

Il faut d’abord expliquer comment on trouve d’habitude des variations génomiques (des mutations pas trop rares) impliquées dans des phénotypes (caractères visibles ou mesurables, dans la variation normale comme la taille, ou pathologiques comme la tendance à certaines maladies). On utilise le GWAS, Genome Wide Association Study, qui consiste à comparer entre groupes de personnes (typiquement, avec ou sans une maladie) des centaines de milliers de variations génomiques, et chercher quelles variations ont une association statistique significative avec la maladie, c’est-à-dire sont plus fréquentes chez les malades que chez les non malades. Avec l’espoir de trouver des causes génétiques de la sensibilité à différentes maladies (ou différents phénotypes normaux).

Le problème, c’est que c’est peu puissant, c’est-à-dire que c’est dur de trouver des variations génomiques signficatives expliquant une part importante de la variatiation phénotypique. C’est là où vient le travail de Jo Pickrell. Il formalize l’intuition selon laquelle une association génomique dans une région connue pour être importante (par exemple un gène) a plus de chances d’être vraiment causale qu’une association dans une région sans fonction connue, voire connue pour être sans fonction. Et du coup, il utilise les données d’ENCODE, qui sont peut-être bruitées et sur-interprétées, mais sont une immense source d’informations sur le rôle potentiel de chacun des 3,2 milliards de nucléotides de notre génome. En combinant cela avec d’autres sources d’information, certaines presque triviales (est-ce un gène ? est-ce à coté d’un gène ?), il obtient une classification des nucléotides en 450 classes de fonction potentiellement différente.

La partie méthodes du papier est pas mal riche en équations. Le concept central est le théorème de Bayes (voir ici par exemple), et je ne vais pas tout détailler, et en plus j’ai les équations qui s’insèrent mal dans WordPress (et j’ai pas envie de débugger), mais voici le point clé pour moi. La probabilité postérieure qu’une région du génome soit associée au phénotype dépend de la probabilité a priori pour ce genre de régions (élevé pour un gène, pas mal élevé pour une région qui fixe plein de facteurs régulateurs, faible pour une région où rien de fonctionnel ne se passe) et du support statistique d’association de chacun des variants génomiques dans cette région (si vous avez le papier, j’en suis à l’équation 17). Et de même, on peut calculer la probabilité postérieure que chacun de ces variants soit celui qui est causalement associé. Et le produit de ces deux probabilités nous donne la probabilité pour un variant d’être associé au phénotype, sachant le type fonctionnel de la région du génome où il est, et sachant toutes les associations statistiques simples dans cette région. Simple et beau.

En applicant cette méthode à 450 types de régions et à 18 jeux de données (variants génomiques liés à phénotypes) de GWAS, il montre par exemple que pour certains types de phénotypes(par exemple la densité des os) on a surtout des variations des protéines qui sont importants, alors que pour d’autres (par exemple le nombre de globules rouges) c’est surtout les variations de la régulation des gènes. Il trouve aussi, de manière pas évidente, que la répression des gènes est souvent plus critique que leur activation. Finalement, la chromatine fermée (partie du génome où l’ADN n’est pas disponible pour l’activité des gènes contenus) contient généralement peu d’associations importantes, ce qui pourrait grandement améliorer la puissance statistique de tests qui n’auraient plus à se préoccuper de cette partie de l’ADN (si on sait bien l’identifier pour les types de cellules pertinentes…).

Et donc pour revenir à mon observation de départ, ce type d’étude me motive pour ne pas être d’accord avec ceux qui considèrent que le séquençage des génomes ne sert à rien ou ne présente pas de risques pour la vie privée. Avec des données fonctionnelles qui augmentent exponentiellement, et les progrès des méthodes mathématiques et informatiques, ce n’est presque plus de la science fiction de prédire des traits intéressants ou génants d’un individu à partir de son ADN. ADN que vous laissez trainer partout où vous passez. Sur ce, bonne journée. 🙂

Mise à jour : Joe Pickrell lit le français !