Kategoriarkiv: Visualisering av data

Visualisering av vädret i Stockholm

Ett nytt år har inletts. Min förhoppning är att 2017 ska visa sig vara ett produktivt år. Jag har även tänkt börja använda statistikprogrammet R i högre grad än tidigare. Det finns ett flertal skäl till det beslutet, men framför allt finns en växande rörelse kring programmet och inom den skapas en stadigt ökande mängd av nya, spännande funktioner.

Det bästa sättet att komma in i ett nytt statistikspråk är att använda det praktiskt. Så jag bestämde mig därför att försöka ta fram en variant av Edward Tuftes klassiska visualisering i NY Times av vädret under årets olika dagar. Det är en graf som har blivit känd genom Tuftes inflytelserika bok Visual Display of Quantitative Information

Grafen har två delar. I den övre delen redovisas temperaturen för årets alla 365 dagar i vad som vid första anblick ser ut som tre linjer av olika tjocklek, men som egentligen är tre typer av staplar som ligger mycket tätt:

  1. Staplar som visar intervallet från den lägsta till den högsta temperaturen för respektive dag det aktuella året (staplarna i den lila färgen).
  2. Staplar som visar intervallet från den lägsta till den högsta temperaturen för respektive dag historiskt sett (de ljusa staplarna).
  3. Staplar som visar intervallet från den genomsnittligt lägsta temperaturen historiskt sett till den genomsnittlig högsta temperaturen historiskt sett.

Dessutom finns kumulativ nederbörd per månad redovisat i grafens nederkant.

Jag upptäckte att Brad Boehmke redan hade skrivit kod i R för att ta fram en sådan graf. Den skiljer sig något från NY Times graf, framför allt genom att han inte hade tillgång till högsta och lägsta temperatur för respektive dygn, utan endast dygnsmedeltemperaturen. I hans grafen blir därmed det aktuella årets temperatur över dagar illustrerat som en linje. Dessutom hade han inte tillgång till nederbörd, så den delen av den ursprungliga grafen finns inte med. Men jag tycker ändå att hans resultat blev bra, se själva:

Så jag har utgått från den koden, men jag har ändrat den en del. Bland annat fick jag inte hans numrering av dagar att fungera och jag förstod inte varför han ritade samma graf för varje historiskt år. Dessutom valde Boehmke att låta intervallet avseende normala år representeras av konfidensintervallet för det historiska medelvärdet. Detta då han som sagt inte hade tillgång till varje dygns högsta och lägsta temperatur. Jag tycker inte att det är helt lyckat val då det visar osäkerheten i en skattning av ett historiskt medelvärde snarare än ett intervall som innefattar normala värden.

Man skulle i stället kunna låta intervallet motsvara två standardavvikelser i datamaterialet (dvs. inte dela med roten ur n) i förhållande till medelvärdet. Men jag föredrar att låta intervallet ”normala temperaturer” avse de mittersta 50 procenten av tidigare års medeltemperaturer. Med andra ord: om man sorterar alla tidigare års medeltemperaturer för en viss dag från den lägsta till den högsta temperaturen så blir de procent av dagarna som ligger i mitten de dagar som betecknas ”normala”. Staplarna i grafen blir därmed en variant av ett lådagram (eller boxplot på engelska), där den mörkare färgen blir själva lådan.

En rolig utveckling av Tuftes graf är att Boehmke har markerat de dagar som det aktuella året har rekordhög eller rekordlåg medeltemperatur. Det tillför något nytt och jag därför behållit den delen.

Jag har valt att illustrera medeltemperaturen i Stockholm 2016. Data har jag hämtat från SMHI. Där har jag hämtat historisk data från och med 1961. Och den resulterande grafen för vädret i Stockholm 2016 blev så här (klicka på grafen för att förstora):

Inte så långt från originalet, eller hur? Möjligen skulle man kunna ändra proportionerna för att få grafen mer avlång som i Tuftes version, men jag gillar den nuvarande utformningen. Jag har även som ett experiment skapat en ny blogg där jag kommer att lägga ut mer kring statistik och kodande. Det är en blogg som jag skapat direkt i statistikprogrammet R med hjälp av paketet Blogdown. Där har jag lagt ut koden för att skapa den här grafen, se det här inlägget, om ni vill utveckla den ytterligare.

