Régression médiane et géométrie

Suite à mon exposé d’hier, Pierre me demandait d’argumenter un point que j’avais évoqué oralement sans le justifier: “ une régression médiane passe forcément par deux points du nuage “. Par exemple,

x=c(1,2,3)
y=c(3,7,8)
plot(x,y,pch=19,cex=1.5,xlim=c(0,4),ylim=c(0,10))
library(quantreg)
abline(rq(y~x,tau=.5),col="red")

Essayons de le justifier… de manière un peu heuristique. Commençons un peu au hasard, avec une droite qui passe “entre” les points (on admettra que la régression médiane sépare l’espace en deux, avec la moitié des points en dessous, la moitié au dessus, à un près pour des histoires de parité).

plot(x,y,pch=19,cex=1.5,xlim=c(0,4),ylim=c(0,10))
abline(a=-1,b=3.2,col="blue")

c’est joli, mais on peut sûrement faire mieux. En particulier, on va chercher ici à minimiser la somme des valeurs absolue des erreurs (c’est le principe de la régression médiane). Essayons de translater la courbe, vers le haut, ou vers le bas,

plot(x,y,pch=19,cex=1.5,xlim=c(0,4),ylim=c(0,10))
abline(a=-1,b=3.2,col="blue",lwd=2)
for(i in seq(-2,3,by=.5)){
abline(a=i,b=3.2,col="blue",lty=2)}

Si on regarde ce que vaut la somme des valeurs absolues des erreurs, on a

d=function(h) sum(abs(y-(h+3.2*x)))
H=seq(-4,6,by=.01)
D=Vectorize(d)(H)
plot(H,D,type="l")

Formellement, l’optimum est ici

> optimize(d,lower=-5,upper=5)
$minimum
[1] -0.2000091

$objective
[1] 2.200009

Bref, retenons cette courbe, et notons qu’elle passe par un des points,

Et c’est assez normal. On commençait avec deux points au dessus, et un en dessous. Soit la somme des valeurs absolues des erreurs . Si on translate de , on passe de à (tant que l’on a toujours deux points au dessus, car celui en dessous sera toujours en dessous). Si on translate de , (là encore tant qu’il n’y a qu’un point en dessous). Bref, on a intérêt à translater vers le haut. Si on dépasse le premier point rencontré, on se retrouve dans la situation inverse, avec un point au dessus et deux au dessous, et on a intérêt à redescendre. Bref, la translation optimale revient a s’arrêter dès qu’on croise un point. Autrement dit, la régression passe forcément par un point. Au moins.

Maintenant, essayons de faire pivoter la courbe autour de ce point, là encore afin de minimiser la somme des valeurs absolues des erreurs,

plot(x,y,pch=19,cex=1.5,xlim=c(0,4),ylim=c(0,10))
abline(a=optimize(d,lower=-5,upper=5)$minimum,b=3.2,
col="blue",lwd=2)
points(x[1],y[1],cex=1.8,lwd=2,col="blue")
for(i in seq(-1,5,by=.25)){
abline(a=(y[1]-i*x[1]),b=i,col="blue",lty=2)}

La distance est alors, en fonction de la pente de la droite

d2=function(h) sum(abs(y-((y[1]-h*x[1])+h*x)))
H=seq(-4,6,by=.01)
D=Vectorize(d2)(H)
plot(H,D,type="l")

Là encore on peut formaliser un peu

> optimize(d2,lower=-5,upper=5)
$minimum
[1] 2.500018

$objective
[1] 1.500018

Et si on regarde cette dernière droite, on passe par deux points,

plot(x,y,pch=19,cex=1.5,xlim=c(0,4),ylim=c(0,10))
h=optimize(d2,lower=-5,upper=5)$minimum
abline(a=(y[1]-h*x[1]),
b=h,col="purple",lwd=2)

Pour comprendre pourquoi, comparons les deux cas,

  • en faisant un pivot vers le bas, pour un des points, la valeur absolue des erreurs augmente alors que pour l’autre, elle diminue

  • en faisant un pivot vers le haut, là encore pour un des points, la valeur absolue des erreurs augmente alors que pour l’autre, elle diminue, mais en sens inverse par rapport au cas précédent,

Et pour faire simple, dans le premier cas, le gain (sur la baisse) compense la perte, alors que dans le second cas, c’est le contraire. Bref, on a intérêt à pivoter vers le bas, ou vers le point à droite. Jusqu’à l’atteindre. Et optimalement, on passera par ce point. Bref, on passera par deux points. Et je laisse les plus courageux regarder avec plus de trois points, mais c’est toujours pareil…

