Quoi, 18° un 15 février ? WTH ?! Et puis quoi, de la neige en avril ?

En avril 2016 un épisode neigeux avait déclenché une foule de messages étonnés sur les réseaux sociaux, certains mettant en doute le réchauffement climatique. L’épisode des températures printanières autour de ce 15 février 2019 a lui aussi engendré pas mal de réactions surprises, certains attribuant cela au même réchauffement global.

Qu’en est-il réellement ? Ces deux épisodes sont-ils si extraordinaires que cela ? Extraordinaire, la température de 18.1 degrés mesurée à Uccle l’est puisqu’elle n’avait jamais été enregistrée depuis 1881 pour un 15 février. Néanmoins, avant de répondre à la question du caractère extraordinaire de ces événements météorologiques, il faut préalablement définir ce que l’on entend par extraordinaire. Certes “l’extraordinaire” n’est pas l’ordinaire mais il y a une différence entre ce qui sort simplement de l’ordinaire (comme le fait de briser une habitude exceptionnellement, pour un anniversaire par exemple) et ce qui semblait inimaginable avant que cela n’arrive, au sens du “Cygne noir” de N.N. Taleb (comme par exemple le “Voyage dans la Lune”  avant l’épisode d’Apollo 11). Essayons donc de distinguer dans lequel des deux cas nous nous trouvons pour les deux records météorologiques concernés.

En fouillant une bonne dizaine de minutes sur le Net j’ai trouvé une base de données libre de droit reprenant des mesures météorologiques pour différentes stations mondiales, donc y compris belges : NCDC Climate Data Online. J’ai choisi de télécharger les données concernant la station de Bruxelles National car c’est celle qui me semble le plus proche d’Uccle dans les stations répertoriées et pour laquelle il y avait le plus de mesures disponibles de 1940 à maintenant. Voyons sur base de ces données ce qu’il en est, historiquement, autour du 15 février.

Un premier graphique appelé boxplot ou boîte à moustache va nous permettre de visualiser directement l’ensemble des températures maximales enregistrées pour le mois de février :

Boxplot des températures de février.

Pour rappel, dans une boîte à moustache, 25 % des données sont comprises entre le point A et le point B, de même 25 % des données sont comprises entre le point B et le point C, etc. Bien entendu 50 % des données se situent entre le point B et le point D, et enfin les minimum et maximum devant normalement être respectivement aux points A et E1 . On constate donc qu’en février, 25% des températures maximales sont supérieures à 10 degrés avec un maximum à 18.39 degrés. Ce qui relativise déjà un peu le caractère extraordinaire du record de 18.1 degrés de ce 15 février 2019.

Pour les lecteur.e.s qui seraient allergiques aux boxplots, les même données peuvent être représentées par un histogramme comme ci-dessous :

Sur l’axe des abscisses (les x) j’ai fait figurer par de petits traits les mesures à titre indicatif. Malheureusement dans cette dernière représentation des données certains traits se recouvrent, diminuant ainsi l’impression visuelle de leur multiplicité. Une autre façon de représenter les mesures (en plus de l’histogramme) est alors de les dessiner dans un rectangle en plaçant les mesures selon l’axe des abscisses mais en les distribuant aléatoirement selon l’axe des ordonnées (l’axe des y) comme ci-dessous :

On perçoit mieux dans ce dernier graphique que les températures “printanières” (que j’ai choisies arbitrairement à 14 degrés et plus) ne représentent qu’une faible part des températures enregistrées (3% des cas), mais qu’elles ne sont pas non plus inexistantes. Ce qui, “statistiquement”, est égal à la probabilité d’obtenir 2 faces au plus en lançant une pièce 11 fois. C’est donc un événement relativement rare mais pas du tout impossible.

Oui, mais quid du 15 février plus spécifiquement ? En effet on peut toujours arguer que le mois de février contient des “28 février” (et plus rarement des 29) qui sont plus proches du mois de mars et de son début de printemps que le 15 :

Dans ce cas on constate que 25% des températures sont supérieures à seulement 8.28 degrés. Mais avec un maximum absolu de 17.778 degrés. Ce qui, même en étant plus faible que le record de 2019, relativise à nouveau celui-ci. Notez encore que si une température de 18.1 degrés n’avait encore jamais été enregistrée à Uccle depuis 1881, cela ne signifie pas que l’événement ne s’est jamais produit, simplement qu’il n’a pas été observé depuis que des observations sont enregistrées à cet endroit. C’est un tantinet différent.

