Ska jag bry mig om 1 ml hit eller dit?

Äntligen är det dags: hypoteser! Som jag förklarade i måndags så skulle jag återkomma till ämnet idag, om jag så fann tid till det. Och det gjorde jag!

I förra veckan skrev jag om konfidensintervall. Då beskrev jag hur stor andel av populationen (eller sannolikhet kan vi säga) som hade ett visst värde inom ett intervall. Ämnet med hypoteser är besläktat med det. Låt mig förklara.

Det fanns en gång en slajm-tillverkare, farmaren Frans. Slajmen skördade han från sina slajmklumpars saliv. Ju roligare de har desto mer slajm! Målet var att varje slamklump skulle producera 100 ml saliv per dag, men farmaren hade svårt att räkna alla klumpars produktion. Frans tog hjälp av sin granne, den sifferkunnige Samantha. Sam visste att produktionen per klump i snitt avvek med cirka 1 ml, men hon visste inte om produktonen i överlag faktiskt var 100 ml per klump. Sam och Frans valde slumpvist ut 20 klumpar en dag och såg att de producerade 99 ml per klump. De upptäckte då att dessa klumpar producerade 1 ml mindre slajm per dag än de 100 ml som Frans hoppades på. Men det kanske bara var slumpen som spelade in. Kan Frans ignorera att hans slumpvist valda klumpar producerade mindre än han hoppades? Sam tog fram en penna och papper och skrev upp följande:

Sam förklarade att även om det bara handlade om 1 ml, så vart det sannolikt så att alla klumpars produktion var lägre än önskat. Det var nämligen 1,25% chans att produktionen inte var lägre än 100 ml.

Frans tackade Sam så mycket, för nu visste han att han behövde göra dagarna roligare och dräggligare för slajmplumparna. Dagen därpå började Frans bygga vattenrutschkanor och fontäner. Slajmet som producerades veckan därpå översteg 100 ml per klump.

Historien om Frans och Sam handlade om hypoteser. Frans uttryckte att han skulle ha 100 ml saliv per klump (eller mer). Vi kan kalla detta för nollhypotesen. Den alternativa hypotesen är att produktionen är mindre än det. Detta kallas för en ensidig hypotes. Alternativet är en tvåsidig hypotes och det är när den alternativa hypotesen kan anta värden som är såväl mindre som större än nollhypotesen.

Genom att visa att nollhypotesen inte var sann (med 1,25% sannolikhet för att påståendet inte är korrekt), så fastställde Sam att produktionen var för låg mot vad Frans önskade.

Detta var min första stapplande förklaring om hypoteser, nästa gång nämner jag något om signifikansnivå och annat kul. Vi ses då!


En rent hypotetisk vecka

Om det nu skulle vara så att jag har tid över till att skriva om statistik, alltså rent hypotetiskt, så skulle jag skriva om hypoteser. Denna vecka blir det alltså en del om hypotesprövning om medelvärde. Vad är grejen med det? Och det här med nollhypotes, varför då? Är det inte bara bättre att gå rätt på min första hypotes och säga att den är sann? Mer om detta senare i veckan när jag hunnit läsa lite grann.

Jag har gått ur en helg nu där det inte blivit något plugg och heller inte något programmerande. Det har varit hushållsgöra på tapeten, och spel med lillasyster. Vi påbörjade PS4-spelet Bloodborne och blev sålda på hela den idén. Vi turades om att försöka ta oss så långt vi kunde tills vi blev dödade. Vi skapade en ung mjölksopp till äventyrare vid namn ”Hern”. Vid ett tillfälle så hamnade Hern i en gränd tillsammans med vad vi först skulle beskriva som en bjässe. Vi dog vid två slag och kom att undvika den bjässen. Tillslut tänkte vi att vi kanske kunde ge oss på den ändå. Vi hade blivit rätt duktiga trots alla gånger vi dött. Det tog en del timing och sidoskutt för att klara det, men klara det gjorde vi. Bjässen föll till marken. Det var vår första vinst! Så här i efterhand har vi förstått att det där bara var en vanlig motståndare och inte alls någon boss, så som vi hade tänkt oss att bjässen var. Vi får se hur det går när vi tillslut möter någon boss.

Till nästa gång blir det lite hypoteser: Om det finns tid så har Anders skrivit ett inlägg om hypoteser. En konkurrerande hypotes till det är: Om det inte finns tid så har Anders inte skrivit något om hypoteser på onsdag.

