Das Skript beginnt mit der Verwendung von PROC POWER, um die theoretische Power für verschiedene Parameterkombinationen eines Zwei-Mittelwert-Tests zu berechnen. Anschließend werden Grafiken zur Visualisierung dieser Beziehungen erstellt. Eine manuelle Implementierung der Power-Berechnung ist ebenfalls zum Vergleich enthalten. Der zweite Teil des Skripts implementiert eine Monte-Carlo-Simulation, um die Power empirisch zu schätzen: Es werden Tausende von Datensätzen unter verschiedenen Bedingungen generiert, T-Tests an jedem durchgeführt und anschließend der Anteil signifikanter Tests berechnet, wodurch eine simulierte Schätzung der Power erhalten wird.
Datenanalyse
Type : CREATION_INTERNE
Alle in diesem Skript verwendeten Daten werden intern generiert, entweder durch PROC POWER (Power-Berechnungen) oder durch DATA STEPs (Generierung simulierter Daten für den T-Test und manuelle Power-Berechnung).
1 Codeblock
PROC POWER
Erklärung : Dieser Block verwendet die PROC POWER-Prozedur, um die statistische Power für einen Test zum Vergleich zweier unabhängiger Mittelwerte (test=diff) zu berechnen. Er untersucht verschiedene Kombinationen der Mittelwertdifferenz (meandiff), der Standardabweichung (stddev), des Signifikanzniveaus (alpha) und der Gesamtstichprobengröße (ntotal). Der Wert `power = .` gibt an, dass die Power der zu berechnende Wert ist.
Erklärung : Dieser Block aktiviert das Output Delivery System (ODS), um Grafiken zu generieren. PROC POWER wird mit der Option `plotonly` ausgeführt, um nur Power-Plots ohne Texttabellen zu erzeugen. Der Unterbefehl `plot` passt das Erscheinungsbild der Grafiken an, sodass Farbe, Linientyp und Symbol je nach verschiedenen Variablen variieren können. `ods output output=powdata;` speichert die für die Grafiken verwendeten Daten in einem Datensatz namens `powdata`.
Kopiert!
ods graphics on;
proc power plotonly;
twosamplemeans test=diff
meandiff = 5 6
stddev = 12 18
alpha = 0.05 0.1
ntotal = 100 200
power = .;
plot;
run;
ods graphics off;
plot
min=60
yopts=(ref=0.9 crossref=yes)
vary(color by stddev, linestyle by meandiff, symbol by alpha);
ods output output=powdata;
1
ods graphics on;
2
3
PROC POWER plotonly;
4
twosamplemeans test=diff
5
meandiff = 56
6
stddev = 1218
7
alpha = 0.050.1
8
ntotal = 100200
9
power = .;
10
plot;
11
RUN;
12
13
ods graphics off;
14
15
plot
16
min=60
17
yopts=(ref=0.9 crossref=yes)
18
vary(color BY stddev, linestyle BY meandiff, symbol BY alpha);
19
20
ods OUTPUTOUTPUT=powdata;
3 Codeblock
DATA STEP Data
Erklärung : Dieser DATA STEP erstellt einen Datensatz namens `tpow`, indem er die Power für jede Kombination der angegebenen Parameter berechnet. `ncp` (Nichtzentralitätsparameter) und `critval` (kritischer Wert der F-Verteilung) werden berechnet. Die Power wird dann mit der Funktion `sdf` (Survival Density Function) der nichtzentralen F-Verteilung bestimmt.
Kopiert!
data tpow;
do meandiff = 5, 6;
do stddev = 12, 18;
do alpha = 0.05, 0.1;
do ntotal = 100, 200;
ncp = ntotal * 0.5 * 0.5 * meandiff**2 / stddev**2;
critval = finv(1-alpha, 1, ntotal-2, 0);
power = sdf('f', critval, 1, ntotal-2, ncp);
output;
end;
end;
end;
end;
run;
Erklärung : Dieser Block verwendet PROC PRINT, um den Inhalt des Datensatzes `tpow` anzuzeigen und so die manuell berechneten Power-Werte zu visualisieren.
Kopiert!
proc print data=tpow;
run;
1
PROC PRINTDATA=tpow;
2
RUN;
5 Codeblock
DATA STEP Data
Erklärung : Dieser Block initialisiert mehrere Makrovariablen (`meandiff`, `stddev`, `alpha`, `ntotal`, `nsim`), die in der Simulation verwendet werden. Der DATA STEP `simdata` generiert dann eine große Anzahl (`&nsim`) simulierter Datensätze. Für jede Simulation (`isim`) erstellt er Beobachtungen für zwei Gruppen (`group` 1 und 2), wobei die Variable `y` aus einer Normalverteilung gezogen wird. Gruppe 1 hat einen Mittelwert von 0 und Gruppe 2 einen Mittelwert gleich `&meandiff`, mit einer gemeinsamen Standardabweichung `&stddev`. `call streaminit(123)` gewährleistet die Reproduzierbarkeit der Zufallszahlengenerierung.
Kopiert!
%let meandiff = 5;
%let stddev = 12;
%let alpha = 0.05;
%let ntotal = 100;
%let nsim = 10000;
data simdata;
call streaminit(123);
do isim = 1 to ≁
do i = 1 to floor(&ntotal/2);
group = 1;
y = rand('normal', 0 , &stddev);
output;
group = 2;
y = rand('normal', &meandiff, &stddev);
output;
end;
end;
run;
1
%let meandiff = 5;
2
%let stddev = 12;
3
%let alpha = 0.05;
4
%let ntotal = 100;
5
%let nsim = 10000;
6
7
DATA simdata;
8
call streaminit(123);
9
DO isim = 1 to ≁
10
DO i = 1 to floor(&ntotal/2);
11
group = 1;
12
y = rand('normal', 0 , &stddev);
13
OUTPUT;
14
group = 2;
15
y = rand('normal', &meandiff, &stddev);
16
OUTPUT;
17
END;
18
END;
19
RUN;
6 Codeblock
PROC TTEST
Erklärung : Dieser Block deaktiviert vorübergehend alle Standard-ODS-Ausgaben, um eine übermäßige Anzeige zu vermeiden. Anschließend wird PROC TTEST für die simulierten Daten (`simdata`) ausgeführt. Die Anweisung `by isim` führt für jede einzelne Simulation einen T-Test durch. `class group` definiert die beiden zu vergleichenden Gruppen, und `var y` gibt die zu testende Variable an. `ods output ttests=tests` speichert die Ergebnisse der T-Tests in einem neuen Datensatz namens `tests`. Abschließend werden die ODS-Ausgaben wieder aktiviert.
Kopiert!
ods exclude all;
proc ttest data=simdata;
ods output ttests=tests;
by isim;
class group;
var y;
run;
ods exclude none;
1
ods exclude all;
2
PROC TTESTDATA=simdata;
3
ods OUTPUT ttests=tests;
4
BY isim;
5
class group;
6
var y;
7
RUN;
8
ods exclude none;
7 Codeblock
DATA STEP Data
Erklärung : Dieser DATA STEP verarbeitet den Datensatz `tests` (aus PROC TTEST). Er filtert die Beobachtungen, um nur die Ergebnisse zu behalten, die der Methode "Pooled" (gepoolte Varianz) entsprechen. Eine neue Variable `issig` wird erstellt, die den Wert 1 annimmt, wenn der p-Wert (`probt`) des Tests unter dem Alpha-Schwellenwert (`&alpha`) liegt, was auf einen signifikanten Test hinweist, und 0 sonst.
Kopiert!
data tests;
set tests;
where method="Pooled";
issig = probt < α
run;
1
DATA tests;
2
SET tests;
3
where method="Pooled";
4
issig = probt < α
5
RUN;
8 Codeblock
PROC FREQ
Erklärung : Dieser Block verwendet PROC FREQ für den Datensatz `tests`, um die Häufigkeit der Variablen `issig` zu analysieren. Die Option `ods select binomial` ermöglicht es, nur die Ergebnisse des Binomialtests anzuzeigen. Die Anweisung `tables issig / binomial(level='1')` berechnet den Anteil signifikanter Tests (`issig = 1`) und liefert ein binomiales Konfidenzintervall für diesen Anteil, was die Schätzung der statistischen Power durch Simulation darstellt.
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.