Comment obtenir des comptages pondérés avec PROC SUMMARY ?
Simon 13 views
Niveau de difficulté
Confirmé
Published on :
Expert Advice
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.
Important Disclaimer
The codes and examples provided on WeAreCAS.eu are for educational purposes. It is imperative not to blindly copy-paste them into your production environments. The best approach is to understand the logic before applying it. We strongly recommend testing these scripts in a test environment (Sandbox/Dev). WeAreCAS accepts no responsibility for any impact or data loss on your systems.
SAS and all other SAS Institute Inc. product or service names are registered trademarks or trademarks of SAS Institute Inc. in the USA and other countries. ® indicates USA registration. WeAreCAS is an independent community site and is not affiliated with SAS Institute Inc.
This site uses technical and analytical cookies to improve your experience.
Read more.