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).
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!
proc ttest data=trauma;
class state;
*may need to convert School to numeric;
var kcal;
run;
1
PROC TTESTDATA=trauma;
2
class state;
3
*may need to convert School to numeric;
4
var kcal;
5
RUN;
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!
ods output off;
ods exclude all;
1
ods OUTPUT off;
2
ods 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!
proc iml ;
use trauma;
read all var{state kcal} into x;
*change varibale names here ... make sure it is class then var ... in that order.;
p=t(ranperm(x[, 2], 5000));
*Note that the "1000" here is the number of permutations. ;
paf=x[, 1]||p;
create newds from paf;
append from paf;
quit;
1
PROC 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!
ods output conflimits=diff;
1
ods 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!
proc ttest data=newds plots=none;
class col1;
var col2 - col1001;
run;
1
PROC TTESTDATA=newds plots=none;
2
class col1;
3
var col2 - col1001;
4
RUN;
7 Codeblock
ODS
Erklärung : Diese ODS-Befehle reaktivieren die normale Ausgabegenerierung, sodass nachfolgende SAS-Prozeduren ihre Ergebnisse produzieren können.
Kopiert!
ods output on;
ods exclude none;
1
ods OUTPUT on;
2
ods 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!
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;
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!
data numdiffs;
set diff;
where method="Pooled";
if abs(mean) >=7.8089;
*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.;
run;
1
DATA 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.;
7
RUN;
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!
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.
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.