[Sampling] Combien de salons de coiffure ont un jeu de mots dans leur nom ? (Deuxième partie)

Suite de notre première partie. Nous avions utilisé une méthode de sondage pour déterminer le nombre de salons de coiffure dont le nom est un jeu de mots. Dans cette seconde partie, nous allons essayer d’utiliser une méthode d’apprentissage pour estimer ce nombre. L’idée sera d’entraîner un modèle à reconnaître si une enseigne de coiffure présente un jeu de mots ou non. C’est parti !

Jeu d’entraînement

Il faut commencer par constituer un “jeu d’entraînement” (ou training set), qui comportera des noms avec et sans jeu de mots, de manière à ce que le modèle choisi puisse construire une règle de classification. Ce jeu d’entraînement, nous allons devoir le constituer à la main. Comme je n’ai pas envie de passer mon dimanche entier à classer des noms de salons de coiffure suivant qu’ils contiennent un jeu de mots ou non (je serais obligé de mentir si on me demandait ce que j’ai fait de mon week-end à la machine à café lundi matin) je choisis de me limiter à 200 enseignes, que je vais tirer aléatoirement dans la base.

Petite remarque supplémentaire : si je tirais ces noms avec une probabilité uniforme (comme on l’a d’abord fait en première partie), ma base comporterait environ 10 enseignes avec jeu de mots contre 190 enseignes sans (puisque, d’après la première partie, le taux de salons de coiffure avec un jeu de mot vaut environ 5%). Avec simplement 10 noms comportement un jeu de mot dans notre base de références, faire classer efficacement les noms de salons par un modèle ne serait pas chose aisée… Je choisis donc d’utiliser à nouveau un tirage stratifié (comme en première partie), de manière à équilibrer les données sur lesquelles le modèle va être entraîné.

Avant de passer à la suite, je réserve 50 noms parmi mes données d’entraînement que j’utiliserai uniquement pour tester la qualité de mon modèle. Le modèle sera donc entraîné sur 150 noms de salons, parmi lesquels environ 50% présentent un jeu de mot (je nomme ces données “jeu de développement”).

Une nécessaire sous-estimation

Il va s’agir de choisir un classificateur d’apprentissage qui présente de bonnes performances sur des données issues de Natural Language Processing (NLP). Le but est que notre modèle soit capable de reconnaître un jeu de mots similaire à ceux qui sont contenus dans le jeu de développement. Des noms similaires à une enseigne contenue dans le jeu de test devraient être correctement classés si les différences sont mineures (quelques lettres, l’ordre, une préposition en plus ou en moins, etc.). Par exemple, si le jeu de développement contient “FAUT TIFF HAIR”, il est bien possible que “FAUTIF HAIR” ou “FAUT TIF HAIRS” soient correctement classés. A fortiori, tous les noms strictement identiques à ceux du jeu de développement seront correctement classés. Par contre, on ne peut pas raisonnablement s’attendre à ce que le modèle soit capable de reconnaître un jeu de mots très différent de ceux qui seront contenus dans cette base de données.

Finalement, il faut s’attendre à ce que cette façon de procéder aboutisse à une sous-estimation du nombre de salons de coiffure avec jeu de mots. Pour le vérifier, on pourra comparer avec l’intervalle de confiance établi en première partie.

Le choix du modèle

J’utilise l’excellent librairie python scikit-learn, que j’utilise pour tester différents types de classificateurs. Bien souvent en machine learning, il s’agit de tester rigoureusement différents modèles et différents choix de paramètres comparativement les uns aux autres. Dans notre cas, je cherche simplement un classificateur suffisamment performant pour aboutir à une conclusion à peu près robuste. Je me contente donc de quelques essais à la main pour effectuer mon choix de modèle. J’effectue ensuite un petit grid search pour tester différents choix de paramètres. Dans le cas du choix de modèle comme du grid search, j’utilise une validation croisée pour choisir le meilleur modèle. Mon classificateur final est donc :

vectorizer = TfidfVectorizer(ngram_range=(1, 3), analyzer='char',
use_idf=False, stop_words=["SARL", "SAS", "SA"])

clf = Pipeline([
('vec', vectorizer),
('clf', SGDClassifier(loss="hinge", penalty="l2")),
])

clf.fit(docs_train, y_train)

Je peux enfin tester la performance de mon modèle sur le jeu de test de 50 noms que j’ai mis de côté :

Classé “avec jeu de mots” Classé “sans jeu de mots”
Sans jeu de mots 17 7
Avec jeu de mots 11 15

Par ailleurs, le jeu de test contenait 26 noms avec jeu de mots. L’estimation issue du modèle donne 22 noms avec jeu de mots, ce qui est cohérent avec le fait qu’on s’attend à obtenir une sous-estimation.

Petits tests à la main

Avant de faire tourner le classificateur sur l’ensemble de la base, j’effectue quelques petits tests à la main, avec des noms d’enseigne inventés. Comme prévu “CREA TIFFS”, “FAUT TIFF HAIR” et “FAUX TIFF HAIR”, proches de certains noms du jeu de développement, sont bien reconnus comme présentant un jeu de mot . “HAIR DRESSER” et “COIFFURE JEAN MICHEL” sont également correctement classés, en tant que noms ne présentant pas de jeu de mots. Je teste ensuite “LA CHAMBRE A HAIR”, “VOLT HAIR” et “LE SAVOIR F HAIR” (merci au tumblr lolcoiffeurs pour les idées !), sans grand espoir car ces jeux de mots me semblent trop éloignés de ceux présents dans le jeu d’entraînement. Et pourtant, les trois sont bel et bien reconnus comme jeux de mots ! Mon dernier test, “DE MECHE AVEC VOUS”, n’est lui pas correctement reconnu. Cela ne m’étonne pas outre mesure, car le nom de salon qui s’en approchait le plus dans mon jeu d’entraînement était “MECH EN LOOK”, qui ne contenait même pas le mot “MECHE” en entier. Finalement, je suis plutôt agréablement surpris des performances du modèle (comme souvent en learning , même si dans notre cas, le modèle et son ambition sont très modestes).

