Hallo @miray36 und willkommen in den SAS Support Communities, speziell bei CoDe SAS!
Die Beschreibung klingt weitgehend nach einem lehrbuchmäßigen Vergleich zweier Gruppen (hier: männliche und weibliche Studierende) bzgl. des Mittelwerts einer stetigen Variablen (hier: Benevolenz). Bei Normalverteilungsannahme wäre die Lösung in SAS mittels PROC TTEST entsprechend kurz.
Ich sehe allerdings zwei Ungereimtheiten:
Das Wort "Paardifferenztest" passt m. E. nicht zum t-Test für unabhängige Stichproben, sondern eher zum t-Test für verbundene (gepaarte) Stichproben. Dort werden nämlich tatsächlich Differenzen von Wertepaaren betrachtet und wie bei einem Ein-Stichproben-t-Test ausgewertet.
Gleiches gilt für die Formulierung "Mittelwert der Unterschiede". Beim t-Test für zwei unabhängige Stichproben interessiert vielmehr der "Unterschied der Mittelwerte": Mit Hilfe einer Teststatistik, die ein Bruch mit der Differenz der beiden Stichprobenmittelwerte im Zähler ist, wird beurteilt, ob und in welcher Richtung sich die Mittelwerte der gesamten Gruppen (die Erwartungswerte) unterscheiden.
Zu klären ist also anhand der Aufgabenstellung und der Datenbeschreibung, welcher der beiden Fälle tatsächlich zutrifft. Im Fall verbundener Stichproben kann das PAIRED-Statement der TTEST-Prozedur verwendet werden. Die Struktur des Datasets, auf das PROC TTEST angewandt wird, würde aber anders aussehen als für den Zwei-Stichproben-t-Test: Man hätte zu jedem zusammengehörigen Paar (von Studierenden) zwei Variablen mit den Benevolenzwerten.
Bisher spricht mehr für die Situation zweier unabhängiger Stichproben. Wenn zudem das vorhandene Dataset die Struktur der nachfolgend erzeugten Beispieldaten hat, also (im PROC-PRINT-Output) etwa so aussieht,
Obs id Geschlecht Benevolenz
1 1 w 10.9001
2 2 m 10.5543
3 3 w 12.0563
...
kann PROC TTEST direkt darauf angewandt werden.
Code-Beispiel:
/* Erzeugung von Beispieldaten */
data have;
call streaminit(27182818);
length id 8 g $1 b 8;
do id=1 to 50;
g=choosec(rand('table',0.49,0.49), 'm','w','d');
b=rand('normal',10+(g='w'));
output;
end;
label g='Geschlecht'
b='Benevolenz';
run;
proc print data=have(obs=3) label;
run;
/* Vergleich der Erwartungswerte der Benevolenz zwischen den Geschlechtern 'm' und 'w' */
proc ttest data=have;
where g in ('m', 'w');
class g;
var b;
run;
Das "Filtern" des Datasets HAVE mittels WHERE-Statement ist im obigen Fall notwendig, weil PROC TTEST sonst mit der Fehlermeldung
ERROR: The CLASS variable has more than two levels.
scheitern würde. Die den Zwei-Stichproben-t-Test störenden "Diversen" (g='d') werden durch die WHERE-Bedingung (die im obigen Beispiel auch kürzer g ne 'd' geschrieben werden könnte) ausgeschlossen.
... View more