Al analizar datos clínicos o de encuestas, es común usar variables de ponderación, como el IPW (Inverse Probability Weighting), para ajustar la representatividad de la muestra.
Una confusión común surge al intentar obtener un "número de sujetos ponderado" utilizando el procedimiento PROC SUMMARY. A diferencia de PROC FREQ, el uso de la sentencia WEIGHT en PROC SUMMARY no modifica automáticamente el recuento de frecuencias (_FREQ_) en la tabla de salida.
A continuación se explica cómo entender este comportamiento y obtener el resultado deseado.
El problema: La sentencia WEIGHT no cambia el FREQ
Si simplemente añade una sentencia WEIGHT a su procedimiento, notará que la variable _FREQ_ en la tabla de salida sigue contando el número de observaciones físicas (las filas), y no la suma de los pesos.
Código que no produce el resultado esperado:
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 */
El enfoque más directo y a menudo el más claro para obtener un "recuento ponderado" es tratar su variable de peso como una variable de análisis estándar y solicitar su suma.
Al sumar los pesos, se obtiene el equivalente a un recuento ponderado de la población.
Código recomendado:
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;
Este método es simple y evita cualquier confusión sobre la naturaleza de las estadísticas producidas.
Solución 2: Utilizar la estadística SUMWGT
Si insiste en utilizar la sentencia WEIGHT (por ejemplo, si está calculando simultáneamente medias ponderadas de otras variables), debe solicitar explícitamente la estadística SUMWGT (Suma de los Pesos) en la sentencia OUTPUT.
Código alternativo:
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;
Nota importante: FREQ vs WEIGHT
Es crucial distinguir la sentencia FREQ de la sentencia WEIGHT:
FREQ: Se utiliza cuando la variable representa un número entero de ocurrencias (por ejemplo, "esta fila representa 5 pacientes idénticos"). Esto cambia el tamaño de la muestra ($N$).
WEIGHT: Se utiliza para ponderaciones estadísticas (a menudo no enteras como el IPW). Esto afecta el cálculo de la varianza y las medias, pero no "duplica" las observaciones físicas.
En resumen, para obtener un total ponderado en PROC SUMMARY, simplemente calcule la suma de su variable de ponderación.
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.