Les résultats

En exécutant notre classificateur sur toute la base des noms de salons, on obtient une valeur d’estimation de :

916, soit 3% de coiffeurs (contre environ 5% par la méthode par sondage)

présentant un jeu de mots dans leur enseigne. Ce chiffre correspond à l’estimation basse obtenue par sondage en partie 1. Ceci est cohérent avec notre remarque faite plus haut : ce chiffre obtenu par apprentissage est une sous-estimation du nombre total.

Dernière remarque : ce modèle est valable uniquement pour les enseignes de salons de coiffure. On pourrait appliquer une méthode similaire pour déterminer le nombre de jeu de mots parmi les enseignes d’un autre secteur (les boulangeries par exemple), en changeant le training set et en ajustant le modèle. Mais trouver une méthode générale pour reconnaître ce qui constitue ou non un jeu de mots en français serait une autre paire de manches !

Note 1 : L’image-titre est issue d’une note de Boulet, qui possède un blog bd très sympa que je vous encourage à aller voir !

Note 2 : en échangeant à propos de cet article, on m’a fait remarquer que notre définition du jeu de mot n’incluait pas par exemple le cas d’un jeu de mot “pour initié” sur le quartier dans lequel est situé la boutique ou sur le nom des entrepreneurs. Je précise donc que notre définition recouvre plus ou moins les jeux de mots “compréhensibles par tous” 😉

[Sampling] Combien de salons de coiffure ont un jeu de mots dans leur nom ? (Première partie)

Nous connaissons tous une boulangerie, ou un salon de coiffure, qui a un jeu de mots dans son nom (“L’Hair du temps” ?), mais est-ce vraiment si répandu ? Essayons de répondre à cette question. Il y a plusieurs manières d’aborder ce problème : utiliser une approche de type apprentissage (mais il n’est jamais simple de faire comprendre l’humour à un ordinateur, et nous discuterons de cela plus tard), ou une approche de type sondage (ce qui sera fait dans un premier temps, dans cet article).

L’idée derrière cette approche consiste à se dire que juger la totalité des noms des salons de coiffure serait assez long (il y en a plusieurs dizaines de milliers) et que l’on va donc seulement s’intéresser à un petit échantillon (qui ne sera pas “représentatif” !) sur lequel on fera le travail de juger si le nom correspond à un jeu de mots ou pas.

Quelques considérations pratiques tout d’abord : nous avons un jeu de données composé de 30 083 entreprises françaises dont l’activité principale est dans le domaine du 9602A, ce qui dans le monde merveilleux des nomenclatures de la statistique publique, signifie que ce sont des entreprises dans le domaine de la coiffure, donc des salons de coiffure. On va également considérer qu’une taille raisonnable pour le travail de détection des jeux de mots est de prendre n = 200.

Première tentative

Nous allons donc extraire un échantillon de 200 SIREN de notre base, en utilisant un sondage aléatoire simple pour les choisir. Qu’entend-on par sondage aléatoire simple ? Comme son nom l’indique, il s’agit d’une technique basique de sondage qui repose sur deux postulats : on peut sélectionner tout le monde avec la même chance, et on veut aboutir à une taille fixe. Une représentation possible de ce type de sondage consiste à imaginer une urne avec les 30 083 boules qu’on mélange, puis on extrait une à une des boules jusqu’à en avoir le nombre souhaité, ici 200. Ce type de sondage est facile à mettre en pratique ; et il est facile d’utiliser les résultats obtenus pour avoir une estimation sur la population totale, et même une idée de la précision de cette estimation. On peut se référer au cours suivant pour une présentation plus détaillée.

Nous avons donc suivi ce plan de sondage, et nous avons un échantillon de 200 noms de salons de coiffure. Il reste maintenant à analyser les résultats pour détecter les jeux de mots : cette phase est forcément subjective, mais j’ai essayé ici de prendre la définition la plus large possible de jeu de mots, c’est à dire à chaque fois qu’il peut y avoir un double sens ou un jeu sur la prononciation de mots. Regardons plutôt quelques exemples trouvés dans l’échantillon :

Atmosp’hair, Posi’if, Aux mains d’argent, L’art de Pl’Hair, Diminu Tif, FauTif’Hair…

J’arrive au total à 13 jeux de mots, ce qui nous donne un pourcentage de jeux de mots de 6,5% parmi les salons de coiffure. L’utilisation d’un sondage aléatoire simple permet de garantir que cette estimation est sans biais (c’est un estimateur d’Horvitz-Thompson (en) du ratio), c’est à dire que, en moyennant sur tous les échantillons que l’on peut obtenir, on obtient la vraie proportion sur la population totale des salons de coiffure. Cela signifie en particulier que l’estimation que nous avons est fiable.

