cassionAnalyse de données

Leçon 7 sur 8

Unité · Ce que vous avez le droit de publier

L'intervalle, et la phrase qui l'entoure

Pourquoi l'intervalle des manuels donne 0,88 % pour une proportion qui ne peut pas descendre sous zéro, l'intervalle logit qui corrige cela, les 72 degrés de liberté dont vous disposez, et pourquoi deux intervalles qui se chevauchent ne signifient pas l'absence de différence.

PythonR120 minEnquête démographique et de santé (EDS)Enquête par grappes à indicateurs multiples (MICS)Enquête SMARTObjectifs de développement durable (ODD)

À quoi sert l’intervalle

Une estimation d’enquête est une conjecture sur une population, faite à partir d’un échantillon. L’intervalle de confiance est la largeur honnête de cette conjecture, et publier l’estimation ponctuelle sans lui est le mésusage le plus répandu des données d’enquête dans ce secteur.

La lecture formelle — « 95 % des intervalles construits ainsi contiendraient la vraie valeur » — est correcte et inutile en réunion. C’est la lecture opérationnelle qu’il vous faut : l’intervalle est l’ensemble des valeurs de population qui ne seraient pas surprenantes au vu de cet échantillon. Si un seuil se situe à l’intérieur de votre intervalle, votre enquête ne peut pas dire de quel côté se trouve la population.

L’intervalle des manuels, et où il échoue

p +/- z * se

Correct au milieu de la plage et faux aux extrémités. Prenez la malnutrition aiguë sévère parmi les enfants mesurés.

p, se = 0.0217, 0.0066
print(f"Wald: {p - 1.96 * se:.2%} to {p + 1.96 * se:.2%}")
p <- 0.0217; se <- 0.0066
c(p - 1.96 * se, p + 1.96 * se)

2,17 %, intervalle 0,88 % à 3,46 %. Symétrique, et la symétrie est le problème : une proportion ne peut pas être négative, et avec une estimation légèrement plus faible cet intervalle descendrait sous zéro et serait publié quand même.

L’intervalle logit

Passez à l’échelle des log-cotes, construisez l’intervalle là, revenez.

import math

logit = math.log(p / (1 - p))
se_logit = se / (p * (1 - p))
low, high = (logit - 1.96 * se_logit, logit + 1.96 * se_logit)

print(f"logit: {1 / (1 + math.exp(-low)):.2%} to {1 / (1 + math.exp(-high)):.2%}")
library(survey)
svyciprop(~I(child_muac_mm < 115), child_design, method = "logit")

1,19 % à 3,92 %. Asymétrique — plus étendu au-dessus de l’estimation qu’en dessous — ce qui est la forme correcte pour une petite proportion, et il ne peut pas sortir de l’intervalle 0-1 quelle que soit l’estimation.

Employez l’intervalle logit pour toute proportion sous 10 % environ ou au-dessus de 90 %. Au milieu, les deux concordent à la décimale près et cela n’a pas d’importance. svyciprop(..., method = "logit") sous R le fait directement ; les exemples Python de ce cours le calculent comme ci-dessus.

Les degrés de liberté dont vous disposez réellement

Le 1,96 suppose une loi normale, ce qui suppose beaucoup d’observations indépendantes. Dans une enquête en grappes, les unités indépendantes sont les grappes, non les ménages.

df = number of PSUs - number of strata
clusters = survey["ea_id"].nunique()
strata = survey["stratum"].nunique()
print(f"{clusters} clusters, {strata} strata, df = {clusters - strata}")
c(clusters = n_distinct(survey$ea_id), strata = n_distinct(survey$stratum))
degf(design)

Soixante-quinze grappes, trois strates, 72 degrés de liberté, et t(0,975 ; 72) vaut 1,993 plutôt que 1,96. Une différence de 2 % sur la largeur de l’intervalle, ici sans importance, et c’est exactement le genre de chose qui cesse vite d’être sans importance — une enquête à douze grappes a neuf degrés de liberté et un multiplicateur de 2,26, soit 15 % de plus que l’approximation normale.

Employez le multiplicateur t, et rapportez les degrés de liberté. Cela ne coûte rien et cela dit au lecteur combien de grappes vous aviez sans qu’il ait à le demander.

Des intervalles qui se chevauchent ne constituent pas un test

Le contresens le plus lourd de conséquences de cette leçon.

for stratum in ["urban", "rural-accessible", "rural-remote"]:
    print(stratum)   # displaced households
Strate Déplacés Intervalle 95 %
Urbain 15,6 % 12,0 – 19,2 %
Rural accessible 8,0 % 4,7 – 11,3 %
Rural reculé 15,7 % 11,0 – 20,4 %

