Habilitation à Diriger des Recherches

« L’habilitation à diriger des recherches sanctionne la reconnaissance du haut niveau scientifique du candidat, du caractère original de sa démarche dans un domaine de la science, de son aptitude à maîtriser une stratégie de recherche dans un domaine scientifique ou technologique suffisamment large et de sa capacité à encadrer de jeunes chercheurs. Elle permet notamment d’être candidat à l’accès au corps des professeurs des universités. »

Ma défense était ce soir, ça y est, c’est fait… on va pouvoir faire avancer la recherche maintenant !

 

Quantile and Expectile Regressions

Tomorrow afternoon, because Pavel Shevchenko is currently in Rennes, there will be a small workshop. I will present some recent work with Amadou Barry and Karim Oualkacha on quantile and expectile regressions (our work is more specifically on panel regressions, with random effect models, quantile QRRE and expectile ERRE) but tomorrow, it will be more an introduction.  Slides are available online.

Votes Populaires et Grands Électeurs

La semaine dernière, j’avais mis un billet en ligne où je m’interrogeais sur la pertinence de faire commencer l’axe des ordonnées en 0, quand on regardait les élections américaines, en représentant le nombre de votes obtenus. Mon point était que 0 n’avait pas vraiment de sens, quand on regardait républicains et démocrates (en 2016 en tous cas) car ces deux parties obtiendront toujours plusieurs dizaines de millions de voix, quoi qu’il se passe.

Mais les votes populaires importent finalement peu, compte tenu du mode de scrutin. Le plus importants est le nombre de grands électeurs du collège électoral.