Cependant, cela ne signifie pas qu’elle est précise ! Prenons un exemple simple. On a deux individus A et B, avec une valeur de 0 pour A et de 100 pour B, et que l’on veut estimer la moyenne des valeurs dans la population, qui vaut 50. Lorsque l’on réalise un sondage aléatoire simple d’un individu parmi les deux, nous allons avoir la moitié du temps A et donc une estimation de 0, et la moitié du temps B et une estimation de 100. Cela donne bien 50 en moyenne : pourtant dans une réalité où l’on ne peut pas répéter le tirage des échantillons, on aurait juste l’observation de B (par exemple), et donc un estimateur de 100. Cette estimation est très imprécise : cela vient de la faible taille de l’échantillon (1 n’est pas suffisant), et de la très grande hétérogénéité de la population (si A avait une valeur de 1 et B de 2, on serait plus proche de la vérité). On peut aussi voir, en anglais, l’exemple des éléphants de Basu (en), bien connu des étudiants en théorie des Sondages.

Il existe une formule permettant de calculer la variance de l’estimation. On peut se référer par exemple aux slides 60 et suivantes de cette présentation. Globalement, dans le cas d’une proportion, la variance vaut à peu près :

Variance = Proportion * (100% – Proportion) / Taille de l’échantillon

À partir de ce résultat, on peut calculer un intervalle de confiance pour la vraie valeur de la proportion. Il suffit d’enlever et d’ajouter 1,96 fois la racine carrée de la variance. L’intervalle obtenu donne un ensemble de valeurs pour lesquelles l’observation qu’on a, c’est à dire la valeur obtenue sur l’échantillon, n’est pas trop improbable ; on considère ainsi qu’il est possible moins de 5 fois sur 100 pour une vraie valeur hors de cet intervalle d’obtenir un tel résultat.

L’application de ces méthodes ici donne l’intervalle de confiance suivant : [3.1% ; 9.9%]. Il est assez large, car d’une part la taille de l’échantillon est assez faible, et d’autre part la proportion estimée est faible, ce qui a tendance à réduire la précision des estimations : un caractère rare dans une population est difficile à détecter, et n’apparaît pas si souvent dans l’échantillon, donc l’information collectée reste assez faible.

Adaptons le sondage

Même s’il est possible d’être assez déçu par le résultat obtenu à l’aide de ce premier échantillon, il ne faut pas désespérer. En effet, il est toujours possible d’améliorer un plan de sondage une fois que l’on a collecté un peu plus d’informations. Ici, il est possible de faire une remarque générale sur les jeux de mots trouvés : la plupart d’entre eux contiennent soit le mot “Hair”, soit le mot “Tif”. Il est fort probable que l’on trouve plus de jeux de mots dans les salons dont le nom contient un des deux mots que dans la population générale. Nous allons utiliser cette nouvelle information pour réaliser un sondage stratifié (voir ce cours pour plus d’informations).

Pour reprendre l’analyse développée dans la partie précédente, avec une urne remplie de 30 083 boules, il va s’agir ici de séparer a priori, sur un critère connu (qui sera ici la présence ou non du mot “Tif” ou “Hair” dans le nom) les boules entre deux urnes, pour ensuite en tirer un certain nombre dans la première urne puis, indépendamment, un certain nombre (qui peut être différent du premier) dans la seconde urne.

Il ne reste qu’à séparer les 200 salons de coiffure entre les deux catégories, dites strates : la strate 1, qui regroupe les 2 603 salons de coiffure avec “Hair” ou “Tif”, dans laquelle on suppose qu’il y a environ la moitié de jeux de mots, et la strate 2 des autres salons de coiffure, dans laquelle on va supposer qu’il y a 1% de jeux de mots. Ces suppositions permettent de calculer des allocations, c’est à dire le nombre d’unités à tirer dans chaque strate, en utilisant la technique dite de l’allocation de Neyman (slide 61 de cette présentation). Cette allocation, classique en sondages, vise à maximiser la précision de l’estimateur obtenu à la fin, en prenant plus d’individus dans les strates avec une forte variance, ce qui est ici le cas de la strate 1 ; en effet, il y aura à peu près autant de jeux de mots que de non jeux de mots, alors que dans la strate 2 ce sera principalement des noms sans jeu de mots, donc assez peu variés.

Le résultat obtenu ici consiste à tirer 141 salons de coiffure de type 1 et 59 salons de coiffure de type 2. On réalise alors un tel tirage. Les résultats obtenus sont de 68 jeux de mots dans la première strate, et de 1 jeu de mots dans la seconde : “C’est dans l’ère”, assez proche du thème classique de Tif et Hair, mais avec une autre graphie !

Ici, il n’est évidemment pas possible d’extrapoler le résultat à la population totale en disant que la proportion de jeux de mots est de 68+1 sur 200, soit 34.5%. Il faut pondérer les résultats obtenus par la part que représente chacune des strates :

Estimation de la proportion = % de salons dans la strate 1 * proportion de jeux de mots dans la strate 1 + % de salons dans la strate 2 * proportion de jeux de mots dans la strate 2

ce qui donne ici 2603/30083*68/141 + 27480/30083*1/59 = 5,7%. On est bien dans l’intervalle de confiance obtenu tout à l’heure, ce qui est plutôt encourageant. Mais quelle est la précision de ce nouvel estimateur ? Pour cela, on utilise le même type de formule de calcul de variance pour chacune des strates :

Variance_Strate = Proportion_Strate * (100% – Proportion_Strate) / Taille de l’échantillon_Strate

