Kategoriarkiv: statistikprogram

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.

Lär dig R i R!

För den som vill lära sig statistikprogrammet R finns många vägar att vandra, bland annat finns många gratis nätkurser via Coursera som lär ut R. Nu finns dock en ytterligare en väg: genom R!

I R kan man installera så kallade paket som tillför funktionalitet till programmet. Ett sådant paket är Swirl. Om man installerar det och sedan laddar det kan man genom R lära sig använda R. Läs mer om hur du går till väga här.

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′]

Att välja statistikprogram

Sedan jag startade den här bloggen har jag många gånger fått frågan om vilket statistikprogram man bör välja för att göra statistiska analyser. Det är inte en helt enkel fråga att besvara. Det finns vitt skilda åsikter och tvärtemot vad man kan tro väcker diskussioner av detta slag heta känslor. Det kan liknas vid de känsloyttring som kommer till uttryck när olika operativsystem för datorer ska diskuteras, och i båda fallen tenderar de som förespråkar gratislösningar och open source att argumentera med nästan religiösa undertoner, därmed inte sagt att de har fel.

Det finns ett stort antal statistikprogram att välja bland, men för många antar jag att valet står mellan R, SAS, SPSS och Stata. De är i alla fall de program som jag i första hand är bekant med. Om man redan är bekant med Python kan SciPy och Julia var en annan väg att gå. Och om man endast vill göra enklare beräkningar kan i vissa fall ett kalkylprogram, SQL eller något annat motsvarande fungera utmärkt.

Vilket är då det bästa statistikprogrammet? Det är en knepig fråga. Det är lite som med instrument; är en Fender Telecaster bättre än en Jaguar? Det beror lite på vad man gillar, vad man har tänkt göra och i vilket sammanhang. Statistikprogrammen har sina olika programmeringsspråk och som med alla språk kan det krångliga och omständliga bli en del av charmen, om man lär sig bemästra språket. Men, anyways, här är mina fem cent om de fyra programmen. Och ja, jag skulle gissa att många har avvikande uppfattningar.

SAS
Man skulle kunna beskriva SAS som mitt modersmål. Jag har knackat SAS-kod i över 10 års tid. Möjligen är det därför jag har lärt mig att gilla den omständliga syntaxen. Men det går inte att förbise att SAS har ett programmeringsspråk som är en rest från svunna tider (tider då hålkort användes) och det är både knöligt och inkonsekvent. Dessutom får man ofta skriva jämförelsevis mycket kod för att få något uträttat. Grafiken är också begränsad, även om förbättringar har skett på senare tid. Styrkan ligger i förmågan att hantera stora datamängder, olika typer av datakällor och databaser, samt att det är stabilt. Att det är stabilt är förmodligen en orsak till att det är populärt bland dem som inte har råd med fel eller problem i samband med uppdateringar. Baksidan av det myntet är att det tar lång tid innan nya metoder implementeras. Visserligen finns goda möjligheter att själv programmera sådant, men det tar tid och kan vara krävande. En ytterligare nackdel är att de årliga licenskostnaderna är höga.

SPSS
Mitt intryck är, lite elakt, att SPSS framför allt är populärt bland personer som inte kan så mycket statistik. Och många som använder SPSS gör det genom programmets menyer snarare än genom att skriva kod. Det är ett arbetssätt som jag starkt avråder ifrån (även om man i SPSS kan logga hur man har klickat i menyer och på så vis ändå få arbetet spårbart och reproducerbart). Samtidigt kan jag förstå att det används så då det är lätt att klicka fram några enkla tabeller, och det är enkelt att sedan flytta dem från SPSS till t.ex. Word. Fast med tanke på att SPSS är rätt dyrt, i synnerhet om man vill köpa de moduler som krävs för lite mer avancerad analys, blir det i så fall ett väl exklusivt verktyg för något väldigt enkelt. Det bör dock nämnas att det även går att göra avancerade analyser i SPSS och många skriver kod snarare än att klicka i menyer. Själv är jag inte alls förtjust i syntaxen i SPSS. Man kan visserligen använda Python i SPSS-kod, men då väcks frågan om det kanske inte är bättre att använda SciPy och Julia istället (åtminstone blir det billigare). Även grafiken i SPSS lämnar en del att önska.

Stata
Bland många samhällsvetare är Stata det mest populära statistikprogrammet. Det finns ett flertal skäl till detta. Ett är att nya statistiska metoder implementeras förhållandevis snabbt. Dessutom finns möjligheter för användare att skriva program som på ett enkelt sätt kan laddas ned av andra användare och anropas på samma sätt som officiella kommandon. Ett annat skäl är att grafiken i Stata är mycket bra. Visserligen kostar Stata en slant, men den slanten är mindre än för SAS och SPSS och framför allt används inte tidsbegränsad licenser (även om man måste betala om man vill uppgradera efter att en ny version har släppts ). En lite märklig egenhet hos Stata är att något så enkelt som att ta fram en korstabell och flytta den till Excel är oväntat omständligt, även om det naturligtvis finns lösningar (och kopplingen mot t.ex. Excel har förbättrats i senare versioner). Stata har även vissa brister när det gäller hantering av stora dataset och kopplingar mot olika datakällor, även om det har förbättrats en del. En förklaring är att användarna snarare har varit akademiker än statistikproducenter. På vissa håll argumenteras för att programmering i Stata har brister, men jag gillar den. Framför allt finns mängder av kraftfulla funktioner som är värdefulla vid manipulering och redigering av data.

