Visualisierung von zweifaktoriellen Designs mit der Prozedur Boxplot
Aus SAS-Wiki
Von Carina Ortseifen: Hans-Peter Altenburg, Heinrich Stürzl, Almut Hahn, Carina Ortseifen, Grischa Pfister: Tipps und Tricks für den leichteren Umgang mit der SAS Software, KSFE 2008
Boxplots dienen der grafischen Darstellung von Verteilungen von metrischen Variablen. Typische Anwendungen sind dabei Untersuchungen mit zwei oder mehr Gruppierungsvariablen, wie in unserem Beispiel: Hierbei werden die Veränderungen des Blutdrucks bei drei verschiedenen Krankheiten und vier Therapien notiert.
Beispieldatei:
| Obs | therapie | krankheit | differenz |
| 1 | 1 | 1 | 42 |
| 2 | 1 | 1 | 44 |
| 3 | 1 | 1 | 36 |
| . | . | . | . |
| 16 | 1 | 3 | 25 |
| 17 | 1 | 3 | 25 |
| 18 | 1 | 3 | 24 |
| . | . | . | . |
| . | . | . | . |
| 71 | 4 | 3 | 12 |
| 72 | 4 | 3 | . |
Der folgende Aufruf der Prozedur Gchart erzeugt einen ersten Eindruck von den zugrunde liegenden Beobachtungen:
Axis1 Order=(0 To 50 By 10);
Proc Gchart Data=a;
Vbar3d therapie /
Type=Mean Mean
Sumvar=differenz Discrete Group=krankheit Errorbar=Top
Clm=95 Shape=Block Patternid=Group Raxis=axis1;
Run;Quit;
Da mit der Prozedur Gchart nur die Mittelwerte und die zugehörigen Standardfehler angezeigt werden können, soll im nächsten Schritt ein Boxplot erzeugt werden, das neben den Mittelwerten auch Mediane, 25- und 75%-Quartile, Minima und Maxima sowie Ausreißer darstellen kann. Der Aufruf mit:
Proc Boxplot Data=a; Plot differenz*therapie(krankheit) / Cboxfill=Yellow Cboxes=Black Cframe=Liggr; Run;Quit;
führt allerdings nicht zu dem erwarteten Ergebnis sondern hinterläßt eher ein Fragezeichen beim Anwender.
Auch der Austausch der Rollen von therapie und krankheit führt zu keinem zufrieden stellendem Ergebnis. Daher wird als nächstes die Online-Hilfe näher studiert:
„Syntax: PLOT (analysis-variables)*group-variable <(block-variables )>; group-variable specifies the variable that identifies groups in the data. The group variable is required. block-variables specify optional variables that group the data into blocks of consecutive groups. These blocks are labeled in a legend, and each block variable provides one level of labels in the legend.”
Und weiter: “Displaying Blocks of Data: The values of a block variable must be the same for all observations with the same value of the group variable. In other words, groups must be nested within blocks determined by block variables. “
Ein anderer Begriff für genestete Daten ist hierarchisch angeordnet oder geschachtelt. In unserem Beispiel aber liegen zwei Faktoren vor, die gleichberechtigt sind: Krankheit und Therapie. Jeder Wert von Krankheit wird mit jedem Wert von Therapie kombiniert.
Lösung
Um die Beispieldaten dennoch in einem Boxplot darstellen zu können, sind daher folgende Schritte notwendig:
- Generierung einer neuen Variablen, welche die Werte von Therapie und Krankheit kombiniert
- Sortierung nach der neuen Variablen
- Erzeugung eines Formats für diese neue Variable
- Aufruf der Prozedur Boxplot
Schritt 1: Generierung der neuen Variablen kt
Data b; Set a;
Label kt="Therapie";
If therapie=1 and krankheit=1 then kt=1;
If therapie=1 and krankheit=2 then kt=6;
If therapie=1 and krankheit=3 then kt=11;
If therapie=2 and krankheit=1 then kt=2;
If therapie=2 and krankheit=2 then kt=7;
...
If therapie=4 and krankheit=2 then kt=9;
If therapie=4 and krankheit=3 then kt=14;
Run;
Schritt 2: Sortierung nach kt
Proc Sort …; By kt; Run;
Schritt 3: Erzeugung eines geeigneten Formats für kt und dessen Zuweisung
Proc Format;
Value box
1="1" 2="2" 3="3" 4="4" 5=" "
/* Leerraum zwischen Blöcken */
6="1" 7="2" 8="3" 9="4" 10=" "
11="1" 12="2" 13="3" 14="4";
Run;
Data b;
Set a;
Format kt box.;
Run;
Schritt 4: Aufruf der Prozedur Boxplot
Proc Boxplot Data=b; Plot differenz*kt(krankheit) / Cboxfill=Yellow Cboxes=Black Cframe=Liggr Continuous ; Run;Quit;
Damit erhalten wir ein zufrieden stellendes Bild mit den von uns gewünschten Werten.
Literatur
- B. Schneider: PROC FORMAT Supports PROC BOXPLOT to Handle Twofold Grouped Data. SUGI 28, http://www2.sas.com/proceedings/sugi28/228-28.pdf [04.05.2008]