Maintenant que nous avons considéré le cas des températures printanières au mois de février revenons à l’épisode de 2016 et sa neige en avril. Dans ce cas-ci j’ai utilisé dans les données une valeur qui signifie quand il y avait eu chute de neige un jour mais sans tenir compte ici des quantités tombées :

Comme dans le cas précédent on constate au vu du graphique que même si c’est un événement rare, à nouveau il n’est pas impossible puisqu’il s’est déjà produit dans 4% des cas (à savoir les “jours d’avril”). Le grand Prince ne s’y était pas trompé puisqu’il a composé un titre qui s’intitule “Sometimes It Snow In April” :

En conclusion, si les températures observées en Belgique autour du 15 février 2019 sont bien extraordinaires, elles le sont au sens d’inhabituelles et non au sens d’inimaginables. Et il faut bien se garder des impressions intuitives que nous avons à partir d’un événement météorologique localisé dans le temps et dans l’espace, il serait en effet complètement imprudent de tirer des conclusions globales et à l’échelle du siècle, sur base uniquement de ce que nous vivons à un instant donné à un endroit précis sans comparer statistiquement ce qui s’est déjà produit précédemment au même endroit aux mêmes moments de l’année.

Sur ce je vous laisse je vais profiter des derniers rayons de ce magnifique soleil de février.

1. Dans le graphiques en illustration, les points situés en F sont ce que l’on appelle des valeurs aberrantes ou outliers en anglais (retour).

Python va-t-il tuer R ?

Le présent

Le dernier sondage en date du site KDnuggets semble annoncer une domination future du langage Python sur le langage R dans le “petit monde”  des data sciences et du machine learning. En 2016 R pouvait encore toiser Python puisque 42% des sondés déclaraient utiliser l’implémentation open source du langage S contre 34% pour le langage au nom inspiré par les inénarrables Monty Pyhton ( 8.5% annonçant utiliser les deux) . En 2017 la tendance s’inverse : 36% pour R et 41% pour Python (et 12% pour les deux) : 

Graphique de l'évolution des parts de marché de R et Python en 2016 et 2017.

Source : KDnuggets

La tendance haussière de Python n’est pas nouvelle puisque la part d’utilisateurs de ce langage augmente de façon quasi-constante depuis 2014, en ayant par ailleurs doublé son nombre de déclarants dans ces enquêtes depuis 2014 :

Graphique de l'évolution des parts de marché de R et Python de 2014 à 2017.

Source : KDnuggets

On pourrait contester ce résultats en se basant sur le fait qu’il ne s’agit que d’enquêtes en ligne avec un bon millier de répondants. Outre le fait que ce nombre de répondants est assez classique et statistiquement suffisant pour des résultats fiables, ces résultats ne contredisent pas des enquêtes plus larges : celles d’IEEE Spectrum ou de TIOBE .

Au vu de la forte progression de Python, on peut légitimement se poser la question du titre : Python va-t-il finalement (et rapidement?) tuer R ?

La transition

Ce qui me parait particulièrement intéressant dans l’article de KDnuggets c’est le schéma suivant :

Schéma de transition entre les langages R, Python, le deux et les autres en 2017.

Source : KDnuggets

Ce dernier permet de visualiser précisément quelles sont les proportions de répondants qui sont restés fidèles à leur(s) langage(s) ou qui ont migré d’une situation à l’autre. Cela m’a rappelé un article que j’avais particulièrement apprécié  : The eigenvector of “Why we moved from language X to language Y”. Dans cet article Erik Bernhardsson avait scrappé des données à  propos des requêtes Google du type from <language 1> to <language 2>, switch to <language 2> from <language 1>. Et il en avait fait une matrice de transition pour essayer de prédire le futur… Je me suis inspiré de cet article pour appliquer la même technique aux résultats 2017 de KDnuggets.

Les informations reprises dans la figure ci-dessus peuvent être traduites en la matrice de transition suivante :