Les intervalles urbain et rural accessible ne se chevauchent pas, donc ces deux-là diffèrent. Urbain et rural reculé se chevauchent presque entièrement, donc ces deux-là ne diffèrent pas de façon détectable.

Vient maintenant le piège — deux intervalles qui se chevauchent légèrement peuvent malgré tout différer significativement. Comparer des intervalles est un test plus grossier que comparer la différence, car la différence a sa propre erreur type, plus petite que la somme des deux.

svyttest(I(displacement_status == "displaced") ~ I(stratum == "urban"),
         subset(design, stratum != "rural-remote"))
# The difference of two estimates, with its own standard error
diff = p_urban - p_rural
se_diff = math.sqrt(se_urban**2 + se_rural**2)
print(f"difference {diff:.1%}, 95% CI {diff - 1.99 * se_diff:.1%} to "
      f"{diff + 1.99 * se_diff:.1%}")

La règle — pour comparer deux estimations, estimez la différence et mettez un intervalle dessus. Lire deux intervalles est une étape de tri, pas une conclusion.

Remarquez aussi que la ligne Python ci-dessus suppose les deux estimations indépendantes, ce qui est vrai pour des strates séparées et faux pour deux sous-groupes d’une même strate — dans ce cas le terme de covariance compte, et svyttest ou svycontrast le traite correctement.

Arrondis et fausse précision

Un intervalle de ±3,6 points ne soutient pas trois décimales.

print(f"{p:.1%} (95% CI {low:.1%} to {high:.1%})")
sprintf("%.1f%% (95%% CI %.1f-%.1f)", 100 * p, 100 * low, 100 * high)
  • Une décimale pour un pourcentage issu d’une enquête de cette taille. Deux laissent entendre une précision de 0,01 point, cent fois plus étroite que votre intervalle.
  • Arrondissez l’intervalle vers l’extérieur, jamais vers l’intérieur. 25,47-32,71 devient 25,4-32,8.
  • N’arrondissez jamais l’estimation ponctuelle jusqu’à un seuil. Une estimation de 14,96 % rapportée « 15 % » à côté d’un seuil d’urgence de 15 % a pris une décision de classification par arrondi.

La phrase

Le nombre, l’intervalle, le dénominateur, le plan. Une phrase, et c’est le livrable de tout ce cours.

L’insécurité alimentaire des ménages est estimée à 29,1 % (IC 95 % 25,5-32,7), sur 996 ménages répartis dans 75 grappes, pondérés selon la base de sondage et ajustés pour la non-réponse ; effet de plan 1,60, échantillon effectif 623.

Comparez avec ce qui se publie d’ordinaire.

L’insécurité alimentaire touche 32,8 % des ménages.

La seconde phrase est non pondérée, sans intervalle, sans dénominateur et sans plan. Elle est aussi 3,7 points plus haute, et c’est elle qui sera citée.

Lire un intervalle face à un seuil

La question que ce secteur pose le plus souvent, et celle pour laquelle l’intervalle existe.

THRESHOLD = 0.15

if high < THRESHOLD:
    verdict = "below the threshold"
elif low > THRESHOLD:
    verdict = "above the threshold"
else:
    verdict = "cannot be distinguished from the threshold"
print(verdict)
dplyr::case_when(
  high < 0.15 ~ "below the threshold",
  low  > 0.15 ~ "above the threshold",
  TRUE        ~ "cannot be distinguished from the threshold"
)

La troisième branche est celle qu’on supprime, et c’est la réponse honnête la plus fréquente. Une estimation de 14,2 % assortie d’un intervalle de 11,0-18,1 ne dit pas que la situation est sous le seuil d’urgence ; elle dit que l’enquête ne peut pas trancher. Cette phrase est mal accueillie, exacte, et considérablement moins chère qu’une réponse dimensionnée sur un chiffre incapable de porter la décision.

La suite

L’intervalle dit ce que votre échantillon entier permet. Découpez-le en districts, groupes d’âge et sexes et chaque morceau permet bien moins. La dernière leçon dit où cesser de découper, et comment l’énoncer dans un tableau.

Animer cette leçon

La leçon en diaporama, la prose étant reléguée dans les notes du présentateur plutôt que projetée. Produit à partir de cette page, dont il ne peut donc pas s'écarter.

Lancer le diaporamaLire les diapositives

Le PDF ne requiert aucun logiciel et se projette depuis n'importe quel poste. Le fichier PowerPoint est fait pour être modifié : appliquez la charte de votre organisation, retirez une section pour une séance plus courte, ou fusionnez deux leçons en atelier.