Vi ses!


Vi uppskattar avvikelser

I onsdags beskrev jag konfidensintervall. Det vill säga att vi hittar ett intervall där vi har uppnått en viss konfidens, alltså att vi har en metod som med angiven sannolikhet har det riktiga medelvärdet. I onsdags visste vi den riktiga standardavvikelsen, men vad gör vi när vi inte vet det?

Vi anväder t* istället för z. I princip så kommer vi få en normalfördelning när vi tar tillräckligt många stickprov. Men vi kommer få något större spridning, vilket vi kan förstå eftersom vi introducerar mer osäkerhet.

Detta blev jättekort! Men jag skriver detta när vädret äntligen blivit fint, så jag måste ut.

Vi ses igen!

Trevlig helg, allihopa!


Lita på metoden

Du ska kunna lita på metoden, men var lite vaksam på utfallet. Så skulle jag kortfattat vilja beskriva vad konfidensintervall handlar om. Idag är det detta som ligger på bordet.

I måndags skrev jag om centrala gränsvärdessatsen. Den handlade om att fördelningen av medelvärden närmade sig en normalfördelning när man tog tillräckligt stort urval. Det handlar alltså inte specifikt om enskilda värden, utan medelvärdet. I en population med en höger-skev fördelning skulle medelvärdet kunna vara 10. Om vi tar tillräckligt stort urval ur populationen och kontrollerar medelvärdena i den skulle de fördela sig runt 10 på sådant sätt att det är att betrakta som en normalfördelning.

Sedan tidigare kommer vi ihåg sannolikhetsfördelningen runt medelvärdet i en normalkurva som arean under kurvan baserat på standardavvikelse. Det var den kända 68-95-90.7%-regeln som jag skrev om förra gången. Om jag vill säga något om medelvärdet i populationen baserat på mitt urval (det som även kallas statistisk inferens) så säger regeln att jag kan ta medelvärdet och subtrahera och addera standardavvikelse (vilket ger en felmarginal) för att få fram ett intervall. Intervallet ger då en viss felmarginal – som blir större ju större del av befolkningen jag vill täcka. En vanlig andel att vilja täcka är 95%. Detta motsvarar 2 standardavvikelser. Om vi bygger vidare på exemplet ovan så säger vi att vi har en standardavvikelse på 1,5. Vi tar detta värde och multiplicerar med 2 standardavvikelser; detta ger oss en felmarginal på +/-3. Då har vi ett lägre värde på 7 och ett högre värde på 13. Detta är ett intervall som täcker 95% av populationen.

Vi kan nu säga att vi med en konfidensnivå på 95% har ett medelvärde inom 7-13, baserat på vårat urval. Det innebär inte att utfallet med 95% sannolikhet är korrekt; det betyder att metoden i 95% av fallen ger ett medelvärde som faller inom intervallet.

Det om konfidensintervall. På fredag ska jag berätta om vad som händer när vi inte vet standardavvikelsen i populationen utan måste uppskatta den. Det blir ju kul!

Och så vill jag bara säga något om programmering. Igår kväll satt jag och programmerade lite på Bokarenan. Jag höll på att skriva funktioner som motsvarade URI-vägar (typ URL) men det var hela tiden fel funktion som fångade en URI. Jag angav /utforska/bok/ny och en funktion för att skapa en ny bok skulle fånga detta, men istället så var det en funktion för att presentera en enskild bok som fångade anropet. Den funktionen hade till uppgift att fånga /utforska/bok/{id}. Men jag förstod först inte att det var detta som var problemet för det som jag fick till felmeddelande var att applikationen inte kunde hitta något bokobjekt. Jag googlade efter problemet och hittade på stackoverflow att problemet kunde ha att göra med i vilken ordning som funktionerna låg i. Liksom när man har en switch-struktur som avslutar med en generisk defaultcase så ska man tänka på att ha de mer generiska URI:erna längre ned i strukturen. Så jag fixade problemet genom att helt enkelt flytta ena funktionen över den andra!

Vi ses på fredag!


Centrala gränsvärdessatsen

