Veröffentlicht am :
Statistik INTERNE_ERSTELLUNG

Monte-Carlo-Permutationstest mit PROC IML

Dieser Code ist auch verfügbar auf: English Español Français
Wartet auf Validierung
Dieses Programm generiert zunächst einen kleinen 'cash'-Datensatz. Es führt einen standardmäßigen Student-t-Test durch, um den beobachteten Unterschied zu erhalten. Anschließend wird PROC IML verwendet, um 1000 zufällige Permutationen der Antwortvariablen ('Money') zu generieren, die die Nullhypothese simulieren. Es führt t-Tests für diese 1000 Iterationen durch und vergleicht die Verteilung der simulierten Unterschiede mit dem beobachteten Unterschied, um einen empirischen p-Wert abzuleiten.
Datenanalyse

Type : INTERNE_ERSTELLUNG


Die Daten werden manuell über die DATALINES-Anweisung im ersten DATA-Schritt erstellt.

1 Codeblock
DATA STEP Data
Erklärung :
Erstellung des Datensatzes 'cash' mit zwei Variablen: School (Gruppe) und Money (numerischer Wert).
Kopiert!
1DATA cash;
2 INPUT School Money;
3 
4DATALINES;
50 34
60 1200
70 23
80 50
90 60
100 50
110 0
120 0
130 30
140 89
150 0
160 300
170 400
180 20
190 10
200 0
211 20
221 10
231 5
241 0
251 30
261 50
271 0
281 100
291 110
301 0
311 40
321 10
331 3
341 0
35;
2 Codeblock
PROC TTEST
Erklärung :
Durchführung des anfänglichen Student-t-Tests für die beobachteten Daten, um den tatsächlichen Mittelwertunterschied zwischen den Gruppen zu berechnen.
Kopiert!
1PROC TTEST DATA=cash;
2 class School;
3 *may need to convert School to numeric;
4 var Money;
5RUN;
3 Codeblock
PROC IML Data
Erklärung :
Verwendung der IML-Matrixsprache, um die Daten zu lesen, 1000 zufällige Permutationen der Spalte 'Money' (Resampling ohne Zurücklegen) zu generieren und eine große Tabelle 'newds' zu erstellen, die die ursprünglichen Gruppen und die 1000 permutierten Vektoren enthält.
Kopiert!
1ods OUTPUT off;
2ods exclude all;
3 
4PROC IML ;
5 use cash;
6 read all var{School Money} into x;
7 p=t(ranperm(x[, 2], 1000));
8 paf=x[, 1]||p;
9 create newds from paf;
10 append from paf;
11 QUIT;
4 Codeblock
PROC TTEST Data
Erklärung :
Massive Durchführung von t-Tests für die 1000 permutierten Spalten (col2 bis col1001) im Vergleich zur Gruppe (col1). Die Ergebnisse (Konfidenzgrenzen/Unterschiede) werden in der Tabelle 'diff' über ODS OUTPUT erfasst.
Kopiert!
1ods OUTPUT conflimits=diff;
2 
3PROC TTEST DATA=newds plots=none;
4 class col1;
5 var col2 - col1001;
6RUN;
7 
8ods OUTPUT on;
9ods exclude none;
5 Codeblock
PROC UNIVARIATE
Erklärung :
Analyse der Verteilung der durch Permutation erhaltenen Mittelwertunterschiede (Variable 'mean' in der Ausgabetabelle 'diff') mit Generierung eines Histogramms.
Kopiert!
1PROC UNIVARIATE DATA=diff;
2 where method="Pooled";
3 var mean;
4 histogram mean;
5RUN;
6 Codeblock
DATA STEP Data
Erklärung :
Filterung der Permutationen, deren Mittelwertunterschied so extrem oder extremer ist als der beobachtete Unterschied (hier fest auf 114.6 kodiert). Die resultierende Anzahl der Beobachtungen, geteilt durch 1000, ergibt den geschätzten p-Wert.
Kopiert!
1DATA numdiffs;
2 SET diff;
3 where method="Pooled";
4 
5 IF abs(mean) >=114.6;
6RUN;
7 
8PROC PRINT DATA=numdiffs;
9 where method="Pooled";
10RUN;
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.