10  Décrire une variable : du fichier à un portrait interprétable

ImportantQuestion de départ

Comment transformer une colonne en information substantielle, tout en distinguant ce qui décrit les répondants de ce qui estime une caractéristique de la population ?

10.1 Objectifs d’apprentissage

À la fin de ce chapitre, vous saurez :

  • choisir un résumé adapté à une variable nominale, ordinale, quantitative ou de comptage ;
  • distinguer effectif brut, pourcentage brut et estimation pondérée ;
  • décrire conjointement position, dispersion, forme et valeurs manquantes ;
  • utiliser svymean() et svyquantile() avec un plan d’enquête ;
  • construire un petit tableau descriptif qui sépare clairement N observé et paramètre estimé ;
  • rédiger un résultat descriptif complet plutôt qu’énumérer des sorties R ;
  • commencer à construire un portrait sociologique sans transformer une description en explication causale.

10.2 Décrire n’est pas « demander une moyenne »

Une description statistique répond à trois questions successives :

  1. Que représente la variable ? catégorie, ordre, quantité, compte, score ?
  2. Quel aspect de sa distribution est pertinent ? fréquence, centre, dispersion, asymétrie, valeurs extrêmes ?
  3. Quel est l’objet de la description ? les lignes observées ou une population visée par le plan d’enquête ?
Variable Nature Résumés de départ
sexe_f nominale effectifs, proportions
diplome_4 catégorielle ordonnée distribution des modalités
age quantitative moyenne, médiane, quantiles, dispersion
revenu_mensuel quantitative asymétrique possible médiane, quartiles, moyenne
livres_12m comptage zéros, médiane, moyenne, dispersion
satisfaction_vie échelle 0–10 distribution, moyenne, médiane
NoteUne statistique n’est jamais auto-interprétable

Une moyenne n’est informative que si l’on connaît l’unité, l’univers de la question, le traitement des valeurs manquantes et la population à laquelle elle se rapporte.

10.3 Un premier portrait : ce qui est observé et ce qui est estimé

Avant de détailler chaque cas, construisons un tableau très compact. L’objectif n’est pas d’afficher tout ce que R sait calculer, mais de rendre visibles quatre informations : combien de réponses sont disponibles, combien manquent, quel est le résumé brut et quelle est l’estimation pondérée.

Afficher le code R
est_age <- survey::svymean(~age, design, na.rm = TRUE)
est_revenu <- survey::svymean(~revenu_mensuel, design, na.rm = TRUE)
est_sat <- survey::svymean(~satisfaction_vie, design, na.rm = TRUE)
est_sport <- survey::svymean(~sport_regulier, design, na.rm = TRUE)

portrait <- tibble::tibble(
  Variable = c(
    "Âge (ans)",
    "Revenu mensuel net (€)",
    "Satisfaction de vie (0–10)",
    "Sport au moins hebdomadaire"
  ),
  `N disponible` = c(
    sum(!is.na(enqueter$age)),
    sum(!is.na(enqueter$revenu_mensuel)),
    sum(!is.na(enqueter$satisfaction_vie)),
    sum(!is.na(enqueter$sport_regulier))
  ),
  `Valeurs manquantes` = c(
    sum(is.na(enqueter$age)),
    sum(is.na(enqueter$revenu_mensuel)),
    sum(is.na(enqueter$satisfaction_vie)),
    sum(is.na(enqueter$sport_regulier))
  ),
  `Résumé brut` = c(
    paste0(fmt_num(mean(enqueter$age, na.rm = TRUE), .1), " ans"),
    fmt_euro(mean(enqueter$revenu_mensuel, na.rm = TRUE), 1),
    fmt_num(mean(enqueter$satisfaction_vie, na.rm = TRUE), .1),
    fmt_pct(mean(enqueter$sport_regulier, na.rm = TRUE), .1)
  ),
  `Estimation pondérée` = c(
    paste0(fmt_num(coef(est_age)[1], .1), " ans"),
    fmt_euro(coef(est_revenu)[1], 1),
    fmt_num(coef(est_sat)[1], .1),
    fmt_pct(coef(est_sport)[1], .1)
  )
)

knitr::kable(portrait, align = c("l", "r", "r", "r", "r"))
Variable N disponible Valeurs manquantes Résumé brut Estimation pondérée
Âge (ans) 3568 24 46,0 ans 46,2 ans
Revenu mensuel net (€) 3266 326 2 212 € 2 203 €
Satisfaction de vie (0–10) 3543 49 6,8 6,8
Sport au moins hebdomadaire 3540 52 32,0% 31,9%

