Depuis quelques années, on voit apparaître un peu partout des simulateurs de résultats électoraux qui utilisent les sondages afin de prévoir correctement les résultats des élections (aux États-Unis, voir Five Thirty Eight ou The Upshot, au Canada Three Hundred Eight, Too Close to Call et Qc125). Les geeks de politique ont maintenant une variété de sources où ils peuvent s’abreuver de chiffres pour spéculer de manière un peu plus informée sur ce qui risque d’arriver lors des élections. Le problème demeure cependant qu’il subsiste beaucoup d’incompréhension sur l’information qu’ils fournissent, notamment parce que ces projections sont exprimées en probabilités avec lesquelles beaucoup de gens sont peu familiers.

Cependant, avant les projections de sièges, c’est d’abord les sondages eux-mêmes que beaucoup saisissent mal. Le problème ici est qu’il faut faire quelques contorsions mentales pour bien comprendre ce qui se produit réellement lorsque l’on fait un sondage. Ces contorsions deviennent un peu plus intuitives quand on a l’occasion de les saisir concrètement. Dans ce billet, je voudrais expliquer les sondages de la manière la plus concrète possible en vous montrant comment les statistiques fonctionnent réellement dans la pratique. Nous ferons un petit tour «sous le capot» des sondages et j’espère que le billet pourra vous servir de référence pour la campagne électorale québécoise qui s’annonce.

Je vais tenir pour acquis que tout le monde comprend que faire un sondage est à peu près équivalent à prendre une cuillerée de soupe pour voir ce que goûte l’ensemble du chaudron. On prend un échantillon, que l’on veut représentatif de l’ensemble qui nous intéresse, afin d’inférer (généraliser) à partir de l’échantillon quelque chose à propos de l’ensemble (la population). Je tiens aussi pour acquis que tout le monde a une compréhension à peu près correcte de la nécessité d’avoir un échantillon représentatif pour que les résultats d’un sondage soient adéquats. Ne pas bien brasser mon chaudron avant de prendre une cuiller laissera tous les solides au fond et me donnera l’impression que ma soupe n’a que du bouillon. J’exagère un peu, mais tout le monde saisi bien le principe.

Ce que la plupart des gens saisissent moins bien est que l’incertitude associée aux techniques d’échantillonnage est cruciale. On parle ici et là des marges d’erreur pour éviter de se faire taper sur les doigts par des fatigants dans mon genre, mais c’est à peu près tout. Une compréhension plus intuitive de l’incertitude associée aux sondages devrait vous aider à mieux interpréter les chiffres. Mais plutôt que de vous parler de manière théorique de l’incertitude, je vais vous montrer concrètement comment au juste elle se manifeste.

La question de l’incertitude

Ce qui est difficile avec les sondages dans la réalité, c’est que nous cherchons à savoir quelque chose que nous ne savons pas déjà à propos d’une population. Cependant, pour vous démontrer comment l’échantillonnage fonctionne, il est très utile d’avoir sous la main une population que nous connaissons déjà afin de voir ce que donnent des échantillons de cette population. Ce serait aussi très pratique si nous pouvions prendre autant d’échantillons que l’on veut sans que ça nous coûte quoi que ce soit. C’est ce que je vais faire ici. Nous allons créer une population (fictive bien entendu) de 5 millions d’électeurs. Puisque c’est nous qui créons cette population, nous pouvons décider d’avance de quoi elle aura l’air. Ensuite, nous prendrons des échantillons de cette population pour voir ce que nous obtenons, et nous pourrons comparer ce que nous obtenons avec ce que nous savons de la population que nous avons créé. Rassurez-vous, aucun électeur ne se fera torturer dans les lignes qui suivent!

Afin de bien illustrer comment les variations d’un sondage à l’autre peuvent influencer notre perception de la précision des sondages, nous ferons aussi deux scénarios. Un scénario ressemblera au Québec de l’élection de 2003 et l’autre correspondra à celui de l’élection provinciale de 2012. J’espère au passage vous démontrer pourquoi (en partie) le contexte d’une élection peut parfois nous donner faussement l’impression que les sondages sont mauvais, alors qu’ils sont tout aussi bons que lors de campagnes précédentes.