Hos SMHI finns än äldre data och det finns även uppgifter om högsta och lägsta temperatur respektive dygn och om nederbörd, så det går att göra en graf som än mer liknar originalet, men det får bli en senare uppgift.

QQ-plots med Pisa-resultat

Sommaren är en utmärkt tid för att experimentera lite med data, metoder och program. Bland allt har jag tänkt använda statistikprogrammet R lite mer än jag brukar (vanligtvis använder jag Stata eller SAS – se min översikt av statistikprogram här).

Den här bloggposten är en kombination av ovanstående. En intressant form av grafer är så kallade QQ-plots, eller quantile-quantile plots. De är ett alternativ till histogram om man vill studera fördelningar. Exempelvis kan de användas för att se om datamaterialet är normalfördelat (genom att jämföra en faktisk fördelning med en teoretisk). Eller som i det fall jag tänker titta på här, för att jämföra två olika fördelningar: hur väl pojkar och flickor presterar i Pisa-undersökningen 2012.

I nedanstående QQ-plots jämförs för ett antal länder hur bra flickor och pojkar presterade när det gäller läsförståelse och matematik i Pisa 2012. För respektive kön har eleverna delats in i likstora 100 grupper efter hur väl de presterade, från de sämsta till de sämsta. I diagrammet är flickornas resultat på y-axeln och pojkarnas på x-axeln. Den första punkten i diagrammet (nere till vänster) är alltså resultaten för den percentil som presterade sämst (de sämsta 1 procenten).

Som framgår av diagrammen är flickor bättre på läsförståelse i alla länderna som presenteras här. Skillnaden är rätt stor i Sverige och framför allt i Finland. När det gäller matematik är skillnaderna mindre. I Sverige är de sämsta tjejerna bättre än de sämsta killarna, men de bästa killarna är bättre än de bästa tjejerna. I övriga länder är könsskillnaderna lite större.

Exemplet och koden är hämtad från bloggen SmarterPoland, det är bara att kopiera och ändra för den som vill ta fram andra resultat. Om ni vill lära er mer om QQ-plots rekommenderas klassikern Visualizing Data av William S. Cleveland från 1993.

[slideshow_deploy id=’2826′]

Proportionella venndiagram

Häromveckan fick jag frågan om hur man på bästa sätt gör ett venndiagram där cirklarna är proportionella i förhållande till gruppernas storlek (om du inte känner till venn- och eulerdiagram, se ett av mina tidigare inlägg). Jag är inte helt säker på om jag tycker att det är en strålande idé över huvud taget. Om man vill illustrera olika gruppers storlek är cirklar inget bra alternativ (en dag kanske den insikten även kommer till DN:s grafiker, även om jag börjar ge upp hoppet). Men om det inte är huvudsaken kan det kanske ändå ge en ungefärlig uppfattning av den inbördes storleksordningen.

Om man googlar efter ”venn diagram area proportional” hittar man ett gäng lösningar, både sådana där man skapar diagrammet på webben i en applikation och sådana där man laddar ned ett särskilt program.  Det innebär dock manuellt arbete som är svårt att reproducera eller inlärning av ett nytt program och de kostnader som är förenade med det. Nyligen gav jag lite vägledning när det gäller hur man ska välja statistikprogram. Såvitt jag vet är det bara ett av dessa program där man kan skapa proportionella venndiagram (eller eulerdiagram), och det är R. Där finns dock åtminstone två olika paket att använda sig av: venneuler och vennDiagram. I det första är koden väldigt enkel. Säg att vi vill skapa ett venndiagram med A, B och C, där storleken för de tre är 200, 400 respektive 800. Och där kombinationen A, B och C är 20, kombinationen A och B är 40, A och C är 80 och B och C är 80. Då blir koden i R följande:

require(venneuler)
v <- venneuler(c(A=200, B=400, C=800, ”A&B&C”=20, ”A&B”=40, ”A&C”=80, ”B&C”=80))
plot(v)

Resultatet blir som följer:
Rplot_venn
Ibland sätter geometrin gränser som gör att den figur som skapas inte exakt stämmer överens med vad som specificeras, så det gäller att kolla att det verkar stämma. Det går att fixa till mer kring färger och utseende, antingen i R-koden eller senare i något annat program som Inkscape (som liksom R är gratis (den som har bättre resurser kan använda Adobe Illustrator)). Möjligheterna att kontrollera utseendet är än större om man använder paketet vennDiagram istället.  Men som ni ser, R är inte alltid så krångligt och det finns oftast fler lösningar på olika problem, även om antalet lösningar ibland kan vara överväldigande.

Gratis kurser på nätet

Så här i jultider och inför det kommande året kan det vara värt att tipsa om ett antal kurser på nätet som alla är gratis:

Statistics 110 Grundläggande statistikkurs med mycket om sannolikhetslära. Föreläsare är Joe Blitzstein från Harvard. Kursen består i huvudsak av ett antal videolektioner som finns tillgängliga via iTunes här.

Introduction to Inforgraphics and Data Visualization. En kurs i visualisering av data som ges av Knight Center for Journalism in the Americas, University of Texas. Föreläsare är Alberto Cairo, University of Miami, som nyligen kom ut med den intressanta boken The Functional Art. Kursen pågår under sex veckor och består av ett antal videolektioner och inlämningsuppgifter. Det krävs inte någon erfarenhet av datorprogram för visulisering eller några statistikkunskaper, till och med en journalist bör klara av kursen. Den inleds den 12 januari, läs mer här.

Computing for data analysis. En kurs vid Coursera med Roger D Peng som föreläsare. Peng forskar vid Johns Hopkins Bloomberg School of Public Health och är en av personerna bakom bloggen Simply Statistics. Han beskriver kursen på bloggen här. Det är också en kurs med videoföreläsningar och inlämningsuppgifter. Den är fokuserad på programmering snarare än analys och med programmering avses programmering i statistikprogrammet R. För den som inte har vana av programmering eller R kan den vara lite krävande, men alls inte omöjlig om man lägger ned lite tid. Du kan anmäla dig här.

Data analysis. En annan kurs vid Coursera som också handlar om dataanalys med hjälp av R. Föreläsare är Jeff Leek, som precis som Roger D Peng forskar vid Johns Hopkins Bloomberg School of Public Health och är en av personerna bakom bloggen Simply Statistics. Kursen har inte getts tidigare, men om jag förstår beskrivningarna rätt så ska den vara lite mer tillämpad än Pengs kurs. Du kan anmäla dig här och även se en introduktionsfilm.

Förutom den förstnämnda kursen är det möjligt att få ut någon form av certifikat som intygar genomgången kurs. Jag är dock tveksam till värdet av det, men varför inte om ni ändå tar kursen?

Gratis är gott

Uppdaterad 15 oktober 2012: Alberto Cairo har meddelat att The Knight Center har begränsat antalet deltagare i kursen av rädsla för att servrarna inte ska klara av trycket. Kursen kommer dock att ges igen i januari och vid ytterligare tillfällen senare om intresset finns.

Världen förändras. Som jag tidigare har skrivit är ett av världens mest kraftfulla statistikprogram gratis. Det heter R. För den som är intresserad av att lära sig mer om R eller andra program finns mängder av resurser på nätet. Dessutom finns allt fler kurser som tillhandahålls gratis. Exempelvis går just nu en fyra veckors kurs i R på Coursera. Där finns många andra gratiskurser, framför allt inom statistik och matematik, men även grekisk mytologi med mera.

För den som är intresserad av visualisering av data utan att det blir alltför tekniskt rekommenderas den kommande kursen Introduction to Infographics and Data Visualization som ges av Knight Center vid University of Texas. Föreläsare är den kände Alberto Cairo. Han har för övrigt nyligen kommit ut med boken The Functional Art. Läs en positiv recension av den här. Jag tror att kursen kan bli riktigt intressant. Om du är intresserad kan du se Alberto presentera kursen i ett videoklipp nedan.

Introduction to Infographics and Data Visualization from Knight Center on Vimeo.

 

