Permutationstest zum Vergleich von Mittelwerten

Dieser Code ist auch verfügbar auf: English Español Français
Schwierigkeitsgrad
Anfänger
Veröffentlicht am :
Das Skript beginnt mit der Definition eines `trauma`-Datensatzes mit Inline-Daten. Anschließend wird ein beobachteter t-Test ausgeführt. Danach wird PROC IML verwendet, um Tausende von Permutationen der Daten zu generieren und auf jede Permutation einen t-Test anzuwenden. Die Ergebnisse dieser permutierten t-Tests (die Mittelwertdifferenzen) werden über ODS in einem `diff`-Datensatz gespeichert. Schließlich wird die Verteilung der permutierten Differenzen mit PROC UNIVARIATE visualisiert und die Anzahl der permutierten Differenzen berechnet, die so extrem oder extremer sind als die beobachtete Differenz, um einen empirischen p-Wert zu bestimmen.
Datenanalyse

Type : CREATION_INTERNE


Der Datensatz 'trauma' wird direkt im Skript über 'datalines' erstellt. Die Datensätze 'newds', 'diff' und 'numdiffs' werden intern von den SAS-Prozeduren ('PROC IML', 'PROC TTEST', 'DATA STEP') generiert.

1 Codeblock
DATA STEP Data
Erklärung :
Dieser DATA STEP-Block erstellt den 'trauma'-Datensatz unter Verwendung von Inline-Daten (`datalines`). Er enthält zwei Variablen: `state` (kategorisch, gibt an, ob das Subjekt 'Nicht-Trauma' oder 'Trauma' ist) und `kcal` (numerisch, stellt eine Messung dar).
Kopiert!
1DATA trauma;
2 INPUT state $ kcal;
3 DATALINES;
40 19
50 20
60 20
70 21
80 21
90 21
101 22
110 23
120 23
131 23
141 25
151 26
161 30
171 38
181 39
19;
20 
21/* 0 = Non-Trauma, 1 = Trauma */
2 Codeblock
PROC TTEST
Erklärung :
Diese `PROC TTEST`-Prozedur führt einen Standard-t-Test durch, um den Mittelwert der Variable `kcal` zwischen den beiden durch die Variable `state` definierten Gruppen zu vergleichen. Dies ist der anfängliche beobachtete Test, dessen Mittelwertdifferenz mit den Permutationsergebnissen verglichen wird.
Kopiert!
1PROC TTEST DATA=trauma;
2 class state;
3 *may need to convert School to numeric;
4 var kcal;
5RUN;
3 Codeblock
ODS
Erklärung :
Diese ODS-Befehle (Output Delivery System) deaktivieren vorübergehend die Generierung aller Ausgaben für die folgenden SAS-Prozeduren, um zu vermeiden, dass das Log oder die Ausgabedateien mit den Zwischenergebnissen der zahlreichen Permutationen überladen werden.
Kopiert!
1ods OUTPUT off;
2ods exclude all;
4 Codeblock
PROC IML Data
Erklärung :
Dieser `PROC IML`-Block (Interactive Matrix Language) ist das Herzstück des Permutationstests. Er liest den 'trauma'-Datensatz und führt dann 5000 zufällige Permutationen der Variable `kcal` mithilfe der Funktion `ranperm` durch. Die permutierten Daten werden anschließend mit der ursprünglichen `state`-Variable kombiniert und in einem neuen Datensatz namens `newds` gespeichert. Dieser `newds`-Datensatz wird für die Permutations-t-Tests verwendet.
Kopiert!
1PROC IML ;
2 use trauma;
3 read all var{state kcal} into x;
4 *change varibale names here ... make sure it is class then var ... in that order.;
5 p=t(ranperm(x[, 2], 5000));
6 *Note that the "1000" here is the number of permutations. ;
7 paf=x[, 1]||p;
8 create newds from paf;
9 append from paf;
10 QUIT;
5 Codeblock
ODS
Erklärung :
Dieser ODS-Befehl erfasst die Ausgabetabelle `conflimits` des nächsten `PROC TTEST` und speichert sie in einem SAS-Datensatz namens `diff`. Diese Tabelle enthält die Konfidenzintervalle und Mittelwerte der Differenzen für jede Permutation.
Kopiert!
1ods OUTPUT conflimits=diff;
6 Codeblock
PROC TTEST
Erklärung :
Dieser `PROC TTEST` wird auf den Datensatz `newds` (der die permutierten Daten enthält) angewendet. Er vergleicht die Mittelwerte der Variable `col2` (die permutierte `kcal` darstellt) zwischen den durch `col1` (die `state` darstellt) definierten Gruppen. Der Parameter `plots=none` unterdrückt die Generierung von Grafiken für diese zahlreichen Tests. Die Ergebnisse der Mittelwertdifferenzen werden im `diff`-Datensatz durch den vorhergehenden ODS-Befehl erfasst.
Kopiert!
1PROC TTEST DATA=newds plots=none;
2 class col1;
3 var col2 - col1001;
4RUN;
7 Codeblock
ODS
Erklärung :
Diese ODS-Befehle reaktivieren die normale Ausgabegenerierung, sodass nachfolgende SAS-Prozeduren ihre Ergebnisse produzieren können.
Kopiert!
1ods OUTPUT on;
2ods exclude none;
8 Codeblock
PROC UNIVARIATE
Erklärung :
Dieser `PROC UNIVARIATE` wird verwendet, um die Verteilung der aus den Permutations-t-Tests erhaltenen Mittelwertdifferenzen (gespeichert im Datensatz `diff`) zu analysieren und zu visualisieren. Ein Histogramm der Variable `mean` (der Mittelwertdifferenzen) wird generiert, das die empirische Nullverteilung zeigt.
Kopiert!
1PROC UNIVARIATE DATA=diff;
2 where method="Pooled";
3 var mean;
4 histogram mean;
5RUN;
9 Codeblock
DATA STEP Data
Erklärung :
Dieser DATA STEP erstellt den Datensatz 'numdiffs'. Er filtert den Datensatz `diff`, um Permutationen zu identifizieren, deren absoluter Wert der Mittelwertdifferenz (`mean`) größer oder gleich der beobachteten Differenz (`7.8089`) ist. Die Anzahl der Beobachtungen in diesem 'numdiffs'-Datensatz wird verwendet, um den empirischen p-Wert zu berechnen.
Kopiert!
1DATA numdiffs;
2 SET diff;
3 where method="Pooled";
4 
5 IF abs(mean) >=7.8089;
6 *you will need to put the observed difference you got from t test above here. note if you have a one or two tailed test.;
7RUN;
10 Codeblock
PROC PRINT
Erklärung :
Dieser `PROC PRINT` zeigt den Inhalt des Datensatzes `numdiffs` an. Er wird für eine schnelle visuelle Überprüfung der permutierten Mittelwertdifferenzen verwendet, die so extrem oder extremer waren als die beobachtete Differenz.
Kopiert!
1 
2PROC PRINT
3DATA=numdiffs;
4where method="Pooled";
5RUN;
6 
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.

Zugehörige Dokumentation

Aucune documentation spécifique pour cette catégorie.