Le script simule des données de performance scolaire ('grade') pour des étudiants ('student') regroupés par classe ('class') au sein d'écoles ('school'). Un effet de programme ('program') est également simulé. La procédure GLIMMIX est ensuite utilisée pour ajuster un modèle mixte généralisé avec une distribution binomiale et une fonction de lien logit, en intégrant des effets aléatoires pour l'école et la classe imbriquée dans l'école. Le script présente deux exécutions similaires, la seconde ajustant le modèle avec une légère variation dans la génération des données et l'ajout de l'option `fastquad`.
Analyse des données
Type : CREATION_INTERNE
Les données 'test' sont entièrement créées dans le script à l'aide de DATA steps, simulant une structure hiérarchique (étudiants dans classes dans écoles) et des effets aléatoires.
1 Bloc de code
DATA STEP Data
Explication : Ce bloc DATA step génère un jeu de données nommé 'test'. Il simule une structure hiérarchique avec 10 écoles, 5 classes par école et 10 étudiants par classe. Des effets aléatoires 'schef' (école) et 'clsef' (classe) sont ajoutés. Une variable 'program' binaire est générée. La variable 'grade' est simulée selon une distribution binomiale, dépendant d'une probabilité 'p' calculée à partir d'une combinaison linéaire d'effets fixes et aléatoires.
Copié !
data test;
do school = 1 to 10;
schef = rannor(1234)*4;
do class = 1 to 5;
clsef = rannor(2345)*2;
program = ranbin(12345,1,.5);
do student = 1 to 10;
eta = 3 + program + schef + clsef ;
p = 1/(1+exp(-eta));
grade = ranbin(23456,1,p);
output;
end;
end;
end;
run;
1
DATA test;
2
DO school = 1 to 10;
3
schef = rannor(1234)*4;
4
DO class = 1 to 5;
5
clsef = rannor(2345)*2;
6
program = ranbin(12345,1,.5);
7
DO student = 1 to 10;
8
eta = 3 + program + schef + clsef ;
9
p = 1/(1+exp(-eta));
10
grade = ranbin(23456,1,p);
11
OUTPUT;
12
END;
13
END;
14
END;
15
RUN;
2 Bloc de code
PROC GLIMMIX
Explication : Cette procédure GLIMMIX ajuste un modèle mixte généralisé aux données 'test'. La méthode de quadrature (quad(qpoints=3)) est utilisée. Les variables 'school', 'class' et 'program' sont déclarées comme variables de classification. Le modèle spécifie 'grade' comme variable dépendante, 'program' comme effet fixe, avec une distribution binomiale et un lien logit. Des effets aléatoires ('random int') sont inclus pour 'school' et 'class' imbriquée dans 'school'.
Copié !
proc glimmix data=test method = quad(qpoints=3);
class school class program;
model grade = program/s dist=binomial link=logit solution;
random int /subject = school;
random int /subject = class(school);
run;
1
PROC GLIMMIXDATA=test method = quad(qpoints=3);
2
class school class program;
3
model grade = program/s dist=binomial link=logit solution;
4
random int /subject = school;
5
random int /subject = class(school);
6
RUN;
3 Bloc de code
DATA STEP Data
Explication : Ce second bloc DATA step est similaire au premier mais génère des données avec 10 classes par école (au lieu de 5). Il simule à nouveau une structure hiérarchique avec des effets aléatoires et la variable 'grade' selon les mêmes principes que le premier bloc.
Copié !
data test;
do school = 1 to 10;
schef = rannor(1234)*4;
do class = 1 to 10;
clsef = rannor(2345)*2;
program = ranbin(12345,1,.5);
do student = 1 to 10;
eta = 3 + program + schef + clsef ;
p = 1/(1+exp(-eta));
grade = ranbin(23456,1,p);
output;
end;
end;
end;
run;
1
DATA test;
2
DO school = 1 to 10;
3
schef = rannor(1234)*4;
4
DO class = 1 to 10;
5
clsef = rannor(2345)*2;
6
program = ranbin(12345,1,.5);
7
DO student = 1 to 10;
8
eta = 3 + program + schef + clsef ;
9
p = 1/(1+exp(-eta));
10
grade = ranbin(23456,1,p);
11
OUTPUT;
12
END;
13
END;
14
END;
15
RUN;
4 Bloc de code
PROC GLIMMIX
Explication : Cette seconde procédure GLIMMIX ajuste un modèle identique au premier, mais sur les données 'test' nouvellement générées. L'option 'fastquad' est ajoutée à la méthode de quadrature, ce qui peut potentiellement accélérer le calcul en utilisant une approximation différente des intégrales.
Copié !
proc glimmix data=test method = quad(qpoints=3 fastquad);
class school class program;
model grade = program/s dist=binomial link=logit solution;
random int /subject = school;
random int /subject = class(school);
run;
model grade = program/s dist=binomial link=logit solution;
4
random int /subject = school;
5
random int /subject = class(school);
6
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
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.