Ce tableau permet déjà deux lectures. D’une part, les estimations brutes et pondérées sont ici relativement proches pour plusieurs variables ; d’autre part, le nombre de valeurs disponibles varie selon l’indicateur. Une faible différence brut/pondéré n’autorise pas à oublier le design : elle indique seulement que, pour ce paramètre précis et ce jeu de données, la correction de composition modifie peu le point estimé.

10.4 Variable quantitative : centre, dispersion et précision

10.4.1 L’âge : décrire les personnes puis estimer une moyenne

Afficher le code R
age_brut <- enqueter |>
  summarise(
    `N disponible` = sum(!is.na(age)),
    Moyenne = mean(age, na.rm = TRUE),
    Médiane = median(age, na.rm = TRUE),
    `Écart-type` = sd(age, na.rm = TRUE),
    Q1 = quantile(age, .25, na.rm = TRUE),
    Q3 = quantile(age, .75, na.rm = TRUE),
    Minimum = min(age, na.rm = TRUE),
    Maximum = max(age, na.rm = TRUE)
  ) |>
  mutate(across(where(is.numeric), ~round(.x, 1)))

knitr::kable(age_brut)
N disponible Moyenne Médiane Écart-type Q1 Q3 Minimum Maximum
3568 46 46 15.1 35 57 18 79

La moyenne et la médiane renseignent le centre, mais pas la même propriété. L’écart-type décrit la dispersion autour de la moyenne ; l’intervalle interquartile décrit la moitié centrale de la distribution. Lorsque ces résumés racontent des histoires très différentes, la forme de la distribution doit être examinée avant de rédiger.

Passons à l’estimation issue du plan :

Afficher le code R
ci_age <- confint(est_age)

tibble::tibble(
  Estimation = as.numeric(coef(est_age)[1]),
  `Erreur standard` = as.numeric(SE(est_age)[1]),
  `IC 95 % — bas` = ci_age[1, 1],
  `IC 95 % — haut` = ci_age[1, 2]
) |>
  mutate(across(everything(), ~round(.x, 2))) |>
  knitr::kable()
Estimation Erreur standard IC 95 % — bas IC 95 % — haut
46.18 0.25 45.69 46.68

Une formulation de résultat est alors : dans la population représentée par le dispositif synthétique, l’âge moyen pondéré est estimé à 46,2 ans (IC 95 % : 45,7–46,7).

La phrase précise le paramètre visé et son incertitude. Elle est plus informative que « l’âge moyen vaut X ».

10.5 Variable catégorielle : faire apparaître le dénominateur

Pour le diplôme, une bonne table réunit les effectifs observés et les proportions pondérées plutôt que de juxtaposer deux sorties difficiles à comparer.

Afficher le code R
brut_diplome <- enqueter |>
  filter(!is.na(diplome_4)) |>
  count(diplome_4) |>
  mutate(part_brute = n / sum(n))

est_diplome <- survey::svymean(~diplome_4, design, na.rm = TRUE)
ci_diplome <- confint(est_diplome)

pond_diplome <- tibble::tibble(
  diplome_4 = levels(enqueter$diplome_4),
  proportion_ponderee = as.numeric(coef(est_diplome)),
  bas = ci_diplome[, 1],
  haut = ci_diplome[, 2]
)

tab_diplome <- brut_diplome |>
  left_join(pond_diplome, by = "diplome_4") |>
  transmute(
    `Niveau de diplôme` = diplome_4,
    `N observé` = n,
    `Part brute` = fmt_pct(part_brute, .1),
    `Part pondérée` = fmt_pct(proportion_ponderee, .1),
    `IC 95 %` = paste0(fmt_pct(bas, .1), " – ", fmt_pct(haut, .1))
  )

knitr::kable(tab_diplome, align = c("l", "r", "r", "r", "r"))
Niveau de diplôme N observé Part brute Part pondérée IC 95 %
Inférieur au bac 1601 45,4% 46,0% 44,2% – 47,8%
Bac 703 19,9% 19,7% 18,3% – 21,1%
Bac+2 548 15,5% 15,4% 14,1% – 16,7%
Supérieur long 676 19,2% 18,9% 17,3% – 20,6%
AstuceRéflexe de rédaction