R
Det new kid on the block i dessa sammanhang är statistikprogrammet som kort och gott heter R. Det är både gratis och open source. När det gäller priset är det med andra ord en klar vinnare bland de kandidater som jag tar upp här. På många sätt liknar R tidigare nämnda Stata. Fast om användarskrivna kommandon utgör en del för många användare av Stata är det inget emot vad som är fallet för R. Här finns en uppsjö av olika så kallade paket att ladda ned, och antalet växer kraftigt. Över huvud taget har R ett starkt momentum, inte minst vid amerikanska universitet där det har vunnit stor mark. Att det finns en livlig rörelse kring R gör att nya metoder implementeras snabbt och det finns utmärkta lösningar för allehanda uppgifter, som exempelvis att hämta in Tweets eller att visualisera nätverk. Baksidan av myntet är att det finns mängder av lösningar och de har inte enhetlig form och det kan vara svårt att veta om man kan lita på den som har tagit fram lösningen och att den uppdateras om fel upptäcks, dvs. de problem som ofta finns med open source.  R delar många andra egenskaper med Stata, såsom mycket bra grafik (än bättre för R skulle jag säga) och lite mer problem med riktigt stora datamängder (även om lösningar finns och fler är på gång). Vissa företag kan nog dra sig för att  gå över till ett gratisprogram som R, men å andra sidan används det flitigt vid t.ex. Google.

 Summering
Så vad landar detta i? Det är inte helt självklart. Om du befinner dig i en miljö där ett visst program används kan finnas fördelar med att använda samma program som dina kollegor, och samma gäller om du siktar på ett arbete inom ett visst område (där kunskap om ett visst statistikprogram kan vara en förutsättning för att få jobb). En annan kritisk fråga är om du har någon som betalar för ditt statistikprogram. Om inte är förmodligen endast R eller möjligen Stata rimliga alternativ. Nu kanske ni tycker att jag ska tala ur skägget och ge ett konkret råd, men det är som sagt inte lätt att ge ett definitivt svar. För de analyser jag gör är ofta Stata ett alternativ jag vänder mig till. Jag tycker att tröskeln för att lära sig det är något lägre än R (och betydligt lägre än för SAS) och dessutom är den inbyggda hjälpen i Stata riktigt bra. Fast sedan R Studio (ett gränssnitt för R) kom till R har jag börjat gilla det allt mer. Och jag tror att R kommer att bli allt mer betydelsefullt under kommande år, i synnerhet om man som jag är intresserad av visualisering av data. Så, om du inte får ditt statistikprogram bekostat av någon annan är nog R (med R Studio) rätt väg att gå. Annars kan i första hand Stata vara ett alternativ att överväga. Och som i övriga livet är det bra att kunna hantera fler än ett verktyg.

För den som vill få tips för de olika programmen har jag samlat en del länkar via ”Länkar” i menyn ovan.

På statistikprogramsfronten

På jobbfronten har det börjat bli mer hanterligt nu, så förhoppningsvis kommer det att synas här på bloggen. Jag har fått en del frågor kring val av statistikprogram och tänker försöka sammanfatta mina tankar i ett inlägg. Det blir dock senare. Några små nyheter kanske kan vara av intresse:

Om du använder Stata kan jag tipsa om en konferens i Stockholm den 27 september. Där tas en del funktioner och möjligheter i Stata upp, läs mer här. Konferensen är i Stockholm och den är gratis. Ett annat tips är att Quality of Government institute i Göteborg har tagit fram två kommandon som gör det enklare att använda de dataset som de tar fram. Det är dataset med mängder av variabler som beskriver länder. Läs mer här.

Om du använder R kan jag tipsa om två kurser via Coursera (gratis). Det är Computing for Data Analysis som börjar den 23 september och pågår i 4 veckor och Data Analysis som börjar 28 oktober och pågår 8 veckor. Båda kurserna har gått tidigare i år och jag har tagit del av den förstnämnda i sin helhet och den andra kollade jag en del på. Den första handlar mer om databehandling än analys och kan kanske vara lite svår om man inte har någon vana av att programmera. Men det finns gott om hjälp så om man kämpar lite ska det gå även utan förkunskaper. Den andra verkar lite mer pedagogisk, även om jag bara kollade lite på den. De är gratis och det är bara att avregistrera sig om man inte gillar dem, så om du är intresserad är de värda att kolla upp.

Tips för Stata

Jag har fått en hel del frågor kring vilket statistikprogram man bör välja och jag har tänkt utveckla min syn i ett senare inlägg. Fast här och nu blir det bara några nya tips för er som använder er av statistikprogrammet Stata.

Stata har själva startat en blogg sedan en tid tillbaka, innehåller en hel del matnyttigt. De har även en egen kanal på youtube där de har en hel del instruktionsvideor. Tyvärr visar de där allt genom att klicka i menyer, vilket är ett sätt analysera som jag starkt avråder ifrån. Å andra sidan genererar Stata kod då du klickar i menyer, så du kan använda den koden för att skapa program (och till skillnad från t.ex. SPSS genererar inte Stata en massa onödig skräp i sådana fall).

För den som vill skapa grafer i Stata är deras egen guide till hjälp. Den här bedrövligt designade sidan har också en rad intressanta exempel. Även UCLA har en del bra exempel.

Slutligen vill jag tipsa om att Världsbankens Statamodul är uppdaterad. Den är en enkel väg till spännande analyser av deras data. För mer information se här, eller installera via -ssc install wbopendata-.