Comment obtenir des comptages pondérés avec PROC SUMMARY ?
Simon 13 vues
Niveau de difficulté
Confirmé
Publié le :
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é.
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 :
proc summary data=a1 chartype completetypes;
class treatment;
types treatment;
weight IPW; /* Cette instruction n'altère pas le _FREQ_ de sortie */
output out=ae_1;
quit;
1
PROC SUMMARYDATA=a1 chartype completetypes;
2
class treatment;
3
types treatment;
4
weight IPW; /* Cette instruction n'altère pas le _FREQ_ de sortie */
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é :
proc summary data=a1 chartype completetypes;
class treatment;
types treatment;
var IPW; /* On déclare la variable de poids comme variable d'analyse */
output out=ae_1 sum=sum_weights; /* La somme des poids = comptage pondéré */
quit;
1
PROC SUMMARYDATA=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é */
6
QUIT;
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 :
proc summary data=a1 chartype;
class treatment;
weight IPW;
/* On demande spécifiquement la statistique sumwgt */
output out=ae_1 sumwgt=sum_weights;
quit;
1
PROC SUMMARYDATA=a1 chartype;
2
class treatment;
3
weight IPW;
4
/* On demande spécifiquement la statistique sumwgt */
5
OUTPUT out=ae_1 sumwgt=sum_weights;
6
QUIT;
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.
Avertissement important
Les codes et exemples fournis sur WeAreCAS.eu sont à but pédagogique. Il est impératif de ne pas les copier-coller aveuglément sur vos environnements de production. La meilleure approche consiste à comprendre la logique avant de l'appliquer. Nous vous recommandons vivement de tester ces scripts dans un environnement de test (Sandbox/Dev). WeAreCAS décline toute responsabilité quant aux éventuels impacts ou pertes de données sur vos systèmes.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.