puis on combine ces résultats pour avoir la variance de l’estimation :

Variance = (Part strate 1)² * Variance_Strate_1 + (Part strate 2)² * Variance_Strate_2

et enfin, on construit l’intervalle de confiance de la même façon que précédemment. Nous obtenons ici [4,1% ; 7,3%] qui est plus resserré que celui obtenu au début : nous avons bien amélioré la précision de notre estimation !

Conclusion

Ainsi, en utilisant un sondage intelligent, basé sur l’étude de certaines caractéristiques des jeux de mots dans les salons pour la stratification, nous arrivons au résultat que parmi les 30 083 salons de coiffure, il y en a environ 1 700 dont le nom comporte un jeu de mots, plus ou moins 500, soit très probablement entre 1 200 et 2 200.

[Sampling] De l’instantanéité des sondages

Ces derniers jours une application de “sondages” fait beaucoup parler d’elle dans les médias traditionnels : elle agacerait les instituts de sondages – je ne sais pas pour eux, mais ça nous a plutôt désespéré – et serait un baromètre de l’opinion pour les Républicains avant leur primaire – contrairement aux apparences, nous parlons d’une application française, GOV.

Cette application permet deux choses : tout d’abord, un peu à la façon d’un Tinder de la politique, les utilisateurs peuvent donner une opinion positive ou négative à propos de certaines personnalités politiques, souvent nationales : le Président, Manuel Valls, Christiane Taubira, Marine le Pen, Nicolas Sarkozy, Alain Juppé… Il est également possible de proposer des questions – des débats – auxquels les autres utilisateurs peuvent répondre en indiquant leur accord, avec un +, ou leur désaccord, avec un -. Ces débats peuvent concerner différents sujets : la politique, évidemment, mais aussi la société, la religion, les technologies…

Dernière précision : après téléchargement de l’application, un compte utilisateur doit être créé. On nous demande pour cela un pseudonyme, une adresse mail, puis de spécifier notre sexe, notre département, notre date de naissance et (de façon optionnelle) notre orientation politique, de l’extrême droite à l’extrême gauche en passant par le centre.

Tout cela est bien sympathique ; mais nous ne croyons pas une seule seconde aux résultats obtenus par cette application. Nous allons expliquer par la suite pourquoi nous n’y croyons pas, mais aussi donner quelques pistes d’améliorations pour chacun des problèmes, parce que nous n’aimons pas laisser notre prochain dans l’embarras.

Vérifier les utilisateurs

Commençons par le commencement. Si l’on souhaite avoir une information sur une population, par exemple combien de personnes en France ont une opinion positive de François Hollande, il faut commencer par s’assurer de deux choses sur la population : que l’on interroge bien des personnes qui existent et que ces personnes sont dans la population d’intérêt. Ici, il faudrait vérifier que les gens sont bien en France – cela n’a pas l’air d’être le cas, mais peut-être que les magasins d’applications bloquent le téléchargement hors de France, donc accordons le bénéfice du doute à l’application. La deuxième question est bien plus compliquée, car on ne peut pas demander un papier d’identité à tous les utilisateurs, mais elle est généralement réglée de deux manières différentes : soit en utilisant un autre service comme identifiant – Google, Facebook, etc – ce qui est une possibilité ici, soit en demandant une adresse mail pour y envoyer un mail afin de valider l’inscription, ce qui permet de montrer que ce n’est pas un robot qui vote. Cela laisse le problème de l’unicité, car une personne peut avoir plusieurs adresses mail, mais cela le limite néanmoins : les gens ont une dizaine d’adresses mail au maximum, ce qui ne suffira pas forcément à perturber les résultats.

Que se passe t-il sur GOV ? Eh bien, j’ai pu me créer le compte suivant afin d’aller donner mon avis sur François Hollande. Et si j’avais voulu, j’aurais pu me créer les comptes miaou1@miaou.fr à miaou99999@miaou.fr en automatisant le processus pour aller voter 100000 fois en faveur de François Hollande, pour perturber les analystes politiques de notre pays.

Miaou@miaou

Comment pallier ce problème ? A minima, demander une validation par mail pour éviter l’utilisation d’adresses mail stupides comme la mienne, et si possible trouver un moyen d’éviter les doublons – authentification via adresse de téléchargement de l’application, par exemple.

Changer de sexe – et de date de naissance ?

Le but de l’application n’est pas uniquement de connaître ce pourcentage de votes positifs sur la France entière, il y a également des résultats pour certaines sous-populations : les hommes et les femmes, principalement, sur chacun des départements français, ainsi que selon les orientations politiques. Je n’ai pas trouvé de résultats par âge, mais j’imagine que cela pourrait arriver. J’ai donc renseigné mes informations de façon tout à fait sérieuse. Aujourd’hui, je serai donc une jeune femme de 19 ans vivant à Blois et activement en faveur de l’extrême droite.

Loir et Cher

Aucune de ces informations n’a été vérifiée. Cela peut sembler normal pour l’orientation politique : le vote est secret, et c’est de toute façon facultatif. Mais le sexe, la date de naissance, la position géographique ? Nous pouvons faire encore mieux. Ce(tte) “miaoumiaou” va pouvoir changer d’avis sur la politique (aucun problème), déménager de Blois à Mérignac (cela arrive régulièrement), de sexe (admettons !), mais aussi de date de naissance (???).

Gironde