P=\begin{matrix} \begin{matrix} Pyth & Both & R & Others\end{matrix} & \\ \left( \begin{matrix} 0.91 & 0.04 & 0.05 & 0.01\\0.38 & 0.49 & 0.11 & 0.01\\0.10 & 0.15 & 0.74 & 0.01\\0.19 & 0.04 & 0.17 & 0.60 \end{matrix}\right) & \begin{array}{l} Pyth \\ Both\\ R\\ Others\end{array} \end{matrix}

Cette matrice se lit assez facilement :

  • chaque ligne représente une situation (utilisateurs de Python, utilisateurs des deux langages, …),
  • chaque colonne représente une transition possible : de la situation X vers Python pour la première, de la situation X vers les deux langages pour la deuxième,…

Par exemple la première ligne est celle des utilisateurs (ou déclarés comme tels) de Python en 2016. Ceux-ci sont restés fidèles à ce langage dans 91% des cas, ont utilisé les deux en 2017 pour 4%, ont migré vers R dans 5% des cas et vers d’autres langages pour 1% d’entre eux.  Les autres lignes peuvent se lire de façon similaire. Comme de toute situation de départ en 2016 on doit arriver à une situation existante en 2017, la somme de chacune des lignes doit faire 1. Malheureusement ce n’est pas le cas pour les lignes 1 et 2 qui dont les sommes valent respectivement 1.01 et 0.99. Ne sachant d’où vient cette très probable erreur d’arrondi (même après avoir cherché les “données brutes” sur le site de KDnuggets) j’ai appliqué une correction générale à chacune des lignes en les divisant respectivement par leurs sommes ce qui donne donc la belle matrice de transition suivante :

P=\left( \begin{matrix} 0.9009901 & 0.03960396 & 0.04950495 & 0.00990099\\0.3838384 & 0.49494949 & 0.11111111 & 0.01010101\\0.1000000 & 0.15000000 & 0.74000000 & 0.01000000\\0.1900000 & 0.04000000 & 0.17000000 & 0.60000000 \end{matrix} \right)

 

Les pourcentages utilisateurs déclarés en 2016 peuvent aussi s’écrire sous cette forme :


\pi^{(2016)}=\begin{matrix}\left(\begin{matrix} 0.34\\0.08\\0.42\\0.16\end{matrix}\right) & \begin{array}{l}Pyth \\ Both\\ R\\ Others\end{array} \end{matrix}

C’est ce que l’on appelle un vecteur d’état : il donne la probabilité de chacun des états (ici un état étant “utilisateur de…”) . La somme des nombres d’un tel vecteur devant aussi faire 1 puisque tout sondé doit se retrouver dans un des états. C’est pour respecter cette contrainte d’unité de la somme que j’ai corrigé le 8.5% en 8% en supposant que c’est une erreur puisque la somme valait 1.05 (j’aurais aussi pu tout diviser par 1.05 comme ci-dessus).

De même la situation de 2017 peut s’écrire 

\pi^{(2017)}=\begin{matrix}\left(\begin{matrix} 0.41\\0.12\\0.36\\0.11\end{matrix}\right) & \begin{array}{l}Pyth \\ Both\\ R\\ Others\end{array} \end{matrix}

L’avantage, une fois que tout est écrit sous cette forme, c’est qu’en supposant que la matrice P est une matrice stochastique décrivant un processus de Markov on peut facilement calculer ce qui se passe d’année en année (sous la supposition forte que les probabilités de transitions ne changeront pas au cours du temps), ainsi on peut écrire que :

\pi^{(2017)}= P^{\tau} \cdot \pi^{(2016)}

Et effectivement si on effectue ce calcul on retrouve, aux arrondis prés, les valeurs pour 2017:

P^{\tau} \cdot \pi^{(2016)}=\left(\begin{matrix} 0.4093163\\0.1243145\\0.3624638\\0.1039054\end{matrix}\right)

Bien entendu on peut continuer le processus et estimer ce qui se passera en 2018 (toutes choses restants égales par ailleurs comme disent les économistes) : 

\pi^{(2018)}= P^{\tau} \cdot \pi^{(2017)}=\left(\begin{matrix}0.4724950\\0.1362657\\0.3199630\\0.0712762\end{matrix}\right)

Ce sera à vérifier dans un an mais il semblerait donc que Python continuera à violemment gagner du terrain alors que la position de R continuera à s’effriter, pendant que les utilisateurs des deux progresseront timidement.

Le futur?

Évidemment, à ce stade,  on a en généralement envie (les mathématisants en tous cas)  de continuer le processus pour voir si la situation finit par se stabiliser :

