Sondages complexes : Ne négligez plus vos poids de sondage ! Guide complet de SURVEYLOGISTIC

Niveau de difficulté
Confirmé
Publié le :
Simon

Le Conseil de l'Expert

Simon
Expert SAS et fondateur.

L'analyse de données d'enquête nécessite une rigueur statistique particulière pour compenser les biais d'échantillonnage, et la procédure PROC SURVEYLOGISTIC est l'outil de référence pour intégrer ces complexités. Ce script illustre parfaitement la prise en compte d'un plan de sondage stratifié : en utilisant l'instruction STRATUM combinée aux poids de sondage (WEIGHT), vous garantissez que vos estimations d'erreurs types sont corrigées pour refléter la réalité de la population totale (définie ici dans la table Enrollment), et non seulement celle de l'échantillon répondant.

L'expertise technique réside ici dans le choix de la fonction de lien au sein de l'instruction MODEL. Le premier modèle utilise un logit cumulatif par défaut, idéal pour une variable dépendante ordinale (comme une échelle de Likert). Cependant, le passage au Logit Généralisé (link=glogit) dans le second modèle est une démarche d'expert cruciale lorsque l'hypothèse des rapports de côtes proportionnels est rejetée. En spécifiant une catégorie de référence (ref='neutral'), vous transformez l'interprétation : vous ne comparez plus des niveaux cumulés, mais la probabilité de chaque modalité ("like", "dislike") spécifiquement par rapport à la neutralité.

Une astuce d'expert pour optimiser ce code : l'option total=Enrollment dans l'instruction PROC est fondamentale. Elle permet à SAS d'appliquer la correction pour population finie (FPC), ce qui affine la précision de vos intervalles de confiance lorsque votre échantillon représente une part significative de la population totale. Sans cette option, vos variances seraient surestimées, rendant vos tests statistiques inutilement conservateurs.

