Articles

Wie kann ich ein Balkendiagramm mit Fehlerbalken erstellen? | Stata FAQ

Angenommen, Sie betrachten die schriftlichen Ergebnisse aufgeschlüsselt nach Rasse und Geschlecht. Sie möchten vielleicht den Mittelwert und das Konfidenzintervall für jede Gruppe grafisch darstellen, indem Sie ein Balkendiagramm mit Fehlerbalken verwenden, wie unten dargestellt. Diese FAQ zeigt, wie Sie ein solches Diagramm erstellen können, indem Sie es Schritt für Schritt aufbauen.

Image barcap1Image barcap1

Zuerst holen wir uns die Datendatei, die wir verwenden werden.

use https://stats.idre.ucla.edu/stat/stata/notes/hsb2, clear

Nun lassen Sie uns den Befehl collapse verwenden, um den Mittelwert und die Standardabweichung zu kürzen und ses.

collapse (mean) meanwrite= write (sd) sdwrite=write (count) n=write, by(race ses)

Nun lassen Sie uns die oberen und unteren Werte des Konfidenzintervalls erstellen.

generate hiwrite = meanwrite + invttail(n-1,0.025)*(sdwrite / sqrt(n))generate lowrite = meanwrite - invttail(n-1,0.025)*(sdwrite / sqrt(n))

Nun sind wir bereit, ein Balkendiagramm der Daten zu erstellen Der Befehl graph bar macht ein ziemlich gutes Balkendiagramm.

graph bar meanwrite, over(race) over(ses)
Image barcap2Image barcap2

Wir können den Graphen etwas hübscher aussehen lassen, indem wir die Option asyvars wie unten gezeigt hinzufügen.

graph bar meanwrite, over(race) over(ses) asyvars 
Image barcap3Image barcap3

Allerdings fehlen in diesem Diagramm die Fehlerbalken. So schön der Befehl graph bar auch ist, er erlaubt leider keine Fehlerbalken. Wir können jedoch ein zweiseitiges Diagramm erstellen, das Fehlerbalken enthält, wie unten gezeigt. Leider ist dieser Graph nicht so attraktiv wie der Graph aus graph bar.

graph twoway (bar meanwrite race) (rcap hiwrite lowrite race), by(ses)
Image barcap4Image barcap4

So, wir haben ein Rätsel. Der Befehl graph bar erzeugt ein schönes Balkendiagramm, unterstützt aber keine Fehlerbalken. Der Befehl twoway bar macht schöne Fehlerbalken, aber er ähnelt nicht dem schönen Graphen, den wir vom Befehl graph bar gewohnt sind. Wir können jedoch den Befehl „twoway bar“ verfeinern, um ein Diagramm zu erstellen, das dem Befehl „graph bar“ ähnelt, und dieses dann mit Fehlerbalken kombinieren. Hier eine schrittweise Vorgehensweise.

Zuerst erstellen wir eine Variable sesrace, die eine einzelne Variable ist, die die ses- und race-Informationen enthält. Beachten Sie, dass sesrace eine Lücke zwischen den Stufen von ses hat (bei 5 und 10).

generate sesrace = race if ses == 1replace sesrace = race+5 if ses == 2replace sesrace = race+10 if ses == 3sort sesracelist sesrace ses race, sepby(ses) +---------------------------------+ | sesrace ses race | |---------------------------------| 1. | 1 low hispanic | 2. | 2 low asian | 3. | 3 low african-amer | 4. | 4 low white | |---------------------------------| 5. | 6 middle hispanic | 6. | 7 middle asian | 7. | 8 middle african-amer | 8. | 9 middle white | |---------------------------------| 9. | 11 high hispanic | 10. | 12 high asian | 11. | 13 high african-amer | 12. | 14 high white | +---------------------------------+

Nun werden wir ein Diagramm mit graph twoway erstellen. Beachten Sie, dass die Balken in drei Gruppen zu je vier Balken angeordnet sind. Die drei Gruppen entsprechen den drei Stufen von ses und die vier Balken innerhalb jeder Gruppe entsprechen den vier Stufen von race. Sie können diese Gruppierung mit der Art und Weise in Verbindung bringen, wie wir oben die Rassen konstruiert haben.

twoway (bar meanwrite sesrace)
Image barcap5Image barcap5

Wir können nun die Fehlerbalken überlagern, indem wir ein rcap-Diagramm

twoway (bar meanwrite sesrace) (rcap hiwrite lowrite sesrace)
Image barcap6Image barcap6

Das sieht in etwa so aus, wie wir es wollen, aber es würde schöner aussehen, wenn jeder der Balken für die vier verschiedenen Rassen eine andere Farbe hätte. Wir können dies erreichen, indem wir vier separate Balkendiagramme überlagern, eines für jede Rassengruppe.

twoway (bar meanwrite sesrace if race==1) /// (bar meanwrite sesrace if race==2) /// (bar meanwrite sesrace if race==3) /// (bar meanwrite sesrace if race==4) /// (rcap hiwrite lowrite sesrace)
Image barcap7Image barcap7

Das sieht schon besser aus, aber lassen Sie uns die Legende verwenden, um die Balken besser zu beschriften.

twoway (bar meanwrite sesrace if race==1) /// (bar meanwrite sesrace if race==2) /// (bar meanwrite sesrace if race==3) /// (bar meanwrite sesrace if race==4) /// (rcap hiwrite lowrite sesrace), /// legend( order(1 "Hispanic" 2 "Asian" 3 "Black" 4 "White") )
Image barcap8Image barcap8

Die Legende beschriftet die Balken schön, würde aber sauberer aussehen, wenn es nur eine Zeile wäre und die x-Achse des Diagramms nicht vermitteln würde, dass die drei Gruppen von Balken den drei Gruppen von Ses entsprechen. Wir können die Option xlabel() verwenden, um das zu beheben. Wir fügen auch bessere Titel für die x- und y-Achse hinzu.

twoway (bar meanwrite sesrace if race==1) /// (bar meanwrite sesrace if race==2) /// (bar meanwrite sesrace if race==3) /// (bar meanwrite sesrace if race==4) /// (rcap hiwrite lowrite sesrace), /// legend(row(1) order(1 "Hispanic" 2 "Asian" 3 "Black" 4 "White") ) /// xlabel( 2.5 "Low" 7.5 "Middle" 12.5 "High", noticks) /// xtitle("Socio Economic Status") ytitle("Mean Writing Score")
Image barcap9Image barcap9

Jetzt haben wir einen Graphen, der wie die Art von Graphen aussieht, die wir von graph bar erhalten würden, aber indem wir graph twoway bar zu diesem hübschen Graphen verfeinern, könnten wir dann das rbar-Diagramm überlagern, um die gewünschten Fehlerbalken zu erhalten.

Eine Antwort schreiben

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.