\pi^{(2018)}, \pi^{(2019)}, \pi^{(2020)}\cdots, \pi^{(20xx)} \longrightarrow v

C’est évidemment assez facile à calculer en utilisant un langage comme R (!) (ou Python pour être tout à fait honnête) mais, quand s’arrêter?  “Quand les chosent se stabilisent”  pourrait-on dire platement. Mais les mathématiciens et les probabilistes se sont bien entendu déjà penchés sur ce genre de question et la réponse est assez simple : il suffit d’utiliser le concept (très puissant mais mal aimé des étudiants) de vecteurs propres et de valeurs propres. Pour rappel un vecteur v est vecteur propre de valeur propre \lambda si et seulement si :

A \cdot v= \lambda \cdot v

Or il se fait que la définition d’un état stable est assez proche car un état est dit stable pour les processus de Markov quand l’application de la matrice de transition ne change plus rien c’est-à-dire quand :

P^{\tau}\cdot v = v

en d’autres termes, un état stable est un vecteur propre de valeur propre 1. 

Si on calcule ce vecteur v pour notre match Python vs R on obtient :

v=\begin{matrix}\left(\begin{matrix} 0.67257910\\0.11156674\\0.19159885\\0.02425531\end{matrix}\right) & \begin{array}{l}Pyth \\ Both\\ R\\ Others\end{array} \end{matrix}

Ce qui signifie que dans un horizon “relativement” proche(1), Python dominerait en raflant le 2/3 du marché alors que R se contenterait d’une niche de 20% et, surprise, les utilisateurs des deux langages resteraient assez limités à  11%.

Conclusion

Évidemment, comme dans la citation prêtée à Niels Bohr (mais aussi à d’autres) :

les prévisions sont difficiles surtout lorsqu’elles concernent l’avenir.

 

Il faut donc être prudent. Mais néanmoins le jeu  des prévisions est toujours excitant et il est difficile de ne pas s’y prêter.  

Même si la répartition future entre R et Python sera vraisemblablement, au moins sensiblement, différente de celle prédite ici, la répartition de parts de chacun des langages me paraît assez plausible. En effet, outre la progression fulgurante de Python ces dernières années, ce dernier me paraît avoir des avantages décisifs (et mon coeur d’aficionados de R saigne en l’écrivant) par rapport à R. Celui-ci est un langage de programmation dédié aux statistiques et autre analyses de données, et dans ce rôle il fait un boulot remarquable, notamment soutenu par un écosystème très dynamique avec une pléthore de packages , dont certains très spécialisés. Et c’est, selon moi, une de ses forces car on peut y trouver des packages qui contiennent l’implémentation de méthodes issues directement de travaux de recherche récents. On peut donc, en tant que chercheur, y tester très rapidement de nouvelles idées. Par contre, il n’est pas  spécialement adéquat pour être utilisé “en production” pour des projets industriels avec des données massives (même si c’est possible). 

L’avantage premier de Python est que c’est un langage de programmation généraliste pour lequel on est occupé à créer des environnements/librairies dédiées aux calcul scientifique et aux data science :

Ecosystème Python pour le Machine Learning

Source: http://python.astrotech.io/machine-learning/wprowadzenie-do-machine-learning.html

Ce qui signifie que ce langage, doté de ces boîtes à outils, permet non seulement d’effectuer des analyses de données mais permet aussi de développer de véritables applications. Avantage non négligeable dans un environnement business. Et, cerise sur le gâteau, ce langage permet de développer des applications web, “d’entreprise” (sur ordinateur) et embarquées comme l’illustre ci-dessous la copie d’écran du tableau de la page d’IEEE Spectrum

 The Top Programming Languages 2018

Source : IEEE Spectrum

Même si actuellement Python n’est pas aussi riche en librairies que R et que ce dernier se débrouille nettement mieux en termes de visualisations (mais les choses changeront sans doute dans le futur), il me parait assez inéluctable que ce dernier se voie finalement retranché dans la seule niche scientifique, pour laquelle il a été a priori créé. Il vivrait ainsi un destin un peu similaire au langage Pascal, créé pour l’enseignement et qui, au vu du nombre d’étudiants ayant appris à coder avec lui se retrouvant sur le marché du travail, a vu une carrière “commerciale” s’ouvrir à lui avant que celle-ci  ne finisse par se refermer, entre autres pour des raisons techniques (comme l’absence initiale de chaînes de caractères à zéro terminal), et qu’il ne se retrouve confiné dans sa niche éducative (même si on le retrouve encore à la 17ème place du classement TIOBE).  En espérant pour R que cette niche scientifique ne soit pas elle-même réduite à peau de chagrin. La bonne nouvelle, a priori, c’est que l’on peut espérer répondre non à la question initiale.

