cassionAnalyse de données

Leçon 3 sur 8

Unité · Ce que le plan achète

Quelle précision le budget a-t-il achetée ?

La formule de taille d'échantillon, les quatre nombres qu'elle exige, et pourquoi la réponse pour une enquête en grappes vaut environ le double de celle des manuels. Plus sa lecture à l'envers, celle dont on a le plus souvent besoin.

PythonR120 minEnquête SMARTEnquête démographique et de santé (EDS)Objectifs de développement durable (ODD)

La question est toujours posée trop tard

La taille d’échantillon se décide dans une proposition, des mois avant toute analyse, et généralement par la personne qui rédige le budget. L’analyste en hérite.

Cette leçon fonctionne donc dans les deux sens. À l’endroit, pour dimensionner une enquête que vous concevez. À l’envers, pour déterminer quelle précision permet l’enquête que vous avez déjà — la version dont vous aurez le plus souvent besoin, et celle qui décide de ce que vous avez le droit de publier.

La formule, et les quatre nombres qu’elle contient

Pour une proportion :

n = z^2 * p * (1 - p) / d^2 * deff

Quatre entrées, et chacune est une décision que quelqu’un doit prendre.

  • z — le niveau de confiance. 1,96 pour 95 %. Presque jamais modifié.
  • p — la proportion attendue. Vous ne la connaissez pas, c’est l’objet de l’enquête. Prenez le tour précédent, une zone comparable, ou 0,5 si vous n’avez vraiment rien, car 0,5 maximise l’échantillon requis et constitue donc le pari prudent.
  • d — la précision voulue, en marge absolue. C’est le nombre réellement négocié, et celui que personne n’écrit.
  • deff — l’effet de plan. La leçon suivante lui est entièrement consacrée ; pour dimensionner, prenez la valeur du tour précédent ou 2,0 comme provisoire.
import math


def sample_size(p, d, deff=1.0, z=1.96, response=1.0):
    n = z**2 * p * (1 - p) / d**2 * deff
    return math.ceil(n / response)


print(sample_size(0.30, 0.05))            # simple random
print(sample_size(0.30, 0.05, deff=2.4))  # cluster survey
print(sample_size(0.30, 0.03, deff=2.4))  # tighter precision
sample_size <- function(p, d, deff = 1, z = 1.96, response = 1) {
  ceiling(z^2 * p * (1 - p) / d^2 * deff / response)
}

c(sample_size(0.30, 0.05),
  sample_size(0.30, 0.05, deff = 2.4),
  sample_size(0.30, 0.03, deff = 2.4))
p attendu Précision deff Ménages nécessaires
30 % ±5 points 1,0 323
30 % ±5 points 2,4 775
30 % ±3 points 2,4 2 152

Trois enseignements de ce tableau.

La mise en grappes plus que double l’exigence. 323 devient 775 pour la même précision. Toute taille d’échantillon qui ne mentionne pas d’effet de plan dimensionne un sondage aléatoire simple, et personne n’en réalise dans ce secteur.

La précision coûte très cher. Passer de ±5 à ±3 points triple presque l’échantillon. La précision coûte selon le carré de l’amélioration, et c’est le fait le plus utile de cette leçon quand on vous demande un chiffre plus serré.

La non-réponse est un diviseur, pas un détail. Attendre 90 % de réponse signifie diviser par 0,9 — et cela s’applique aux ménages tirés, non aux ménages enquêtés, même distinction que dans la leçon sur la pondération.

La lecture à l’envers

Vous avez 996 entretiens et un effet de plan de 1,60. Quelle précision cela achète-t-il ?

def precision(n, p, deff=1.0, z=1.96):
    return z * math.sqrt(p * (1 - p) / n * deff)


print(f"+/- {precision(996, 0.291, deff=1.60):.1%}")
print(f"+/- {precision(343, 0.464, deff=1.60):.1%}")   # rural remote alone
precision <- function(n, p, deff = 1, z = 1.96) z * sqrt(p * (1 - p) / n * deff)

c(overall = precision(996, 0.291, deff = 1.60),
  remote  = precision(343, 0.464, deff = 1.60))

Environ ±3,6 points au total, et environ ±5,3 points pour le rural reculé seul.