Comment pallier ce problème ? Il faut récupérer les informations à partir d’une source plus fiable : par exemple, les profils sur les réseaux sociaux. En revanche, les questions de modification des caractéristiques des personnes sondées sont toujours un problème difficile. Il convient de distinguer celles qui ne peuvent pas changer (sauf cas exceptionnels) : sexe, date de naissance… Pour ces caractéristiques, on peut interdire les changements ou à la limite accorder un changement, mais une seule fois. Pour les autres caractéristiques telles que la ville de résidence ou les opinions politiques, les modifications doivent être autorisées, mais il faut une limite aux modifications : je peux changer d’avis politique toutes les deux heures sur GOV, et ainsi les résultats n’ont aucune valeur.

Combien sommes-nous ?

Si l’on en juge par les classements qui se trouvent dans l’onglet Profil, nous étions dans les 10 000 meilleurs après quelques votes, on peut donc estimer que le nombre d’utilisateurs de l’application est entre 10 000 et, allez, 20 000. Cela représente un nombre suffisant pour avoir un avis sur une question si tout le monde y répondait, mais vu le nombre de personnalités politiques et de débats présents sur l’application, cela n’est pas une hypothèse crédible. Un premier problème est donc que les résultats obtenus ne sont pas suffisamment précis : on voit dans l’image ci-dessous que 245 personnes ont voté dans les dernières 24h sur le débat que nous avons créé, ce qui n’est absolument pas suffisant pour avoir l’information pour la totalité de la population française. Mathématiquement, cela veut dire que la variance de notre estimateur est trop forte : 76% des répondants croient aux statistiques de l’INSEE, mais on ne peut rien en déduire de plus précis que ceci : “entre 65% et 87% des français croient aux statistiques de l’INSEE”. Sauf que c’est faux, parce qu’il y a des biais induits par la réponse ou non, mais nous en parlerons plus tard.

245govs

Et pour “ajouter l’injure à l’insulte”, comme on dit chez les jeunes, l’application nous propose même les résultats ventilés selon les différentes orientations politiques. Par exemple, pour la question sur l’INSEE que nous avions posé, nous avons les résultats suivants.

Politique

Nous voyons bien l’intérêt de ce graphique : on aurait envie de dire que les français partisans des partis traditionnels (Gauche, Droite) ont plus confiance dans les institutions et donc dans l’INSEE que ceux des partis d’extrême droite et gauche. Et bien cette analyse n’a absolument aucun fondement. Pourquoi ? Car non seulement comme évoqué précédemment il n’y a pas assez de répondants pour avoir une estimation précise, mais surtout parce qu’on ne sait pas comment sont répartis les répondants au sein des catégories. On sait uniquement que 100% des votants d’extrême droite ne croient pas aux statistiques de l’INSEE, mais on ne sait pas si cela représente 1, 5 ou 50 personnes. On ne peut donc rien en déduire.

Comment pallier ce problème ? À part évidemment attendre qu’il y ait plus de monde (certains débats ont moins de 10 votants, donc autant dire absolument aucune valeur), il serait possible d’au moins d’afficher les effectifs pour toutes les sous-catégories pour avoir une idée de la répartition des votes.

J’ai changé d’avis !

Si vous avez bien suivi, le point précédent n’aurait pas dû être un problème. Il y a plus de 10000 comptes d’utilisateurs inscrits, donc pourquoi est-ce que la plupart des débats et des hommes politiques sont aux alentours de 250-500 “govs”, avec peut-être 1000 au maximum ? Cela vient du fait que le compteur qui est communiqué aux utilisateurs ne concerne que les votes dans les dernières 24 heures, ce qui explique pourquoi le nombre n’augmente pas au fur et à mesure. Pourquoi avoir fait ce choix ? Cela est probablement lié au concept d’instantanéité, car il est possible de revoter toutes les 24 heures pour suivre au plus près l’actualité politique.

Il est donc possible de redonner son avis. Cela veut dire qu’il est possible d’en changer ou de garder le même d’un jour sur l’autre, et cela veut aussi dire que potentiellement les 500 “govs” sur certains sujets proviennent des mêmes personnes d’une journée sur l’autre. Que peut-on déduire de l’évolution sur l’image suivante ? (Réponse : rien.)

Ségolène Royal

Comment pallier ce problème ? Ce n’est pas forcément un problème, certains sondages sont réalisés de cette manière, ce sont les études en panel ou cohorte : on interroge les personnes à des dates différentes, et on s’intéresse à l’évolution entre ces différentes dates. Le fait de réinterroger les mêmes personnes permet de limiter l’aléatoire et donc d’avoir des résultats plus précis que de re-choisir au hasard des individus. Cependant, il faudrait alors être sûr que les individus sont bien toujours les mêmes, et cela n’enlève rien au problème lié au nombre de répondants ou aux autres problèmes qui arrivent dans la suite de l’article.

Comment vote t-on dans le Loir-et-Cher ?

Eh bien, par exemple sur notre question les résultats dans le département (initial) de miaoumiaou sont les suivants. Les barres en gris clair signifient qu’aucun répondant n’est de cette orientation politique dans ce département.

Vote dans le département

Je pense qu’il n’y aura pas besoin d’un grand discours pour en conclure que c’est totalement inutilisable.

Comment pallier ce problème ? Il ne faut pas diffuser d’information à un niveau aussi fin, et se limiter par exemple à un Paris/Province, ou au moins par région.

Je ne suis pas intéressé par la religion

