Exemple de Régression Logistique avec PROC SURVEYLOGISTIC
En attente de validation
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é !
proc format;
value Class
1='Freshman' 2='Sophomore'
3='Junior' 4='Senior';
run;
1
PROC FORMAT;
2
value Class
3
1='Freshman'2='Sophomore'
4
3='Junior'4='Senior';
5
RUN;
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é !
data Enrollment;
format Class Class.;
input Class _TOTAL_;
datalines;
1 3734
2 3565
3 3903
4 4196
;
run;
1
DATA Enrollment;
2
FORMAT Class Class.;
3
INPUT Class _TOTAL_;
4
DATALINES;
5
13734
6
23565
7
33903
8
44196
9
;
10
RUN;
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é !
proc format;
value Design 1='A' 2='B' 3='C';
value Rating
1='dislike very much'
2='dislike'
3='neutral'
4='like'
5='like very much';
run;
1
PROC 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';
9
RUN;
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.
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;
12
1034351615821232622510243021
13
11425233711142034211619302312
14
191226182511142433181018322317
15
815353012152234920234301816
16
;
17
RUN;
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é !
data WebSurvey;
set WebSurvey;
if Class=1 then Weight=3734/300;
if Class=2 then Weight=3565/300;
if Class=3 then Weight=3903/300;
if Class=4 then Weight=4196/300;
run;
1
DATA WebSurvey;
2
SET WebSurvey;
3
IF Class=1THEN Weight=3734/300;
4
IF Class=2THEN Weight=3565/300;
5
IF Class=3THEN Weight=3903/300;
6
IF Class=4THEN Weight=4196/300;
7
RUN;
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é !
proc print data=WebSurvey(obs=20);
run;
1
PROC PRINTDATA=WebSurvey(obs=20);
2
RUN;
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é !
proc surveylogistic data=WebSurvey total=Enrollment;
stratum Class;
freq Count;
class Design;
model Rating (order=internal) = design;
weight Weight;
run;
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é !
proc surveylogistic data=WebSurvey total=Enrollment;
stratum Class;
freq Count;
class Design;
model Rating (ref='neutral') = Design /link=glogit;
weight Weight;
run;
model Rating (ref='neutral') = Design /link=glogit;
6
weight Weight;
7
RUN;
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
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.