Cirkelresonemang

Cirkeldiagram (eller tårtdiagram som de också kallas) är vanligt förekommande i visualiseringar av data. Tyvärr används de ofta på ett mindre lyckat sätt. Detta har gjort att de fått ett väldigt dåligt rykte, men det finns tillfällen där cirkeldiagram fungerar riktigt bra. Jag påmindes om det häromdagen när jag läste en diskussion kring cirkeldiagram som uppstod med anledning av ett inlägg från Quora.

I likhet med linjediagrammet och stapeldiagrammet så skapades cirkeldiagrammet av William Playfair. Playfair är en centralfigur i den statistiska grafikens historia och hans tidiga verk finns bland annat kommenterade i Edward Tuftes klassiska bok The Visual Display of Quantitative Information (som jag har tänkt kommentera i något senare inlägg).

Cirkeldiagram kan vara utmärkta för att illustrera hur en helhet fördelar sig på ett antal delar, exempelvis hur stor marknadsandel något eller några företag på olika marknader. En nackdel med diagrammen är att det är svårt att bedöma skillnader i storlek mellan olika tårtbitar, så om det är viktigt i presentationen finns det bättre alternativ. Exempelvis har forskning visat att stapeldiagram är bättre i det avseendet Detta illustreras tydligt i följande bild från Wikipedia där fem ungefär lika stora andelar jämförs:

Tyvärr används cirkeldiagram ofta i 3D, vilket aldrig är lyckat. Förutom att det är fult förvrängs även intrycket, vilket gör att tårtbitarnas storlek inte motsvarar deras faktiska andel. Detta visas tydligt i en bild från ett inlägg på den utmärkta bloggen Visual.ly.

Angle Distortion in 3D Pie Charts

Ett annat vanligt fel i cirkeldiagram är att alldeles för många tårtbitar används. Helst bör ett cirkeldiagram ha högst fem tårtbitar, men upp till sju brukar kunna funkar. Mer än så blir sällan bra, även om det kan i viss mån kompenseras med ett klokt val av färger. När det gäller färger bör man hålla sig till en färg och variera dess styrka, alternativt använda en diskret färg för alla tårtbitar förutom den som man vill hålla fram. När det gäller tårtbitarnas positioner bör den största biten (andelen) börja klockan 12 i diagrammet. Övriga bitar bör sedan komma i sjunkande storleksordning. Dock är det ofta bra att placera den näst största andelen sist, dvs. så att den tårtbiten slutar klockan 12. En annan variant av cirkeldiagram som man ska undvika är de där någon eller några tårtbitar lyfts ut en aning. Om man vill framhålla någon andel bör det istället göras med hjälp av färgval.

En släkting till cirkeldiagrammet är munkdiagrammet (donut chart). De är cirkeldiagram där mitten har tagits bort. Det ger möjlighet att ge information i det hål som skapas i mitten. Nackdelen är att det blir svårare att bedöma andelarnas storlek när man inte lika lätt kan utläsa vinklar då mitten saknas. Bland annat The Economist är väldigt förtjusta i sådana diagram, som i exemplet nedan.

The Economist's Donut Chart Showing Changing Bank Pre-Tax Profits

Jag tycker att munkdiagram fungerar ok och att svårighet att avläsa andelarnas storlek i förhållande till cirkeldiagram är något överdrivna. Snarare är det så att det är svårt i båda typer av diagram. Styrkan ligger snarare i att snabbt kunna utläsa ungefär hur helheten fördelar sig på olika andelar. Men för att vara tydlig, Economists diagram ovan är inte lyckat. Ordningen på delarna är förvirrande och etiketterna ger ett väldigt rörigt och oroligt intryck. Samtidigt finns det grader i diagramhelvetet och Fox News är som vanligt värst.

Så för att sammanfatta: cirkeldiagram kan vara effektiva och bra, men det finns en rad fällor. Rätt använda är de dock inte alls dumma, eller annorlunda uttryckt: ett tårtdiagram kan vara riktigt smakfullt. Bloggen Eager Eyes ger en del ytterligare matnyttiga tips i ämnet.

Anscombes kvartett

