Permutationstest (Randomisierung) zum Vergleich von Mittelwerten

Dieser Code ist auch verfügbar auf: English Español Français
Schwierigkeitsgrad
Anfänger
Veröffentlicht am :
Dieses Skript führt einen Randomisierungstest (Permutationstest) durch, um den Altersunterschied zwischen entlassenen (Fired) und nicht entlassenen Mitarbeitern zu bewerten. Zuerst wird der beobachtete Unterschied mittels PROC TTEST berechnet. Anschließend wird PROC IML verwendet, um 1000 zufällige Permutationen der Daten zu generieren. Diese permutierten Datensätze werden massenhaft von PROC TTEST analysiert, um die Nullverteilung des Mittelwertunterschieds zu konstruieren. Schließlich wird ein empirischer p-Wert geschätzt, indem die beobachtete Statistik mit der generierten Verteilung verglichen wird.
Datenanalyse

Type : CREATION_INTERNE


Die Daten werden direkt im Skript über einen DATA Step mit der DATALINES-Anweisung (Variablen Status und Age) erstellt.

1 Codeblock
DATA STEP Data
Erklärung :
Erstellung des initialen Datensatzes 'discriminate' mit Status und Alter der Individuen über interne Daten (datalines).
Kopiert!
1DATA discriminate;
2 INPUT STATUS Age;
3 
4/* Status = 0 = Fired
5 Status = 1 = Not Fired */
6 
7DATALINES;
80 34
90 37
10...
111 54
12;
13RUN;
2 Codeblock
PROC TTEST
Erklärung :
Durchführung des Student's t-Tests an den realen Daten, um den beobachteten Mittelwertunterschied (Referenz) zu erhalten.
Kopiert!
1PROC TTEST DATA=discriminate;
2 class STATUS;
3 *may need to convert School to numeric;
4 var Age;
5RUN;
3 Codeblock
PROC IML Data
Erklärung :
Verwendung der Matrixsprache IML zur Generierung von 1000 zufälligen Permutationen der Variablen 'Age'. Erstellung einer breiten Tabelle 'newds', wobei die erste Spalte der Status und die folgenden die Permutationen sind.
Kopiert!
1ods OUTPUT off;
2ods exclude all;
3PROC IML ;
4 use discriminate;
5 read all var{STATUS Age} into x;
6 p=t(ranperm(x[, 2], 1000));
7 paf=x[, 1]||p;
8 create newds from paf;
9 append from paf;
10 QUIT;
4 Codeblock
PROC TTEST Data
Erklärung :
Massive Durchführung von t-Tests an den 1000 permutierten Spalten (col2 bis col1001) gegen den Status (col1). ODS-Ausgaben werden aus Performancegründen unterdrückt, außer der Tabelle 'conflimits', die in 'diff' gespeichert wird.
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 zufällig generierten Mittelwertunterschiede (Pooled-Methode) und Anzeige 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 Ergebnisse, um zu zählen, wie viele Permutationen einen absoluten Unterschied erzeugten, der größer oder gleich dem beobachteten Wert ist (hier fest auf 1.9238 codiert, was dem Ergebnis des ersten PROC TTEST entsprechen sollte).
Kopiert!
1DATA numdiffs;
2 SET diff;
3 where method="Pooled";
4 
5 IF abs(mean) >=1.9238;
6RUN;
7 Codeblock
PROC PRINT
Erklärung :
Anzeige der extremen Permutationen, um die manuelle Berechnung des p-Wertes zu ermöglichen (Anzahl der extremen Beobachtungen / 1000).
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.
Urheberrechtsinformationen : Erwähnung 'borrowed code from internet' in den Kommentaren vorhanden.


Zugehörige Dokumentation

Aucune documentation spécifique pour cette catégorie.