Signé : un utilisateuR heuReux  que son langage pRéféRé se soit pas déjà condamné à une moRt rapide, même si il a déjà un peu commencé à pRogrammer en Python, on n’est jamais tRop pRudent ;).

 

(1) Un horizon de 9 à 11 ans toutes choses restant égales par ailleurs. J’ai essayé d’évaluer ce laps de temps en regardant après combien de temps |\pi^{(20xx)} - v| était en moyenne plus petit que 1% ou que le maximum de ces différences soit plus petit que 1%. Bien entendu si les proportions de migrations changent, il en sera de même de cet horizon temporel (retour au texte).

On vote, et puis après?

À l’occasion des élections communales de 14 octobre 2018 il n’est pas inintéressant de se pencher sur l’immédiat après élection, à savoir la répartition des sièges. 

Les deux systèmes utilisés en Belgique, la règle d’Hondt et la règle Imperiali,  sont assez proches pour pouvoir être expliquées ensemble,  la première étant utilisée pour les élections fédérales, régionales et provinciales et la seconde pour les élections communales.

On trouve une explication assez claire de ces deux règles sur le site electionslocales.wallonie.be. Nous nous en inspirons à partir de notre propre exemple. Les données sont évidemment complètement fictives.

Supposons que trois partis se présentent à une élection pour laquelle huit sièges sont disponibles. Et supposons toujours que ces trois partis A, B et C récoltent respectivement 600, 400 et 200 voix.  Ces nombres pourraient être différents mais ce qui compte ce sont les proportions entre les résultats.

Règle d’Hondt

Dans cette règle, on commence le processus d’attribution des sièges sur bases des résultats électoraux de chaque liste. On divise ensuite successivement chacun des résultats électoraux par 1, par 2, par 3, par 4, etc. Ces nombres sont appelés les quotients électoraux. On range ces quotients dans l’ordre décroissant  jusqu’à concurrence du nombre total de sièges à attribuer.

Classiquement on illustre ce processus avec un tableau comme celui ci-dessous, avec ici en gras les quotient électoraux qui attribuent les sièges :

  Parti A Parti B Parti C
Nombre de votes 600 400 200
% de votes 50% 33% 17%
:1 600 400 200
:2 300 200 100
:3 200 133 67
:4 150 100 50
:5 120 80 40
:6 100 67 33
:7 86 57 29
:8 75 50 25
Nombre de sièges 4 3 1
% de sièges 50% 38% 13%

Une visualisation graphique du processus peut aider à comprendre ce qui se passe. On commence donc par calculer les quotients électoraux de chaque parti ce qu’illustre le graphique suivant:

On classe ensuite chacun de ces quotients dans l’ordre décroissant, tous partis confondus, mais sans perdre ce lien entre le quotient et le parti auquel il appartient :

Au vu de ce dernier graphique on constate ce qui apparaissait déjà dans le premier tableau : la représentation en sièges qui sort du processus d’Hondt n’est pas nécessairement proportionnelle aux nombres de voix et aux rapports de force entre les partis. Ainsi dans notre exemple les partis A, B et C ont respectivement 50%, 33% et 17% des voix alors qu’en sièges ils ont respectivement 50%, 38% et 13% des sièges. 

Cette non proportionnalité vient du fait que les divisions successives par 1, 2, 3,… reviennent à multiplier par 1, 1/2, 1/3,… or comme on peut le constater ci-dessous la fonction 1/x a une décroissance rapide et non constante :

Le type de décroissance de cette fonction a pour effet que l’on “perd” très rapidement beaucoup de valeur et ensuite de moins en moins. Ce qui a pour effet que les quotients électoraux des plus petits partis décroissent encore rapidement alors que ceux des grands partis en perdent déjà moins comme on peut le constater dans le graphique ci-dessous :