Äntligen en ny vecka! Jag har kommit ut på andra sidan av denna helg där jag mest suttit och slipat på Bokarenan. Jag kände att jag hade den tiden över efter att ha gjort en del plugg under den gångna veckan. Mycket tid har gått åt att slipa på CSS och skapa rimliga views (sidor) för de entiteter jag vill presentera. Jag har upplevt det som enklare att ha koll på vad jag skapar och var jag har det, nu när jag skapar mina views manuellt, istället för att låta Symfony skapa dem åt mig. De views som Symfony skapade var i klass med att sitta med phpMyAdmin, men mer begränsad. Så de färdigbakade sidorna motsvarade inte de syften jag hade med dem. Och jag börjar gilla vart åt det barkar.

För närvarande ser sidan ut som nedan. Jag har avvikit lite från hur jag hade skissat den i Adobe XD och gjort den generellt lite ljusare.

Men nog om programmeringen. Denna vecka fortsätter jag med statistik. Denna gång om centrala gränsvärdessatsen.

I förra veckan beskrev jag normalfördelning och hur bra det var att ha en sådan modell. Kortfattat så innebär det att man enkelt kan uppskatta fördelning av befolkning utifrån hur långt från medelvärdet man kollar baserat på standardavvikelse. Denna vecka säger jag att man kommer få en normalfördelning om man tar tillräckligt stora samplar (urval), i princip oavsett hur den verkliga populationen ser ut. Och det är inte helt negativt! Det man vill göra med att ta stora samplar är att komma så nära det verkliga medelvärdet som möjligt med så liten standardavvikelse som möjligt. Om man lyckas med det så har man fått ett urval som har ett medelvärde som ligger där det riktiga medelvärdet ligger, med liten felmarginal.

I sitt urval kommer man ha en standardavvikelse. Och om man vill säga något om 95% av populationen så fångas de inom 2 standardavvikelser från medelvärdet. Detta har jag skrivit om i förra veckan som 68-95-99.7% regeln. Så om standardavvikelsen är stor så kommer det intervall som beskriver 95% av populationen att vara stor. Förhållandet mellan populationens standardavvikelse och urvalets standardavvikelse är s = σ/(√n), där n är urvalsstorlek. Det innebär att man minskar standardavvikelsen med roten ur sampelstorlekens förändring. Vill man halvera standardavvikelsen så får man fyrdubbla urvalsstorleken.

Nästa gång ska jag skriva något om konfidensintervall. Jag misstänker att vi redan har börjat fila på det, men jag får återkomma när jag läst lite om saken.


Standardiserad fredag

Idag ska jag låta avsluta den ”normala veckan” med standardiserade värden. Vad är ett standardiserat värde? Vad är egentligen poängen med att standardisera värden? Hur standardiserar man värden? Detta kommer jag gå igenom idag.

Ett standardiserat värde är egentligen ett mått på hur långt ifrån ett medelvärde en datapunkt är. Som mått används standardavvikelsen. Det standardiserade värdet representeras av z. Och som jag skrev om förra gången så representeras standardavvikelsen av σ [lilla sigma]. I bilden nedan så har jag ritat in σ och ett standardiserat värde med 1,25.

Vad är då poängen med standardiserade värden? Vad jag vet i skrivande stund så finns det två poänger.

För det första så kan man jämföra olika standardiserade mått med varandra. Som jag har fått förklarat för mig så har man i USA två stora antagningsprov till högre studier: ACT och SAT. De har olika skalor men kan vara angelägna att jämföra mellan. Säg att Emily har fått 650 på SAT-provet, och Michael har fått 28 på ACT. Vem av dem har större anspråk på att komma in på samma kurs om man kan anta att ACT och SAT är likvärdiga test på kunskapsnivå. Genom att standardisera värdena så får jag fram att Emilys z-värde är 1 och Michael är 1,67. Michael har alltså högre poäng om man skulle jämföra dem. Vad det innebär är att en mindre andel av alla som skriver proven har fått så höga poäng som Michael jämfört med Emily. Men det innebär inte att Emily har dåliga poäng. Faktum är att hon har bättre poäng än 84% av alla som tar samma prov. Och då kommer vi till den andra poängen.

För det andra så kan man med hjälp av standardiserade värden av en normalfördelning få fram andelar av en population.

