26.01.2008

SPSS-ähnliche Boxplots mit Excel (UPDATE)

boxplot.pngUPDATE: Jetzt mit Beispiel-Dateianhang. :-) Aktuell bin ich bei meinem Arbeitgeber leider auf Excel XP (aka 2002) ohne jegliche Erweiterungen beschränkt, was die Datenvisualisierungs- und Analysemöglichkeiten doch sehr einschränkt. SPSS ist zwar bestellt, wird dem Vernehmen nach aber noch eine Weile brauchen. Kostenlose, boxplottaugliche Alternativen für den kommerziellen Einsatz sind mir nur unter den Namen R, KNIME oder Gnumeric bekannt, wobei ersteres reichlich Lernaufwand erfordert, zweiteres derzeit wohl nur Einzel-Boxplots beherrscht (ich brauchte rund 90), und mir letzteres in der aktuellen Windows-Version nicht erlaubte festzulegen, ob die Daten in den Zeilen oder den Spalten liegen – statt 90 Boxplots mit ein bis acht Samples bekam ich immer acht Boxplots mit bis zu 90 Samples zu sehen, auch das Transponieren brachte nichts.

Also machte ich mich schweren Herzens an eine manuelle Boxplot-Erstellung, wie sie im Netz mehrfach beschrieben ist. Die ansprechendste Anleitung dazu fand ich hier, wenngleich die Formeln für die Whisker-Begrenzungen kleine Fehler aufweisen. Diese sind aber, da man sich ja ohnehin geistig mit der Erstellung auseinandersetzt, recht schnell behoben. Auch eine Formel zur Ausreißer-Bestimmung war schnell nachreicht, da die beschriebene manuelle Bestimmung bei mehr als einer Handvoll Boxplots kaum durchführbar ist.

Das Ergebnis kann sich durchaus sehen lassen (siehe Aufmacherbild): Ein hübscher Boxplot mit den bekannt flexiblen, optischen Gestaltungsmöglichkeiten, die auch frühe Excel-Versionen im Gegensatz zu SPSS zu bieten haben. SPSS soll diesbezüglich jetzt zwar aufgeholt haben (ich kenne es nur bis v11), kostet aber immer noch ein Vielfaches dessen, was für das Flaggschiff aus dem Hause Microsoft verlangt wird.

In einem späteren Beitrag werde ich entweder die ganze Boxplot-Erstellung noch einmal vollständig, richtig und auf Deutsch dokumentieren, oder (so mein eigentlicher Plan) ein Excel-Makro dafür abliefern – das kann eigentlich auch für Gelegenheitsprogrammierer wie mich nicht allzu schwer sein. :-)

UPDATE: Auf wiederholten Wunsch jetzt mit Beispiel-Download und einigen Erklärungen dazu (wenn ich denn die Option dazu finde *g*):

  1. Zeilen P25, P50 und P75 als Stapelbalkendiagramm generieren
  2. Dem untersten Balken (P25) negative Fehlerbalken hinzufügen (Datensatz whisker-lo)
  3. 2.) Den untersten Fehlerbalken ohne Umriss und Füllung formatieren (also unsichtbar machen), P50 und P75 rot ausfüllen
  4. Dem obersten Balken (P75) positive Fehlerbalken hinzufügen (Datensatz whisker-hi)
  5. Alle Ausreißerdatensätze (out-lo1 bis out-hi4) kopieren und im Diagramm einfügen
  6. Einen der häßlichen Zusatzbalken anklicken, sodass der Datensatz markiert ist. Im Rechtsklick-Kontextmenü “Diagrammtyp” auswählen und auf “Streudiagramm” ändern. Für alle anderen Ausreißerbalken wiederholen, am einfachsten mit “Strg+Y”.
  7. Ausreißer-Datenpunkte nach Belieben formatieren, z.B. als schwarz ausgefüllte Kreise.

Anhang:

Kommentare

Hallo Alicantist! Das Aufmachbild ist vielversprechend. Ich bin bereits auf eine doku ind Deutscht oder noch besser auf das Excel-Makro gespannt. Leider kann ich keine Makros schreiben. Würde mich über die Zusendung des Makros oder einen Hinweis, wo es zu finden ist, sehr freuen. Gruß Luigi

Hallo Alicantist,
auch wenn es jetzt wahrscheinlich zu spät ist: in KNIME ist es durchaus möglich 90 box plots in einer Visualisierung anzuzeigen. Pro Spalte wird ein box plot erzeugt. Also einfach die Daten für deine 90 box plots als Spalten in eine Tabelle packen, mit dem BoxPlot verbinden und anschauen ;o)

Stimmt, die neuere Version scheint das zu können, oder ich habe mich vorher einfach nur dusselig angestellt. ;-)

Allerdings hat KNIME leider auch noch gewisse Export- und Aufhübschungsdefizite, weshalb ich vorläufig bei R via Statistiklabor (http://www.statistiklabor.de) bleibe – der R-Grafikwizard dort ist genial, das wäre was für KNIME! Würde viel R-Code-Copypasting sparen, wenn das Ergebnis denn unbedingt in KNIME sichtbar werden soll. :-)

Dank für den Hinweis, werde mir das statistiklabor mal genauer anschauen. Bin aber trotzdem daran interessiert, was du mit “Export- und Aufhübschungsdefiziten” meinst?
Wir wollen KNIME ja schliesslich immer besser machen ;o)

Man kann aber auch R in KNIME einbinden und sämtliche R Views dann von KNIME aus erzeugen. Hat den Vorteil, dass man die (wie ich finde) intuitive Datenvorverarbeitung mit KNIME machen kann. Das würde dann in Richtung statistiklabor gehen, wenn ich das richtig verstanden habe ;o)

Nun, ein reiner Export als PNG in Bildschirmauflösung ist nicht so die “Waffe” fürs Reporting – Vektor- oder zumindest Hires-Export wären schon mal sehr wichtig, sonst kann ich gleich einen Screenshot machen, um es ins Office-Paket zu hieven (bereits so geschehen).

Die Einbindung von R werde ich demnächst auch mal angehen, muss mit aber für meinen Produktivrechner erst die Freigabe von IT holen (und das kann leider dauern). Für die Datenvorverarbeitung ist KNIME aber ohne Frage schon spitze, daran besteht kein Zweifel. :-)

Hallo!

Bin grad auf der Verzweifelten Suche nach einem tauglichen box-plot add i oder makro oder ähnlichem für excel. Dein Aufmacherbild sieht ehrlich toll aus und lässt mich hoffen. Kann man dein Makro downloaden?
Vielen Dank und LG nach Spanien

So, jetzt mit Update. HTH. :-)

Hallo,
Dein Ansatz gefällt mir, da ich auch viel mit Excel arbeite (bzw. arbeiten muss) und die graphischen Darstellungsmöglichkeiten häufig eingeschränkt sind.

Allerdings denke ich, dass in Deiner Beispieldatei in der Berechnung der whisker noch ein Fehler steckt:
Wenn wir von davon ausgehen, dass Ausreißer (Entfernung vom Ende der Box >1,5xIQR), dann sind in Deiner Beispieldatei die whisker immer 1,5xIQR lang. Dies entspricht nicht der Definition. Wenn Ausreißer vorhanden sind, dann gehen die whisker bis zu dem Datenpunkt, der als letzter gerade noch innerhalb der Grenze von 1,5xIQR liegt.
Ansonsten sieht die Umsetzung aber sehr schön aus.

Besten Dank für den Hinweis. Ich schau’s mir demnächst (im Urlaub) noch mal näher an. :-)

Hinterlasse einen Kommentar

Dein Kommentar:

Kategorien