Faites ce calcul avant de promettre quoi que ce soit. Il dit quelles comparaisons l’enquête peut trancher et lesquelles non, et c’est le calcul qui sous-tend la dernière leçon de ce cours.

Le nombre qui se négocie réellement

C’est sur d que porte le débat, et il se mène d’ordinaire dans la mauvaise monnaie — on discute de la taille d’échantillon alors que le désaccord porte sur la précision nécessaire de la réponse.

Recadrez. La précision n’a de sens que face à une décision.

  • Un seuil à franchir. Si la question est de savoir si la MAG dépasse 15 % et que l’estimation est proche de 14 %, il faut un intervalle assez étroit pour tenir d’un seul côté de la ligne. C’est une exigence de précision chiffrée.
  • Un changement à détecter. Détecter une amélioration de cinq points entre deux tours exige environ quatre fois l’échantillon nécessaire à estimer un niveau à ±5 points, car deux estimations portent chacune leur erreur.
  • Une comparaison entre groupes. Même problème — deux intervalles, tous deux à resserrer.
# Detecting a difference between two groups of equal size
def sample_per_group(p1, p2, deff=1.0, power_z=0.84, z=1.96):
    pbar = (p1 + p2) / 2
    n = (z + power_z) ** 2 * 2 * pbar * (1 - pbar) / (p1 - p2) ** 2
    return math.ceil(n * deff)


print(sample_per_group(0.30, 0.25, deff=2.4))
sample_per_group <- function(p1, p2, deff = 1) {
  pbar <- (p1 + p2) / 2
  ceiling((1.96 + 0.84)^2 * 2 * pbar * (1 - pbar) / (p1 - p2)^2 * deff)
}

sample_per_group(0.30, 0.25, deff = 2.4)

Exécutez-le et le nombre est inconfortable. Énoncez-le tôt et à voix haute, car une enquête dimensionnée pour estimer un niveau puis utilisée pour affirmer un changement est de loin l’excès le plus fréquent du rapportage de ce secteur.

Grappes contre ménages par grappe

À budget fixe, vous arbitrez entre plus de grappes et plus de ménages dans chacune, et les deux ne se valent pas.

Plus de grappes vaut presque toujours mieux, car l’effet de plan croît avec le nombre de ménages par grappe. Trente grappes de dix valent bien mieux que dix grappes de trente pour les mêmes 300 entretiens.

La contre-pression est le coût — une grappe coûte un véhicule et une journée, un ménage coûte une heure. La convention SMART d’environ 30 grappes se situe exactement à cet arbitrage, et c’est un défaut raisonnable faute de mieux.

for m in [8, 14, 20, 30]:
    deff = 1 + (m - 1) * 0.11
    clusters = math.ceil(775 * (deff / 2.4) / m)
    print(f"{m:>3} households x {clusters:>3} clusters -> deff {deff:.2f}")
for (m in c(8, 14, 20, 30)) {
  deff <- 1 + (m - 1) * 0.11
  cat(sprintf("%3d households, deff %.2f\n", m, deff))
}

À une corrélation intra-grappe de 0,11 — la valeur mesurée sur cette enquête — quatorze ménages par grappe donnent un effet de plan dû aux grappes d’environ 2,4, et trente en donneraient 4,2. Ce quatorze est une décision de conception, pas un hasard.

Écrivez le calcul

Une taille d’échantillon est une argumentation, et elle a sa place dans le protocole d’enquête avec ses entrées visibles.

Indicator        Household food insecurity prevalence
Expected p       0.30 (2023 round, same instrument)
Precision        +/- 5 percentage points, 95% confidence
Design effect    2.0 (2023 round measured 1.9; rounded up)
Expected response 92%
Households       323 * 2.0 / 0.92 = 703, rounded to 25 clusters x 14 = 350 per
                 stratum, 1,050 in total across three strata
Rationale        Equal allocation, because each stratum must support its own
                 estimate. National figures require weighting.

Chaque nombre de ce bloc est contestable, et c’est l’intérêt. Un protocole disant « 1 050 ménages ont été enquêtés » appelle la question et ne peut pas y répondre.

La suite

Deux des quatre entrées étaient l’effet de plan, resté jusqu’ici un provisoire. La leçon suivante le mesure — d’où il vient, comment le calculer sur vos propres données, et pourquoi un résultat de cette enquête a un effet de plan inférieur à un.

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.