Das Programm generiert zunächst einen Datensatz von 20.000 Clustern, die jeweils 5 elementare Einheiten mit einer Erfolgswahrscheinlichkeit von 0,6 und einer Intra-Cluster-Korrelation von 0,3 enthalten. Es transponiert die Daten, um die Korrelationsstruktur zu überprüfen. Anschließend werden Aggregationen pro Cluster durchgeführt und die Varianz analysiert. Schließlich wird eine Monte-Carlo-Simulation durchgeführt, um die Typ-I-Fehlerrate bei überdispersen Daten abzuschätzen.
Datenanalyse
Type : CREATION_INTERNE
Alle Daten werden algorithmisch über DATA-Schritte unter Verwendung der Gleichverteilungsfunktion generiert.
1 Codeblock
DATA STEP Data
Erklärung : Erzeugung von 20.000 simulierten Beobachtungen, strukturiert in Clustern (m=5) mit einer definierten Intra-Klassen-Korrelation (rho2=0.3).
Kopiert!
data correlated_bernoullis;
n = 20000; *--- Number of clusters;
m = 5; *--- Number of elemental units within the cluster;
pi = 0.6; *--- Probability of success of each elemental unit;
rho2 = 0.3; *--- Intra-cluster correlation;
seed = 16670;
rho = sqrt( rho2 );
do subjid = 1 to n;
yy = 0; *--- Variable yy plays the role of y of eq. (1.7);
u = uniform( seed );
if u < pi then yy = 1;
do i=1 to m;
y = 0;
u = uniform( seed );
if u < rho then y = yy;
else do;
uu = uniform( seed );
if uu < pi then y = 1;
end;
output;
end;
end;
keep subjid i y;
run;
1
DATA correlated_bernoullis;
2
n = 20000; *--- Number of clusters;
3
m = 5; *--- Number of elemental units within the cluster;
4
pi = 0.6; *--- Probability of success of each elemental unit;
5
rho2 = 0.3; *--- Intra-cluster correlation;
6
seed = 16670;
7
rho = sqrt( rho2 );
8
DO subjid = 1 to n;
9
yy = 0; *--- Variable yy plays the role of y of eq. (1.7);
10
u = uniform( seed );
11
IF u < pi THEN yy = 1;
12
DO i=1 to m;
13
y = 0;
14
u = uniform( seed );
15
IF u < rho THEN y = yy;
16
ELSEDO;
17
uu = uniform( seed );
18
IF uu < pi THEN y = 1;
19
END;
20
OUTPUT;
21
END;
22
END;
23
keep subjid i y;
24
RUN;
2 Codeblock
PROC TRANSPOSE Data
Erklärung : Pivotieren der Daten zur Transformation der Intra-Cluster-Beobachtungen in separate Spalten (_1 bis _5), um Korrelationen zu berechnen.
Kopiert!
proc transpose data=correlated_bernoullis out=new;
by subjid;
id i;
var y;
run;
1
PROC TRANSPOSEDATA=correlated_bernoullis out=new;
2
BY subjid;
3
id i;
4
var y;
5
RUN;
3 Codeblock
PROC CORR
Erklärung : Berechnung der Korrelationsmatrix zwischen den Einheiten des Clusters, um zu überprüfen, ob die Simulation die definierten Parameter einhält.
Kopiert!
ods html;
proc corr data=new;
var _1 - _5;
run;
ods html close;
1
ods html;
2
PROC CORRDATA=new;
3
var _1 - _5;
4
RUN;
5
ods html close;
4 Codeblock
PROC MEANS Data
Erklärung : Datenaggregation: Berechnung der Summe der Erfolge 'y' pro Cluster (subjid).
Kopiert!
proc means data=correlated_bernoullis sum noprint;
class subjid;
var y;
output out=out1 sum=t;
run;
data out1;
set out1;
if _type_ = 1;
drop _type _freq_;
run;
1
PROC MEANSDATA=correlated_bernoullis sum noprint;
2
class subjid;
3
var y;
4
OUTPUT out=out1 sum=t;
5
RUN;
6
7
DATA out1;
8
SET out1;
9
IF _type_ = 1;
10
drop _type _freq_;
11
RUN;
5 Codeblock
PROC MEANS
Erklärung : Deskriptive Analyse (Mittelwert und Varianz) der aggregierten Variable 't'.
Kopiert!
ods html;
proc means data=out1 mean var maxdec=2;
var t;
run;
ods html close;
1
ods html;
2
PROC MEANSDATA=out1 mean var maxdec=2;
3
var t;
4
RUN;
5
ods html close;
6 Codeblock
DATA STEP Data
Erklärung : Vorbereitung der Monte-Carlo-Simulation: Hinzufügen einer Replikationsvariable 'reps', um die Daten in 1000 Untergruppen aufzuteilen.
Kopiert!
data correlated_bernoullis; *--- This data set was created in Program 1.1;
set correlated_bernoullis;
reps = ceil( subjid / 20 ); *--- Creates 1000 reps of n=20 clusters of size m=5 each;
run;
1
DATA correlated_bernoullis; *--- This data set was created in Program 1.1;
2
SET correlated_bernoullis;
3
reps = ceil( subjid / 20 ); *--- Creates 1000 reps of n=20 clusters of size m=5 each;
4
RUN;
7 Codeblock
PROC MEANS Data
Erklärung : Berechnung des geschätzten Anteils (Pi_hat) für jede Replikation.
Kopiert!
proc means data=correlated_bernoullis mean noprint;
class reps;
var y;
output out=test mean=Pi_hat;
run;
1
PROC MEANSDATA=correlated_bernoullis mean noprint;
2
class reps;
3
var y;
4
OUTPUT out=test mean=Pi_hat;
5
RUN;
8 Codeblock
DATA STEP Data
Erklärung : Berechnung des Z-Scores und Bestimmung der Signifikanz (P-Wert) zur Prüfung der Nullhypothese (Pi=0.6) bei jeder Replikation.
Kopiert!
data test;
set test;
if _type_ = 1;
z = (Pi_hat - 0.6) / sqrt( Pi_hat*(1-Pi_hat) / 100 );
P_val = 0;
if z > 1.6449 then P_val = 1;
run;
Erklärung : Endgültige Schätzung der Typ-I-Fehlerrate durch Berechnung des Mittelwerts der Ablehnungen der Nullhypothese über alle Simulationen hinweg.
Kopiert!
title "Monte Carlo Estimate of Type I Error Rate";
proc means data=test n mean maxdec=3;
var P_val;
run;
1
title "Monte Carlo Estimate of Type I Error Rate";
2
PROC MEANSDATA=test n mean maxdec=3;
3
var P_val;
4
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.