Category Archives: Statistics

Matching, Optimal Transport and Statistical Tests

To explain the “optimal transport” problem, we usually start with Gaspard Monge’s “Mémoire sur la théorie des déblais et des remblais“, where the the problem of transporting a given distribution of matter (a pile of sand for instance) into another (an excavation for instance). This problem is usually formulated using distributions, and we seek the “optimal” transport from one distribution to the other one. The formulation, in the context of distributions has been formulated in the 40’s by Leonid Kantorovich, e.g. from the distribution on the left to the distribution on the right.

Consider now the context of finite sets of points. We want to transport mass from points https://latex.codecogs.com/gif.latex?%5C%7BA_1%2C%5Ccdots%2CA_4%5C%7D to points https://latex.codecogs.com/gif.latex?\{B_1,\cdots,B_4\}. It is a complicated combinatorial problem. For 4 points, there are only 24 possible transfer to consider, but it exceeds 20 billions with 15 points (on each side). For instance, the following one is usually seen as inefficient

while the following is usually seen as much better

Of course, it depends on the cost of the transport, which depends on the distance between the origin and the destination. That cost is usually either linear or quadratic.

There are many application of optimal transport in economics, see eg Alfred’s book Optimal Transport Methods in Economics. And there are also applications in statistics, that what I’ve seen while I was discussing with Pierre while I was in Boston, in June. For instance if we want to test whether some sample were drawn from the same distribution,

set.seed(13)
npoints <- 25
mu1 <- c(1,1)
mu2 <- c(0,2)
Sigma1 <- diag(1, 2, 2)
Sigma2 <- diag(1, 2, 2)
Sigma2[2,1] <- Sigma2[1,2] <- -0.5
Sigma1 <- 0.4 * Sigma1
Sigma2 <- 0.4 *Sigma2
library(mnormt)
X1 <- rmnorm(npoints, mean = mu1, Sigma1)
X2 <- rmnorm(npoints, mean = mu2, Sigma2)
plot(X1[,1], X1[,2], ,col="blue")
points(X2[,1], X2[,2], col = "red")

Here we use a parametric model to generate our sample (as always), and we might think of a parametric test (testing whether mean and variance parameters of the two distributions are equal).

or we might prefer a nonparametric test. The idea Pierre mentioned was based on optimal transport. Consider some quadratic loss

ground_p <- 2
p <- 1
w1 <- rep(1/npoints, npoints)
w2 <- rep(1/npoints, npoints)
C <- cost_matrix_Lp(t(X1), t(X2), ground_p)
library(transport)
library(winference)
a <- transport(w1, w2, costm = C^p, method = "shortsimplex")

then it is possible to match points in the two samples

nonzero <- which(a$mass != 0)
from_indices <- a$from[nonzero]
to_indices <- a$to[nonzero]
for (i in from_indices){
segments(X1[from_indices[i],1], X1[from_indices[i],2], X2[to_indices[i], 1], X2[to_indices[i],2])
}

Here we can observe two things. The total cost can be seen as rather large

> cost=function(a,X1,X2){
nonzero <- which(a$mass != 0)
naa=a[nonzero,]
d=function(i) (X1[naa$from[i],1]-X2[naa$to[i],1])^2+(X1[naa$from[i],2]-X2[naa$to[i],2])^2
sum(Vectorize(d)(1:npoints))
}
> cost(a,X1,X2)
[1] 9.372472

and the angle of the transport direction is alway in the same direction (more or less)

> angle=function(a,X1,X2){
nonzero <- which(a$mass != 0)
naa=a[nonzero,]
d=function(i) (X1[naa$from[i],2]-X2[naa$to[i],2])/(X1[naa$from[i],1]-X2[naa$to[i],1])
atan(Vectorize(d)(1:npoints))
}
> mean(angle(a,X1,X2))
[1] -0.3266797

> library(plotrix)
> ag=(angle(a,X1,X2)/pi)*180
> ag[ag<0]=ag[ag<0]+360
> dag=hist(ag,breaks=seq(0,361,by=1)-.5)
> polar.plot(dag$counts,seq(0,360,by=1),main=”Test Polar Plot”,lwd=3,line.col=4)

(actually, the following plot has been obtain by generating a thousand of sample of size 25)

In order to have a decent test, we need to see what happens under the null assumption (when drawing samples from the same distribution), see

Here is the optimal matching

Here is the distribution of the total cost, when drawing a thousand samples,