Sur l’application GOV, il est possible de choisir pour qui et quoi on vote. Par exemple, si je ne suis pas du tout intéressé par les questions sur la religion, il me suffit de parcourir uniquement les autres catégories de débats et je n’aurai pas à donner mon avis sur les questions sur le sujet. Cela pourrait ne pas être grave, mais cela pose un problème assez classique en sondages et plus largement en théorie des comportements. C’est celui de la non-réponse non-ignorable. Prenons un exemple.

Cigarettes

Cette question est déséquilibrée : les individus auront des tendances à vouloir répondre qui sont différentes selon leurs caractéristiques. Raisonnons de façon schématique. Si je suis fumeur, j’ai envie d’indiquer que je suis contre le paquet plus cher. Si je ne suis pas fumeur, j’ai moins d’intérêt dans la question, mais peut-être que je veux arrêter le tabagisme passif et donc que je suis pour. En moyenne, les fumeurs répondront plus souvent que les non-fumeurs. Le résultat final est alors biaisé en faveur du non, et donc pas directement exploitable !

Comment pallier ce problème ? Il y a deux manières différentes de s’attaquer à cette problématique. La première, c’est de ne pas laisser ce choix et de “forcer” les individus à répondre aux questions qui leur sont soumises, par exemple aléatoirement : l’inconvénient est que cela limite la convivialité de l’application, et cela n’empêche pas les gens de quitter l’application et de ne pas répondre de toute façon quand ils ne sont pas intéressés. L’autre solution c’est d’utiliser les caractéristiques socio-démographiques et les profils de réponse des individus pour corriger de la non-réponse, par exemple dans notre exemple analyser qui est fumeur et non-fumeur pour rétablir l’équilibre des réponses, et s’approcher du “vrai” pourcentage d’avis pour le paquet à 10€.

Le “calage” des réponses

Je vais essayer d’éviter d’utiliser le mot “représentatif” dans ce paragraphe ! Les individus inscrits sur l’application GOV ne sont pas nécessairement un portrait de la population française. Par exemple, il n’y a peut-être pas 50% d’hommes et 50% de femmes, et probablement trop de jeunes par rapport à la vraie pyramide des âges de la population française. Or, tout individu de plus de 50 ans qui vote sur l’application a le même impact qu’un jeune, ce qui ne permet pas d’avoir des résultats sur la population entière.

Comment pallier ce problème ? Il est possible d’utiliser des techniques dites de calage sur marges, c’est à dire d’adapter l’impact des votes des individus en fonction de leurs caractéristiques socio-démographiques pour faire en sorte que ceux minoritaires parmi les inscrits aient un poids plus important que les autres. Cela permettrait ainsi de conclure à partir des inscrits à GOV sur la population entière.

J’adore donner mon avis !

Il reste un problème encore plus important que ce qui a été mentionné dans les deux points précédents. En effet, le fait de télécharger ou non cette application est en soi une décision raisonnée d’un individu, et donc ce choix dépend de ses caractéristiques. On peut imaginer par exemple que les individus les plus politisés auront envie de donner leur avis sur les personnalités politiques plus souvent que les autres, ce qui crée également un biais non-ignorable sur les résultats. Le problème, c’est que la question de la politisation n’est pas forcément facilement déductible des caractéristiques socio-démographiques, et que donc les techniques de calages ne suffisent pas.

Comment pallier ce problème ? Il existe quelques méthodologies assez avancées permettant de résoudre le problème, mais la méthode la plus simple consiste soit à interroger quelques personnes sur leur utilisation ou non de l’application pour connaître les caractéristiques qui font que l’on a envie de voter sur GOV, ou de réaliser une expérience aléatoire, en demandant aux gens par exemple dans le cadre d’un sondage par téléphone ou dans la rue de répondre à un débat de GOV, puis en comparant le résultat obtenu avec celui de l’application.

Conclusion (TL;DR)

Les résultats affichés par l’application GOV ne sont pas crédibles car ils souffrent d’un manque de sérieux concernant le champ des personnes interrogées, d’un manque de précision et de biais relatifs aux caractéristiques des utilisateurs par rapport à la population. Cependant, le concept est intéressant, et avec quelques modifications comme celles que nous avons suggérées dans cet article, il serait tout à fait possible d’aboutir à des résultats sérieux. On verra ce qu’il en sera dans une éventuelle version 2 ?

[Sampling] Why you should never ever use the word “representative” about survey sampling

We often hear the term “representative”, which supposedly assesses the quality of a sample. In this article, I’ll try to show you that not only “representative” has no scientific meaning, but also it is misleading, especially for people who are not survey sampling specialists. This includes students, researchers in social science who use surveys, journalists, etc. I hope I’ll convince you to never use it again !

I’ll try to make this post understandable even if you don’t know the basics of survey sampling theory. Well, you might miss a thing or two, but I think my main arguments are perfectly understandable to anyone who has ever taken a course in statistics. And perhaps I’ll write an article later to explain the basics of survey sampling in layman’s terms 😉

The Horvitz-Thompson estimator

In this article, I’ll only speak about random sampling, which is the technique governments use to produce many official statistics. I will not speak about non-random methods like quota sampling or other techniques mostly used by market research companies.

Horvitz and Thompson provide us an unbiased estimator using sample data. Assuming you know \pi_k, the inclusion probability of unit k, and you’re trying to measure the mean of Y using the y_k only known for units in the sample (s). The size of the sample is n, and the size of the population is N. Then the estimator:

