Articles

Come posso fare un grafico a barre con barre di errore? | Stata FAQ

Si supponga che stiate guardando i punteggi di scrittura suddivisi per razza e ses. Potresti voler rappresentare la media e l’intervallo di confidenza per ogni gruppo usando un grafico a barre con barre di errore come illustrato di seguito. Questa FAQ mostra come potete fare un grafico come questo, costruendolo passo dopo passo.

Image barcap1Image barcap1

Primo, prendiamo il file di dati che useremo.

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

Ora, usiamo il comando collapse per rendere la media e la deviazione standard byrace e ses.

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

Ora, facciamo i valori superiore e inferiore dell’intervallo di confidenza.

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

Ora siamo pronti per fare un grafico a barre dei dati Il comando graph bar fa un bel grafico a barre.

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

Possiamo rendere il grafico un po’ più carino aggiungendo l’opzione asyvars come mostrato sotto.

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

Ma questo grafico non ha le barre di errore. Sfortunatamente, per quanto bello sia il comando della barra del grafico, non permette le barre d’errore. Tuttavia, possiamo fare un grafico a due vie che ha le barre di errore come mostrato qui sotto. Sfortunatamente, questo grafico non è attraente come quello di graph bar.

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

Abbiamo quindi un enigma. Il comando graph bar farà un bel grafico a barre, ma non supporterà le barre d’errore. Il comando twoway bar fa delle belle barre di errore, ma non assomiglia al bel grafico che ci piaceva dal comando graph bar. Tuttavia, possiamo perfezionare il comando twoway bar per fare un grafico che assomigli al comando graph bar e poi combinarlo con le barre di errore. Ecco un processo passo dopo passo.

Prima di tutto, creeremo una variabile sesrace che sarà una singola variabile che conterrà le informazioni ses e race. Notate come sesrace ha uno scarto tra i livelli di ses (a 5 e 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 | +---------------------------------+

Ora, faremo un grafico usando graph twoway. Notate come le barre sono in tre gruppi di quattro barre. I tre gruppi corrispondono ai tre livelli di ses e le quattro barre all’interno di ogni gruppo corrispondono ai quattro livelli di razza. Potete mettere in relazione questo raggruppamento con il modo in cui abbiamo costruito le razze sopra.

twoway (bar meanwrite sesrace)
Image barcap5Image barcap5

Ora possiamo sovrapporre le barre di errore sovrapponendo un grafico rcap

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

Questo sembra quello che vogliamo, ma sarebbe più bello se ognuna delle barre per le quattro diverse razze fosse di colore diverso. Possiamo farlo sovrapponendo quattro grafici a barre separati, uno per ogni gruppo razziale.

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

Questo sembra migliore, ma usiamo la legenda per etichettare meglio le barre.

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

La leggenda etichetta bene le barre, ma avrebbe un aspetto più pulito se fosse una sola riga e l’asse x del grafico non comunicasse che i tre gruppi di barre corrispondono ai tre gruppi di ses. Possiamo usare l’opzione xlabel() per rimediare a ciò. Aggiungiamo anche titoli migliori per gli assi x e y.

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

Ora abbiamo un grafico che assomiglia al tipo di grafico che otterremmo da graph bar ma affinando graph twoway bar nel fare questo bel grafico, potremmo poi sovrapporre il grafico rbar per ottenere le barre di errore che desideriamo.

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *