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!
data discriminate;
input Status Age;
/* Status = 0 = Fired
Status = 1 = Not Fired */
datalines;
0 34
0 37
...
1 54
;
run;
1
DATA discriminate;
2
INPUTSTATUS Age;
3
4
/* Status = 0 = Fired
5
Status = 1 = Not Fired */
6
7
DATALINES;
8
0 34
9
0 37
10
...
11
154
12
;
13
RUN;
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!
proc ttest data=discriminate;
class Status;
*may need to convert School to numeric;
var Age;
run;
1
PROC TTESTDATA=discriminate;
2
class STATUS;
3
*may need to convert School to numeric;
4
var Age;
5
RUN;
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!
ods output off;
ods exclude all;
proc iml ;
use discriminate;
read all var{Status Age} into x;
p=t(ranperm(x[, 2], 1000));
paf=x[, 1]||p;
create newds from paf;
append from paf;
quit;
1
ods OUTPUT off;
2
ods exclude all;
3
PROC 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!
ods output conflimits=diff;
proc ttest data=newds plots=none;
class col1;
var col2 - col1001;
run;
ods output on;
ods exclude none;
1
ods OUTPUT conflimits=diff;
2
3
PROC TTESTDATA=newds plots=none;
4
class col1;
5
var col2 - col1001;
6
RUN;
7
8
ods OUTPUT on;
9
ods exclude none;
5 Codeblock
PROC UNIVARIATE
Erklärung : Analyse der Verteilung der zufällig generierten Mittelwertunterschiede (Pooled-Methode) und Anzeige eines Histogramms.
Kopiert!
proc univariate data=diff;
where method="Pooled";
var mean;
histogram mean;
run;
1
PROC UNIVARIATEDATA=diff;
2
where method="Pooled";
3
var mean;
4
histogram mean;
5
RUN;
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!
data numdiffs;
set diff;
where method="Pooled";
if abs(mean) >=1.9238;
run;
1
DATA numdiffs;
2
SET diff;
3
where method="Pooled";
4
5
IF abs(mean) >=1.9238;
6
RUN;
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!
proc print data=numdiffs;
where method="Pooled";
run;
1
2
PROC PRINT
3
DATA=numdiffs;
4
where method="Pooled";
5
RUN;
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.
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.