\begin{align*}
\hat{\bar{Y}}_{HT} = \dfrac{1}{N} \sum_{k \in s} \dfrac{y_k}{\pi_k}
\end{align*}

is unbiased, as long as no inclusion probability equals 0.
The Horvitz-Thompson estimator can also be written:

\begin{align*}
\hat{\bar{Y}}_{HT} &= \dfrac{1}{N} \sum_{k \in s} d_k y_k \\
\text{with: } d_k &= \dfrac{1}{\pi_k}
\end{align*}

which means units are weighted by the inverse of their inclusion probability.

Do not plugin !

As you can see from the formula, the Horvitz-Thompson estimator is very different from the sample mean (ie the plugin estimator), which writes:

\begin{align*}
\bar{y} = \dfrac{1}{n} \sum_{k \in s} y_k
\end{align*}

This means that in general, if you estimate a mean by direclty using the sample mean, you end up with bias. I think that saying a randomly selected sample is “representative” of the studied population suggests that you could use the plugin estimator, no matter what the inclusion probabilities are. After all, if you claim your sample is somehow a valid “scale model” of the population, why couldn’t simple stats such as means, totals or even quantiles of variables of interest be directly inferred from the stats in the sample ?

The only case when the plugin estimator is unbiased is when all inclusion probabilities are equal. But with equal probabilities, rare characteristics are very unlikely to be selected which is (paradoxically) why you’ll very seldom hear someone use the term “representative” speaking of a sample selected with equal probabilities. Besides…

Sample = goal

… you can obtain much better precision (or, alternatively, much lower costs) by using unequal inclusion probabilities. Stratified sampling and cluster/two-stage sampling are way more common than simple random sampling for this reason.

The most telling example is perhaps stratified sampling for business surveys. Imagine a business sector when you can regroup businesses into two groups. Your goal is to estimate the mean revenue, by sampling 100 units out of 1090. Key figures for the population of my example are gathered in the following table:

Group Revenue range (M$) Dispersion of revenue N
“Big” businesses 50 – 50000 300 100
“Small” businesses 0 – 50 10 990

One of the best sampling designs you can use is stratified sampling (with a SRS in each stratum) using the optimal allocation. Neyman’s theorem gives the inclusion probabilities for the optimal allocation:

Group Inclusion probability for every unit in group
« Big » businesses 75%
« Small » businesses 2,5%

Inclusion probabilities are way different between the two groups ! Another way to see this: one only sample cannot provide good estimates for every variable you could think of. In our example, optimal inclusion probabilities would certainly be very different if we tried to estimate (for example) the number of businesses that were created less than a year ago. The best expected precision for a variable depends on the sampling design. And to assess this expected precision, there’s no other choice than to think in terms of bias and variance. There are formulas for precision estimation, but “representativity” is by no means a statistical concept.

The sample is not required to be similar to the population

This point is directly related to the previous one: inclusion probabilities are designed to optimize the estimator of one variable (or possibly a few variables with high correlation). Neyman’s theorem also gives this optimal allocation, i.e. how you should divide your 100 sampled units between the two groups :

Group Share of the population Share of the sample (optimal allocation)
« Big » businesses 9,2% 75%
« Small » businesses 88,8% 25%

If you look at the final allocation, we have a huge over-representation of “big” businesses, in comparison of their relative number in the population. However, this is the optimal allocation, meaning that this sample will lead to the best possible estimator for revenue.

Consequently, the sample is not required to “look like” the population for the estimator to be good… in our example it is in fact quite the contrary !

Conclusion

Estimation in survey sampling can be somewhat counter-intuitive. If you want to be as rigorous as a statistician should be, think in statistical terms, such as bias and variance. And when you speak about survey sampling, ban words which have no statistical meaning, such as “representative” or “representativity”.

[Sampling] L’algorithme CURIOS pour les nuls

La problématique de la baisse continue des taux de réponse aux enquêtes depuis les années 1950 conduit les méthodologues d’enquête à innover et à adapter les techniques d’enquête aux nouvelles données (voir par exemple la présentation de Carl-Erik Särndal aux JMS de 2012). Certaines de ces méthodes sont basées sur les techniques de priorisation, qui consistent à “prioriser” (relancer par téléphone, sur-représenter dans un échantillon, encourager par des cadeaux…) des individus parmi la population afin d’équilibrer les échantillons, c’est à dire d’éviter de se retrouver avec un échantillon uniquement composé de ceux qui auront eu la “gentilesse” de répondre à l’enquête spontanément, groupe qui ne présente pas nécessairement la diversité voulue pour l’analyse des résultats de l’enquête. Ces techniques de priorisation sont principalement utilisées dans le cadre d’enquêtes par téléphone (dites CATI). Nous souhaitons ici présenter une méthode applicable aux enquêtes CAPI, c’est à dire en face-à-face, avec un enquêteur se rendant au domicile de la personne interrogée, ce qui suppose une phase de reconnaissance et ne permet pas une priorisation à la volée.

L’algorithme CURIOS (Curios Uses Representativity Indicators to Optimize Samples) est utilisable dans le cadre d’une enquête en plusieurs vagues. À la fin de la première vague, on peut trouver les groupes à prioriser, et l’algorithme permet de tirer un échantillon de seconde vague qui réponde à des objectifs précis d’équivalence, de qualité et de spécificité. Expliquons tout cela plus en détail.

