Histogram

av Anders Sundell

Innan man börjar jobba med sin data är det viktigt att bekanta sig med hur den ser ut. Ett effektivt sätt att göra det, för kontinuerliga variabler med många olika värden, är så kallade histogram. I den här guiden kommer vi att gå igenom vad de är för något, hur man använder dem, och hur man kan ställa in dem för att visa exakt det man vill.

För att ha något att jobba med kommer vi att använda oss av QoG basic-datamängden. Här har jag skrivit in sökvägen till datamängden direkt på internet, men man kan givetvis ladda ned den till sin dator och öppna den därifrån istället - det är vanligtvis att rekommendera.

In [2]:
use "https://www.qogdata.pol.gu.se/data/qog_bas_cs_jan18.dta", clear
(Quality of Government Basic dataset 2018 - Cross-Section)

Ett enkelt histogram

Vad är då ett histogram? Det visar en variabels fördelning, genom att dela in variabeln i grupper, och göra staplar som är olika höga beroende på hur många observationer som återfinns i varje grupp. På så sätt ser man snabbt var på skalan de flesta observationerna är, om fördelningen är normal eller skev, om det finns några outliers, med mera.

Vi ska titta närmare på variabeln gle_rgdpc, som visar BNP per capita för varje land i QoG-datamängden.

Kommandot är extremt enkelt. För att få fram default-histogrammet skriver man bara:

In [3]:
histogram gle_rgdpc
(bin=13, start=285.95001, width=7339.3091)
Stata Graph - Graph 0 2.0e-05 4.0e-05 6.0e-05 8.0e-05 Density 0 20000 40000 60000 80000 100000 Real GDP per Capita (2005)


På x-axeln visas BNP per capita i amerikanska dollar. Staplarna visar hur många länder som befinner sig i varje intervall. Vi ser alltså att det är en skev fördelning - det finns många fattiga länder, och några få väldigt rika.

Ändra inställningarna för y-axeln

Men diagrammet lämnar en del att önska. Det som visas på y-axeln är densitet, vilket är ganska ointuitivt för en oinsatt läsare. Om man istället vill visa antalet länder får vi läga till ett option, freq.

In [6]:
histogram gle_rgdpc, freq
(bin=13, start=285.95001, width=7339.3091)
Stata Graph - Graph 0 20 40 60 80 100 Frequency 0 20000 40000 60000 80000 100000 Real GDP per Capita (2005)


Vi kan nu se att nästan hundra länder återfinns i den lägsta stapeln. Det är ganska pedagogiskt när det handlar om länder, där det är ganska välkänt att det finns ungefär 200. Men i många andra fall är det inte lika känt, och det absoluta antalet är inte särskilt intressant. Till exempel i en enkätundersökning. Då är andelen mycket intressantare. Vi kan få fram procentandelen genom att byta ut freq mot percent. Vi kan då se att fler än hälften av alla länder finns i den fattigaste stapeln.

In [7]:
histogram gle_rgdpc, percent
(bin=13, start=285.95001, width=7339.3091)
Stata Graph - Graph 0 10 20 30 40 50 Percent 0 20000 40000 60000 80000 100000 Real GDP per Capita (2005)


Ändra staplarnas bredd

Men det är fortfarande inte helt lät att avgöra hur fattiga länderna är. I detaljerna innan själva diagrammet ser vi att den första stapeln börjar på det minsta värdet i datamängden, 285,95, och att varje stapel är 7339 bred. Det är inte särskilt pedagogiskt. Det duger när man själv bara vill få en snabb överblick, men när man ska presentera sina resultat för någon annan bör det vara så lättöverskådligt som möjligt.

Därför bör vi ändra så att staplarna börjar på 0, och sen följer något jämnt och fint intervall, till exempel 5000 dollar. Det gör vi genom att lägga till två ytterligare options. Det spelar ingen roll i vilken ordning vi skriver options.

In [8]:
histogram gle_rgdpc, percent start(0) width(5000)
(bin=20, start=0, width=5000)

(note: file /Users/anderssundell/.stata_kernel_cache/graph6.svg not found)
Stata Graph - Graph 0 10 20 30 40 Percent 0 20000 40000 60000 80000 100000 Real GDP per Capita (2005)

Det blev nu lite fler staplar, och de är lite smalare. Men det blir mycket lättare att prata om resultaten. Vi kan till exempel se att det är något fler än 40 procent av länderna som har mellan 0 och 5000 dollar i BNP per capita. Vill man göra det ännu tydligare kan man lägga till etiketter som visar exakt hur höga staplarna är, med option addlabels. I det här fallet tycker jag att det blir lite plottrigt, men det kan ju vara intressant att kolla upp för egen del, och så kan man beskriva viktiga värden i texten.

In [9]:
histogram gle_rgdpc, percent start(0) width(5000) addlabels
(bin=20, start=0, width=5000)

(note: file /Users/anderssundell/.stata_kernel_cache/graph7.svg not found)
Stata Graph - Graph 44.27 16.15 11.98 6.771 5.208 3.646 5.208 1.042 2.083 .5208 1.042 .5208 1.042 .5208 0 10 20 30 40 Percent 0 20000 40000 60000 80000 100000 Real GDP per Capita (2005)

Ändra utseende

Som med alla diagram kan man ställa in alla aspekter av utseendet, och där är det framförallt en fråga om tycke och smak. Jag tycker själv att diagram gör sig bättre i tryck om de har vit bakgrund. Ett enkelt sätt att ändra många olika aspekter av diagrammet på samma gång är att använda sig av option scheme(), som anger ett visuellt tema. Det finns flera olika, och du kan se en lista genom att köra kommandot "help schemes".

Jag gillar s1mono, som är rätt avskalat, särskilt i kombination med plotregion(lwidth(none)) som tar bort ramen runt själva grafen.

Men för att liva upp det är det kul om staplarna har någon färg. Det kan man få till med fcolor(pink) till exempel. Pröva dig fram!

Slutligen kan det också vara bra att känna till option ytitle("") och xtitle("") som låter dig ändra på beteckningen på axlarna, om man till exempel vill ha det på svenska.

In [27]:
histogram gle_rgdpc, percent start(0) width(5000) scheme(s1mono) plotregion(lwidth(none)) fcolor(pink) ytitle("Procent") xtitle("BNP per capita (USD)")
(bin=20, start=0, width=5000)

(note: file /Users/anderssundell/.stata_kernel_cache/graph24.svg not found)
Stata Graph - Graph 0 10 20 30 40 Procent 0 20000 40000 60000 80000 100000 BNP per capita (USD)

Exportera diagrammet

För att spara diagrammet för att inkludera i någon rapport behöver vi exportera det. Det gör vi genom att direkt nedanför histogram-kommandot i vår dofil lägga till kommandot graph export. Man skriver bara in namnet och sökvägen till filen. Har man i sin do-fil ställt in projektmappen med cd (beskrivet i guiden "Komma igång med Stata") behöver man inte skriva något annat än namnet, filen hamnar då i projektmappen.

Genom att ange ändelsen, till exempel .pdf .png eller .jpg bestämmer man vilken filtyp det blir. Slutligen lägger jag också till option replace, vilket betyder att om det redan finns en fil med samma namn ska den skrivas över. Det är praktiskt när man uppdaterar sin graf flera gånger, till exempel för att man ändrar utseendet.

In [31]:
graph export "bnphistogram.pdf", replace
(file bnphistogram.pdf written in PDF format)