VC=rep(NA,1000)
VA=rep(NA,1000*npoints)
for(s in 1:1000){
X1a <- rmnorm(npoints, mean = mu1, Sigma1)
X1b <- rmnorm(npoints, mean = mu1, Sigma2)
ground_p <- 2
p <- 1
w1 <- rep(1/npoints, npoints)
w2 <- rep(1/npoints, npoints)
C <- cost_matrix_Lp(t(X1a), t(X1b), ground_p)
ab <- transport(w1, w2, costm = C^p, method = "shortsimplex")
VC[s]=cout(ab,X1a,X1b)
VA[s*npoints-(0:(npoints-1))]=angle(ab,X1a,X1b)
}
plot(density(VC)

So our cost of 9 obtained initially was not that high. Observe that when drawing from the same distribution, there is now no pattern in the optimal transport

ag=(VA/pi)*180
ag[ag<0]=ag[ag<0]+360
dag=hist(ag,breaks=seq(0,361,by=1)-.5)
polar.plot(dag$counts,seq(0,360,by=1),main="Test Polar Plot",lwd=3,line.col=4)

 

Nice isn’t it? I guess I will spend some time next year working on those transport algorithm, since we have great R packages, and hundreds of applications in economics…

Les marchés prédictifs comme technique de prévision

Les dernières élections présidentielles ont remis en avant l’importance des soudages, utilisés comme outils de prévision, même si les sondeurs s’en défendent. Comme l’ont dit Niels Bohr et Pierre Dac, « la prévision est difficile surtout lorsqu’elle concerne l’avenir », et des solutions alternatives ont été envisagées. Comme c’est la mode, le « big data » a été mentionné (deviner les intentions de vote à partir des tweets ou des informations publiées sur une page Facebook), mais les marchés prédictifs (et les sites de paris) ont aussi été largement utilisés. Mais est-il si simple d’utiliser les prix (ou les cotes) sur ces marchés prédictifs pour en déduire des probabilités ? Et peut-on vraiment les utiliser ?

Sur quoi parie-t-on ?

Comme le rappelle Rhode & Strumpf (2008) utiliser les paris pour connaître les croyances et donc les probabilités qu’un évènement se réalise n’est pas nouveau. Par exemple lors des élections papales au Vatican. En 1549, Matteo Dandolo (ambassadeur de Vénitie) notait (raconté dans Baumgartner (2003)) que « it is therefore more than clear that the merchants are very well informed about the state of the poll, and that the Cardinals’ attendants in Conclave (i conclavisti) go partners with them in the wagers, which thus causes many tens of thousands of crowns to change hands ». Et les marchés de paris lors des élections ont été populaires aux Etats-Unis, jusqu’à la seconde guerre mondiale. Rhode & Strumpf (2008) avance plusieurs raisons pour la perte d’intérêt au cours de la seconde moitié du XXème siècle : les améliorations des techniques de sondages et la légalisation des paris sur chevaux (avec pour conséquence la disparition du marché illégal des paris).

Plus récemment, avec le développement des sites et donc d’un marché des paris, on a vu apparaître des paris (contrats vendus sur le marché en ligne intrade.com, liquidé en 2015) sur la survenance de tremblement de terre de magnitude dévastatrice (plus de 9 sur l’échelle de Richter), le vainqueur de la cérémonie des Oscars, la diminution de la couverture de la glace en Arctique entre deux années, ou encore l’observation du boson de Higgs. Polgreen et al. (2007) évoquent des paris sur la survenance d’épidémies de grippe. Un autre exemple – que l’on va détailler un peu – est celui du passage d’une loi sur l’énergie (et l’instauration de mesures contraignantes de limitation des émissions de gaz à effet de serre) aux Etats-Unis. Le titre permettant de toucher 1USD en cas d’adoption du projet de loi a été lancé en mai 2009. Le 26 juin 2009, la Chambre des Représentants a adopté (à une courte majorité) le projet de loi (avec pour objectif de réduire de 17 % d’ici à 2020 par rapport à 2005 et de 80 % d’ici à 2050 les émissions de CO2). A ce moment, le titre était échangé pour 50¢, comme le montre le Graphique 1. Il restait à faire approuver la loi par le Sénat. Six mois plus tard, en signant l’accord de la conférence de Copenhague en décembre 2009, les Etats-Unis s’étaient davantage engagés, et un an plus tard (début 2011), le Sénat serait renouvelé lors des élections de mi-mandat. Le gouvernement de Barack Obama espérait faire approuver la session “lame duck” du congrès, les élections de mi-mandat devant probablement renforcer la majorité Républicaine. Mais le jeudi 22 juillet, le chef de file Démocrate au Sénat Harry Reid a annoncé le retrait du projet de loi, faute de majorité pour l’approuver. Ce jour-là, le titre s’échangeait pour 10¢.

Figure 1 : Evolution du prix du passage du contrat sur le passage du ‘American Clean Energy and Security Act’ devant le Sénat (2009-2010)

Source : auteur, données Meng (2017)

Voir un prix comme une probabilité

Avant toutes choses, rappelons qu’une propriété fondamentale des probabilités est la somme des probabilités d’un évènement et de son complémentaire doivent sommer à un. C’est assez logique si les probabilités sont vues comme des « fréquences », correspondant au nombre de cas favorables sur le nombre de cas possibles. Cette interprétation devient plus délicate quand on imagine le cas de variables aléatoires continues, et un passage par la théorie de la mesure s’impose (en particulier pour admettre qu’un « évènement de probabilité nulle » puisse malgré tout survenir). Mais historiquement, d’autres définitions des probabilités avaient été proposées, en particulier par Jacques Bernoulli, qui avait introduit une notion de « probabilité morale » (comme le rappelle Johnson (2017)) que l’on verra réapparaître dans les travaux de de Finetti sous le nom de « probabilité subjective », ou à la même époque, dans les travaux de Frank Ramsey. Pour ce dernier, une probabilité mesure un degré de croyance – « a degree of belief », qui pouvait se mesurer au travers de paris – « through betting odds » – et les prix que les joueurs sont disposés à payer donnent une information quant à ces croyances. Il devient alors possible de déduire des probabilités à partir de prix.

L’idée n’était pas nouvelle, puisqu’elle avait été émise par dans Van Rekeningh in Spelen van Gelucken publié par Christiaan Huyghens en 1655 (en latin sous le titre ‘De Ratiociniis in Aleæ Ludo‘), et utilisée quelques années plus tard, en 1671 par Wilhelmina de Witt dans le contexte d’annuités. Le prix d’un contrat versant une rente jusqu’au décès pouvant être vu à comme une moyenne pondérée d’annuités (à maturité fixe), en observant les prix des différents contrats d’assurance, on pouvait extraire des probabilités interprétées comme des probabilités de survie. Ces mesures de probabilités n’étaient plus construites à partir de fréquences observées, mais construites à partir de prix historiques observés. On retrouvera cette idée en mathématique financière presque trois siècles plus tard, avec le théorème fondamental de valorisation, et les prix d’Arrow-Debreu. Cette littérature est riche et abondante (on peut renvoyer à Charpentier (2014)), mais il existe également des résultats moins connus, sur la création d’un consensus à partir de probabilités, et les applications pour les paris.

Travaillant sur le marché de pari hippique, Eisenberg & Gale (1959) ont obtenu des résultats relativement généraux, qui peuvent se formaliser ainsi : considérons un individu  qui a la possibilité de parier sur un cheval  lors d’une course. Chaque joueur possède une somme totale  (que l’on normalise de telle sorte que  ), et qu’il place la somme  sur le cheval . Ces montants vérifient la contrainte   , et on note  la somme total placée sur le cheval , de telle sorte que . Compte tenu de la contrainte de budget, notons que , de telle sorte que les montants  peuvent être interprétés comme des probabilités. Supposons maintenant que chaque joueur ait des croyances  (que chaque cheval gagne) matérialisées par un vecteur de probabilités . Eisenberg & Gale (1959) définissent alors une situation d’équilibre, dès lors que si   alors on doit avoir

Il monte qu’un tel équilibre existe, et qu’il est unique. On retrouve ici un résultat connu en mathématique financières sous le nom de loi du prix unique, même si les croyances ne sont pas explicitement mentionnées. Et c’est ce résultat qui permet d’interpréter les prix sur un marché prédictif comme des probabilités.

En s’inspirant du modèle de Eisenberg & Gale (1959), Manski (2005) obtient une interprétation sur un marché prédictif. Dans ces marchés, on ne peut pas parier sur un cheval dans une course, mais sur la survenance d’un évènement. Considérons un contrat offrant 1$ si un évènement  survient (élection d’un nouveau pape, départ d’un pays de la zone euro, etc), proposé au prix . S’il existe un contrat sur l’évènement complémentaire  (on va supposer ici que c’est le cas), il devrait être proposé au prix , sinon un arbitrage serait possible[i]. Considérons maintenant un agent croyant avec probabilité  que l’évènement  va survenir. Si , cette personne a intérêt à investir tout son argent pour acheter son titre, sinon, il a intérêt à investir dans l’autre titre, associé à . Au niveau agrégé la demande pour les titres de type et  sera respectivement

 et

et on aura un équilibre si

Si on suppose que les croyances et les richesses  sont indépendantes, on peut interpréter les prix  et  comme des probabilités,

 et

Wolfers & Zitzewitz (2007) propose une interprétation différente, plus économique, dans le contexte d’agents ayant une utilité logarithmique.

Marché et pari en ligne

La situation que nous venons de décrire est celle d’un marché parfait, où un équilibre se fait entre les parieurs, et cet équilibre donne des prix interprétables comme des probabilités de gain (on parle éventuellement de « pari mutuel »). Mais la pratique des paris en ligne est souvent différente, car les prix sont proposés par un bookmaker. Comme le nom l’indique, ces personnes – à la base – enregistrent les paiements, mais en pratique, ce sont aussi eux qui fixent les prix. Par exemple lors des dernières élections présidentielles en France, plusieurs sites proposaient de parier sur l’issue du second tour.

Tableau 1 : côtes lors des élections présidentielles de 2017

côtes (sites de paris en ligne) Intention de votes (instituts de sondage)
bet365 comeon betsafe FT Bloomberg BBC
Macron 1/8 1/8 1/7 64% 60.5% 61%
Le Pen 5/1 9/2 9/2 36% 39.5% 39%

Source : http://www.onlinebettingsites.com/2017-french-election/ (données fin avril 2017)

Comme le montre le Tableau 1, les côtes offertes par les bookmakers sont différentes entre les sites de paris. Une cote de 1/8 signifie qu’en pariant 8€, mon gain net sera de 1€ si le candidat l’emporte le jour de l’élection (et je perds ma mise si le candidat perd). La « probabilité » associée est ici  pour E. Macron (mon gain brut étant de 9/8€ pour 1€ misé) et. Le soucis – on retrouve ici la discussion initié par Jacques Bernoulli – est que ces « probabilités »  ne somment pas à 1, puisque . La différence vient du fait qu’il ne s’agit pas un « juste » prix, le bookmaker s’assurant un rendement certain (de l’ordre de 5,5% de la mise initiale, quel que soit le site choisi). Les vraies probabilités induites par ces cotes sont ici respectivement  et . Les sites de paris en ligne donneraient une probabilité de gain pour Emmanuel Macron de 84%, alors que les sondages indiquent une intention de vote de 62%, pour les instituts de sondage.

A-t-on réellement une probabilité, ou une fourchette ?

On le voit, les grandeurs données ne sont pas identiques, l’une indiquant une croyance sur une probabilité de gagner, et l’autre une proportion de votes que devrait avoir un candidat. Dans le modèle de Manski, les probabilités induites par la moyenne des croyances et les prix coïncident si on suppose que les agents ont une utilité logarithmique. Comme le montre Wolfers & Zitzewitz (2006), si on suppose que les agents ont une aversion au risque, ça ne sera plus le cas. En particulier, l’article suggère de considérer des bornes pour  de la forme , représentées sur la Figure 2, où  est appelé « prix de marché » pour reprendre une notation proche de la Figure 1.

Figure 2 : Bornes  sur les croyances moyennes

Faut-il utiliser les prédictions des marchés prédictifs ?

On l’a vu lors de la dernière élection en France, beaucoup s’interrogent sur la place pris par les sondages, en particulier en notant qu’il ne s’agissait pas d’une photographie neutre, mais que les électeurs pouvaient choisir leur candidat précisément à la lecture des sondages (la fameuse théorie du « vote utile » en particulier). Le danger à utiliser les marchés prédictifs comme outils de prévision est que ces dangers sont manipulables, comme l’a montré Schröder (2008). Un autre danger – et cela a été noté lors de la dernière élection présidentielle aux Etats-Unis – les côtes sur les sites en ligne de pari reflètent les croyances d’une certaine « élite » (disons les personnes souvent relativement éduquées, et la classe supérieure, suivant la politique), contrairement aux sondages, qui sont supposés être conduits sur un échantillon représentatif des électeurs, et sont supposer refléter les choix du « peuple » (et non pas une opinion ou une croyance). Si les parieurs tiennent comptent de ces sondages, les prix reflètent leurs croyances. Une dernière critique que l’on peut faire est que la majorité des marchés prédictifs représentent des volumes de transactions très faibles.

Les sondages traditionnels font face aujourd’hui à une défiance croissante. Il devient difficile de constituer un échantillon représentatif, le taux de non-réponse atteint des proportions jamais atteint (et nul ne sait si cette non-réponse est corrélée avec des choix électoraux). Et la confusion règne, entre les sondages classiques, et les « sondages en lignes » hébergés sur divers sites d’information. Mais pour reprendre l’anecdote raconté par Scott Armstrong dans Knowledge@Wharton en 2004, si dans une réunion du conseil exécutif d’une grande entreprise on demande à tous les participants de faire des prévisions quant aux résultats pour l’année prochaine, ou si on demande aux participants de parier sur les résultats de l’année prochaine, quels prévisions seront les plus crédibles ?

Références

Arrow, K.J. & Debreu, G. Existence of an equilibrium for a competitive economy, Econometrica, vol. 22,‎ 1954

Baumgartner, F. Behind locked doors: a history of papal elections. 2003

Charpentier, A. L’efficience des marchés : hypothèse de modèle ou fait stylisé ? Risques, 96. 2014

Frank, E., Verbeek, E. & Nüesch, S. Inter-Market Arbitrage in Betting. Economica, 2012.

Johnson, T. Ethics in Quantitative Finance: a pragmatic theory of markets. Wiley, 2017.

Knowledge@Wharton, How Credible Are Polls? Is There a Better Way to Predict Outcomes in Politics and Business, 3 Novembre 2004,

Manski, C.F. Interpreting the Predictions of Prediction Markets. Working Paper 10359, 2004

Meng, K.C. Using a Free Permit Rule to Forecast the Marginal Abatement Cost of Proposed Climate Policy. American Economic Review vol 107, 2017

Polgreen. Use of Prediction Markets to Forecast Infectious Disease Activity. Healthcare Epidemiology, 2007

Ramsey, F.P. Truth and probability, dans The Foundations of Mathematics and other Logical Essays, 1931 .

Rhode, P.W. & Strumpf, K. (2008) Historical Election Betting Markets: an International Perspective.

Schröder, J. Manipulations in Prediction Markets. Universitätsverlag Karlsruhe, 2009.

The Economist, The Future of Futurology, 15 Novembre 2007

Wolfers, J. & Zitzewitz, E. Interpreting Prediction Market Prices as Probabilities. Working Paper 12200, 2006

Wood, T. Do betting markets outperform election polls? Hardly. The Washington Post, Août 2016

[i] Comme l’a montré Franck et al. (2012), comme il existe aujourd’hui plusieurs sites de paris (plusieurs marchés), il peut exister des arbitrages entre les marchés, rarement au sein d’un marché.

 

Peut-on vraiment prévoir la probabilité de gagner une élection présidentielle ?

Cet article est co-signé avec Avner Bar-Hen, Conservatoire national des arts et métiers (CNAM)

L’élection du Président de la République française constitue un exemple important de mode de scrutin à deux tours. L’issue des deux tours est évidemment liée, et les résultats du premier permettent d’avoir une idée de l’issue du second tour. The Conversation

Il est en effet plausible que les électeurs ayant voté au premier tour pour l’un des candidats qualifiés au second tour confortent leur choix. En revanche, le vote des électeurs ayant accordé au premier tour leur suffrage à des candidats éliminés du second tour est entaché de plus d’incertitude. Le choix de ces électeurs n’est pas totalement aléatoire car il est dépend fortement de la proximité idéologique et partisane entre le candidat pour lequel ils ont voté au premier tour et chacun des candidats qualifiés.

Reports de vote

Les choix électoraux au second tour de scrutin des électeurs ayant voté au premier tour pour un candidat éliminé sont appelés les « reports de vote ». Ils sont généralement appréhendés de manière agrégée et sous forme de proportions : telle fraction de l’électorat de premier tour de tel candidat se reporte sur tel candidat au second tour.

La connaissance de ces reports de votes comporte principalement deux intérêts. D’une part, les reports de votes constituent un élément de science politique à part entière. Ils renseignent au sujet du positionnement respectif des électorats, de l’ordre de priorité qu’ils attribuent aux différentes thématiques du débat public, de leur fidélité partisane et de leur degré d’information politique. À ce titre, ils sont susceptibles d’intéresser les formations politiques et les candidats eux-mêmes dans l’élaboration ex ante de leurs stratégies électorales et dans leur évaluation ex post. D’autre part, connaître les reports de votes permet de construire des prédictions des résultats du second tour à l’issue du premier tour.

Les estimations de reports de votes publiées, notamment dans la presse, résultent le plus souvent de sondages effectués directement auprès des électeurs. L’estimation produite par le sondage va dépendre de l’échantillon tiré, avec pour corollaire l’existence d’un inévitable écart entre le paramètre et son estimation. Cet écart est quantifié en terme de probabilité associée à un sondage. Cependant les tailles d’échantillon utilisées et le très faible taux de réponse génèrent de telles incertitudes qu’il est difficile de conclure quoi que ce soit à partir de ces sondages.

Pour résumer rapidement, l’évolution (positive) de la présentation des sondages, et en particulier la présentation de termes de probabilité, doit s’accompagner d’une évolution des méthodes et en particulier des tailles d’échantillon. Il est important de rappeler que les intervalles de confiance n’ont aucune valeur prédictive (et donc aucune validité testable ex-post). Par exemple, comment lire le graphique ci-dessous sur les intentions de vote au premier tour :

Doit-on comprendre que fin janvier, 16 % des électeurs affirmaient vouloir voter pour Benoît Hamon, et qu’avec 95 chances sur 100 cette proportion était comprise entre 15 % et 17 % ? Un mois plus tard, il était à 14 %. A-t-il perdu des intentions de votes ? ou bien peut-on imaginer que des électeurs indécis fin janvier (et non comptabilisés) aient décidé de voter pour une autre alternative ? Les pourcentages ne sont pas, ici, relatifs à la même quantité.

Mais revenons à l’estimation des reports de voix, outils-clés pour prévoir la probabilité de gagner au second tour. Les estimations produites à l’aide d’outils mathématiques, à partir des résultats de scrutin par bureaux de vote, restent rares dans la presse mais c’est une source importante d’études en science politique. Essayons de voir le principe.

En démocratie, le vote de chaque électeur est confidentiel. À chaque tour d’une élection, seul le résultat agrégé des votes est connu, et le niveau le plus fin d’agrégation est donné par le bureau de vote. Les reports d’un vote à un autre sont inconnus, et leur estimation à partir des résultats agrégés nécessite de définir un modèle statistique. En effet, la décision individuelle de chaque électeur n’obéit à aucune fonction déterministe.

On résume souvent ce principe sous la formule « le vote est privé, les votes sont publics ». Néanmoins ce principe ouvre grand la porte au paradoxe de Simpson (on parle aussi d’erreur écologique) : à cause de la distribution hétérogène de l’échantillon, regrouper les données pointe une tendance qui peut être fausse, et qui disparaît si on analyse les données en séparant selon le facteur de confusion. L’utilisation de données socio-démographiques est donc importante.

Estimer la probabilité qu’un candidat gagne une élection

Tout d’abord, notons que l’élection mobilise un corps électoral composé de N électeurs répartis dans K bureaux de vote, à raison de Nk électeurs dans le bureau k. Le nombre d’électeurs dans chaque bureau demeure identique lors des deux tours. Pour chaque tour et chaque électeur, le vote peut être vu comme la sélection d’une unique modalité dans un ensemble de choix commun à tous les électeurs. Pour l’élection présidentielle de 2017, il y a I=13 choix possibles au premier tour : s’abstenir, voter blanc ou pour un des onze candidats ; et J = 4 choix possibles au second : s’abstenir, voter blanc ou pour les candidats Macron ou Le Pen.

Étant donné l’hypothèse de stabilité du corps électoral, on peut construire pour chaque bureau k, un tableau croisé (on parle de tableau de contingence) constitué des nombres Nk(i,j) d’électeurs ayant opté pour le choix i au premier tour et j au second, à l’issu du dépouillement du second tour. De ces tableaux, seules les marges suivant les lignes Nk(i,) et suivant les colonnes Nk(,j) sont connues et correspondent respectivement aux résultats du premier et du second tour. Les conditions de vote (isoloir, bulletin sous enveloppe, dépouillement à la fin…) font que lors du scrutin, les électeurs sont globalement ignorants des choix des autres électeurs, à l’exception de l’abstention qui fait l’objet d’une estimation communiquée et révisée régulièrement en cours de journée. Par conséquent, il semble relativement raisonnable de considérer que les décisions de vote sont prises simultanément et qu’elles sont donc indépendantes entre électeurs.

Les probabilités de report du candidat i au candidat j diffèrent a priori entre électeurs d’un même bureau et entre bureaux. Même si le résultat final était connu, les différentes manières d’estimer ces probabilités soulèvent des problèmes complexes, résolus en mobilisant de nombreuses techniques algorithmiques. Estimer la probabilité qu’un électeur ayant fait un des 13 choix possibles (par exemple l’abstention) au premier tour en fasse un des 4 possibles au second (par exemple l’abstention) est un exercice compliqué mais indispensable si on souhaite vraiment estimer la probabilité de victoire d’un candidat. Et à part enfoncer des portes ouvertes, on ne peut pas dire grand-chose : si quelqu’un dit qu’une pièce est pipée, et à 80 % de chances de tomber sur « pile », le fait qu’elle tombe une fois sur « pile » ne signifiera pas qu’il a « raison », pas plus que tomber sur « face » ne signifiera qu’il a « tort ».

En statistique, c’est la répétition qui permet de savoir si l’estimation d’une probabilité est pertinente. Or c’est le propre d’une élection que de ne se produire qu’une fois.


Pour aller plus loin : Søren Risbjerg Thompsen, « Danish Elections 1920-79 : A logit Approach to Ecological Analysis and Inference » (1987) et Fendrich, L’Hour et Rateau, « Reports de votes entre les deux tours d’une élection présidentielle : estimation statistique et sociologie électorale » (2014).

Avner Bar-Hen, Professeur du Cnam, Conservatoire national des arts et métiers (CNAM) et Arthur Charpentier, Maître de Conférences, Université Rennes 1

La version originale de cet article a été publiée sur The Conversation.

Proportion of people alive in 1945 that are still alive

In demography, we like to use life tables to estimate the probability that someone born in 1945 (say) is still alive nowadays.  But another interesting quantity might be the probability that someone alive in 1945 is still alive nowadays.

The main difference is that we do not know when that person, alive in 1945, was born. Someone who was old in 1945 is very unlikely still alive in 2017. To compute those probabilities, we can use datasets from http://www.mortality.org/hmd/. More precisely, we need both death and birth data. I assume that datasets (text files) were downloaded (it is necessary to register – for free – to get the data).

D=read.table("FRDeaths_1x1.txt",skip=1,header=TRUE)
B=read.table("FRBirths.txt",skip=1,header=TRUE)

In the death dataset, there is a “110+” for people older than 110 years. For convenience, let us cap our observations at 110 years old,

D$Age=as.numeric(as.character(D$Age))
D$Age[is.na(D$Age)]=110

Consider now a first function that will return, for people born in 1930 (say) two informations

  • the number of people (here, let us consider women only) born in 1930 (from the birth database)
  • the number of death of people of age 0 in 1930, people of age 1 in 1931, people of age 2 in 1932, etc…

The code is simple

nb=function(y=1930){
debut=1816
MatDFemale=matrix(D$Female,nrow=111)
colnames(MatDFemale)=debut+0:198
cly=y-debut+1:111
deces=diag(MatDFemale[,cly[cly%in%1:199]])
return(c(B$Female[B$Year==y],deces))}

We have a single number for the number of births, and then a vector for the number of deaths. Consider now another function. Consider the people born in 1930. We want to get two numbers : the number of people still alive in 1945 (say), and the number of people still alive nowadays. The ratio will be the proportion of people born in 1930 that were alive in 1945, that are still alive in 2015.

pop=function(ne=1930,an=1945){
comptage=nb(ne)
s=0
if(an>ne) s=sum(comptage[seq(2,1+an-ne)])
p1=max(comptage[1]-s,0)
p2=max(p1-sum(comptage[seq(2+an-ne,length(comptage))]),0)
c(p1,p2)
}

Then, for a given year (say 1945), to get the proportion of people alive in 1945 that are still alive today, we need to count how many people born in 1944 were still alive in 1945, and in 2015, but also born in 1943, 1942, etc, And we simply consider the ratio of the total number of people alive in 2015 over the total number of people alive in 1945

ptn=function(y=1945){
V=Vectorize(function(x) pop(x,y))(1816:y)
sum(V[2,!is.na(V[2,])])/sum(V[1,!is.na(V[1,])])
}

Hence, 22% of those alive in 1945 are still alive in 2015,

> ptn(1945)
[1] 0.2209435

Actually, instead of looking only at 1945, it is possible to get a plot

P=Vectorize(ptn)(1900:2010)
plot(1900:2010,P,type="l",ylim=0:1)

For instance,

> ptn(1975)
[1] 0.6377413

i.e. 63.7% of those alive in 1975 are stil alive 40 years after. That is a rather interesting function, I was surprised that I couldn’t find it is standard demographical R package…

Visualizing (censored) lifetime distributions

There are now more than 10,000 R packages available from CRAN, much more if you include those available only on github. So, to be honest, it become difficult to know all of them. But sometimes, you discover a nice function in one of them, and that is really awesome. Consider for instance some (standard) censored lifetime data,

n=10000
idx=sample(1:4,size=n,replace=TRUE)
pd=LETTERS[idx]
lambda=1+(idx-1)/3
t=rexp(n,lambda)
x=rexp(n)
c=t>x
y=pmin(t,x)
df=data.frame(time=y,status=c,product=pd)

(yes, I will generate them here). Consider Kaplan-Meier estimator of the survival function,

library(survival)
km.base = survfit( Surv(time,status) ~ 1  , data = df )
plot(km.base)

This week end, Anat (currently finishing the Data Science for Actuaries program) made me discover a nice R function, to add information to that graph (well, not that graph, since it will be a ggplot version, but the same survival distribution plot)

library(ggplot2)
library(survminer)
ggsurvplot(km.base, main = "", color = "blue" , censor = FALSE, xlim = c(0,3), risk.table = TRUE ,
risk.table.col = "blue" , risk.table.height = 0.2, risk.table.title = "" , legend.labs = "All" , legend.title = "" , break.time.by = 1, xlab = "" , ylab = "")

This is more interesting when we have different lifetimes

km.prod = survfit( Surv(time,status) ~ product  , data = df )
ggsurvplot(km.prod, main = "", censor = FALSE, xlim = c(0,3), risk.table = TRUE , risk.table.col = "strata" , risk.table.height = 0.3, risk.table.title = "" , legend.labs = LETTERS[1:4] , legend.title = "" , break.time.by = 1, xlab = "" , ylab = "")

or, with a different time granularity

ggsurvplot(km.prod, main = "", censor = FALSE, xlim = c(0,3), risk.table = TRUE , risk.table.col = "strata" , risk.table.height = 0.3, risk.table.title = "" , legend.labs = LETTERS[1:4] , legend.title = "" , break.time.by = .5, xlab = "" , ylab = "")

Nice, isn’t it?

Sondages, intentions de vote et “vote utile”

Il y a plusieurs semaines, Ashley Kirk et Patrick Scott publiaient French presidential election: How the polls are shaping up in the race to become president. Force est de constater qu’ils avaient raison: les sondages prennent une place essentielle dans cette période électorale.

Avant, une précaution d’usage s’impose, je pense. Les instituts de sondages le rappellent sans cesse, et ils ont raison : leur métier n’est pas véritablement de faire des sondages d’intention de vote. L’essentiel de leurs revenus vient des études de marché,
et d’opinion, généralement pour le compte d’entreprises privées. Néanmoins, les élections sont une fabuleuse vitrine publicitaire. On peut alors imaginer que l’institut qui aura “prédit” le scrutin avec la plus grande précision devrait s’assurer une rente pour les mois – voire les années – à venir. Cette vitrine publicitaire serait importante car elle empêcherait aux instituts de prendre parti : ils ont intérêt à prédire aussi précisément que possible, probablement plus que chercher à influencer les votes. Mais est-ce aussi simple ?

Depuis une quizaine d’années, on voit régulièrement ressurgir le concept de « vote utile ». Ce concept est particulièrement important en France, pour les élections présidentielles, compte tenu du système de vote : un vote en deux tours, avec seulement les deux meilleurs au second tour. Qui dit “meilleur” dit positionnement relatif, et donc importance du vote des autres. Quelque part, mon vote est important, mais celui des autres l’est tout autant (sinon plus). Pour voter de manière rationnelle, il faut savoir comment les autres vont voter. Et comme souvent dans un jeu statégique – et les élections en sont – l’information joue un rôle essentiel.

Lorsqu’un élécteur ne sait pas quel sera le vote des autres, il aura – a priori – intérêt à voter pour son candidat préféré, Mais si ce même électeur a des croyances quant au vote des autres, il peut avoir intérêt à modifier stratégiquement son choix, en votant pour son second, voire son troisième choix : on parlera alors de « vote utile ». Sans information sur les choix des autres (ou leurs stratégie), il ne peut pas y avoir de comportement stratégique. Et force est de constater que les “sondages” (terme générique pour désigner les estimations d’intension de vote) sont devenus des instruments essentiels pour déterminer justement quel sera le choix des autres électeurs.

Les sondages sont devenus l’élément central du vote stratégique, surtout s’ils sont présenté comme fournissant une information précise, voire “statistiquement rigoureuse” des intentions de vote. Les sondages deviennent alors auto-réalisateurs s’ils poussent à voter pour des candidats qui affichent le plus de chances de gagner, ce qu’on appelle communément le « vote utile ». Mais on peut aussi imaginer des stratégies inverses : si mon candidat préféré a 40% d’intention de votes, dans les derniers sondages, a-t-il vraiment besoin de ma voix ? Ne pourrais-je pas éviter de perdre du temps en allant voter ?

Bref, j’ai encore du mal à comprendre le rôle exact des sondages dans les élections, mais ils sont loin d’être neutres. Et j’ai l’impression que comprendre ce mécanisme est plus important pour quantifier les “marges d’erreurs” que toutes les méthodes statistiques que l’on peut imaginer (dont je parlais dans un précédent billet). Et les sondages en période électorale semblent relever davantage de la théorie des jeux que des problèmes d’inférence statistique.

C’est normal ! (partie 1) et si la normalité n’existait pas?

Il y a quelques semaines, je discutais avec une collègue juriste (alors que j’essayais de glaner des statistiques juridiques), et alors que l’on parlait alors de la lenteur de l’instruction, ou de l’inversion de la charge de la preuve (je ne me souviens plus) j’ai été supris qu’elle me dise que “c’est normal“. Je sais qu’un juriste et un statisticien ne donnent pas forcément le même sens aux mots, et cette phrase m’a dérangé parce qu’une situation qui pourrait sembler “normale” (car observée régulièrement) n’est pas pour autant “juste” (c’est le paradoxe is/ought de Hume, mais j’en parlerais dans un autre billet).

Le point de départ est de comprendre ce qu’est la normalité “empirique”, telle qu’observée dans une population. Ce qui pourrait être “normal” pour un statisticien. Pour commencer, je pensais revenir sur un exemple raconté dans The End of Average de Todd Rose, qui essaye de montrer, exemples à l’appui, que l’homme moyen n’existe pas.

  • L’homme moyen de Quételet

Au XIXème siècle, si plusieurs astronomes mesuraient la vitesse d’un même objet céleste, ils obtenaient (souvent) plusieurs mesures différentes. Pour savoir “laquelle” utiliser dans leurs calculs, l’idée d’utiliser “la méthode des moyennes” s’est rapidement imposée – comme le rappelle Stahl (2006), et surtout Sheynin (1973) – cette “moyenne” ayant une précision plus grande que n’importe quelle autre grandeur (ou dirait aujourd’hui “statistique”).

Adolphe Quetelet fut, semble-t-il, le premier à appliquer ce calcul de moyennes à des mesures humaines, introduisant son fameux concept d'”homme moyen”. Comme j’en avais parlé dans un précédant billet, la moyenne est une grande particulière, dont le sens n’est pas forcément clair. Si on définit la moyenne à l’aide d’une minimisation d’erreur quadratique, on a une interprétation en terme de prévision (on retrouve ici la notion de mesure elicitable dont je parlais dans mon dernier cours): la taille moyenne est la taille de “devrait” mesurer une personne tirée au hasard (à une variation aléatoire – et imprévisible – près). En 1846 dans une lettre (publiée dans l’ouvrage Lettres sur la théorie des probabilités, appliquée aux sciences morales) Adolphe Quételet utilise l’image de la statue du gladiateur pour expliquer ce que peut être l’homme moyen.

  • L’interprétation de Francis Galton

Ce homme moyen a beaucoup plu à l’époque, en particulier au sein de l’école anglaise eugéniste, dirigée à l’époque par Francis Galton, même si ce dernier s’intéresse surtout aux déviations par rapport à cette norme (déviation vers le haut et déviation vers le bas). Comme le rappelle Bulmer (2004),the deviations from that average—upwards towards genius, and downwards towards stupidity—must follow the law that governs deviations from all true averages“. Les travaux de Galton ont visé à comprendre ces déviations. Si Florence Nightingale affirmait que “the Average Man is God’s Will“, Galton de son côté s’intéressait davantage au caractère héréditaire. Mais cet “homme moyen” a-t-il pour autant du sens ?

  • L’être humain moyen n’existe pas

Une anecdote intéressante est celle de deux statues, à Cleveland, celles de Norma et Normann. L’artiste Abram Belskie et l’obstetricien Robert Latou Dickinson ont réalisé ensemble ces statues, en 1943. La particularité est qu’aucun modèle n’a été représenté. En fait, il s’agissait de représenter une femme et un homme qui avaient les mensurations moyennes de l’époque.

Une fois ces statues réalisées, un concours a été organisé pour trouver qui ces statues pouvaient bien représenter. Plusieurs milliers de personnes de l’Ohio ont envoyé leurs mensurations, mais aucun ne correspondaient à celles des statues. Certes, plusieurs centaines avaient la même taille. Plusieurs centaines avaient le même tour de poitrine. Mais aucune n’avait toutes les bonnes mesures. Car comme l’explique Todd Rose, l’homme n’est pas unidimensionnel: c’est sur plusieurs dimensions qu’on le mesure.

Et chercher à le résumer en une grandeur unidimensionnel est beaucoup trop réducteur. C’est ce qu’il montre dans son livre sur les tests d’intelligence, par exemple, où un même QI peut être associé à deux personnes très différentes.

Pareil pour décider de recruter quelqu’un, se focaliser sur un seul indicateur n’a pas de sens. Le soucis quand on travaille dans un contexte multivarié, c’est que la moyenne perd de son sens. Pour reprendre le titre d’un billet mis en ligne voilà 6 mois, être moyen peut être extraordinaire.

  • La malédiction de la dimension (en grande dimension, l’espace est très vide…)

En fait, ce problème est bien connu par les statisticiens, sous le nom de “fléau de la dimension“. Prenons un exemple simple: supposons qu’une grandeur d’intérêt suive une loi normale https://latex.codecogs.com/gif.latex?\mathcal{N}(\mu,\sigma^2), par exemple le poids, la taille, le tour de poitrine, etc. On pourrait dire que la norme, c’est se trouver dans un intervalle https://latex.codecogs.com/gif.latex?[\mu\pm%201.5%20\cdot\sigma]. Si on a une loi normale, cette situation survient dans 85% des cas,

> (1-2*pnorm(-1.5))
[1] 0.8663856

Et 15% seront vues comme “anormales”. Elles peuvent être anormalement petites, ou anormalement grandes. C’est le dessin ci-dessous: on regarde ici seulement une dimension

On peut maintenant regarder deux dimensions, le poids et la taille, par exemple. La norme serait ici que dans les deux dimensions, on soit dans l’intervalle https://latex.codecogs.com/gif.latex?[\mu\pm%201.5%20\cdot\sigma]. Si les grandeurs sont indépendantes, la probabilité que les deux grandeurs soient “normale” est de 75%

> (1-2*pnorm(-1.5))^2
[1] 0.750624

En dimension deux, 75% des observations sont “normales”, et 25% sont “anormales”

En dimension 3, on passe à 65%

> (1-2*pnorm(-1.5))^3
[1] 0.6503298

pour 35% d’observations “anormales” (plus du tiers)

Etc. En dimension cinq, on passe en dessous de 50%

> (1-2*pnorm(-1.5))^5
[1] 0.4881532

autrement dit, être dans la norme dans les 5 dimensions, ce n’est plus le cas de la majorité. Et en dimension vingt, ceux qui sont “normaux” sont plutôt atypiques, avec une proportion de l’ordre de 5%,

> (1-2*pnorm(-1.5))^20
[1] 0.0567838

Bref, la normalité est un concept particulièrement étrange sur le plan empirique, car intuitivement associé à l’idée d’une majorité. Alors que ce n’est pas le cas, la normalité étant justement atypique.

Toi aussi, raconte ce que tu veux avec des graphiques

L’autre jour, les décodeurs publiaient sur le site du Monde un article sur l’utilisation des graphiques en base 100,

Je reprends le commentaire

Celui-ci indique, sans appel selon Mme Le Pen, le déclin des économies françaises, italiennes et espagnoles face à l’industrie allemande. Marine Le Pen n’hésite ainsi pas à affirmer que le déclin de la production française est lié à l’introduction de la monnaie unique en 2001.

On peut reconstruire le graphique assez facilement, les données étant en ligne sur https://data.oecd.org/

base=read.table(loc,sep=",",header=TRUE)
extract=function(nom="FRA"){
b=base[base[,1]==nom,c("TIME","Value")]
names(b)=c("TIME",nom)
return(b)
}
B=extract("FRA")
B=merge(B,extract("DEU"),all.x=TRUE,all.y=TRUE)
B=merge(B,extract("ESP"),all.x=TRUE,all.y=TRUE)
B=merge(B,extract("ITA"),all.x=TRUE,all.y=TRUE)
dim(B)
B$TIME
B$t=seq(1950+1/8,2016+7/8,by=1/4)
plot(B$t,B$FRA,type="l",col="blue",lwd=2)
i=which(B$T=="2001-Q1")
Bi=B
for(j in 2:5) Bi[,j]=Bi[,j]*100/Bi[i,j]
plot(B$t,Bi$FRA,type="l",col="blue",lwd=2,ylim=range(Bi[which(B$T=="1990-Q1"):which(B$T=="2016-Q4"),2:5],na.rm=TRUE),xlim=c(1990,2020))
text(2019,Bi$FRA[max(which(is.na(Bi$FRA)==FALSE))],"FRA",col="blue")
lines(B$t,Bi$DEU,lwd=2)
text(2019,Bi$DEU[max(which(is.na(Bi$DEU)==FALSE))],"DEU")
lines(B$t,Bi$ESP,lwd=2,col="red")
text(2019,Bi$ESP[max(which(is.na(Bi$ESP)==FALSE))],"ESP",col="red")
lines(B$t,Bi$ITA,lwd=2,col="green")
text(2019,Bi$ITA[max(which(is.na(Bi$ITA)==FALSE))],"ITA",col="green")

Maintenant, on peut aussi changer la référence de la base 100. Par exemple, la victoire de la France à la Coupe du Monde Foot

i=which(B$T=="1998-Q2")

Damned,

Celui-ci indique, le déclin des économies françaises, italiennes et espagnoles face à l’industrie allemande. Ce déclin de la production française est lié à la victoire de la France à la Coupe du Monde de Football.

ou la dernière victoire de la France à l’Eurovision

i=which(B$T=="1977-Q3")

Damned,

Celui-ci indique, le déclin des économies françaises et espagnoles face à l’industrie allemande. Ce déclin de la production française est lié à la victoire de la France à l’Eurovision.

ou encore, la naissance de Mme Le Pen

i=which(B$T=="1968-Q3")

Damned,

Celui-ci indique, le déclin de l’économie française face aux industries allemande et espagnole. Ce déclin de la production française est lié à la naissance de Mme Le Pen.

The U.S. Has Been At War 222 Out of 239 Years

This morning, I discovered an interesting statistic, America Has Been At War 93% of the Time – 222 Out of 239 Years – Since 1776,  i.e. the U.S. has only been at peace for less than 20 years total since its birth. I wanted to check, get a better understanding and look at other countries in the world.

As always, we can try to extract information from wikipedia, since there are pages dedicated to that information

url="https://en.wikipedia.org/wiki/List_of_wars_involving_the_United_States"
download.file(url,destfile = "warUS.html")
url="https://en.wikipedia.org/wiki/List_of_wars_involving_France"
download.file(url,destfile = "warFR.html")
url="https://fr.wikipedia.org/wiki/Liste_des_guerres_de_la_France#Premi.C3.A8re_R.C3.A9publique"
download.file(url,destfile = "guerre.html")
url="https://en.wikipedia.org/wiki/List_of_wars_involving_Canada"
download.file(url,destfile = "warCAN.html")

If we look at the US page, there are tables, so it should be easy to extract it. For instance,

Even if the war did last 1 day, we will say that the US were at war in 1811. The information we want to confirm can be “there were 21 full years – from Jan 1st till Dec 31st – where the US were not at war, once, during those years“. From the row above, we can claim that the US were at war in 1811. Most of the time, we have

I.e. there is a beginning (here 1775) and an end (1783). So here, the US are said to be at war in 1775, 1776, 1777, 1778, 1779, 1780, 1781, 1782, 1783. To extract the information, we look for regular expressions in the first column, with number, on 4 digits.

https://freakonometrics.hypotheses.org/files/2017/03/guerre-us1.png

Well, sometimes it can be a bit tricky, since we have 3 dates, 1941, 1945 and (in the legend) 1944. But if we consider the minimal and the maximal dates, we have our range of dates.

Now that we we how to extract information, let’s do it. The code will be

library(stringr)
ext_date=function(x){
dates12="[0-9]{4}"
#grep(pattern = dates2, x = col1[1])
L=str_extract_all(as.character(x),dates12)
return_L=list()
if(length(L)>0){
for(j in 1:length(L))
if(length(L[[j]])==1) return_L[[j]]=as.numeric(L[[j]])
if(length(L[[j]])>=2) return_L[[j]]=seq(min(as.numeric(L[[j]])),max((as.numeric(L[[j]]))))
}
return(return_L)}

For the US, we get the following years

library(XML)
tables=readHTMLTable("warUS.html")
list_dates=list()
for(i in 1:length(tables)){
if(!is.null(dim(tables[[i]]))){
if(ncol(tables[[i]])>1){
col1=tables[[i]][,1]
list_dates[[i]]=lapply(col1,ext_date)
}
}}
d=unique(unlist(list_dates))

(red means at war, while green means no-war) and indeed,

> length(d)
[1] 222

there were 222 years with war.  Now, what about another country. Like France. Here I use the French wiki page, since information is not in tables in the English one.

tables=readHTMLTable("guerre.html")
list_dates=list()
for(i in 1:length(tables)){
if(!is.null(dim(tables[[i]]))){
if(ncol(tables[[i]])>1){
col1=tables[[i]][,1]
col2=tables[[i]][,2]
col12=paste(col1,col2)
list_dates[[i]]=lapply(col12,ext_date)
}
}}
d=unique(unlist(list_dates))

On the same period of time (starting in 1775), France was also on war most of the time.

Less than the US, but still: 185 years with war,

> length(d[d>=1775])
[1] 185

And on a longer period of time? Why not start, say, around the Hundred Years’s War,

meaning that since 1337, there were (only) 174 years without a single war where France was involved.

Let’s try another one. Like Canada,

tables=readHTMLTable("warCAN.html")
list_dates=list()
for(i in 1:length(tables)){
if(!is.null(dim(tables[[i]]))){
if(ncol(tables[[i]])>1){
col1=tables[[i]][,1]
list_dates[[i]]=lapply(col1,ext_date)
}
}}
d=unique(unlist(list_dates))

Guess what… there’s a lot of green on that graph. Surprised?

Juxtaposer des cartes et ‘confounding’

Pour aller un peu plus loin que mon précédant billet, élections, pièges à com(mentaires à la con) je voulais juste montrer quelques cartes, obtenues par simulations. Mais avant, revenons deux minutes sur la notion de ‘confounding‘. Pour reprendre le dessin de wikipedia, l’idée est que, conditionnellement à https://latex.codecogs.com/gif.latex?Z (notre ‘confounding factor’), les variables https://latex.codecogs.com/gif.latex?X et https://latex.codecogs.com/gif.latex?Y sont indépendantes. Mais cette indépendance conditionnelle peut (comme bien souvent) impliquer une forte corrélation entre https://latex.codecogs.com/gif.latex?X et https://latex.codecogs.com/gif.latex?Y. On peut ainsi imaginer un modèle de la forme https://latex.codecogs.com/gif.latex?X=Z+\varepsilonhttps://latex.codecogs.com/gif.latex?\varepsilon désigne une composante idiosyncratique, et https://latex.codecogs.com/gif.latex?Y=Z+\eta (où là aussi https://latex.codecogs.com/gif.latex?\eta est une composante idiosyncratique).

Par exemple, on peut supposer que https://latex.codecogs.com/gif.latex?Z est une variable liés à la lattitude du département, par exemple la température moyenne (histoire d’avoir une vague histoire à raconter, et d’être moins rébarbatif)

> n=115
> X=matrix(rnorm(3*n),n,3)
> X[,1]=sort(X[,1])
> library(maps)
> map("france",fill =TRUE,
col= rgb(1,0,0,pnorm(X[,1])))

Maintenant, supposons qu’on ait une variable https://latex.codecogs.com/gif.latex?X très corrélée à https://latex.codecogs.com/gif.latex?Z, par exemple la vente de crème solaire (en volume, toujours pour raconter une histoire qui illustrerait un peu mon propos)

> r=.8
> X[,2]=r*X[,1]+sqrt(1-r^2)*X[,2]
> map("france",fill =TRUE,
col= rgb(0,1,0,pnorm(X[,1])))

ce qui donne le nuage de points suivant (avec une forte corrélation avec le ‘confounding factor’)

On suppose maintenant qu’on a une autre variable https://latex.codecogs.com/gif.latex?Y, elle aussi très corrélée à https://latex.codecogs.com/gif.latex?Z, par exemple le prix d’une plaquette de beurre (qui pourrait être très cher dans le sud, où l’on cuisine plutôt à l’huile)

> r=.8
> X[,3]=r*X[,1]+sqrt(1-r^2)*X[,3]
> map("france",fill =TRUE,
col= rgb(0,1,0,pnorm(X[,1])))

avec une corrélation du même ordre, avec le ‘confounding factor’

Si on juxtapose les deux cartes, on a des variables corrélées,

mais on ne peut pas en conclure, juste en regardant ces cartes, que les ventes de crème solaire influencent le prix d’une plaquette de beurre ! Et on peut même accentuer encore l’effet, en jouant un peu sur les couleurs. Par exemple, avec

> map("france",fill =TRUE,col = rgb(1,0,0,qbeta(pnorm(X[,1]),.2,.5)))

on accentue un peu l’écart entre le nord et le sud (je joue ici sur l’échelle des couleurs, pas sur les valeurs !)

et sur nos deux variables, on a encore une juxtaposition qui donne envie de raconter un jolie histoire, non ?

Ah oui, ma corrélation entre les variables https://latex.codecogs.com/gif.latex?X et https://latex.codecogs.com/gif.latex?Y est relativement forte, de l’ordre de 0.6 (qui est supérieure à ce qu’on avait observé hier sur le taux de chômage et le taux du FN aux élections régionales)

> cor(X)
[,1]      [,2]      [,3]
[1,] 1.0000000 0.7863838 0.7727523
[2,] 0.7863838 1.0000000 0.6312878
[3,] 0.7727523 0.6312878 1.0000000

mais la corrélation est très sensible aux lois marginales, ça ne veut pas dire grand chose. Même si, visuellement, le nuage de points peut faire penser à celui qu’on avait hier

Bref, juxtaposer des cartes, c’est joli. De là à en déduire quoi que ce soit….

Élections, pièges à com (mentaires à la con)

Je suis tombé hier, sur le site de The Economist sur deux cartes, juxtaposées, une présentant le taux de chômage (en rouge, à gauche) et l’autre le vote FN (en bleu, à droite),

L’idée serait ici de comparer les cartes, et de se dire que les deux variables “taux de chômage” (produit par l’insee) et “vote FN” (aux élections régionales de 2015) seraient corrélées, et que l’une expliquerait peut être l’autre… Comme il est difficile (?) d’affirmer que le vote FN pourrait induire du chômage, on serait tenté de dire que les chômeurs votent FN, un raccourci de ce genre. Je ne dis pas que c’est faux, je dis juste que c’est s’aventurer sur un terrain dangereux, quand on commence à comparer des cartes, rapidement (et donner lieu à toutes sortes de commentaires à la con, pour expliquer le titre du billet). Sur ces deux variables, on peut d’ailleurs regarder les données brutes,

Oui, les variables semble très corrélées, par département. Après, si on calcule la corrélation, on “seulement” 0.516. Soit dit en passant, la corrélation ne dépend pas de l’orientation du graphique, j’aurais parfaitement pu mettre le taux de chômage en ordonnées. Mais classiquement, l’ordonnée est la variable que l’on souhaite expliquer, et l’abscisse est la variable (dite) explicative. Même si, comme toujours en régression, on n’établit aucun lien causal.

Bien sûr, il y a des départements pour lesquels il y a un écart, avec un chômage fort, et qui pourtant ne semblent voter massivement pour le FN (aux élections régionales).

En fait, on peut trouver des dizaines de cartes, qui présente des répartitions relativement proches, comme le rapport inter-décile des niveaux de vie par département

le taux de pauvreté par département

(on pouvait retrouver cette carte en ligne)

ou encore la part des minima sociaux dans le revenu disponible des ménages par département

Bref, on aurait très envie de dire que le vote FN s’explique par le chômage, la pauvreté, etc. Mais on ne peut pas…. C’est une faute de raisonnement, connu sous le nom d’ecological fallacy. En effet, le vote est un comportement individuel, par sa nature même (on va, individuellement, mettre un bulletin dans l’urne). Et on n’a pas le droit d’induire des comportements individuels d’observations agrégées… Ca ne veut pas dire que la relation causale n’est pas présente, ou le contraire… ça veut juste dire qu’on ne peut rien affirmer, juste en juxtaposant des cartes, on n’a aucunement une preuve (tout juste une vague corrélation au niveau agrégé). Aussi tentant que ça puisse être.

Pour dire quelque chose de censé sur les choix de vote, il est nécessaire d’avoir des enquêtes (ou peut être avoir accès à des votes électroniques, comme le vote des français de l’étranger aux législatives, par exemple, mais ça n’est pas vraiment possible, donc on va se limiter aux études, aux sondages). Par exemple le graphique dans Les Echos, à l’époque des régionales, justement,

Le chômage et le niveau de diplôme étant des variables très corrélées, on pourrait avoir l’impression d’avoir une piste.

Un problème important dans les cartes, c’est leur granularité : quand on regarde les départements, on est sur des espaces géographiques beaucoup trop grands ! un département, c’est très hétérogène. En particulier, il peut y avoir, ou pas, de grosse métropole. Certains chercheurs ont souligné que le vote FN est important dans la grande périphérie des métropoles, estimant qu’il augmente avec la distance du centre-ville. On le voit assez nettement sur la carte suivante

Le soucis, quand on utilise une granularité plus fine, c’est qu’on ne voit plus grand chose, comme sur les cartes ci-dessous, qui reprennent le résultat du FN aux élections régionales

et le taux de chômage (des 25-55 ans)

Bref, faire une étude montrant une relation causale, c’est pas simple… mais promis, si je trouve des données, je veux bien me lancer !

Les sondages avaient tout faux en 2016? Ah bon?

Allez, un dernier billet sur les sondages, d’autant plus que le débat de demain soir devrait porter (plus spécifiquement) sur les faillites sur sondages anglais et américains, de 2016.

  • Alors comme ça les sondages seraient “faux” ?

Je n’aime pas cette terminologie. J’ai l’impression que la confusion vient en grande partie du fait qu’on analyse, au final, un vote aux élection comme un référendum. C’est pour ça qu’on a tendance à mettre dans le même parnier le référendum britannique et les élections américaines pour parler de la “faillite des sondages“. Un point amusant est que si classiquement, on essaye de quantifier le nombre de voix obtenues, aujourd’hui, on communique davantage sur la “probabilité de gagner”. Un peu comme en météo quand on parle de la probabilité qu’il pleuve (PDP, qui est un concept qui me dépasse complètement, comme j’en ai parlé voilà plusieurs années sur ce blog).

Mais revenons sur ce qui s’est passé, un instant. La veille du vote américain, on nous indiquait que la probabilité que Donald Trump gagne était de l’ordre de 15%. Ce qui est la probabilité de tomber sur 6 en lançant un dé. Ou de tomber sur un somme faisant 6 en lançant deux dés. Comment dire… Je me souviens de la réaction de mon fils, il y a plusieurs années, qui s’énervait lorsqu’on jouait à Serpents et Echelles (ou au jeu de l’oie, ou aux petits chevaux) et que, par hasard, je faisais un 6, et que c’est effectivement ce dont j’avais besoin pour gagner. “Tu as triché papa !”. Ai-je besoin de faire un billet de blog pour expliquer qu’avoir un 6 en lançant un dé, “ça arrive” ? Comme je le disais dans un billet l’autre jour, on retrouve ici des débats classiques en gestion des risques. Si je prédis le décès de ma belle-mère avec 1 chance sur 1000 ou même 10000, et qu’elle décède, avais-je raison, ou pas ? C’est la multitude des prévisions qui permet de juger de la qualité de la prévision. Si dans une population importante, la proportion de décès est de 1 sur 1000, alors mon estimation était bonne. Mais les élections, on ne les observe qu’une fois…

Continuons un instant notre réflexion… Ce matin, en partant, la météo m’annonçait une “probabilité de pluie de 15%”. Que dois-je faire de cette information ? Dois-je arrêter de la consulter, le matin, car elle s’est trompé puisqu’il a plu. S’est-elle d’ailleurs trompée ? Et ai-je d’ailleurs le droit de comparer la météo et un vote ? Si on y réfléchi un peu non. Si la météo m’indique une “probabilité de pluie de 15%”, je peux légitimement décider de remettre mon projet de faire en longue balade en vélo toute la journée à plus tard. Et ma décision n’aura pas d’impact sur le fait qu’il pleuve ou pas (sauf si, comme moi, vous avez observé que justement, il pleut précisément les jours où vous n’avez ni parapluie ni manteau imperméable…). Mais pour les votes ? Si le jour du vote on m’annonce que mon candidat a 15% de chances de gagner, et que je décide de ne pas sortir pour aller voter, ça n’est pas la même chose ! Le fait qu’il gagne, ou pas, dépend en grande partie de mon action ! Les gens peuvent changer d’avis, et prendre des décisions en fonction de ce qu’on leur annonce. Et ça aura un impact sur l’élection (si beaucoup de monde raisonne ainsi). Alors que pour la pluie….

  • Une “probabilité de gagner” ?

Prévoir l’avenir c’est dur. Ce que j’aime bien sur certains sites (je pense à 538) c’est par exemple la nuance qui est faite entre les forecast (prévision pour un scrutin à venir, dans plusieurs semaines) et les “now-cast“, correspondant à une projection de ce qui se passerait lors d’une hypothétique élection qui se tiendrait lors du sondage. Mine de rien, c’est une nuance assez fondamentale, je pense. Maintenant, un point très important est, me semble-t-il, l’importance donnée à cette “probabilité de gagner”.

Dans mon prédédant billet, je faisais quelques simulations pour montrer que la probabilité de gagner est un concept difficile à comprendre, car il reflète essentiellement une incertitude. Au lieu de faire des simulations, faisons plutôt quelques calculs. Dans le cas du référendum anglais (histoire de simplifier un peu l’interprétation), supposons qu’un sondage donne “Remain” à 52%. Si on veut un intervalle de confiance à 95%, on a (en gros) un intervalle de ±3 points, soit [49%,55%]. Dans la terminologie statistique, on aura une loi normale, centrée sur 52%, avec un écart-type de 1.5%. La probabilité d’être au dessus de 50% est ici de 91%

> 1-pnorm(50,52,1.5)
[1] 0.9087888

ce qui donne une cote à 10 contre 1

> (1-pnorm(50,52,1.5))/pnorm(50,52,1.5)
[1] 9.963564

Si on avait obtenu 51%, c’est à dire un intervalle de confiance [48%,54%], on aurait une côte à 3 contre 1.

> (1-pnorm(50,51,1.5))/pnorm(50,51,1.5)
[1] 2.960513

Autrement dit, si entre deux jours consécutifs, les sondages passent de 51% à 52% (un hausse de un point), la côté passe de 3 contre 1 à 10 contre 1 ! (je parle ici de côte car beaucoup ont utilisé les paris en ligne pour prévoir la victoire de tel ou tel camp). Autrement dit, les paris (ou les probabilités qu’un camp l’emporte) sont très très sensibles à de très faibles variation dans le modèle. Et ceci n’est pas sans poser de problème quand on sait comment fonctionne le lissage des sondages (très fort au début puis de plus en plus faible au fur et à mesure que le jour de l’élection approche): la probabilité de gagner devient incroyablement volatilé en fin de course, pouvant passer de 5 contre 1 pour un candidat à 5 contre 1 pour l’autre, si deux sondages varient de 3 points (51.5% pour le premier, 48.5% pour le second).

Historiquement, les sondages donnaient une proportion, genre 52%. Puis il y a quelques années, l’intervalle de confiance est apparu. Et là, j’ai l’impression que les journalistes ont du comprendre qu’ils y perdaient. Par ce que dire que la proportion est entre 49% et 55% (avec une probabilité de 95%), ça n’est pas super sexy. La parade semble être de parler de “la probabilité de gagner” qui permet d’avoir des chiffres très variables, très grands ou très petits. Bref, des chiffres télégéniques, presque clairs (“probabilité de gagner”, tout le monde comprend, hein ?), et souvent énorme, par exemple ici 10 contre 1 (ou 91% dans une terminologie plus probabiliste). Mais si on essayait de mettre un intervalle de confiance sur cette probabilité de gagner ? A la louche, quand on a une fréquence de l’ordre de 52%, la probabilité de gagner est de 91%, mais l’intervalle de confiance est entre 25% et 100%

> 1-pnorm(50,52+c(-2,+2)*1.5,1.5)
[1] 0.2524925 0.9995709

Avec une fréquence de 50.5% obtenue lors d’un sondage, j’aurais un intervalle de confiance à 95% entre 5% et 99%

> 1-pnorm(50,50.5+c(-2,+2)*1.5,1.5)
[1] 0.04779035 0.99018467

Bref, cette probabilité de gagner est assez incertaine… non ? Dit autrement, cette histoire de “probabilité de gagner” est une belle arnaque…

  • Que s’est-il passé en Angleterre ?

Oui, les sondages se sont trompé, dans le sens où il y a eu une différence (relativement) importante entre les résultats de l’élection et des sondages. Dans le premier cas, “leave” à gagner alors que les sondages semblaient avoir tendant à croire que “remain” aurait une majorité. Bref, globablement, on prévoit 0 et on obtient 1. C’est une grosse erreur. Maintenant, si on regarde un peu en détails, comme toujours il peut y avoir plusieurs explications à cette différences entre des sondages et les résultats finaux, comme le notait par exemple Andrew Gelman

  1. les personnes qui ont répondu aux sondages n’étaient pas un “échantillon représentatif” des électeurs (et peu importe la raison au fond, mais si les deux populations diffèrent, il ne faut pas être surpris d’avoir une différence)
  2. les réponses aux sondages permettent mal de mesurer les intensions de votes (par exemple si le taux d’indécision est trop fort, et non aléatoire)
  3. la décision a été prise le dernier jour
  4. la participation électorale a été différente de celle estimée (par exemple des personnes qui voulaient voter “remain” qui se sont abstenus, persuadé de la victoire de leur camp)
  5. la faute à pas de chance, ce qu’on appelle en statistique l’incertitude d’échantillonage.

J’avais fait un billet sur ce dernier point, rappelant qu’il est beaucoup plus important que ce qu’on apprend souvent en statistique, justement à cause des autres effets. Et c’est probablement ce qui s’est passé en Angleterre, un mélange de toutes ces causes. Ah si, peut être juste un point que je pourrais mentionner ici : le type de sondage utilisé a eu un impact considérable, les sondages par téléphone mettant le “remain” bien plus haut que les sondages en ligne.

  • Que s’est-il passé aux Etats-Unis ?

Comme je l’ai déjà dit, prévoir le vote aux Etats-Unis est compliqué, compte tenu du mode de scrutin. Mais au moins, les modèles utilisés sont clairement décrits (on pourra lire le guide publié par 538 en juin 2016). La modélisation permettant de faire une prévision se fait (en gros) en quatre temps,

  1. Collecter les sondages, pondérer et agréger. Par exemple, un sondage local (par état) est très différent d’un sondage national. Et un sondage sur toute la population n’est pas la même chose qu’un sondage sur des électeurs probables.
  2. Ajuster les sondages. En particulier, il peut être intéressant de lisser les résultats pour un même institut de sondage, en faisant des moyennes sur les sondages précédants. La subtilité est de faire varier le paramètre de lissage, avec des poids très conservateurs très en amont de l’élection (on lisse beaucoup, avec peu de variabilité entre deux dates) et au contraire, des poids plus faibles pour le passé au fur et à mesure que l’on se rapproche du jour de l’élection (on lisse peu, et les résultats deviennent très volatiles, très incertains)
  3. Combiner avec des données démographiques et économiques. Il est important de tenir compte de variables démographiques, aux Etats Unis, pour comprendre les changements possibles entre les élections de 2016 et celles de 2012. Par exemple en tenant compte de concentration éthniques, ou de changement d’âge moyen dans une zone géographique. Ensuite, il est possible de tenir compte de variables économiques, en particulier des niveaux d’emploi dans la région, le revenu personnel, des niveaux de consommation (personnels), ainsi que des niveaux d’indices boursiers (comme le note 538). On peut aussi tenir compte d’une information importante qui est le nombre de jours avant l’élection. Lauderdale & Linzer (2014) donne pas mal d’information sur les variables prédictives, justement.
  4. Projeter, par simulations. En simulant des scénarios, de manière corrélée entre les états, on peut arriver à des scénarios que l’on peut ensuite agréger, pour avoir des résultats nationaux.

Ce genre de modèle s’est relativement bien comporté, dans une marge d’erreur raisonnable. Mais le fait est que quelques pourcentages d’erreur ont donné des résultats très différents de ceux “attendus”. Ce qui est intéressant, c’est qu’avec 48% des voix en 2012, Mitt Romney a perdu l’élection présidentielle. Alors que Donald Trump l’a emporté, avec lui aussi près de 48% des voix. Mais Donald Trump a eu un résultat plus important que celui annoncé par les sondages dans des états clés (swing states). Un autre point important a été le fort changement de vote, jusqu’au bout. Plus de 15% des gens ont admis avoir décidé du candidat pour lequel ils voteraient au cours de la dernière semaine. D’autres sondeurs ont noté des fortes évolutions dans les non-réponses: beaucoup de personnes qui ont finalement voté pour Donald Trump ont longtemps refusé de l’avouer, et figuraient comme “non réponse”. Enfin, et c’est je pense un point important (j’avais tenté un billet sur le sujet voilà quelques années), les élections américaines ne sont pas des élections à deux candidats. Et mal prendre en compte Gary Johnson a probablement induit des erreurs dans les sondages. S’il était connu que Gary Johnson et Donald Trump chassaient le même électorat, beaucoup ont surestimé son score (estimé à 5% au niveau national, mais finalement à 3%), la différence s’étant probablement reporté sur Donald Trump

Après, il faut constater qu’il est difficile de construire un modèle, basé sur la rationalité des gens pour prévoir un comportement électoral. Quand 538 propose d’intégrer un indice économique, c’est parce qu’une hausse soudaine du chômage devrait avoir un impact sur le vote de certaines personnes (reste à savoir lequel, mais le choix des variables explicatives est un exercice en soi, comme le montre l’explosion des modèles sparse, permettant de trouver les bonnes variables prédictives, et non pas de rajouter davantage de bruit). Mais comment comprendre que Donald Trump, candidat ayant obtenu l’approbation du Ku Klux Klan, ait obtenu plus de voix que Mitt Romney en 2012 auprès des électeurs noirs, hispaniques et asiatiques ? Peut-on encore penser que les électeurs sont rationnels ?

Déclarer ou révéler, retour sur les sondages

Voilà une semaine, je mettais en ligne un court billet “les sondages et le bruit” sur les sondages, et leur biais, en préparation pour une intervention en milieu de semaine, sur Paris. Mais cette semaine, je voulais continuer à assembler mes notes de lecture…

  • Déclarer ou révéler

Bon, on va commencer par enfoncer des portes ouvertes, mais il est toujours bon de relire “l’opinion publique n’existe pas” de Bourdieu.

Toute enquête d’opinion suppose que tout le monde peut avoir une opinion ; ou, autrement dit, que la production d’une opinion est à la portée de tous. Quitte à heurter un sentiment naïvement démocratique, je contesterai ce premier postulat. Deuxième postulat : on suppose que toutes les opinions se valent. Je pense que l’on peut démontrer qu’il n’en est rien et que le fait de cumuler des opinions qui n’ont pas du tout la même force réelle conduit à produire des artefacts dépourvus de sens. Troisième postulat implicite : dans le simple fait de poser la même question à tout le monde se trouve impliquée l’hypothèse qu’il y a un consensus sur les problèmes, autrement dit qu’il y a un accord sur les questions qui méritent d’être posées. Ces trois postulats impliquent, me semble-t-il, toute une série de distorsions qui s’observent lors même que toutes les conditions de la rigueur méthodologique sont remplies dans la recollection et l’analyse des données.

Cela dit, j’irais probablement plus loin, en disant que le sondage crée une opinion, au sens où la personne interrogée se force à chercher la réponse à une question qu’elle ne s’était peut être jamais posée. Ou pas encore posée, dans le cas des sondages électoraux. Mais c’est le principe même des sondages, les personnes interrogée devant déclarer pour qui elles comptent voter le jour de l’élection (avec toutes sortes d’autres questions).

D’ailleurs, un des problèmes de cette “déclaration” est le biais de “désirabilité sociale“: les personnes interrogées aimer se présenter sous un jour favorable à l’enquêteur. Le vote pour Trump a été comme le vote pour le Front National (historiquement), quelquechose d’inavouable. Le soucis, c’est qu’il est difficile d’estimer ce biais. En France, une correction était possible, en tenant compte de la différence entre les sondages, et les résultats sur des élections passées. Mais aux Etats-Unis, il n’y avait pas de précédant.

Et si on va plus loin, on peut se demander s’il est pertinent d’utiliser des enquêtes sur les intentions de votes comme outils de prévision électorale. Ne pourrait-on pas y voir pour les personnes interrogées, de “mini-élection”, avec moins d’impact? Ne peut-on pas imaginer l’électeur socialiste, qui se dirait “et si je disais que je vais voter pour Jean-Luc Mélanchon, ça permettra peut être de tirer un peu plus vers la gauche, même si le jour J je voterais probablement pour Benoît Hamon” (le fameux vote “utile”). Compte tenu de l’importance des sondages pour les journalistes politiques, ne peut-on imaginer que les personnes interrogées jouent un jeu un peu plus subtile que juste réponse à une question sur leurs intentions de vote ? C’est un biais bien connu en économie expérimentale, lorsque l’on cherche à connaître les préférences des agents, entre les préférences déclarées et celles qui sont révelées.

  • Les sondeurs sont ils (vraiment) si mauvais ?

Les erreurs sont souvent bien connues. On peut penser aux élections en Angleterre de juin 1970, lorsque Harold Wilson perdit face à Edward Heathà la surprise générale (la légende prétend qu’il avait même vendu sa maison, tellement il était certain de rester au 10 Downing Street). En France, le choc d’avril 2002 reste dans la mémoire collective. Comment les instituts de sondages n’avaient pas vu venir le second tour entre Jacques Chirac et Jean-Marie Le Pen? C’est le repproche qui avait été fait, à l’époque, où les sondeurs ont été tenu pour responsable. Etrangement, retrospectivement, le risque était présent. Mais personne n’ausait l’admettre. Plus récement, en juin 2016, c’était le choc du Brexit, et en décembre 2016, c’était l’élection de Donald Trump. Si beaucoup on critiqué les sondages suite à son élection, il convient de relire certains articles publiés à cette époque. Par exemple, mi-octobre, “pourquoi des sondages donnent encore Trump gagnant ?“, parmi tant d’autres (oui, nous avons une mémoire très sélective).

Ce qui semble être reproché aux instituts de sondages, c’est leur opacité, et leur manipulation des chiffres. Mais il faut leur donner raison. Comme le dit la loi, “les listes électorales peuvent être consultées par tout électeur (même inscrit sur une autre commune) à condition de ne pas les utiliser à des fins commerciales“. Autrement dit, les instituts de sondages ne peuvent pas les utiliser pour constituer un plan de sondage. Ne pouvant faire de vrai sondage aléatoire, il faut donc ruser, et on va échantillonner par quotas. C’est ce qu’on appelle du redressement. Pour faire simple, on applique des poids pour se rapprocher de la “population de base”. Qu’on ne connait pas. Idéalement, on aimerait bien connaître ces gens inscrits sur les listes. Mieux encore, connaître ceux qui iront effectivement voter (car ce sont vraiment ces personnes qui nous intéressent). Si aucun homme ne va voter, le jour J, il conviendrait de faire un échantillon de sondage avec uniquement des femmes. Encore une fois, comprendre l’abstention est essentiel.

Pour faire les quotas, on utilise des données géographiques, mais aussi d’âge, de genre, et de catégorie soci-professionnelle. En fait, cette dernière est (malheuresement) seulement une catégorie profesionnelle. On pensera à cette merveilleuse catégorie des “inactifs” qui correspond à des réalités très différentes. On utilise très peu les données de niveau d’étude par exemple, comme le rappelle Avner dans les sondages sont-ils devenus fous, les personnes faiblement diplômées sont faiblement présentes dans les sondages,

Il devient nécessaire de faire des redressements. Mais ces derniers n’ont de sens que s’il bien faits. Certains préconisent d’ailleurs des catégories “socio-affinitaires“, et non plus socio-professionnelles.

  • On veut des chiffres !

Allez, quelques chiffres, que j’ai découvert dans l’article les sondages sont-ils devenus fous d’Avner Bar-Hen, qui permettent d’avoir un ordre de grandeur intéressant. Pour faire une enquête, on peut avoir envie d’avoir 5000 personnes qui répondent à une liste de questions. Mais combien de personnes faut-il solliciter, par téléphone, pour avoir 5000 réponses. La réponse est simple, plus de 15 fois plus : pour avoir 5240 réponses, il a été nécessaire de composer 84000 coups de fils,

  • Des intensions de vote à une probabilité de gagner

Les sondages reposent sur la théorie de l’échantillonnsages, et il y a une part (importante) d’incertitude, comme on le voyait la dernière fois. Et comme le savent les statisticiens, il est possible de mal faire son travail, mais d’avoir de la chance, et de faire une bonne prévision, mais aussi de faire son travail correctement, et de se tromper lourdement.

Ce qui m’a intéressé lors des dernières élections américaines, c’est qu’on ne regarde pas le nombre de voix (prédit), mais la probabilité de gagner, pour tel ou telle candidat. Ce qui a du sens quand on pense au mode de scrutin. Mais traduit dans un contexte plus français (où on se place entre les deux tours), la probabilité de gagner est une information sur l’incertitude du sondage.

> simu=function(i){
+ n=1+2000
+ vote=sample(c("A","B"),size=n,
+ replace=TRUE,prob=c(.515,.485))
+ france1=mean(vote=="A")
+ n=1+200
+ vote=sample(c("A","B"),size=n,
+ replace=TRUE,prob=c(.515,.485))
+ france2=mean(vote=="A")
+ prop=c(france1,france2)
+ names(prop)=c("FR1","FR2")
+ return(prop)
+ }
> Sbi=Vectorize(simu)(1:1e4)
> plot(density(Sbi[1,]))

Ici, le candidat rouge a 15% de chances de gagner, contre 85% pour le candidat bleu. Avec 2000 personnes interrogées. Mais si on a seulement 200 personnes interrogées, on passe à 40% de chances de gagner pour A.

> plot(density(Sbi[2,]))

Autrement dit, la probabilité de gagner est, à mon sens, essentiellement une information liée à l’incertitude qui entoure le scrutin.

  • Quid du… “big data” ?

Allez, mettons enfin les pieds dans le plat… pourquoi pas utiliser “le big data”? Oui, le “big data” peut tout, je pense qu’il peut même assurer le retour de l’être aimé, alors il doit bien pouvoir prédire qui va gagner une élection…

Il y a 15 ans, internet n’était pas considéré comme un média. Personne n’osait trop faire des sondages en ligne*. Cette époque est révolue*. Au point que bon nombre se sentent aujourd’hui observés, et adoptent des stratégies, des comportements, qu’il convient de décoder en prenant des précautions.

L’écoute de la toile permet d’éviter l’écueil du déclaratif, pour observer, et induire des tendances, des comportements. Il serait intéressant de voir ce qu’en pensent les data scientists de chez Facebook par exemple. Comme le notait Stéphane Rozès, “si la France est une grande consommatrice de sondages, l’idée même qu’un statisticien puisse annoncer en amont le résultat de l’élection est baroque et attentatoire à l’imaginaire politique français.C’était en 2013. Depuis, comme le montre the pulse of the people, l’analyse des tweets (par exemple) permet d’observer beaucoup de choses. La difficulté est que si une équipe électorale sait ce qui est observé, il est aisé de créer des robots pour manipuler l’analyse. Le jeu du chat et de la souris peut commencer.

Mais il n’en reste pas moins que l’analyse des traces laisses sur la toile est importante, et les instituts de sondages le savent. Un “like” est une information intéressante, de même que savoir les pages vues, et les liens partagés. Cela dit, si on pousse un peu le raisonnement, comme le faisait Andrew Gelman dans un article paru au début du mois dans Science, si on était capable de prédire parfaitement le résultat d’une élection, cette dernière devient superflue, non ?

* ce qui est intéressant, c’est que dans le cas du Brexit, ce sont justement les sondages en ligne qui avaient “prévu” la victoire du leave, contrairement aux sondages téléphoniques qui donnaient le remain en tête….

Les sondages et le bruit

Après les sondages pour les présidentielles américaines l’été passé, on commence à crouler sous les sondages, en France, pour la prochaine élection présentielle. Avec les questions que ça induit. Et loin de moi l’idée de faire un billet sur les sondeurs sont des gros nuls, parce que c’est quand même plus compliqué que ça. Et il est normal de faire des erreurs, comme le rappelait  Ranganathan (2014). Et comme on m’a convié dans deux semaines à une table ronde sur les sondages, je me suis dit qu’il serait temps que je travaille un peu.

Même si ça semble être des banalités, les élections américaines et les élections en France sont très différentes.

Premier point, les 538 grands électeurs, contre un vote direct en France. Quand on estime la probabilité de gagner on obtient des choses très différentes.

On peut faire des simulations pour s’en rendre compte

simu=function(i){
n=1+2000
vote=sample(c("A","B"),size=n,replace=TRUE,prob=c(.51,.49))
region=sample(1:50,size=n,replace=TRUE)
france=mean(vote=="A")
us=aggregate(vote,by=list(region),function(x) mean(x=="A"))$x
prop=c(france,mean(us>1/2))
names(prop)=c("FR","US")
return(prop)
}
S=Vectorize(simu)(1:1e4)
plot(density(S[1,]))

En France, en interrogeant 2000 personnes, on a une très faible incertitude sur probabilités réelles, et dans 82% des scénarios, le candidats qui a 51% d’intention de vote est déclaré vainqueur.

> mean(S[1,]<.5)
[1] 0.1841

Aux Etats-Unis (ou disons une simulation d’une élection avec un collège électoral, avec ici 50 grands électeurs), c’est une autre histoire.

plot(density(S[2,]))

Dans un tiers des cas, on se trompe sur le vainqueur.

> mean(S[2,]<.5)
[1] 0.3319

Et la distribution de la couleur des grands électeurs peut être très volatile… allant de 30% à 70% pour A, alors la moitié du peuple a voté pour lui.

Deviner qui va gagner est un exercice manifestement compliqué aux Etats-Unis, à cause de ces grands électeurs. Et je ne parle pas du fait qu’estimer une probabilité très finement ne présage en rien du résultat final, comme  je l’avais dit dans un précédant billet.

Deuxième point, le nombre de candidats dans la course. Un simplifiant un peu, ils sont deux aux Etats-Unis, avec (quasiment) un vote en un tour, alors qu’en France, ils sont plus nombreux, avec un vote en deux tours, et une règle qui dit que seuls les deux premiers accèdent au second tour.

Commençons par le cas simple, avec quatre candidats, et une élection à un tour (à la majorité)

simu=function(i){
n=1+2000
vote=sample(c("A","B","C","D"),size=n,replace=TRUE,prob=c(.27,.26,.24,.23))
tb=table(vote)
return(names(which.max(tb)))
}
S=Vectorize(simu)(1:1e4)
barplot(table(S))

Pour passer au second tour, on imagine qu’il faut comprendre comment se passe le report des voix. On va supposer qu’il existe une espèce d’ordre, entre les candidats, A, B, C et D. Si son candidat ne passe pas le prochain tour, on vote pour un voisin. Autrement dit, A ne votera jamais pour C, ni pour D.  Mais si B est candidat, il votera pour lui. Par contre, si B a le choix entre A et C, on va supposer que l’électorat se partage en deux, entre A et C. Par contre, il ne votera jamais pour D.

simu=function(i){
n=1+2000
probabilite=c(.27,.26,.24,.23)
vote=sample(c("A","B","C","D"),size=n,replace=TRUE,prob=probabilite)
tb=table(vote)+rnorm(4)/1000
perdants=LETTERS[1:4][(rank(tb)%in%1:2)]
if(("A"%in%perdants)&("B"%in%perdants)) prob2=c(0,0,probabilite[2]+probabilite[3],probabilite[4])
if(("A"%in%perdants)&("C"%in%perdants)) prob2=c(0,probabilite[2]+probabilite[1]+probabilite[3]/2,0,probabilite[4]+probabilite[3]/2)
if(("A"%in%perdants)&("D"%in%perdants)) prob2=c(0,probabilite[2]+probabilite[1],probabilite[4]+probabilite[3],0)
if(("B"%in%perdants)&("C"%in%perdants)) prob2=c(probabilite[2]+probabilite[1],0,0,probabilite[4]+probabilite[3])
if(("B"%in%perdants)&("D"%in%perdants)) prob2=c(probabilite[1]+probabilite[2]/2,0,probabilite[3]+probabilite[2]/2+probabilite[4],0)
if(("C"%in%perdants)&("D"%in%perdants)) prob2=c(probabilite[1],probabilite[2]+probabilite[3],0,0)
vote=sample(c("A","B","C","D"),size=n,replace=TRUE,prob=prob2)
tb=table(vote)
return(LETTERS[which.max(tb)])
}
S=Vectorize(simu)(1:1e4)
barplot(table(S))

Le résultat est vraiment différent. Et la clé est le report des voix, entre les deux tours. Aussi, deviner qui va gagner est un exercice manifestement compliqué en France, à cause de ces deux tours.

Au delà des systèmes de votes, il existe quand même des similitudes, quand on parle d’incertitude dans les sondages. Classiquement, on pense au biais d’estimation. Parce qu’il correspond à ce que toute personne ayant fait un peu de statistiques (ce qui représentera bientôt la majorité des français, si j’en crois les réformes du programme du lycée) doit savoir (je n’ai pas dit compris). C’est le fameux « le sondage IFOP publié jeudi dans France-Soir a, quant à lui, été mené auprès de 1 046 personnes, soit une marge d’erreur d’environ 2,5 % » . Il s’agit de la marge d’erreur.

Mais ce n’est pas la seule source d’erreur, loin de là ! La base des sondages, c’est d’avoir un échantillon aléatoire de votants (au sens de personnes qui iront voter), et d’extrapoler ensuite sur la population entière, éventuellement en pondérant les réponses. Les poids sont là pour corriger de différences observables entre la population entière, et la population interrogée. Classiquement, on va utiliser des variables démographiques (âge, genre, profession, région, etc) dans la population des électeurs. Par exemple, si sur les listes électorales on a 50% d’hommes et 50% de femmes, mais que dans notre échantillon, il y a deux fois plus d’hommes que de femmes, on va généralement attribuer un poids de 2 pour les femmes, et de 1 pour les hommes afin de corriger. Malgré tout, on peut observer une différence entre les votes estimés, et la réalité le jour du vote. Une des raisons est que la population des votants peut être différente de celle des populations inscrites sur listes électorales. Si les hommes s’abstiennent beaucoup plus que les femmes, la correction utilisée ne suffira pas. C’est ce qu’on pourrait appeler une erreur de framing. Cette dernière correspond à l’erreur que l’on fait quand la population réelle et la population de l’échantillon diffère. L’exemple classique était lié à l’utilisation du téléphone pour constituer des listes de sondés. Avec cette méthode, les personnes sans téléphone (ou sur liste rouge) étaient systématiquement exclues.

Le second problème est le traitement des non-réponses. Si la non-réponse est un phénomène purement aléatoire, imprévisible, dans ce cas, ça va juste augmenter la variance. C’est ce qu’on observe sur l’exemple ci-dessous. Si tout le monde répond, on a

simu=function(i){
n=2000
vote=sample(c("A","B"),size=n,replace=TRUE,prob=c(.51,.49))
return(mean(vote=="A"))
}
S=Vectorize(simu)(1:1e4)

Supposons maintenant que 50% des gens ne répondent pas

simu=function(i){
n=2000
vote=sample(c("A","B",NA),size=n,replace=TRUE,prob=c(.51/2,.49/2,.5))
return(mean(vote[!is.na(vote)]=="A"))
}
S=Vectorize(simu)(1:1e4)

On a davantage de dispersion, mais on n’a pas de biais. Autrement dit, le nombre de cas où A est effectivement en tête sur le sondage est du même ordre de grandeur, avec ou sans non-réponse.

Par contre, si les électeurs de A ont davantage tendance à ne pas répondre, c’est une toute autre histoire

simu=function(i){
n=2000
vote=sample(c("A",NA,"B",NA),size=n,replace=TRUE,prob=c(.51*.8,.51*.2,.49*.9,.49*.1))
return(mean(vote[!is.na(vote)]=="A"))
}
S=Vectorize(simu)(1:1e4)

Autrement dit, si la non-réponse est liée au vote, on a un biais causé par la non-réponse. C’est le cas lorsque les personnes votant pour un des candidats n’osent pas révéler. C’est ce que montre très bien Fuchs, Bossert & Stukowski (2013).

Un autre exemple connu en sondage est lié à l’ordre des questions, comme le soulignait McFarland (1981), ou même les mots utilisés, pour reprendre Smith (1987). On peut rapprocher ce biais au biais dit de spécification, lorsqu’il y a une mauvaise compréhension de la question.

Enfin (et je m’arrêterais là), il reste un biais important, qui est un biais d’indécision, pour personnes indécises ou qui pourraient juste changer d’avis entre deux dates.

Compte tenu de tous ces biais, on voit qu’il est compliqué d’estimer l’erreur associée à un sondage. En tous cas, on se doute que le fameux « Le sondage IFOP publié jeudi dans France-Soir a, quant à lui, été mené auprès de 1 046 personnes, soit une marge d’erreur d’environ 2,5 % » implique une (forte) sous-estimation de l’incertitude. En fait, si on en croit Shirani-Mehr et al. (2016), la marge d’erreur pourrait être deux fois supérieure, avec un RMSE de ±7% sur l’intervalle de confiance et non pas ±3%. J’aurais donc tendance à croire que les sondages rajoutent essentiellement une information très bruitée dans le climat pré-élections.