> electoral=as.matrix(data.frame(
+ red=c(306,206,173),
+ blue=c(232,332,365)))
> electoral=electoral[3:1,]
> rownames(electoral)=c(2008,2012,2016)
> barplot(t(electoral), col=c("red","darkblue")

Faire commencer le graphique en 0 a ici davantage de sens, car il serait possible d’imaginer qu’un candidat obtienne très peu de grands électeurs. Et force est de constater que ce graphique est  parlant. On peut même tenter d’aller un peu plus loin, en superposant les deux… Le premier soucis est qu’on ne peut pas superposer deux graphiques en barres, donc il faut revenir aux lignes (ou aux points, mais comme c’est une évolution dans le temps, on peut les relier). Le second soucis est que les deux n’ont pas la même échelle (pour les grands électeurs, on en a en tout 539, alors que la population américaine se compte en dizaine de millions d’habitants). On pourrait par exemple tracer

ou encore (de manière toute aussi valide)

Bref, les doubles axes posent soucis (mais ce n’est pas nouveau). La solution serait peut être de travailler en pourcentage. Pour les grands électeurs, on peut mettre le pourcentage obtenu parmi les 539 électeurs. Pour les nombres de votes populaires, on peut se contenter (je pense) de comparer les deux (i.e. pourcentage de voix obtenues par le rouge par rapport au nombre voix obtenues par le rouge et le bleu)

C’est plus parlant, non ?

ENSAE, devoir 2

Comme annoncé, le second devoir sera relativement proche du premier. Sauf qu’au lieu de modéliser la survenance, on va chercher à modéliser la fréquence. Le code pour récupérer la base est le même que pour le premier devoir

rm(list=ls())
download.file(url="http://freakonometrics.free.fr/base_ensae_1.RData",destfile="base.RData")
load("base.RData")

A partir de la base base_ensae_1, proposez deux modèles (une régression de Poisson, et un modèle parmi ceux vus en cours) pour modéliser la variable Nb1 indiquant le nombre de sinistres survenus sur une police d’assurance (pendant la période de couverture). Il s’agit, comme en cours, d’expliquer la fréquence annuelle de sinistres.

Le rapport doit contenir entre 5 et 10 pages, expliquant les modèles retenus, les choix qui ont été fait (pour rendre catégorielles de variables continues, ou au contraire les lisser, etc).

En plus du rapport, je veux une prévision à l’aide des deux modèles sur la base de données pricing. Je veux, par mail, avec un fichier csv, contenant le numéro de la police, PolNum, et les fréquences annuelles de déclaration d’accidents, avec les deux modèles (Freq1 et Freq2 respectivement)

pricing <- read.csv2("http://freakonometrics.free.fr/pricing.csv")

Le tout (rapport pdf et base csv) doit être envoyé pour le retour des vacances de Noël, par mail à arthur.charpentier@gmail.com. La première page du rapport doit indiquer les noms des deux étudiants du binôme. Je remets une description (succincte) des variables

Les gens bien élevés font commencer les barres en zéro

Il y a quelques jours, je mentionnais sur twitter un graphique mis en ligne sur imgur.com, au sujet des trois dernières élections présidentielles américaines,

Le premier point est que le graphique a été fait alors que les dépouillements n’étaient pas encore finis. 72 heures après la clôture des bureaux de votes, plusieurs millions de bulletins n’avaient pas été dépouillés, comme me l’ont fait noté François Gourio et Tom Roud. Comme on visualise ici le nombre de votants, et pas le pourcentage de votants, c’est génant… Le second point avait été souligné par Marin Dacos, et par plusieurs personnes, toujours sur twitter, qui disaient (je résume un peu)

On ne peut pas faire des diagrammes en barres qui ne commencent pas en zéro ! Sacrilège !

C’est en effet une règle qui semble bien établie. Enfin, quand je dis ‘règle‘, on pourrait penser qu’il s’agit d’une ‘suggestion‘. Des sortes de ‘règles de savoir vivre’, à la Nadine de Rothschild,

Quand on est bien élevé, il est de bon ton de faire commencer ses diagrammes en barres en zéro.

Et cette règle semble importante, car c’est la première que donne Nathan Yau dans ses règles pour faire des graphiques

A bar chart’s baseline must start at zero.

L’intuition est que dans un diagramme en barres, la longueur des barres a un sens.

The bar chart relies on length to show data. Shorter bars represent lower values, and longer bars represent greater values. Compare bar lengths to compare values. That’s how it works. When you shift the baseline, you distort the visual.

Quittons nos élections un instant. Regardons par exemple les temps mis au 100 mètres lors des Championnats du Monde d’Athlétisme.

> year=c(1983,1987,seq(1991,2015,by=2))
> time=c(10.07,9.93,9.86,9.87,9.97,9.86,9.80,9.82, 10.07,9.88,9.85,9.58,9.92,9.77,9.79)
> names(time)=year
> barplot(time,col="darkgreen",beside=TRUE)

Oui, on a compris, les barres ont une interpréation physique, et il ne faut pas les raccourcir ! C’est le temps mis par un sportif pour courrir 100 mètres. Mais force est de constater qu’on ne voit pas grand chose… Allez, souvenez vous en 2009,

Sur notre diagramme en barre, on ne voit rien d’exceptionnel… Allez, osons faire commencer l’axe des ordonnées à 9 secondes,

> barplot(time,ylim=c(9,10.2),col="darkgreen")

Ok, je suis un hérétique… Certes, je mesure ici le temps au delà de 9 secondes, ce qui ne veut pas dire grand chose… J’opère ici la “distortion” dont parle Nathan Yau…. mais j’ai quand même l’impression qu’on voit mieux l’exploit de Bolt (sans laquelle on ne voit absolument rien). Cela dit, on pourrait même tenter quelque chose d’encore plus violent

> barplot(time,ylim=c(min(time),10.2), col="darkgreen")

C’est ridicule comme graphique n’est-ce pas ? Cela dit, à peu de chose près, ce graphique peut se lire en translatant, et en disant qu’il s’agit le temps mis en plus, par rapport au record de Bolt en 2009,

et ce graphique, lui, a du sens et suit la règle de Nathan Yau : il commence en 0.

Sours R, naturellement, un diagramme en baton commencera en 0  mais ça ne sera pas le cas pour une courbe,

Ici, le graphique commence à peu près au minimum de nos observations. Et on comprend avec ce graphique le caractère exceptionnel du temps mis par Bolt, en 2009. Faire commencer le graphique en 0 est ridicule,

C’est presque pire lorsqu’on représente l’évolution du record du monde, au 100 mètres,

Ca n’a pas d’allure ! On ne voit rien sur ce graphique. Alors qu’en changeant l’axe des ordonnées, ça devient plus clair !

Bref, je suis surpris qu’on passe pour un hérétique quand on dit que ce n’est pas génant de ne pas commencer en 0. Ca dépend du message que l’on souhaite faire passer avec le graphique.

En fait, j’ose affirmer que commencer en 0 n’a pas sens ici, car il est impossible qu’un être humain court le 100 mètres en 0 secondes. Cette référence n’a pas lieu d’être ! Mais supposons qu’on nous dise que pour des raisons morphologiques, on pourrait imaginer qu’un homme court, un jour, le 100 mètres en 9 secondes, mais qu’il serait physiologiquement impossible de passer en dessous. Dans ce cas, j’ai envie de croire que la réprésentation en commençant à 9 secondes aurait du sens…

On voit ici non seulement la différence entre Bolt en 2009 et les autres champions du monde, mais on voit aussi la distance qui sépare ces athlètes d’un record absolu. Je suis désolé, mais je ne trouve pas ce graphique dérangeant. Certes, il convient de lire (rapidement) l’axe des ordonnées, pour éviter d’affirmer que Bolt aurait mis 2 fois moins de temps en 2009 que le champion du monde de 2003 pour courrir le 100 mètres (car la barre semble deux fois plus haute).

Revenons maintenant à nos élections américaines, en reprenant les nombres de votes obtenus par candidats en 2008, 2012 et 2016 (avec des chiffres mis à jour)

> votes=data.frame(red=c(59948323,60933504, 62213384),blue=c(69498516,65915795,64154610))
> MV=as.matrix(t(votes))
> colnames(MV)=c(2008,2012,2016)
> barplot(MV/1e6, main="",
+         xlab="", col=c("red","darkblue"),
+         beside=TRUE)

Là encore, j’aurais presque envie d’affirmer que commencer en 0 n’a pas grand sens. Tout d’abord parce qu’il est dur d’imaginer que le candidat des Républicains comme le candidat des Démocrates ait un score proche de zéro. Ensuite, il est aussi difficile d’imaginer qu’un candidat ait deux fois plus de vote que l’autre. Car on peut comparer des barres quand une des deux fois plus grande que l’autre, pas quand elle est 14% plus grande… ça ne se voit pas à l’oeil nu… disons que la différence entre 14% et 18% n’est pas visible. Aussi, quand on connait le contexte, on sait qu’un candidat ne peut pas avoir deux fois plus que l’autre… Donc quand on voit un diagramme à baton de ce genre, on va regarder les valeurs des ordonnées.

> barplot(MV/1e6, main="",
+         xlab="", col=c("red","darkblue"),
+         beside=TRUE,ylim=c(52,72))

J’ai envie de dire qu’on pourrait accepter de fausser la représentation, parce que ce n’est pas ce qu’on veut illustrer avec ce graphique. Ce qu’on veut montrer c’est que le nombre de votes rouges varie augmente un peu, et que le nombre de votes bleus a baissé. Avec des courbes (là on a le droit), on aurait la représentation suivantes

mais je trouve le diagramme en barres plus joli. Et je trouve dommage de dire que le diagramme avec les barres juste au dessus est faussé, alors que le diagramme avec les courbes ne l’est pas… Si on fait commencer en zéro, comme le dit la règle, on ne voit plus rien. Sauf qui ça se joue dans un mouchoir de poche,

Là encore, si on veut respecter la règle du zero, et faire malgré tout des barres, peut être faut-il représenter les variations du nombre de votants (en millions), d’une élection sur l’autre

mais je n’aime pas trop…. Là encore, le graphique le plus parlant reste celui mentionné dans mon tweet

(la nuance est peut être que je ne mets pas ici de barre horizontale en bas). On peut voir le message qu’on veut faire passer avec le graphique de manière beaucoup plus claire. Certains diraient que je fausse l’interprétation, mais je trouve l’affirmation excessive. Il s’agit plutôt de déformer pour s’assurer justement qu’un message (juste et vrai) passe mieux. C’est ce qu’on voyait avec l’exemple du 100 mètres : sans déformation, le seul message que l’on retient est que le record de Bolt est anecdotique.

J’aurais presque envie de croire que la règle ne s’applique pas si la valeur zéro n’est pas atteignable (et n’aurait pas de sens). Mais je ne demande pas mieux que d’être convaincu que même ici, la règle de commencer les barres en zéro doit s’appliquer !

R in Insurance, 2017

Following the successfull conferences in London (2013, 2014, 2016) and in Amsterdam (2015), the next edition will take place in Paris. The R in insurance 2017 will take place in ENSAE on June 8.

This one-day conference will focus again on applications in insurance and actuarial science that use R, the lingua franca for statistical computation. The intended audience of the conference includes both academics and practitioners who are active or interested in the applications of R in insurance. The two invited speakers are Katrien Antonio (KU Leuven) and Julie Seguela (Covea). It will be a nice event !

An Open Lab-Notebook Experiment