Das Skript simuliert Daten zur Schulleistung ('grade') für Schüler ('student'), die nach Klasse ('class') innerhalb von Schulen ('school') gruppiert sind. Ein Programmeffekt ('program') wird ebenfalls simuliert. Die GLIMMIX-Prozedur wird anschließend verwendet, um ein verallgemeinertes gemischtes Modell mit einer Binomialverteilung und einer Logit-Verknüpfungsfunktion anzupassen, wobei zufällige Effekte für die Schule und die in der Schule verschachtelte Klasse integriert werden. Das Skript zeigt zwei ähnliche Ausführungen, wobei die zweite das Modell mit einer geringfügigen Variation in der Datengenerierung und der Hinzufügung der Option `fastquad` anpasst.
Datenanalyse
Type : CREATION_INTERNE
Die Daten 'test' werden vollständig im Skript mit DATA Steps erstellt, die eine hierarchische Struktur (Schüler in Klassen in Schulen) und zufällige Effekte simulieren.
1 Codeblock
DATA STEP Data
Erklärung : Dieser DATA Step-Block generiert einen Datensatz namens 'test'. Er simuliert eine hierarchische Struktur mit 10 Schulen, 5 Klassen pro Schule und 10 Schülern pro Klasse. Zufällige Effekte 'schef' (Schule) und 'clsef' (Klasse) werden hinzugefügt. Eine binäre Variable 'program' wird generiert. Die Variable 'grade' wird gemäß einer Binomialverteilung simuliert, abhängig von einer Wahrscheinlichkeit 'p', die aus einer linearen Kombination von festen und zufälligen Effekten berechnet wird.
Kopiert!
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 Codeblock
PROC GLIMMIX
Erklärung : Diese GLIMMIX-Prozedur passt ein verallgemeinertes gemischtes Modell an die 'test'-Daten an. Die Quadraturmethode (quad(qpoints=3)) wird verwendet. Die Variablen 'school', 'class' und 'program' werden als Klassifikationsvariablen deklariert. Das Modell spezifiziert 'grade' als abhängige Variable, 'program' als festen Effekt, mit einer Binomialverteilung und einem Logit-Link. Zufällige Effekte ('random int') sind für 'school' und die in 'school' verschachtelte 'class' enthalten.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung : Dieser zweite DATA Step-Block ist dem ersten ähnlich, generiert jedoch Daten mit 10 Klassen pro Schule (anstelle von 5). Er simuliert erneut eine hierarchische Struktur mit zufälligen Effekten und die Variable 'grade' nach den gleichen Prinzipien wie der erste Block.
Kopiert!
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 Codeblock
PROC GLIMMIX
Erklärung : Diese zweite GLIMMIX-Prozedur passt ein identisches Modell wie die erste an, jedoch an die neu generierten 'test'-Daten. Die Option 'fastquad' wird der Quadraturmethode hinzugefügt, was potenziell die Berechnung beschleunigen kann, indem eine andere Approximation der Integrale verwendet wird.
Kopiert!
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;
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
Urheberrechtsinformationen : S A S S A M P L E L I B R A R Y
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.