Écrivez « dans l’échantillon » lorsque vous décrivez les lignes observées et « estimation pondérée » ou « dans la population représentée par le plan » lorsque vous utilisez l’objet design.

L’effectif brut reste indispensable : il indique la quantité d’information réellement observée. La proportion pondérée répond à une autre question : elle repondère cette information selon le plan. Un poids ne crée pas des observations supplémentaires.

10.6 Variable quantitative asymétrique : moyenne et médiane ne sont pas concurrentes

Le revenu constitue un bon exemple. La moyenne décrit une moyenne arithmétique sensible à la partie haute de la distribution ; la médiane localise l’individu situé au centre. Les deux peuvent être utiles, mais elles ne doivent pas être présentées comme deux estimations interchangeables d’une même chose.

Afficher le code R
revenu_brut <- enqueter |>
  summarise(
    `N disponible` = sum(!is.na(revenu_mensuel)),
    `Taux manquant` = mean(is.na(revenu_mensuel)),
    Moyenne = mean(revenu_mensuel, na.rm = TRUE),
    Médiane = median(revenu_mensuel, na.rm = TRUE),
    Q1 = quantile(revenu_mensuel, .25, na.rm = TRUE),
    Q3 = quantile(revenu_mensuel, .75, na.rm = TRUE)
  )

q_revenu <- survey::svyquantile(
  ~revenu_mensuel,
  design,
  quantiles = c(.25, .5, .75),
  na.rm = TRUE,
  ci = TRUE
)

revenu_brut |>
  transmute(
    `N disponible`,
    `Taux manquant` = fmt_pct(`Taux manquant`, .1),
    `Moyenne brute` = fmt_euro(Moyenne, 1),
    `Médiane brute` = fmt_euro(Médiane, 1),
    `Q1 brut` = fmt_euro(Q1, 1),
    `Q3 brut` = fmt_euro(Q3, 1)
  ) |>
  knitr::kable()
N disponible Taux manquant Moyenne brute Médiane brute Q1 brut Q3 brut
3266 9,1% 2 212 € 2 250 € 1 700 € 2 750 €

L’objet q_revenu contient les quantiles pondérés et leur incertitude. Pour un rapport, on afficherait uniquement les quantiles nécessaires au message, pas l’ensemble de l’objet R.

Afficher le code R
q_revenu
$revenu_mensuel
     quantile ci.2.5 ci.97.5       se
0.25     1700   1650    1750 25.04302
0.5      2250   2250    2300 12.52151
0.75     2750   2750    2800 12.52151

attr(,"hasci")
[1] TRUE
attr(,"class")
[1] "newsvyquantile"

Le taux de non-réponse sur le revenu doit être annoncé : une statistique très précise en apparence peut reposer sur un sous-ensemble sélectionné des répondants. Le traitement de ce problème sera approfondi au chapitre 21.

10.7 Une proportion est une moyenne d’indicateur

La pratique sportive régulière a été définie comme une pratique au moins hebdomadaire (sport_freq égal à 3 ou 4). Pour une variable 0/1, la moyenne correspond à la proportion de 1.

Afficher le code R
ci_sport <- confint(est_sport)

sport_p <- as.numeric(coef(est_sport)[1])
sport_low <- as.numeric(ci_sport[1, 1])
sport_high <- as.numeric(ci_sport[1, 2])

tibble::tibble(
  `N observé` = sum(!is.na(enqueter$sport_regulier)),
  `Part brute` = fmt_pct(mean(enqueter$sport_regulier, na.rm = TRUE), .1),
  `Part pondérée` = fmt_pct(sport_p, .1),
  `IC 95 %` = paste0(fmt_pct(sport_low, .1), " – ", fmt_pct(sport_high, .1))
) |>
  knitr::kable()
N observé Part brute Part pondérée IC 95 %
3540 32,0% 31,9% 30,3% – 33,5%

Dans le dispositif synthétique, la proportion pondérée de pratique sportive au moins hebdomadaire est estimée à 31,9% (IC 95 % : 30,3%–33,5%).

10.8 Décrire une distribution, pas seulement un centre

Une même moyenne peut résumer des distributions très différentes. Pour une variable quantitative, une description solide combine généralement :

  • l’effectif effectivement analysé ;
  • une mesure de centre ;
  • une mesure de dispersion ;
  • l’étendue ou quelques quantiles ;
  • une information sur les valeurs manquantes ;
  • une visualisation lorsque la forme importe.