Je vais utiliser le logiciel R, qui est un logiciel gratuit et très puissant d’analyse statistique. Je vais laisser le «code» visible (lorsqu’il n’est pas trop compliqué) de sorte que les geeks intéressés puissent en apprendre quelque chose en reproduisant les analyses. Vous verrez aussi les résultats produits par le logiciel. Si le code ne vous intéresse pas, sautez simplement par dessus les blocs.

Scénario 1 : L’élection de 2003

Créons d’abord une population de 5 millions d’électeurs qui correspond électoralement à celle de l’élection québécoise de 2003. Les résultats finaux de l’élection de 2003 ont été de 46% pour le PLQ, 33% pour le PQ, 18% pour l’ADQ et environ 3% pour les autres partis.

# Pour réplication (R génère des chiffres aléatoires et pour
# qu'il le fasse de manière constante d'une fois à l'autre, on
# peut lui dire de le faire d'une certaine manière.)
set.seed(987654321)

# Créons les données de la population entière de 6M d'électeurs.
population.2003 <- sample(c("PLQ", "PQ", "ADQ", "Autres"),
  size=5000000, rep=TRUE, prob=c(.46,.33,.18,0.03))

Nous avons donc créé notre population de 5 millions d’électeurs avec les paramètres que nous souhaitions. Essentiellement, vous pouvez visualiser que nous avons créé quelque chose qui ressemble à un chiffrier Excel qui contient 5 millions de lignes et une seule colonne. Dans chacune des 5 millions de cellules, il y a l’une des 4 options électorales possibles (PLQ, PQ, ADQ, Autres), et les proportions de cellules qui sont attribuées à chaque parti correspondent aux pourcentages que nous avons définis.

Nous pouvons vérifier que les chiffres de notre population sont bien ceux que nous voulons. Regardons d’abord le nombre d’électeurs de chaque parti.

table(population.2003)
## population.2003
##     ADQ  Autres     PLQ      PQ 
##  899840  149496 2299680 1650984

Nous avons 899840 électeurs adéquistes, 2299680 électeurs libéraux et 1650984 électeurs péquistes. Assurons-nous maintenant que les proportions sont bien les bonnes.

prop.table(table(population.2003))*100
## population.2003
##      ADQ   Autres      PLQ       PQ 
## 17.99680  2.98992 45.99360 33.01968

Les chiffres de notre population de 5 millions d’électeurs correspondent bien à ce que nous voulons. Ces pourcentages correspondent à ceux de notre population entière, comme si nous avions fait un rescencement (i.e. questionné tout le monde).

Imaginons maintenant que nous fassions un sondage de cette population. Comme c’est généralement le cas au Québec (et ailleurs), nous ferons un sondage de 1000 électeurs. Ici, notre sondage est parfaitement aléatoire puisque nous sommes dans R (chaque ligne a la même probabilité d’être sélectionnée, toutes les lignes qu’on sélectionne sont heureuses de répondre à nos questions, nos sondés ne sont pas chialeux et aucun ne nous raccroche la ligne au nez). Donc, sélectionnons aléatoirement 1000 lignes de notre fichier Excel, et regardons ce que nous obtenons.

# Faisons un premier sondage aléatoire de cette population 
# avec un échantillon de 1000 personnes.
sondage.1 <- sample(population.2003, 1000)
prop.table(table(sondage.1))*100
## sondage.1
##    ADQ Autres    PLQ     PQ 
##   17.7    3.6   44.9   33.8

Nous voyons donc que ce sondage nous informe que 17.7% des gens nous ont dit vouloir voter pour l’ADQ, que 44.9% nous ont dit vouloir voter pour le PLQ, et que 33.8% ont dit vouloir voter pour le PQ. Ces chiffres sont globalement proches des vraies valeurs de la population, mais il y a quand même une différence de -0.2968% pour l’ADQ; de -1.0936% pour le PLQ, et de 0.78032% pour le PQ.

