R: Box-Plot auf Log-Skala vs. Log-Transformation * dann * Box-Plot erstellen: Erhalten Sie nicht das gleiche Ergebnis

8

In der boxplot()Funktion in R gibt es das log =Argument, um anzugeben, ob sich eine Achse auf der Protokollskala befinden soll oder nicht.

Wenn ich diese Option wähle ( log = "y"als Argument angeben ), sollte die Form des Box-Plots für mich so aussehen, als würde ich die Daten zuerst manuell mit dem Protokoll transformieren und dann diese log-transformierten Daten zeichnen (ich erkenne die Beschriftungen auf der Achse wird anders sein, aber ich beziehe mich auf die Form des Diagramms). Dies ist jedoch nicht der Fall.

Hier ist ein einfaches Arbeitsbeispiel:

set.seed(923489)
data <- rlnorm(300, meanlog = 0, sdlog = 1)
boxplot(data) # Highly skewed right raw data
boxplot(data, log="y") # Data on log scale; less right-skewed
boxplot(log10(data)) # Log base 10-transform data; shape not the same as when specify log="y"
boxplot(log(data)) # Natural log and base 10 give same shape plot (just different axis labels)

Warum ist das so?

Meg
quelle
2
Einer berechnet das Boxplot in Originaleinheiten und zeichnet es dann auf der Protokollskala, der andere berechnet das Boxplot auf der Protokollskala und zeichnet es dann. Die beiden Dinge unterscheiden sich jedes Mal, wenn Sie etwas erhalten, das nicht nur auf den einzelnen Quantilen basiert (die Zäune und damit die Whisker basieren auf linearen Funktionen von Quantilen)
Glen_b - Monica

Antworten:

6

Offensichtlich sieht die Box mit dem mittleren "Gürtel" gleich aus. Der Unterschied sind die Schnurrhaare. ?boxplotSagt uns das in den Standardeinstellungen

Wenn 'Bereich' positiv ist, erstrecken sich die Whisker bis zum extremsten Datenpunkt, der nicht mehr als 'Bereich' mal dem Interquartilbereich von der Box entfernt ist.

rangeist positiv, nämlich 1,5 in der Standardeinstellung. Verlängern sich die Schnurrhaare also um das 1,5-fache der Schachtel, aber in welcher Größenordnung? Wenn Sie anrufen boxplot(data, log="y"), beträgt der Wert für die nicht skalierten Daten 1,5. somit wird der untere Whisker länger. Wenn Sie anrufen, sind boxplot(log(data))die Whisker notwendigerweise symmetrisch.

Horst Grünbusch
quelle
Vielen Dank. Mir ist also nicht klar, wie die Daten am "richtigsten" dargestellt werden. Dieser Beitrag (der für Stata gilt, nicht für R, aber das gleiche Problem behandelt) scheint zu implizieren, dass die beste Vorgehensweise darin besteht, zuerst die Daten zu protokollieren und dann das Box-Plot manuell in Bezug auf die ursprünglichen Einheiten neu zu kennzeichnen : stata .com / support / faqs / graphics /… Gedanken zu diesem Ansatz?
Meg
2
@ Meg Ich denke, es würde davon abhängen, ob Sie der Meinung sind, dass die Whisker (die den Bereich darstellen) im Protokollbereich gleich lang oder nicht skaliert sein sollten. Da Sie die Daten protokolltransformieren, ist Ersteres wahrscheinlich sinnvoller.
Hao Ye
4

Aus ?boxplotkönnen Sie lesen:

Angebot

Dies bestimmt, wie weit die Plot-Whisker aus der Box herausragen. Wenn der Bereich positiv ist, erstrecken sich die Whisker bis zum extremsten Datenpunkt, der nicht mehr als den Bereich mal dem Interquartilbereich von der Box beträgt. Ein Wert von Null bewirkt, dass sich die Whisker bis zu den Datenextremen erstrecken.

Die Standardeinstellung beim Zeichnen eines Boxplots range=1.5bedeutet, dass die Whisker das 1,5-fache des Interquartilbereichs über dem dritten Quartil und unter dem ersten Quartil verlängern. Alle anderen Punkte werden als Ausreißer gekennzeichnet.

Die Unterschiede, die Sie sehen, basieren auf der Tatsache, dass die Protokolltransformation der Daten nicht den normalisierten Abstand eines Punkts vom dritten oder ersten Quartil beibehält. Wie bei Ihren Daten erwartet, haben Sie nach der Protokolltransformation weniger Ausreißer mit sehr hohen Werten und mehr Ausreißer mit niedrigen Werten.

Josliber
quelle
Vielen Dank für Ihren Kommentar, der im Wesentlichen dem oben genannten entspricht. Ich habe als "richtige" Antwort das mit den meisten Stimmen gewählt, aber ich schätze auch Ihren Beitrag.
Meg