Det är svårt att använda ögonmått för att uppskatta andel av befolkningen som har lägre poäng än Emily. Men med hjälp av z-värde och en tabell över standardiserad normal sannolikhet så kan man få fram andelen. Om man skulle kontrollera hur stor andel av befolkningen som fått poäng som varit mindre än det standardiserade värdet av 0, så kan man se att det delar befolkningen i hälften.

Det om standardiserade värden!

Jag vill också nämna något om Bokarenan. Projektet har löpt på när jag inte orkat läsa kursboken och tid funnits över. Jag har inte gillat hur svårt det varit för mig att navigera mellan relevanta Controllers och views. Jag har heller inte gillat att jag låtit skapa så många views för varje liten entitet. Det kan finnas poänger för det när man vill underhålla vilka entiteter man har. Men jag tycker att det mest har tagit upp massa plats och inte haft någon rimlig logik till sig. Jag har därför tänkt ta bort dem som inte används, och när jag upptäcker att jag behöver dem så skapar jag dem efter mina behov.

Ytterligare så har jag förfinat layouten, men det har jag skrivit lite om tidigare. Men alla dessa åtgärder har inneburit att ganska mycket kod har flyttats runt. Jag tog en liten bild av hur många förändringar det inneburit i Git:

Och till sist vill jag avsluta med lite fredagskänsla: spel! Den gångna veckan har min dotter upptäckt glädjen med att skjuta upp raketer i Kerbal Space Program, och så har också jag. Jag kommer sitta och bygga små dynamitstycken och hoppas att mina små gröna gubbar kan landa säkert någonstans. Jag har lyckats få mina explosioner att smälla i ungefär rätt riktningar, men ännu så har jag inte lyckats flyga ett varv runt planeten. Vi får se vem som först lyckas; jag eller dottern.

Trevlig helg, allihopa!


Normalfördelning

Som jag skrev om i måndags så skulle jag återkomma till en särskild form av symmetriska kurvor, nämligen normalkurvorna. Några grundläggande egenskaper med normalkurvorna är att de är symmetriska, klockformade och har bara en topp. Vi har då en enkel beskrivning av en normalfördelning. I mitten av normalkurvan är medelvärdet. Den representeras av μ. Dessutom kan man faktiskt se standardavvikelsen. Den kan man få genom att titta var normalkurvan är som brantast och ta avståndet från µ till den punkten på x-axeln. Standardavvikelsen representeras av σ. I bilden nedan så är en skiss på en normalkurva med både medelvärde och standardavvikelse markerade.

För en normalfördelning så kommer toppen alltid att vara där medelvärdet är. Förändring av medelvärdet innebär att normalkurvan flyttar med den förändringen längs x-axeln. Om standardavvikelsen förändras så kommer bredden av kurvan förändras. En lägre standardavvikelse innebär en smalare kurva. På bilden nedan har jag skissat hur det kan se ut.

Så vad är det då som är så bra med normalkurvor? För det första är det en beskrivning på en ganska vanligt förekommande fördelning ute i det vilda. För det andra så beskriver det ganska bra ett antal olika slumpmässiga utfall.

En intressant egenhet med normalkurvor är att inom 1σ från µ så finns 68% av alla observationer. Vid 2 och 3σ från µ så finns 95% respektive 99,7% av alla observationer. Vad dessa förhållanden innebär för något som kallas standardiserade värden kommer jag avsluta veckan med. Vi ses då!


En normal vecka

Efter förra veckan så är jag nu klar med första delen av statistikkursen. Det innebär att jag denna veckan går från enklare diagram till att beskriva täthetskurvor och normalfördelning.

Täthetskurvor (eller density curves på engelska) är en idealiserad bild av en fördelning. Tänk er ett histogram och om man tar och ritar en kurva ungefär där varje stapel slutar. Det ger en fin kurva som enkelt beskriver formen på fördelningen. Det man får på köpet är färre detaljer; små skillnader kan bortses och även outliers kan hamna utanför. Med täthetskurvan kan man också uppskatta medianen, och till viss del även medelvärdet. Här nedan kommer ett första exempel:

I denna första fördelning så är den symmetrisk. Vi får då både median och medelvärde i mitten av kurvan. Om man betraktar ytan under kurvan så är arean lika stor till vänster som höger om medianen. Om fördelningen är asymmetrisk så får vi inte medianen och medelvärdet vid samma punkt. I bilden nedan är fördelningen högerskev:

Eftersom fördelningen har extrema värden åt höger så får vi ett medelvärde som är högre än medianen. Fortfarande gäller dock att medianen delar ytan under kurvan i två lika stora areor. Medelvärdet kan ses som den punkt som hela ytan, om det vore ett fast objekt, skulle balansera på.

När en fördelning är som i första exemplet – symmetriskt och formad som en klocka – då har det ett särskilt namn: normalfördelning. Vad det som är så speciellt med det återkommer jag till på onsdag.

Nu får vi se fram emot en normal vecka!


Dubbla saker hälften så snabbt

Denna veckan har jag fortsatt med statistik och programmering. Det blir alltså dubbelt upp mot vad jag gör i vanliga fall. Men det har inneburit att det gått lite långsammare på båda hållen.

I helgen kommer jag göra klart den första delen av statistikkursen. Det innebär att jag gör en liten quiz om de huvudsakliga beståndsdelarna i en statistisk undersökning.

Så länge jag inte hoppar över viktiga delar eller ger upp så kan jag bara fortsätta öka mina kunskaper. Det är som med programmeringen. Jag tror att det är sunt (för det är ju roligt också) att jag fortsätter med den när jag har lite tid över. Om jag kan slutföra den initiala och levererbara delen av Bokarenan så kan jag fortsätta lägga till funktioner till den, där ibland hoppas jag kunna göra lite statistiska analyser av underlaget. Till exempel så skulle det vara lite intressant kuriosa att se vilka ord som är vanliga för att beskriva thrillers jämfört med romantikromaner.

Så denna helg kommer jag jonglera begrepp så som normalfördelning, obundet slumpmässig urval, kvartiler, median, standardavvikelse, outlier, lådagram, statistiskt signifikant, och så vidare.

Denna helg kommer jag även ägna No Man’s Sky lite uppmärksamhet. Det är ganska mysigt, men jag vet inte hur mycket längre jag kommer hinna i spelet. Jag har hunnit komma till en anomali och träffat på andra spelare där. Hux flux så började en spelare ge mig en massa saker. Det bara dök upp bland min packning. Och det visade sig vara värt ungefär 20ggr av vad jag hade tjänat så långt. Så det var väldigt roligt att få den extra skjutsen just som jag höll på att visa systersonen vad spelet gick ut på. Men ikväll har jag lovat min äldsta dotter att vi ska skjuta upp lite raketer i spelet Kerbal Space Program. Vi får se om vi lyckas lämna atmosfären.

Trevlig helg, allihopa!


Statistikprogramvara

Nu börjar jag komma igång med enklare analyser av data med hjälp av programvaran Jamovi. Programvaran är gratis och community driven. Det innebär att engagerade R-utvecklare kan bidra med att utveckla olika moduler till programmet. I detta inlägg kommer jag beskriva några enkla beståndsdelar och analyser man kan göra med programmet.

Först är det bra att ha ett dataunderlag att jobba med. Jag tänkte jobba med ett exempel här från SCB:s Statistikdatabas. Ett exempel jag väljer här är import/export inom tjänstehandel:

Exempel på vilken data man kan välja att ladda ned från SCB, samt i vilket filformat.

Jag väljer att vilka variabler jag vill inkludera och laddar ned dem som en relationstabell. Det innebär att jag kan öppna upp filen och kan göra analyser i Jamovi.

Så jag öppnar upp den nedladdade filen i Jamovi och kontrollerar att variablerna har rätt datatyp. Jag har fyra variabler och tillser att respektive variabel får rätt mät-typ: export/import är nominal (alltså kategorisk), land är också nominal, år sätter jag till ordinal (då den visserligen finns på en kontinuerlig skala men i detta fall så anser jag att man inte får ut någon vettig data av att dela upp respektive år i fraktioner), och slutligen finns variabeln tjänstehandel i miljoner kronor som är kontinuerlig.

I denna initiala analys vill jag kolla på hur fördelningen mellan import och export såg ut 2017. Jag gör därför en deskriptiv analys i programmet och väljer variabeln för tjänstehandel och delar upp den på år och import/export:

Median för import respektive export 2017:

Vi hade alltså 1.054 miljarder kronor i export och 1.235 miljarder kronor i import. Detta innebär att länderna som ingår i underlaget fördelar sig 50/50 runt dessa värden för deras tjänstehandel.

Jag får återkomma när jag kan göra ännu roligare analyser!