SAS9

Comment obtenir des comptages pondérés avec PROC SUMMARY ?

Simon 13 vues
Niveau de difficulté
Confirmé
Publié le :
Stéphanie

Le conseil de l'expert

Stéphanie

a confusion est classique : l'instruction FREQ multiplie physiquement les lignes (taille de l'échantillon N), tandis que WEIGHT ajuste l'importance statistique (variance/moyenne) sans toucher au nombre d'observations. Pour un simple comptage pondéré dans PROC SUMMARY, ignorez la colonne _FREQ_ et demandez explicitement la somme de votre variable de poids (SUM ou SUMWGT)

Lors de l'analyse de données cliniques ou d'enquêtes, il est fréquent d'utiliser des variables de pondération, telles que l'IPW (Inverse Probability Weighting), pour ajuster la représentativité de l'échantillon.

Une confusion courante survient lorsque l'on tente d'obtenir un "nombre de sujets pondéré" en utilisant la procédure PROC SUMMARY. Contrairement à PROC FREQ, l'utilisation de l'instruction WEIGHT dans PROC SUMMARY ne modifie pas automatiquement le comptage des fréquences (_FREQ_) dans la table de sortie.

Voici comment comprendre ce comportement et obtenir le résultat souhaité.

Comment obtenir des comptages pondérés avec PROC SUMMARY ? -

Le problème : L'instruction WEIGHT ne change pas le FREQ

Si vous ajoutez simplement une instruction WEIGHT à votre procédure, vous remarquerez que la variable _FREQ_ dans la table de sortie continue de compter le nombre d'observations physiques (les lignes), et non la somme des poids.

Code qui ne produit pas le résultat attendu :

1PROC SUMMARY DATA=a1 chartype completetypes;
2 class treatment;
3 types treatment;
4 weight IPW; /* Cette instruction n'altère pas le _FREQ_ de sortie */
5 OUTPUT out=ae_1;
6QUIT;

Dans cet exemple, SAS© utilise bien les poids pour calculer des statistiques comme la moyenne ou la variance, mais le comptage brut reste inchangé.

La Solution 1 : Sommer la variable de pondération

L'approche la plus directe et souvent la plus claire pour obtenir un "comptage pondéré" est de traiter votre variable de poids comme une variable d'analyse standard et d'en demander la somme.

En sommant les poids, vous obtenez l'équivalent d'un comptage pondéré de la population.

Code recommandé :

1PROC SUMMARY DATA=a1 chartype completetypes;
2 class treatment;
3 types treatment;
4 var IPW; /* On déclare la variable de poids comme variable d'analyse */
5 OUTPUT out=ae_1 sum=sum_weights; /* La somme des poids = comptage pondéré */
6QUIT;
Cette méthode est simple et évite toute confusion sur la nature des statistiques produites.

La Solution 2 : Utiliser la statistique SUMWGT

Si vous tenez à utiliser l'instruction WEIGHT (par exemple, si vous calculez simultanément des moyennes pondérées d'autres variables), vous devez demander explicitement la statistique SUMWGT (Somme des Poids) dans l'instruction OUTPUT.

Code alternatif :

1PROC SUMMARY DATA=a1 chartype;
2 class treatment;
3 weight IPW;
4 /* On demande spécifiquement la statistique sumwgt */
5 OUTPUT out=ae_1 sumwgt=sum_weights;
6QUIT;

Note importante : FREQ vs WEIGHT

Il est crucial de distinguer l'instruction FREQ de l'instruction WEIGHT :

  • FREQ : S'utilise lorsque la variable représente un nombre entier d'occurrences (par exemple, "cette ligne représente 5 patients identiques"). Cela change la taille de l'échantillon ($N$).

  • WEIGHT : S'utilise pour des pondérations statistiques (souvent non entières comme l'IPW). Cela affecte le calcul de la variance et des moyennes, mais ne "duplique" pas les observations physiques.

En résumé, pour obtenir un total pondéré dans PROC SUMMARY, calculez simplement la somme de votre variable de pondération.