Le script prépare d'abord les données pour une analyse d'enquête. Il définit des formats pour les variables catégorielles, puis crée deux jeux de données : 'Enrollment' pour les totaux de population par strate (le niveau de classe de l'étudiant) et 'WebSurvey' pour les réponses à l'enquête. Une pondération ('Weight') est calculée et ajoutée à 'WebSurvey' pour refléter le plan d'échantillonnage. Ensuite, deux modèles de régression logistique sont exécutés avec PROC SURVEYLOGISTIC pour analyser la préférence ('Rating') en fonction du design de l'enquête ('Design'). Le premier modèle utilise la fonction de lien logit par défaut, tandis que le second spécifie un logit généralisé (glogit) et une catégorie de référence.
Analyse des données

Type : CREATION_INTERNE


Tous les jeux de données ('Enrollment' et 'WebSurvey') sont créés directement dans le script à l'aide d'étapes DATA et de l'instruction 'datalines'. Aucune source de données externe n'est requise.

1 Bloc de code
PROC FORMAT
Explication :
Ce bloc définit un format utilisateur nommé 'Class' pour associer des libellés textuels à des valeurs numériques représentant le niveau de classe des étudiants.
Copié !
1PROC FORMAT;
2 value Class
3 1='Freshman' 2='Sophomore'
4 3='Junior' 4='Senior';
5RUN;
2 Bloc de code
DATA STEP Data
Explication :
Crée le jeu de données 'Enrollment' qui contient la population totale (_TOTAL_) pour chaque strate ('Class'). Ces totaux seront utilisés par PROC SURVEYLOGISTIC pour l'ajustement.
Copié !
1DATA Enrollment;
2 FORMAT Class Class.;
3 INPUT Class _TOTAL_;
4 DATALINES;
51 3734
62 3565
73 3903
84 4196
9;
10RUN;
3 Bloc de code
PROC FORMAT
Explication :
Définit deux formats utilisateurs : 'Design' pour les différentes versions de l'enquête web et 'Rating' pour les niveaux d'évaluation donnés par les répondants.
Copié !
1PROC FORMAT;
2 value Design 1='A' 2='B' 3='C';
3 value Rating
4 1='dislike very much'
5 2='dislike'
6 3='neutral'
7 4='like'
8 5='like very much';
9RUN;
4 Bloc de code
DATA STEP Data
Explication :
Crée le jeu de données d'enquête 'WebSurvey' sous forme agrégée. Le code lit le nombre ('Count') pour chaque combinaison de 'Class', 'Design' et 'Rating'. L'opérateur '@@' permet de lire plusieurs observations à partir d'une seule ligne de données.
Copié !
1DATA WebSurvey;
2 FORMAT Class Class. Design Design. Rating Rating.;
3 DO Class=1 to 4;
4 DO Design=1 to 3;
5 DO Rating=1 to 5;
6 INPUT Count @@;
7 OUTPUT;
8 END;
9 END;
10 END;
11 DATALINES;
1210 34 35 16 15 8 21 23 26 22 5 10 24 30 21
13 1 14 25 23 37 11 14 20 34 21 16 19 30 23 12
1419 12 26 18 25 11 14 24 33 18 10 18 32 23 17
15 8 15 35 30 12 15 22 34 9 20 2 34 30 18 16
16;
17RUN;
5 Bloc de code
DATA STEP Data
Explication :
Ce bloc calcule la variable de pondération ('Weight') pour chaque observation dans 'WebSurvey'. La pondération est le ratio de la population de la strate sur la taille de l'échantillon de cette strate (supposée être de 300 ici).
Copié !
1DATA WebSurvey;
2 SET WebSurvey;
3 IF Class=1 THEN Weight=3734/300;
4 IF Class=2 THEN Weight=3565/300;
5 IF Class=3 THEN Weight=3903/300;
6 IF Class=4 THEN Weight=4196/300;
7RUN;
6 Bloc de code
PROC PRINT
Explication :
Affiche les 20 premières observations du jeu de données 'WebSurvey' pour vérification, incluant la pondération calculée.
Copié !
1PROC PRINT DATA=WebSurvey(obs=20);
2RUN;
7 Bloc de code
PROC SURVEYLOGISTIC
Explication :
Exécute une première régression logistique. 'stratum' spécifie la variable de stratification, 'freq' indique que les données sont agrégées, 'class' définit la variable explicative catégorielle, 'model' définit la relation à tester, et 'weight' applique la pondération d'échantillonnage. 'total=Enrollment' fournit les totaux de population pour l'ajustement.
Copié !
1PROC SURVEYLOGISTIC DATA=WebSurvey total=Enrollment;
2 stratum Class;
3 freq Count;
4 class Design;
5 model Rating (order=internal) = design;
6 weight Weight;
7RUN;
8 Bloc de code
PROC SURVEYLOGISTIC
Explication :
Exécute une seconde régression logistique en utilisant une fonction de lien logit généralisé ('link=glogit'), qui est appropriée pour les réponses ordinales. La catégorie de référence pour la variable de réponse 'Rating' est définie à 'neutral'.
Copié !
1PROC SURVEYLOGISTIC DATA=WebSurvey total=Enrollment;
2 stratum Class;
3 freq Count;
4 class Design;
5 model Rating (ref='neutral') = Design /link=glogit;
6 weight Weight;
7RUN;
L'Astuce Pro
Pour garantir la validité de votre modèle de régression multinomiale avec le lien GLOGIT, l astuce technique consiste à toujours spécifier une catégorie de référence via l option REF= dans l instruction MODEL : sans cela, SAS utilise par défaut la catégorie la plus élevée selon l ordre de tri, ce qui peut rendre l interprétation des rapports de cotes (Odds Ratios) confuse lorsque vous comparez les préférences (Rating) par rapport à un point de comparaison neutre.
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : S A S S A M P L E L I B R A R Y | NAME: svlex1 | TITLE: Documentation Example 1 for PROC SURVEYLOGISTIC | PRODUCT: STAT | MISC: Logistic Regression with Different Link Functions for Stratified Cluster Sampling