Stapeldiagram

Av Anders Sundell

Scatterplots är bra för att visa samband mellan två kontinuerlinga variabler, med värden jämt utspridda på en skala. Men om man till exempel jobbar med enkätdata finns det ofta ett begränsat antal svarsalternativ, vilket gör att respondenterna återfinns inom några få kombinationer. Det gör scatterplots olämpliga.

Ett alternativ för att visualisera datan är då att använda sig av stapeldiagram. Ett av Statas kommandon för dem låter oss snabbt summera variabler och visa dem på ett överskådligt sett. I det här exemplet ska vi titta närmare på sambandet mellan utbildning och inkomst i USA, med hjälp av den amerikanska General Social Survey. Den går att ladda ned här https://gss.norc.org/get-the-data/stata och vi kommer använda 2018-upplagan.

In [35]:
cd "/Users/anderssundell/Dropbox/Jupyter/stathelp/data/"
use "GSS2018.dta", clear
/Users/anderssundell/Dropbox/Jupyter/stathelp/data

Variabeln för utbildning heter degree och har fem värden. Variabeln för inkomst är en skala som anger respondentens inkomst i dollar, realrinc. USA är känt för att ha en hög "education premium", dvs att det lönar sig väldigt väl att utbilda sig. Löneskillnaderna är stora. Vi tar fram ett stapeldiagram med graph bar-kommandot, anger att vi vill ha medelvärden av variabeln realrinc, och säger till sist att vi vill ha en stapel för varje värde av variabeln degree. Eftersom degree har fem värden blir det fem staplar.

In [17]:
graph bar (mean) realrinc, over(degree)
Stata Graph - Graph 0 10,000 20,000 30,000 40,000 50,000 mean of realrinc lt high school high school junior college bachelor graduate

Diagrammet visar på väldigt tydliga skillnader: De som till exempel har en kandidatexamen tjänar ungefär dubbelt så mycket som de som bara har gått high school eller junior college.

Horisontella staplar

Vill vi ha liggande staplar (till exempel om man har mycket text i kategorimarkörerna) är det lätt gjort: det är bara att byta ut graph bar mot graph hbar i koden.

In [18]:
graph hbar (mean) realrinc, over(degree)
Stata Graph - Graph 0 10,000 20,000 30,000 40,000 50,000 mean of realrinc graduate bachelor junior college high school lt high school

Lägga till etiketter

Stapeldiagrammet visar snabbt ungefär hur mycket de olika grupperna tjänar. Men om man vill veta exakt kan det vara bra att skriva ut de faktiska siffrorna. Det gör vi genom att lägga till etiketter som visar staplarnas höjd.

För det behöver vi ett option blabel(bar). Det lägger vi till efter over. Vi kan även prova att byta ut medelvärdet mot medianen, vilket ofta är lämpligt när man jobbar med inkomster, eftersom några få med extrema inkomster drar upp medelvärdet mycket.

Vi gör också två kosmetiska förändringar: Vi byter ut texten på y-axeln till något prydligare med option ytitle, och ändrar färgen på staplarna med bar(1, color(purple)).

In [38]:
graph bar (median) realrinc, over(degree) blabel(bar) ytitle("Medianinkomst i dollar") bar(1, color(purple))
Stata Graph - Graph 9647.5 12485 17025 24970 37455 0 10,000 20,000 30,000 40,000 Medianinkomst i dollar lt high school high school junior college bachelor graduate

Nu framträder mönstret ännu tydligare. De med graduate degree - motsvarande masterexamen - tjäner nästan fyra gånger så mycket i genomsnitt som de med den lägsta utbildningsnivån.

Avslutning

Precis som med alla grafer kan man lägga oändligt med tid på att slipa på dem för att få dem exakt som man vill. Men bara med de ganska snabba inställningarna vi använt här kommer man långt, och ett prydligt stapeldiagram gör ofta mycket för att förmedla huvuddragen i en datamängd.