Att grafiskt åskådliggöra sina data är inte bara en möjlighet att underlätta för läsaren att förstå och tolka en undersöknings resultat. Det är inte konstigt att många inflytelserika forskare inom samhällsvetenskaperna, som Gary King och Andrew Gelman, på senare tid lyft fram vilket fantastiskt verktyg visualisering av data kan vara i dessa sammanhang (även om genomslaget än så länge varit ganska litet, i alla fall i Sverige). Grafiken kan även vara till stor hjälp vid analys av data. Vi har mycket lättare att snabbt ta till oss ett datamaterial som illustrerats grafiskt, och framför allt har vi en förmåga att urskilja mönster i grafer som går oss förbi ifall samma data skulle presenteras i tabellform.

Grafikens möjligheter i dessa sammanhang illustreras mycket tydligt genom Anscombes kvartett. Det är en kvartett dataset som blev kända genom Francis J Anscombes artikel ”Graphs in Statistical Analysis” i The American Statistician, 1973. Artikeln är mycket läsvärd och den utgör en kraftfull argumentation för användandet av grafer i analys av datamaterial (frågan är om man i dag skulle komma undan med ett sådant språk i en vetenskaplig artikel). I artikeln presenterar Anscombe fyra dataset med värden för två variabler: x och y.

 4
x y x y x y x y
10 8,04 10 9,14 10 7,46 8 6,58
8 6,95 8 8,14 8 6,77 8 5,76
13 7,58 13 8,74 13 12,74 8 7,71
9 8,81 9 8,77 9 7,11 8 8,84
11 8,33 11 9,26 11 7,81 8 8,47
14 9,96 14 8,1 14 8,84 8 7,04
6 7,24 6 6,13 6 6,08 8 5,25
4 4,26 4 3,1 4 5,39 19 12,5
12 10,84 12 9,13 12 8,15 8 5,56
7 4,82 7 7,26 7 6,42 8 7,91
5 5,68 5 4,74 5 5,73 8 6,89

Som ni ser av tabellen har x samma värden i dataset 1 till 3, medan y varierar mellan samtliga dataset. Även i så här små dataset är det svårt att urskilja tydliga mönster och då man analyserar datamaterial med tusentals observationer eller fler, ja, då blir det en omöjlighet. Vanligtvis tar man därför fram ett antal mått för de variabler man är intresserad av, såsom medelvärden och mått på variation. Om vi ser till dataset 1 kan vi exempelvis ta fram följande värden:

Antal observationer (n)=11

Medelvärde för x=9

Medelvärde för y=7,5

Standardavvikelse för x=3,32

Standardavvikelse för y=2,03

Och en enkel regressionsmodell (OLS) ger y=3+0,5x med ett p-värde för koefficienten för x på 0,03 och ett R2 som uppgår till 0,67.

Det intressanta är att exakt samma värden även gäller för dataset 2, 3 och 4. Så om vi bara använder dessa standardmått kan vi lätt frestas att dra slutsatsen att sambandet mellan x och y ser ut på samma sätt i de fyra datamaterialen. Stämmer då inte det? Nej, om vi grafiskt illustrerar sambandet mellan x och y i dataseten med hjälp av punktdiagram och en regressionlinje ser vi att det är stora skillnader mellan dem.

I dataset 1 verkar sambandet mellan x och y vara linjärt och regressionsmodellen förefaller därmed vara lämplig. Punkterna ligger jämnt spridda kring regressionslinjen. Som framgår av graf 2 är den linjära regressionsmodellen däremot inte lämplig för dataset 2. Där verkar istället sambandet mellan x och y vara kurvlinjärt och en modell med en andragradspolynom hade antagligen varit mer lämplig. I dataset 3 verkar visserligen sambandet mellan x och y vara linjärt, men en observation verkar vara en så kallad uteliggare (outlier) och den observationen gör att regressionslinjen blir brantare än den annars skulle vara. Här bör den observationen kontrolleras för att se att det inte är något fel i datamaterialet. Även om datapunkten visar sig vara korrekt kan det finnas anledning att fundera på att utesluta den från modellen (det beror på sammanhanget) eller berätta om dess effekt i presentationen av analysen. I dataset 4 beror sambandet på endast en datapunkt. Om den utesluts finns inte längre något linjärt samband. Även här finns det anledning att studera datamaterialet närmare för att se om ett linjärt samband verkligen finns.