Ce genre de règle défavorise donc les plus petits partis par rapport aux plus grands. Cet avis doit être un peu nuancé au vu du tableau suivant.  Dans celui-ci  on suppose que l’on peut continuer à attribuer des sièges au-delà de 8. La première colonne donne le numéro du siège, les deux suivantes contiennent le quotient électoral et le diviseur correspondant, viennent ensuite le parti qui a obtenu le siège. Les trois dernières colonnes présentent les pourcentages de sièges pour chacun des partis  pour le nombre de sièges attribués (à la 9éme ligne on considère que 9 sièges ont déjà été attribués par exemple) :

Siège  Quotient  Div Parti %A %B %C
1  600,0   1 A 100% 0% 0%
2  400,0   1 B 50% 50% 0%
3 300,0   2 A 67% 33% 0%
4 200,0   3 A 75% 25% 0%
5 200,0   2 B 60% 40% 0%
6 200,0   1 C 50% 33% 17%
7 150,0   4 A 57% 29% 14%
8 133,3   3 B 50% 38% 13%
9 120,0   5 A 56% 33% 11%
10 100,0   6 A 60% 30% 10%
11 100,0   4 B 55% 36% 9%
12 100,0   2 C 50% 33% 17%
13   85,7   7 A 54% 31% 15%
14   80,0   5 B 50% 36% 14%
15   75,0   8 A 53% 33% 13%
16   66,7   9 A 56% 31% 13%
17   66,7   6 B 53% 35% 12%
18   66,7   3 C 50% 33% 17%
19   60,0   10 A 53% 32% 16%
20   57,1   7 B 50% 35% 15%
21   54,5   11 A 52% 33% 14%
22   50,0   12 A 55% 32% 14%
23   50,0   8 B 52% 35% 13%
24   50,0   4 C 50% 33% 17%
             

On constate que dans tout ces cas de figures hypothétiques, la règles des 50%, 33% et 17% (proportions des voix) n’est respectée que dans un cas sur six (lignes en gras dans le tableau). La bonne nouvelle c’est qu’elle est respectée dans un cas sur six mais la mauvaise c’est que dans cinq cas sur six ce n’est pas vrai. Cette règle favorise donc plus souvent les grands partis. 
Voyons ce qu’il en est de la règle Imperiali.

Règle Imperiali

Cette règle ressemble assez fortement à la précédente et est celle qui est utilisée pour les élections communales. 
Le seul changement par rapport à la précédente c’est que l’on commence les divisions non plus à 1 mais à 2. Ce qui revient à supprimer la ligne “:1” dans le tout premier tableau .  Sur base des mêmes résultats électoraux que précédemment (600, 400 et 200 voix) voici le graphique d’attribution des sièges :

On constate directement que le parti C (en bleu) est encore plus désavantagé que précédemment! On peut alors se demander si c’est dû au nombre de sièges choisi, puisque dans la règle d’Hondt les choses étaient défavorables dans cinq cas sur six. Est-on dans un cas très défavorable ou est-ce plus général ? 
Un tableau similaire au précédent va nous éclairer :

Siège  Quotient  Div Parti %A %B %C
1 300,0   2 A 100% 0% 0%
2 200,0   3 A 100% 0% 0%
3 200,0   2 B 67% 33% 0%
4 150,0   4 A 75% 25% 0%
5 133,3   3 B 60% 40% 0%
6 120,0   5 A 67% 33% 0%
7 100,0   6 A 71% 29% 0%
8 100,0   4 B 63% 38% 0%
9 100,0   2 C 56% 33% 11%
10   85,7   7 A 60% 30% 10%
11    80,0   5 B 55% 36% 9%
12    75,0   8 A 58% 33% 8%
13    66,7   9 A 62% 31% 8%
14    66,7   6 B 57% 36% 7%
15    66,7   3 C 53% 33% 13%
16     60,0   10 A 56% 31% 13%
17    57,1   7 B 53% 35% 12%
18    54,5   11 A 56% 33% 11%
19    50,0   12 A 58% 32% 11%
20    50,0   8 B 55% 35% 10%
21    50,0   4 C 52% 33% 14%
             

Dans ce tableau on voit que dans tous les cas (et non plus cinq fois sur six) le parti C est clairement désavantagé. 

Conclusion