Licornes, philosophes, vieux cons, peer-review et instituts de sondages

oui, vaste programme… Lorsque les enfants étaient petits, je me souviens avoir été maintes fois étonné par la profondeur des questions qu’ils pouvaient poser,

dis papa, comment tu sais tout ça ?

ou

dis papa, si j’étais pas né comment ça serait ?

Toutes ces questions sont embarrassantes, car elles sont assez fondamentales quand on y pense. Car le problème est qu’après, les enfants grandissent, et pensent avoir des réponses à ces mêmes questions,

t’es sûre, tu ne veux pas une licorne pour ton anniversaire ?

mais non papa, ça n’existe pas les licornes

bien sûr que si que ça existe, n’oublie pas que les papas ça sait tout ! Et comment tu sais que ça existe pas d’abord ?

ben j’en ai jamais vu…

et alors… tu n’as jamais vu de crocodiles, et pourtant ça existe…

oui mais j’en ai vu à la télé

et moi à la télé j’ai vu des wookies et des ewoks dans Star Wars, et des dragons dans Harry Potter, et..

oui mais à la télé ça existe pas ! Les licornes personne n’en a jamais vu d’abord

et ça suffit pour dire que ça n’existe pas, tu penses ?

(en fait, on peut avoir ce même genre de dialogue avec dieu, ou mieux, le père Noël). Bref, suite à cette discussion je me demandais ce qui faisait qu’on y croyait ou qu’on n’y croyait plus. Par exemple en sciences: l’opposition classique entre sciences et religion est basée sur le fait que la religion repose sur la foi, et alors que la science non, on doit avoir une preuve de ce qu’on avance. Un peu comme le personnage de Gorgias (de Platon), le précurseur de tous nos hommes (et femmes) politiques: on a raison parce qu’on a eu le dernier mot. Et non parce qu’on l’a prouvé. Mais il faut être lucide. La science devient de plus en plus une histoire de foi et de croyance. Par exemple en cours, la très grande majorité de mes élèves me croient si je leur dit qu’une méthode ne marche pas, rares sont ceux qui penseraient à me demander de leur justifier, ou au mois de trouver des éléments étayant mon propos (car la tendance est de faire de moins de moins de démonstration en cours, surtout quand on fait de la statistique appliquée). Par exemple en séries temporelles: lorsque je faisais cours il y a 10 ans à l’université Paris Dauphine, on passait des heures sur les choix des ordres d’autorégression (faut-il un retard à l’ordre 4, ou 12 ?). Maintenant, tous les logiciels font ça automatiquement. Un peu comme le choix de la fenêtre quand on fait de l’estimation à noyau… sous R, on a un choix optimal de fenêtre… et souvent, quand on est pressé, on y croit.

Oui, en sciences, on utilise beaucoup cet argument de foi. Le plus classique étant de dire que ça a été publié dans une grande revue… Et c’est le principe du peer-review: on délègue à d’autres chercheurs la responsabilité de regarder en détails un papier, qui souvent dépasse nos propres compétences, afin de se reposer sur leur jugement les yeux fermés. C’est bien entendu stupide, et c’est pour ça qu’on demande aux étudiants de maîtrise de creuser les papiers en détails, de relire et comprendre les démonstrations, et de faire des simulations pour vérifier si ça marche ! Et je serais bien le premier à dire qu’il ne faut jamais croire ce qui est écrit dans mes livres ou mes papiers ! ou sur le blog ! Quoi que… sur le blog, je mets autant que possible l’intégralité des codes, afin de permettre aux personnes de vérifier plus facilement ce que j’ai fait. Et c’est le gros intérêt du blog pour les chercheurs, par rapport aux articles publiés: on n’est pas là pour épater la galerie (je renvoie d’ailleurs à un très bon article expliquant comment écrire un article scientifique). Sur le blog, on peut davantage lancer des discussions, et être beaucoup plus transparents, et modestes !

Soit dit en passant, cette histoire de foi se retrouve largement dans cette mise en abyme des sondages, évoquée dans un précédant billet, sur le fait que plus personne ne croit aux sondages. Pourtant des grands sociologues et des grands statisticiens ont travaillé depuis des dizaines d’années sur la théorie des sondages. Des centaines d’articles (parus dans des articles relus par d’autres grands scientifiques) justifient certaines méthodes d’analyse. Et pourtant la foi n’est pas là. Peut-être serait-il temps que les instituts soient plus transparents, qu’ils donnent accès aux données brutes. Car je suis convaincu que la transparence est la clé de tout. Enfin presque… pour l’existence du père Noël, je vais me battre autant que possible pour maintenir le doute !