Cet article fait suite à la présentation du 02 avril 2015 aux JMS (Journées de Méthodologie Statistique) à Paris, et en particulier à la présentation (lien à venir) liée aux deux articles suivants : Algorithme Curios et méthode de ‘priorisation’ pour les enquêtes en face à face. Application à l’enquête Patrimoine 2014 et l’utilisation des R-indicateurs pour « prioriser » la collecte des enquêtes Ménages : une application à l’enquête Patrimoine 2010.

L’échantillonnage usuel

On suppose que l’on s’intéresse à une population de 100 individus, représentés comme suit :

population

Usuellement, la plupart des enquêtes sont réalisées en une seule phase : on tire un échantillon d’une taille convenable (c’est à dire suffisante pour permettre une bonne précision des résultats, mais pas trop importante pour limiter les coûts et la logistique de l’opération) selon un plan de sondage adapté et on réalise l’enquête auprès des individus sélectionnés. Par exemple, on peut obtenir l’échantillon suivant :

echt

Détection des groupes priorisables

Une fois que ces individus ont été enquêtés, certains auront répondu et d’autres non. On dispose à propos de chacun d’entre eux d’informations socio-démographiques présentes dans la base de sondage qui permettent usuellement d’étudier et de traiter le phénomène de non-réponse. Ici, on souhaite identifier les groupes qui sont sous-représentés parmi les répondants, c’est à dire des groupes dont le comportement de réponse diffère à la baisse. Pour cela, on utilise des indicateurs de représentativité tels que les R-indicateurs (Schouten, 2009) ou d’autres : variance due à la non-réponse, etc. L’échantillon peut donc être séparé en deux groupes :

select

où les individus entourés de bleu sont non-répondants, et les individus rouges sont ceux qui sont à prioriser, si une deuxième vague de l’enquête devrait avoir lieu. Pourquoi tous les individus non-répondants ne sont pas rouges ? Par exemple, on peut imaginer que les individus rouges sont ceux vivant en milieu rural et les noirs en milieu urbain, ou plus spécifiquement que les rouges sont les individus vivant en milieu rural dans des logements de plus de 70m² : la séparation entre rouges et noirs doit reposer sur des critères disponibles dans la base de sondage. Ces critères sont déterminés à l’aide des indicateurs de répresentativité.

Que fait CURIOS alors ?

Comme nous l’avons déjà mentionné, l’algorithme CURIOS nécessite que le sondage soit réalisé en deux phases. L’échantillon classique ne conviendrait pas. Il faut donc tirer dans une première phase une partie seulement des individus. Pour que cela soit plus visuel sur l’exemple, nous en tirons la moitié, mais il est plus recommandé de réaliser environ 75% de la collecte avant de lancer une deuxième vague. Concrètement, à la fin de la première phase on peut réaliser la procédure de priorisation et détecter les individus rouges :

select

On remarque bien ici que cette recommandation de 75% de la collecte effectuée en première phase permet de s’assurer que les individus que l’on identifiera comme sous-représentés le sont bien structurellement et non pas seulement à cause d’un artefact statistique. On peut alors appliquer la séparation en deux groupes, noirs et rouges, à la population entière (moins le premier échantillon, évidemment) :

select

On a bien remarqué que les rouges étaient moins bons répondants, et qu’il fallait les prioriser. La logique veut donc que dans l’échantillon de seconde vague le nombre de rouges soit plus important que prévu. Mais combien de rouges faut-il exactement ? L’algorithme CURIOS permet de quantifier cela précisement. On obtient par exemple :

select

Soit, en combinant les échantillons de première et de deuxième vague :

select

Cela peut impliquer que le nombre de répondants est plus faible que dans le cas de l’échantillon standard : il y a plus de rouges, et ils répondent moins bien. Mais cela n’est pas un problème car la qualité de l’échantillon est assurée, et l’exploitation des résultats sera possible.

Quelques simulations

Pour s’en convaincre, nous avons réalisé des simulations sur une enquête INSEE réalisée en 2010 sur le patrimoine des français. Les variables d’intérêt de l’enquête sont le patrimoine moyen des français (dit brut), le patrimoine net qui correspond au patrimoine brut moins les dettes, et la ventilation en patrimoine financier (comptes…), immobilier et professionnel (pour les entrepeneurs et commerçants). On veut comparer la précision de l’estimation de ces différents indicateurs dans l’enquête qui a eu lieu en 2010 en présence ou non d’une procédure de priorisation.

Pour cela, nous avons simulé un phénomène de non-réponse supplémentaire, et décidé d’affecter certains enquêteurs à la réalisation de quelques enquêtes en plus dans les zones les plus touchées. Dans un premier temps, cette affectation était faite aléatoirement : les enquêteurs pouvaient aller voir n’importe quel logement de la zone, aucun critère n’était donné. Dans un second temps, cette affectation était limitée aux ménages sous-représentés : les enquêteurs ne pouvaient enquêter que ces logements et n’avaient pas la possibilité d’en interroger d’autres. Les résultats obtenus sont les suivants :

simus

On remarque bien que pour la plupart des indicateurs (surtout les deux principaux, patrimoine brut et net) la méthode de priorisation semble améliorer la précision des estimations, de manière bien plus importante que la méthode aléatoire. Il est important de noter que cette amélioration de la précision se fait à nombre de fiches-adresses enquêtées constant voire inférieur, et donc à nombre de répondants inférieur en raison de la concentration des enquêteurs sur des populations par nature moins bons répondants.