Visualisierung von zweifaktoriellen Designs mit der Prozedur Boxplot

Aus SAS-Wiki
Wechseln zu: Navigation, Suche

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;

Diagramm.JPG

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;

Therapie.JPG

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:

  1. Generierung einer neuen Variablen, welche die Werte von Therapie und Krankheit kombiniert
  2. Sortierung nach der neuen Variablen
  3. Erzeugung eines Formats für diese neue Variable
  4. 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;

Therapie2.JPG

Damit erhalten wir ein zufrieden stellendes Bild mit den von uns gewünschten Werten.

Literatur