Les règles d’Hondt et encore plus Imperiali avantagent les listes ayant des résultats électoraux plus importants. Cette non proportionnalité peut être vue comme permettant de favoriser l’émergence de majorités claires, mais on peut évidemment lui reprocher cette discrimination des petites listes. 

EDIT :  Si vous voulez approfondir le sujet et savoir comment fonctionne ensuite la dévolution des sièges pour les candidats : «Dévolution des sièges». 

Comment fâcher la majorité des Belges avec leur salaire?

En publiant le salaire moyen desdits Belges pardi!

Ce vendredi 5 octobre 2018 de nombreux médias Belges se sont fait l’écho de l’enquête du site Jobat, titrant la plupart du temps sur ce fameux salaire moyen :  3.329 €1. Le problème c’est que ce concept de salaire moyen et son utilisation à tout va posent de nombreux problèmes. 

Le premier de ces problèmes est la signification même de ce qu’est la moyenne. Quand on demande aux étudiants qui participent à nos cours la définition de la moyenne (arithmétique bien entendu dans ce cas), ils n’ont aucun problème à expliciter comment  se calcule ce nombre. Quand on leur demande sa signification c’est autrement plus problématique. Mon but n’est bien entendu pas de dénigrer leur compréhension du concept mais bien d’illustrer le paradoxe que rencontre ce dernier :  il est extrêmement bien connu et utilisé dans la population mais son interprétation n’a pas la même chance.  Pour clarifier cette dernière, ce qui suit en général ma question aux étudiants sur l’interprétation de la moyenne est la proposition suivante : calculons l’avoir moyen dans nos portefeuilles à l’instant précis dans cette classe. Je propose donc alors  que (de façon imaginaire évidemment) chacun, chacune vienne vider son portefeuille sur la table, que l’on compte le total et que l’on divise le tout par le nombre de personnes. Le contenu moyen des portefeuille dans la classe, est donc simplement ce que chacun aurait en poche si tout le monde avait la même chose.  Et donc le salaire moyen c’est cela aussi : le salaire que chacun, chacune aurait si tout le monde gagnait exactement la même chose. On est évidemment loin du compte de cette dernière affirmation. Ce qui rend donc le salaire moyen assez inadéquat comme évaluation de la tendance centrale (comme disent les statisticiens)  des salaires. La notion de médiane, souvent nettement moins connue et appréciée des mêmes étudiants, est, elle, nettement pus facile à interpréter: la médiane c’est la valeur qui partage en deux parties égales l’ensemble des valeurs considérées (ici les salaires) quand ces dernières ont été classées dans l’ordre croissant. Donc dans le cas de l’enquête sur les salaires, cela reviendrait à prendre l’ensemble des 20.000 salaires collectés par l’enquête, à les classer de façon croissante et ensuite à trouver la valeur qui se situe au milieu. Dans le cas de l’enquête évoquée cette valeur  serait “aux alentours des 3.000 euros brut”. Ce qui est déjà un tantinet plus faible que la moyenne mise en avant.  Ce salaire médian à l’avantage qu’il est un premier élément permettant d’avoir une idée de la répartition des salaires,  ainsi on sait donc que 50% des gens gagent moins de 3000 euros bruts et 50% gagnent plus. Interprétation autrement plus informative sur la population que la moyenne.

Le second problème de la moyenne, comme cela vient d’être déjà évoqué, c’est qu’elle ne donne aucune indication sur la répartition des salaires. Dans une enquête menée en 2013 par la K.U.L. et Références, en plus de ce salaire moyen le tableau suivant était fourni:

  Salaire Brut
10% gagnent moins de  1.842 €
20% gagnent moins de  2.099 €
30% gagnent moins de  2.300 €
40% gagnent moins de  2.530 €
50% gagnent moins de  2.800 €
60% gagnent moins de  3.068 €
70% gagnent moins de  3.404 €
80% gagnent moins de  3.900 €
90% gagnent moins de  4.825 €
Moyenne 3.133 €

