Veröffentlicht am :
Statistik CREATION_INTERNE

Simulation von korrelierten Bernoulli-Variablen und Monte-Carlo-Analyse

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
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!
1DATA 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 ELSE DO;
17 uu = uniform( seed );
18 IF uu < pi THEN y = 1;
19 END;
20 OUTPUT;
21 END;
22 END;
23 keep subjid i y;
24RUN;
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!
1PROC TRANSPOSE DATA=correlated_bernoullis out=new;
2 BY subjid;
3 id i;
4 var y;
5RUN;
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!
1ods html;
2PROC CORR DATA=new;
3 var _1 - _5;
4RUN;
5ods html close;
4 Codeblock
PROC MEANS Data
Erklärung :
Datenaggregation: Berechnung der Summe der Erfolge 'y' pro Cluster (subjid).
Kopiert!
1PROC MEANS DATA=correlated_bernoullis sum noprint;
2 class subjid;
3 var y;
4 OUTPUT out=out1 sum=t;
5RUN;
6 
7DATA out1;
8 SET out1;
9 IF _type_ = 1;
10 drop _type _freq_;
11RUN;
5 Codeblock
PROC MEANS
Erklärung :
Deskriptive Analyse (Mittelwert und Varianz) der aggregierten Variable 't'.
Kopiert!
1ods html;
2PROC MEANS DATA=out1 mean var maxdec=2;
3 var t;
4RUN;
5ods 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!
1DATA 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;
4RUN;
7 Codeblock
PROC MEANS Data
Erklärung :
Berechnung des geschätzten Anteils (Pi_hat) für jede Replikation.
Kopiert!
1PROC MEANS DATA=correlated_bernoullis mean noprint;
2 class reps;
3 var y;
4 OUTPUT out=test mean=Pi_hat;
5RUN;
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!
1DATA test;
2SET test;
3 IF _type_ = 1;
4 z = (Pi_hat - 0.6) / sqrt( Pi_hat*(1-Pi_hat) / 100 );
5 P_val = 0;
6 IF z > 1.6449 THEN P_val = 1;
7RUN;
9 Codeblock
PROC MEANS
Erklärung :
Endgültige Schätzung der Typ-I-Fehlerrate durch Berechnung des Mittelwerts der Ablehnungen der Nullhypothese über alle Simulationen hinweg.
Kopiert!
1title "Monte Carlo Estimate of Type I Error Rate";
2PROC MEANS DATA=test n mean maxdec=3;
3 var P_val;
4RUN;
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.