Pour une variable catégorielle, elle combine :

  • les catégories et leur ordre éventuel ;
  • les effectifs non pondérés ;
  • les proportions pertinentes ;
  • le dénominateur ;
  • la présence de valeurs manquantes.

La règle n’est pas « toujours afficher davantage ». Il faut plutôt afficher ce qui permet au lecteur de comprendre ce que le résumé cache.

10.9 Première lecture sociologique du fil rouge

Une description univariée n’est pas encore une analyse de stratification. Elle permet néanmoins d’identifier les dimensions qui méritent d’être mises en relation : structure d’âge, niveau de diplôme, ressources économiques, santé, pratiques sportives, consommation culturelle et confiance institutionnelle.

NoteLecture sociologique

Le premier geste sociologique consiste ici à repérer la structure des distributions : quelles ressources sont rares ou concentrées ? quelles pratiques concernent une minorité ou une majorité ? quelles variables sont suffisamment hétérogènes pour que des comparaisons aient un sens ? Le chapitre suivant passera des distributions aux gradients entre groupes.

AvertissementCe que nous ne pouvons pas conclure

enqueter est synthétique. Ses ordres de grandeur ne décrivent pas la France. Même avec une enquête réelle, une description univariée ne permettrait pas d’attribuer une distribution à un mécanisme causal ni d’expliquer pourquoi certains groupes occupent davantage certaines positions.

10.10 De la sortie R à une phrase de résultat

Une phrase descriptive de qualité contient au minimum l’indicateur, la population ou l’échantillon, l’estimation et, lorsque pertinent, l’incertitude.

Éviter :

L’âge est de 46,2.

Préférer :

L’âge moyen pondéré est estimé à 46,2 ans dans la population représentée par le plan d’enquête ; l’IC à 95 % s’étend de 45,7 à 46,7 ans.

Éviter également :

31,9 % font du sport.

Préférer :

La pratique sportive au moins hebdomadaire est estimée à 31,9% parmi la population représentée par le plan ; l’incertitude d’échantillonnage est donnée par l’IC à 95 % [30,3% ; 33,5%].

Cette manière d’écrire prépare les chapitres d’inférence : le chiffre n’est jamais séparé de ce qu’il estime.

10.11 Mini-exercice

Pour revenu_mensuel, calculez moyenne, médiane, quartiles, nombre de réponses disponibles et taux de valeurs manquantes. Rédigez ensuite deux phrases : l’une destinée à une note descriptive, l’autre à une légende de tableau.

Une bonne réponse ne choisit pas automatiquement la moyenne ou la médiane. Elle décrit la forme et explicite le nombre de valeurs disponibles. Si la distribution est asymétrique, médiane et quartiles sont particulièrement utiles ; la moyenne peut rester pertinente pour certaines questions.

10.12 Exercice de synthèse

10.12.1 Niveau A — Appliquer

Décrivez sexe_f, diplome_4, age, revenu_mensuel et satisfaction_vie avec des indicateurs adaptés.

10.12.2 Niveau B — Choisir

Pour chaque variable, indiquez ce que vous publieriez dans :

  1. une fiche descriptive de l’échantillon ;
  2. un tableau estimant la population cible.

10.12.3 Niveau C — Analyser

Comparez brut et pondéré pour l’âge, le diplôme et l’emploi. Rédigez un paragraphe expliquant les écarts sans utiliser la valeur-p : l’objectif reste descriptif. Distinguez explicitement ce qui relève de la composition de l’échantillon de ce qui relève du paramètre pondéré.

10.13 À retenir

  • Le type conceptuel de la variable guide le résumé.
  • Décrire signifie combiner centre, dispersion, forme, valeurs manquantes et dénominateur.
  • Un effectif brut et une proportion pondérée peuvent apparaître ensemble, à condition d’être clairement distingués.
  • Un poids modifie la contribution d’une observation ; il n’augmente pas le nombre de personnes effectivement observées.
  • svymean() et svyquantile() utilisent le plan d’enquête pour l’estimation et l’incertitude (Lumley et al. 2026; Lumley 2010).
  • Une phrase statistique doit dire ce qui est estimé et pour qui.
  • La description constitue le point de départ d’une interprétation sociologique, pas son aboutissement.

10.14 Pour aller plus loin

Le chapitre suivant passe de la description d’une variable à l’étude des relations entre variables. Nous y utiliserons le même fil rouge pour montrer comment se construisent des gradients sociaux avant tout test ou modèle.