Även om dessa dataset är illustrerar extremfall är det inte ovanligt att motsvarande situationer kan uppstå, om än vanligtvis i lindrigare former. Så slutsatsen är glasklar: visualisera dina data!

Venn och Euler

Med det ökande intresset för visualiseringar av data har Euler- och framför allt Venndiagrammen fått en renässans. Det har på senare tid skrivits en del bra om dessa diagram på olika håll, så jag passar på att skriva ned några rader och ge ett par länkar (se längst ned).

Venndiagram är diagram som visar alla logiskt möjliga kombinationer mellan mängder (klasser). De används flitigt i mängdlära. Vanligen tar de formen av två eller tre överlappande cirklar. I bilden nedan ses ett Venndiagram med cirkel A och B.

Allt som befinner sig inom cirkel A tillhör en viss kategori (eller mängd) och allt som befinner sig utanför cirkeln tillhör inte den kategorin. Samma gäller för cirkel B. Exempelvis kan vi tänka oss att cirkel A representerar hundar och cirkel B skådespelare. Den del av diagrammet faller inom både cirkel A och B brukar kallas snittet av A och B och avser dem som tillhör både kategori A och B, vilket i det här exemplet blir skådespelande hundar, såsom Rin Tin Tin, Lassie och Uggie. Den del av diagrammet som är inom antingen A eller B (tillhör minst en av kategorierna) brukar kallas unionen av A och B. Eftersom Venndiagram ska innehålla alla logiskt möjliga kombinationer av de kategorier som redovisas blir det komplext om antalet kategorier är många, så vanligen innehåller diagrammen två eller tre kategorier (ofta i form av cirklar).

Bilden ovan är hämtad från The World Reduced to Infographics av Patrick Casey och Worm Miller.

Venndiagram kan ses som en underkategori till Eulerdiagram. Eulerdiagram behöver inte ha restriktionen att diagrammet ska innefatta alla möjliga kombinationer av de olika klasser som redovisas. De innefattar därmed fler typer av diagram än Venndiagram. Eulerdiagram brukar bland annat användas för att beskriva statistiska urvalsundersökningar, som i bilden nedan. Där har vi hela populationen, t.ex. svenska medborgare 18 år och äldre, ur vilken vi drar ett urval (sample). De som ingår i urvalet kontaktas sedan på något sätt, men tyvärr vill inte alla vara med i undersökningen, så de svarande blir en delmängd av dem i urvalet. Ofta komplicerar man bilden ytterligare genom att skilja på den population vi avser att undersöka och den population som ingår i den urvalram (den lista från vilken vi drar urvalet) vi har att tillgå när vi gör undersökningen.

Det är förhållandevis enkelt att skapa ett Venn- eller Eulerdiagram i en mängd programvaror. Vanligen är inte kategorierna redovisade i storlekar som är proportionella mot deras faktiska storlekar. Om man ändå vill ha mer kontroll över proportionerna och även vill koppla dem till befintliga data är alternativen färre. I statistikprogrammet Stata finns det användarskrivna kommandot -pvenn-, som kan installeras via -ssc install pvenn- och som kan ta fram Venndiagram. Tyvärr blir det inte riktigt så snyggt som man skulle önska (diagrammet med cirkel A och B ovan är skapat i Stata). I statistikprogrammet R (fantastiskt gratisprogram) finns däremot funktionen venneuler() som kan hantera både Venn- och Eulerdiagram och dessutom resulterar i ett riktigt snyggt resultat.

Venndiagram kan ofta användas för att illustrera roliga samband, som i diagrammet av Stehpen Wildish nedan (se fler Venndiagram av Stephen Wildish här).

Läs bra inlägg om Euler- och Venndiagram hos visual.ly och EagerEyes. Även Wikipedia har matnyttig information om Venndiagram och Eulerdiagram. För den som blir riktigt biten rekommenderas den tredje internationella workshopen kring Eulerdiagram.