Ce tableau a l’avantage que l’on constate tout de suite que la notion de salaire moyen va fâcher plus de 60% des Belges qui gagnaient donc à l’époque moins que ce dernier! Par une simple interpolation linéaire on peut même évaluer qu’en fait c’est 65.51% des Belges qui gagnaient moins que le salaire moyen de 2013. Ce qui nous ramène au titre puisqu’en titrant uniquement sur le salaire moyenne on arrive à “frustrer” quasiment 2/3 des Belges!  Ce tableau nous informe aussi sur la répartition des salaires. Pour représenter la répartition des valeurs étudiées un des outils des statisticiens est la représentation en boxplot ou boîte à moustaches , mais n’ayant pas accès aux données de l’enquête je propose une autre vision des données (assez proche du principe du boxplot) dans la figure ci-dessous:

Cette figure affiche en ordonnées (l’axe des Y placé de façon verticale) les différentes limites du tableau ci-dessus. Chacun des espaces entre les lignes horizontales contient 10% des salaires. L’espace supérieur n’est pas signifiant car je ne connais pas le salaire maximum et comme salaire minimum j’ai utilisé les données d’Eurostats (1562.63 €). Néanmoins rien que sur la partie inférieure du tableau on peut  constater la répartition des salaires. Cette information, quoi qu’incomplète encore, est nettement plus informative que la seule moyenne.

Le  dernier reproche que je formule à cette utilisation du salaire moyen est que dans les communiqués évoqués pour l’édition 2018 de l’enquête de Jobat, on lit aussi que le salaire moyen a augmenté de 4% par rapport à 2017. Au-delà du fait que la chose m’étonne par rapport aux données de 2013, là aussi cette seule information pourrait engendrer des frustrations car on n’a aucune idée précise d’où provient cette augmentation même si on peut lire que “le salaire moyen est tiré vers le haut par les salaires les plus élevés”.  Ainsi dans l’hypothèse où la moyenne des 10% des salaires  les plus élevés de 2013 auraient été de 5500 € (c’est une supposition pour l’exemple bien entendu) alors la moyenne étant de 3.133 €, on peut en déduire le salaire moyen du reste de la population, à savoir 2870 €, et le salaire moyen doit se calculer de la façon suivante :

0.9\cdot 2870 + 0.1 \cdot 5500 = 3133.

Une augmentation de 15% pour les seuls salaires les plus élevés modifierait le salaire moyen sans que les 90% restant n’en soient en réalité affectés :

0.9\cdot 2870 + 0.1 \cdot 5500 \cdot 1.1= 3215.5 .

Ce qui correspond à une augmentation globale du salaire moyen de  2.6% alors que le salaire moyen de l’écrasante majorité  n’a pas changé. La médiane elle n’a pas varié d’un iota.  Supposons maintenant que la moyenne des salaires de la catégorie juste en-deçà de la catégorie des salaires les plus élevés soit connue et égale à 3550 €. A nouveau la moyenne globale devrait alors s’écrire comme suit:

0.8\cdot 2785 + 0.1 \cdot 3550+ 0.1 \cdot 5500 = 3133.

Comme ci-dessus une augmentation de 10% sur ces deux catégories des salaires les plus élevés donnera comme salaire moyen :

0.8\cdot 2785 + 0.1 \cdot 3550 \cdot 1.1 + 0.1 \cdot 5500 \cdot 1.1 = 3223.

c’est à dire une augmentation du salaire moyen de 2.8%…que 80% des salariés ne percevra pas, sauf dans la presse. De quoi augmenter encore la frustration.

En conclusion, et même si je ne suis évidemment pas le premier à plaider pour cela, il devient impératif pour les diverses raisons évoquées d’arrêter la seule utilisation dans les bandeaux titres des médias du salaire moyen, et ce d’autant plus quand on sait à quel point beaucoup de gens partagent des articles sans les avoir réellement lus. C’est d’autant plus dommage de toujours mettre en avant ce seul indicateur, dont on a vu combien il pouvait être frustrant pour la majorité des Belges, que ce genre d’enquêtes fournit en général bien plus de détails que ce qui est finalement utilisé. C’est une bien piètre exploitation des données récoltées par le travail non négligeable que représente l’interrogation de 20.000 personnes. Seule une quantité suffisante de chiffres signifiants peuvent devenir une information fiable. L’adage populaire dit que “les chiffres on leur fait dire ce que l’on veut”, doit absolument être complété  par “surtout quand on en utilise peu”.

1 . Malgré mes nombreux efforts je tiens à préciser qu’au moment de la rédaction de cette note je n’ai pas pu accéder aux résultats de l’enquête de Jobat autrement que par l’intermédiaire de médias donc de façon indirecte.