Faisons un deuxième sondage.

sondage.2 <- sample(population.2003, 1000, replace=FALSE)
prop.table(table(sondage.2))*100
## sondage.2
##    ADQ Autres    PLQ     PQ 
##   18.4    2.9   46.9   31.8

Ces chiffres sont encore une fois globalement près des vraies valeurs, mais il y a encore une différence de 0.4032% pour l’ADQ; de 0.9064% pour le PLQ, et de -1.21968% pour le PQ.

Remarquons aussi que par rapport au premier sondage, l’ADQ a 0.7% de différence, le PLQ a 2% de différence, et le PQ -2% de différence.

Imaginons que ces deux sondages étaient menés en campagne électorale à une semaine d’intervalle, quelle analyse pensez-vous qu’on entendrait un peu partout? Imaginez (pire encore!) que le débat des chefs ait eu lieu entre ces deux sondages. «Le PLQ est en montée et le PQ en baisse. Charest a gagné le débat!» diraient les analystes. Pourtant, la population de 5 millions d’électeurs a exactement les mêmes préférences lors les deux sondages.

Faisons pour le plaisir un troisième sondage, ça ne coûte pas cher.

sondage.3 <- sample(population.2003, 1000, replace=FALSE)
prop.table(table(sondage.3))*100
## sondage.3
##    ADQ Autres    PLQ     PQ 
##   16.5    2.8   48.2   32.5

Ici, il y a encore des différences par rapport aux vrais chiffres dans la population, de -1.4968% pour l’ADQ; de 2.2064% pour le PLQ, et de -0.51968% pour le PQ. Par rapport au deuxième sondage, l’ADQ bouge de -1.9% (oh oh! elle est en chute libre!), le PLQ de 1.3%, et le PQ de 0.7%. Encore une fois, ce «mouvement» ne veut strictement rien dire puisque notre population a exactement les mêmes préférences lors de tous les sondages.

Nous pourrions continuer à prendre des échantillons aléatoires comme nous le faisons, mais remarquez seulement une chose : ici, notre population ne change pas et pourtant les chiffres de nos sondages varient d’un sondage à l’autre. Parfois ils varient de quelques décimales et d’autres fois de plusieurs points de pourcentages. Cette variation est parfaitement normale. Elle est simplement liée au fait qu’il y a des millions d’échantillons de 1000 personnes qu’il est possible de tirer de cette population de 5 millions et qu’aucun échantillon ne sera exactement pareil à un autre. Il y aura forcément de la variation d’un sondage à l’autre sans pour autant que cette variation ne veuille dire quoi que ce soit. Encore une fois : même dans R où tout est parfaitement aléatoire, on voit bien que cette variation n’implique absolument pas que notre population ait changé d’aucune manière que ce soit. On le voit bien, puisque nos sondages varient alors que notre population ne varie pas.

C’est bien mignon de faire un sondage à la fois, mais ici nous sommes dans le paradis de R. Profitons-en pour faire l’impossible et faisons, en quelques secondes, 100 sondages de 1000 électeurs. Nous pourrons ensuite regarder ce que ces 100 sondages de la même population avec les mêmes intentions de vote nous disent.

sondages.2003 <- replicate(100, sample(population.2003, 1000, replace=FALSE))

Nous venons de faire 100 sondages de 1000 électeurs de la même population avec exactement les mêmes intentions de vote en quelques secondes. Personne n’a chialé, personne ne nous a raccroché la ligne au nez, personne n’a dit «j’ai pas le temps, mon petit monstre est en train de faire un Van Gogh sur le mur du salon». C’est beau R.

Imaginons maintenant que la campagne électorale dure 100 jours et que nos 100 sondages aient été faits au rythme d’un sondage par jour. Comment aurions-nous «vécu» cette campagne électorale? La figure suivante est animée et montre l’évolution de nos 100 sondages durant ces 100 jours. Elle témoigne de l’information que nous aurions eue à notre disposition (le passé et le présent) lors de chaque journée de la campagne.