Dieses Skript generiert zunächst einen simulierten Datensatz ('hair'). Anschließend werden eine Reihe von Analysen mit PROC GLIMMIX durchgeführt, um lineare und logistische Modelle mit verschiedenen Arten von Zufallseffekten (G-Seite vs. R-Seite) zu vergleichen. Schließlich werden die Daten aggregiert, um ein komplexes Modell über PROC NLMIXED anzupassen. Technischer Hinweis: Eine Inkonsistenz bei den Variablen ('id' vs. 'subj_id') ist im Sortier- und Aggregationsabschnitt vorhanden.
Datenanalyse
Type : CREATION_INTERNE
Alle Daten werden durch den ersten DATA STEP mithilfe von Zufallsfunktionen (normal, uniform) generiert.
1 Codeblock
DATA STEP Data
Erklärung : Generierung des Arbeitsdatensatzes 'hair', der simulierte wiederholte Messungen (1000 Probanden, 8 Wochen) enthält.
Kopiert!
data hair;
seed = 1999;
beta = 1.386294; *--- P is approximately 0.8;
do Subj_id=1 to 1000;
s1 = 2*normal(seed);
s2 = sqrt(1.5)*normal(seed);
do week=1 to 8;
score = round(s1 + normal(seed), 0.01);
p = 1/(1+exp(-beta - s2));
y = 0;
u = uniform(seed);
if u < p then y = 1;
output;
end;
end;
keep subj_id score y;
run;
1
DATA hair;
2
seed = 1999;
3
beta = 1.386294; *--- P is approximately 0.8;
4
DO Subj_id=1 to 1000;
5
s1 = 2*normal(seed);
6
s2 = sqrt(1.5)*normal(seed);
7
DO week=1 to 8;
8
score = round(s1 + normal(seed), 0.01);
9
p = 1/(1+exp(-beta - s2));
10
y = 0;
11
u = uniform(seed);
12
IF u < p THEN y = 1;
13
OUTPUT;
14
END;
15
END;
16
keep subj_id score y;
17
RUN;
2 Codeblock
PROC GLIMMIX
Erklärung : Lineares gemischtes Modell mit zufälligem Achsenabschnitt pro Proband (G-Seite).
Kopiert!
ods html;
title "*** Linear Mixed Model with G-side Random Effects ***";
proc glimmix data=hair;
class subj_id;
model score = / s;
random int / subject=subj_id;
run;
1
ods html;
2
title "*** Linear Mixed Model with G-side Random Effects ***";
3
PROC GLIMMIXDATA=hair;
4
class subj_id;
5
model score = / s;
6
random int / subject=subj_id;
7
RUN;
3 Codeblock
PROC GLIMMIX
Erklärung : Lineares gemischtes Modell, das die Residualkovarianzstruktur modelliert (R-Seite, Typ Compound Symmetry).
Kopiert!
title "*** Linear Mixed Model with R-side Random Effects ***";
proc glimmix data=hair;
class subj_id;
model score = / s;
random _residual_ / subject=subj_id type=cs;
run;
1
title "*** Linear Mixed Model with R-side Random Effects ***";
2
PROC GLIMMIXDATA=hair;
3
class subj_id;
4
model score = / s;
5
random _residual_ / subject=subj_id type=cs;
6
RUN;
4 Codeblock
PROC GLIMMIX
Erklärung : Logistisches gemischtes Modell mit G-seitigen Zufallseffekten.
Kopiert!
title "*** Logistic Model with G-side Random Effects ***";
proc glimmix data=hair;
class subj_id;
model y (ref='0') = / dist=binary link=logit s;
random int / subject=subj_id;
estimate 'P' int 1 / ilink;
run;
1
title "*** Logistic Model with G-side Random Effects ***";
2
PROC GLIMMIXDATA=hair;
3
class subj_id;
4
model y (ref='0') = / dist=binary link=logit s;
5
random int / subject=subj_id;
6
estimate 'P' int 1 / ilink;
7
RUN;
5 Codeblock
PROC GLIMMIX
Erklärung : Logistisches gemischtes Modell mit R-seitigen Zufallseffekten.
Kopiert!
title "*** Logistic Model with R-side Random Effects ***";
proc glimmix data=hair;
class subj_id;
model y (ref='0')= / dist=binary link=logit s;
random _residual_ / subject=subj_id type=cs;
estimate 'P' int 1 / ilink;
run;
ods html close;
1
title "*** Logistic Model with R-side Random Effects ***";
2
PROC GLIMMIXDATA=hair;
3
class subj_id;
4
model y (ref='0')= / dist=binary link=logit s;
5
random _residual_ / subject=subj_id type=cs;
6
estimate 'P' int 1 / ilink;
7
RUN;
8
ods html close;
6 Codeblock
PROC SORT
Erklärung : Sortieren der Daten für die Aggregation. (Achtung: Die Variable 'id' scheint im Vergleich zur erstellten 'subj_id' falsch zu sein).
Kopiert!
proc sort data=hair;
by id;
run;
1
PROC SORTDATA=hair;
2
BY id;
3
RUN;
7 Codeblock
PROC MEANS Data
Erklärung : Aggregation der Daten: Summe der Antwortvariablen 'y' pro Kennung.
Kopiert!
proc means data=hair sum noprint;
by id;
var y;
output out=sum_hair sum=t;
run;
1
PROC MEANSDATA=hair sum noprint;
2
BY id;
3
var y;
4
OUTPUT out=sum_hair sum=t;
5
RUN;
8 Codeblock
DATA STEP Data
Erklärung : Vorbereitung der aggregierten Daten für PROC NLMIXED (Berechnung der Häufigkeiten und Umbenennung).
Kopiert!
data sum_hair;
set sum_hair;
m_t = _freq_ - t;
rename _freq_ = m;
drop _type_;
run;
1
DATA sum_hair;
2
SET sum_hair;
3
m_t = _freq_ - t;
4
rename _freq_ = m;
5
drop _type_;
6
RUN;
9 Codeblock
PROC NLMIXED
Erklärung : Nichtlineare gemischte Modellierung, die eine benutzerdefinierte Log-Likelihood-Funktion (ll) definiert.
ll = z + log( pi*p1**t*p1c**m_t + pic*p2**t*p2c**m_t );
11
model t ~ general( ll );
12
estimate 'P'1/(1+exp(-beta));
13
estimate 'Rho*Rho' rho*Rho;
14
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.
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.