[Etude de marché - Article 5]
Aurélien Daval
Dans le précédent article, nous avons réalisé la première étape du traitement : le TAP. Cependant, les pourcentages calculés doivent être représentatif de la population cible. Pour cela, un redressement est nécessaire. C’est ce que nous allons voir dans cet article.
5. Traitement Statistique.
Pour cette partie, je me suis inspiré de cet article.
5.2. Le redressement.
Le redressement vise à corriger l’échantillon enquêté de ses éventuelles déformations par rapport à la population cible de l’enquête. Effectivement, lors du terrain, des quotas ont été mis en place pour suivre la structure de la population. Cependant, pour obtenir le nombre de réponses nécessaires et pour respecter le planning (à la fin du terrain, on cherche souvent le mouton à cinq pattes), le directeur d’études décide souvent de libérer le terrain des quotas.
Pour conserver la représentativité, il faut donc affecter un poids à chaque questionnaire (un coefficient multiplicateur). Si je prends la variable “genre” (dans notre exemple), en libérant les quotas, j’ai déformé mon échantillon par rapport à la distribution homme/femme de notre population. En effet, j’ai eu plus de réponse d’hommes que la structure de ma population. Nous allons donc devoir donner moins de poids aux questionnaires “hommes” qui sont sur-représentés (un coefficient inférieur à 1). Et inversement pour les femmes, nous allons devoirs plus de poids (un coefficient supérieur à 1).
5.2.1. La représentativité de notre échantillon.
La structure de notre population sur cette étude est la population française. Pour être représentatif de cette population, il a été décidé de coller au plus prêt de deux variables (où il a été mis des quotas pour ne pas obtenir un échantillon trop déformé et où il est nécessaire de faire un redressement si les quotas on été ouverts) :
- Le genre.
- L’âge.
Plus généralement, deux autres variables sont utilisées pour être représentatif de la population française :
- Région UDA 5.
- CSP (Catégorie SocioProfessionnelle).
Pour connaitre la répartition entre femme et homme dans notre population, il faut se rendre sur le site de l’INSEE. Vous pouvez ainsi télécharger l’Excel de la population totale par sexe et âge au 1er janvier 2020 en France métropolitaine. Il suffit ensuite d’isoler les moins de 18 ans pour passer d’une structure de 64 987 954 individus à 51 108 869. Et on a donc 26 780 812 femmes (52,4%).
Pour avoir la structure de notre échantillon, il suffit de prendre le TAP de notre première question. Pour résumer, on a:
Structure de l’échantillon | Structure de la population | |
---|---|---|
Femmes | 50.2 | 52.4 |
Hommes | 49.8 | 47.6 |
5.2.2. Calcul des poids.
Avant de voir comment techniquement nous pouvons redresser notre échantillon avec R, je vous propose de voir ce que nous allons faire méthodologiquement.
Redressement par pondération - Méthode
Nous avons maintenant les deux informations nécessaires (la structure de la population et la structure de l’échantillon) pour calculer les poids.
Si l’on prend la première variable de redressement (le genre - Q1): il y a moins de femmes dans notre échantillon que dans notre population cible. Il faut donc pondérer à la hausse la part des femmes dans notre échantillon. Pour trouver le coefficient multiplicateur, il faut diviser la part de femmes (i) de la population cible (N) par la part de l’échantillon (n). On a donc :
Ce qui donne pour la première variable de redressement :
Structure de l’échantillon (n) | Structure de la population (N) | Coefficient multiplicateur (N/n) | |
---|---|---|---|
Femmes | 50.2 | 52.4 | 1.04 |
Hommes | 49.8 | 47.6 | 0.96 |
Si le redressement s’arrêtait ici (avec uniquement une variable), les poids associés aux répondants Femmes seraient de de 1.04 et aux Hommes 0.96.
Un redressement se passe en plusieurs étapes (/en plusieurs itérations). Lorsque l’on ajoute la variable de redressement “Q2 - Age”, l’attribution de poids sur l’âge va distendre la distribution de la variable genre. Il faut donc repartir de cette distribution obtenue et réïtérer le caclul des poids jusqu’à ce que toutes les modalités cibles soit atteintes. C’est ces itérations successives qui permettent ensuite de faire converger l’échantillon interrogé vers la distribution recherchée.
PS : avec ces deux variables (genre et âge), nous aurions pu également calculer les poids croisés (car l’on connait avec le fichier téléchargé sur le site de l’INSEE la distributions croisée –> part de femmes et d’hommes dans les tranches d’âges “Moins de 35 ans”, “35 - 49 ans”, …). Cependant, les redressements utilisent généralement plus de 2 variables, on ne dispose donc pas de cette répartition croisée.
Redressement par pondération - Technique avec R
Le redressement sur l’âge va se faire sur une distribution par tranche. Or, pour l’instant, il n’est pas possible d’associer chaque répondant à la bonne tranche d’âge. C’est ainsi qu’il faut créer une nouvelle variable (RecodeAge) où l’on va effectuer une recode pour associer l’age à la bonne tranche. Pour cela, on va utiliser le package “expss”. Pour faire la recode, il faut s’assurer que le tableau de données en est bien un (avec la fonction as.data.table). Ce qui donne :
# Chargement de la base de données.
library(readxl)
DataBase <- read_excel("C:/path/DataBase.xlsx")
# Recode de l'âge en catégorie.
library(expss)
DataBase <- as.data.table(DataBase)
DataBase[Q2 <= 34, RecodeAge := 1]
DataBase[Q2 >= 35 & Q2 <= 49, RecodeAge := 2]
DataBase[Q2 >= 50 & Q2 <= 64, RecodeAge := 3]
DataBase[Q2 >= 65, RecodeAge := 4]
TAP_QF(DataBase, DataBase$RecodeAge)
La première étape du redressement est la création d’un objet non pondéré. L’argument “ids=~1” signifie qu’il s’agit d’un échantillon indépendant.
# Création d'un objet non redressé.
library(survey)
data.unweighted <- svydesign(ids=~1, data=DataBase)
La seconde étape consiste à fixer la distribution la population (calculée via les données de l’INSEE). Pour cela, on crée un tableau où chaque modalité est associée à sa fréquence correspondante :
# Définition de la structure de la population.
Q1.dist <- data.frame(Q1 = c("1", "2"),
Freq = nrow(DataBase) * c(0.476, 0.524))
RecodeAge.dist <- data.frame(RecodeAge = c("1", "2", "3", "4"),
Freq = nrow(DataBase) * c(0.25, 0.243, 0.244, 0.263))
La 3ième étape est le calcul des poids. 3 informations sont nécessaires :
- Design: C’est notre objet sans redressement, créé précedemment.
- Sample Margin: C’est les variables à suivre pour le redressement.
- Population Margin: C’est les distributions à atteindre.
# Lier la strucutre de la pop à l'échantillon --> Calcul des poids
data.rake <- rake(design = data.unweighted,
sample.margins = list(~Q1, ~RecodeAge),
population.margins = list(Q1.dist, RecodeAge.dist))
Enfin, pour la 4ième et dernière étape, il faut ajouter les poids dans notre base de données.
# Ajouter les poids à la database
DataBase$weight <- weights(data.rake)
5.2.3. Première table redressée
Les poids sont maintenant calculés. Pour vérifier que le redressement a bien convergé vers la population cible, je vous propose de reprendre la traintement de la question 1. Nous avions :
DataBase %>%
tab_cells(Q1) %>% # Question à traiter
tab_stat_cases(total_row_position = "above") %>% # Effectif
tab_stat_cpct(total_statistic="u_cpct", total_row_position = "above") %>% # Pourcentage
tab_pivot(stat_position = "inside_columns") # Création de la table.
Pour avoir cette même table redressée, il faut ajouter la ligne de code : “tab_weight(weight)”. On a donc:
DataBase %>%
tab_cells(Q1) %>% # Question à traiter
tab_weight(weight) %>% # Prise en compre des poids.
tab_stat_cases(total_row_position = "above") %>% # Effectif
tab_stat_cpct(total_statistic="u_cpct", total_row_position = "above") %>% # Pourcentage
tab_pivot(stat_position = "inside_columns") # Création de la table.
5.2.4. Conclusion
C’est bon, vous venez de calculer les différents poids pour que vos données soient représentatives de votre population cible. L’étape suivante est la création d’une table de contingence afin de voir les différences significatives. C’est ce que nous allons voir dans le prochain article.