Statistik ”avklarad” och frågan om Oauth2

Det var onsdag den 30 oktober 2019 när jag började skriva något om statistik på den här bloggen. Det har blivit 20 inlägg i den kategorin och nu är jag klar med den kurs jag gått under senhösten/vintern. Jag har behandlat ämnen så som sannolikhet, standardavvikelser, standardiserade värden, normalfördelning, hypoteser, centrala gränsvärdessatsen, konfidensintervall, proportioner, chi2 och linjär regression. Jag har gått från deskriptiv statistik till prediktiv analys med en förklaringsvariabel. Emellanåt har det varit utmanande att finna tid till att skriva om statistiken och plugga, samtidigt som jag tagit hand om bebisar, tränat och programmerat. Men jag tycker att jag lärt mig mycket om statistik och jag har nu några idéer om hur jag skulle kunna tillämpa några av de kunskaper jag fått. Så här är några idéer:

  • Undersök korrelation mellan löptid och förlorad vätska. Min hypotes är att det finns ett positivt förhållande mellan hur länge jag springer och hur mycket vätska jag blir av med.
  • Undersök om jag har preferens för en särskild kategori böcker jämfört med andra. Jag behöver dock ett större läsunderlag klart innan jag kan påbörja detta. Jag tror att chi2-analys kan vara på sin plats då.
  • Sammanställ en beskrivning hur länge det tar att lägga upp en ny recension på Bokarenan innan en användare lägger upp en ny. Hur ser sambandet mellan detta och längden på den bok som recenseras.

Så även om jag är klar med statistikkursen så är jag inte klar med statistiken. Vi får se var det smyger sig in framöver. Men nu kommer jag flytta fokus tillbaka till programmering ett tag.

Förra måndagen skrev jag att jag skulle kolla på möjligheten att logga in med oauth (eller rättare sagt oauth2) till Bokarenan. Då skrev jag att jag eventuellt skulle titta på inloggning med Google-konto. Nu har jag kollat möjligheter och provat implementeringar och kan rapportera tillbaka.

Jag kom att prova med Facebook istället för Google och provade följande behjälpliga paket: knpuniversity/oauth2-client-bundle tillsammans med league/oauth2-facebook. Det jag fick göra var att skapa en controller för Facebook-inloggning och registrering samt en autentiserare för det också. Jag upplevde instruktionerna från knpuniversity/oauth2-client-bundle var enkla att följa och redigera för egna behov. Det krävdes att jag fick lägga till ytterligare autentiserare i min konfigurering (security.yaml) och att jag skrev vilken av dem som i första hand skulle användas:

        guard:
            authenticators:
                - App\Security\FacebookAuthenticator
                - App\Security\LoginFormAuthenticator
            entry_point: App\Security\LoginFormAuthenticator

Jag fick en till konfigureringsfil (knpu_oauth2_client.yaml) med instruktioner för autentisering:

knpu_oauth2_client:
    clients:
       
        facebook_main:

            type: facebook
            client_id: '%env(OAUTH_FACEBOOK_ID)%'
            client_secret: '%env(OAUTH_FACEBOOK_SECRET)%'

            redirect_route: connect_facebook_check
            redirect_params: {}
            graph_api_version: v2.12

Det denna konfigureringsfil innehåller är alltså vilken ”användare” och vilket ”lösenord” som ska användas gentemot Facebook för att få en ingång till oauth2 (så användare kan logga in med sina Facebook-användare). Informationen för det sparas i .env-filen. Sedan finns information om vilken funktion i controllern som kommer fånga upp inloggningen.

Det som jag tyckte var det svåraste var om en Facebook-användare behövde registreras som ny användare. Det jag gjorde då var att logga in användaren och sedan dirigera denna till avregistrering om denne inte vill gå med på användarvillkoren. Jag fick ta och registrera i sessionen (via autentiseraren) att användaren var ny och sedan kontrollera detta:

if ($this->session->get('fb-new')) {
    $targetUrl = $this->router->generate('connect_facebook_register');
    return new RedirectResponse($targetUrl);
}

Jag gillade slutresultatet. Det var jätteenkelt att logga in! Men jag har beslutat att för närvarande inte inkludera funktionen i produktion. Anledningen: jag är inte ett företag. Med det vill jag säga att det finns juridiska åtaganden att ta hänsyn till när det kommer till oauth2 och jag vill inte ta ansvar för Facebooks data om användare på min hobby-sida. Det kan vara så att jag överreagerar vad gäller detta och om så vore fallet så återinför jag funktionen.

Det som jag ska göra härnäst på Bokarenan är att införa en nyhetsblogg. Vi får se hur det går. Vi ses på onsdag!


Samband mellan slajm och maskrosor

Så är det äntligen fredag igen. Och som vi har längtat till att få läsa lite om linjär regression. Just det, det är statistik igen (som utlovat)! Denna gång kommer vi återvända till farmaren Frans och hans slajmfarm. Han vill veta om det finns något samband mellan maskrosor och hur mycket slajm som slajmklumparna producerar.

Frans ringer sifferkunniga Samantha igen. Nu börjar det bli ganska många gånger som han har ringt så Sam börjar fundera på att ta ut en avgift. Men hon kommer inte långt i dem tankarna. När hon föra höra regression komma på tal släpper hon allt. Pannkakor kan hon göra sen!

De ägnar nu en dag åt att noggrant mäta den mängd maskrosor som respektive slajmklump äter under dagen, samt väga den slajm de producerar. Det är ganska mycket jobb men de väljer slumpvis 50 slajmklumpar från populationen som ska få delta i denna studie. Allt skrivs ned i ett protokoll.

Efter en lång dag på ranchen tillsammans med Frans så kan Sam äntligen pusta ut. Vid Frans köksbord tar Sam fram sin dator och startar sitt statistikprogram. Hon matar in alla siffror från protokollet i två kolumner; en för mängden maskrosor och en för mängden slajm.

Med alla siffrorna på plats tar hon och ritar upp dem på en graf. I x-led har hon mängden maskrosor och i y-led har hon mängden slajm. Då får hon en graf som ser ut så här:

Det verkar finnas ett förhållande som innebär att ju mer maskrosor som slajmklumparna konsumerat desto mer slajm har de producerat. Hur bra funkar maskrosätande som förklaringsfaktor?

Till sin hjälp har Sam något som kallas korrelationskoefficienten (r). Den visar om det finns något linjärt samband mellan två variabler och riktningen på sambandet. Den kan anta ett värde mellan -1 och 1. Om r är 0 så finns inget linjärt samband, men desto närmare 1 desto bättre stigande linjärt samband. Vice versa för -1 men då fallande samband. Om r hade varit -1 i grafen ovan så hade alla prickarna placerat sig på en linje som lutade nedåt. Genom lite läckra beräkningar där hon i princip summerar faktorer av standardiserade skillnader för varje punkt från respektive medelvärden och dividerar med antalet punkter (minus ett)… det där lät mer komplicerat än att visa formeln:

Det är lite jobbigt att göra beräkningen för hand. Sam skulle behöva beräkna produkten för varje punkt i grafen och det är 50 stycken. Hon tar hjälp av sin dator istället och får fram att korrelationskoefficienten är 0,93. Det verkar finnas ett positivt samband mellan maskrosätande och slajm producerat och det har en ganska stark koppling. Men Sam är inte riktigt klar än. Hon vill veta hur mycket slajm man kan förvänta sig om en slajmklump äter 100g maskrosor. Så hon fortsätter med regressionsanalysen.

Sam vill få fram en modell som kan beskriva hur förhållandet egentligen ser ut. Det Sam tänker sig är att ta fram en funktion som beskriver en linje som passerar genom punkterna. Ungefär så här ska funktionen se ut: y(x)=m+kx. Och den linje som Sam ska ta fram ska ha lika stor mängd som är ovanför som under linjen. Det vill säga att avstånden från linjen för alla punkter ovanför ska vara lika stor som för de punkter som är under. Åter till Sams dator, där får hon fram följande linje:

Linjen kan beskrivas med formeln: y(x)=25,8 + 1,05x +/- 0,13. Om en slajmklump äter 100 g maskrosor kan Frans förvänta sig få ungefär 131 ml slajm från den. Finns det då några andra faktorer som påverkar? Ja, det är möjligt, men maskrosätande har en förklaringsfaktor på 86%. Det är JÄTTEMYCKET.


Maskrosätande

Idag är det onsdag, och som utlovat ska vi idag utreda om gröna slajmar har ett annat förhållande till maskrosor än röda slajmar. Det stämmer, idag är det statistik på agendan!

Vi har tidigare i bloggen kollat på hur stor andel av farmaren Frans kunder som är nöjda med den slajm som han levererar (84% av alla kunder är nöjda med Slajm). Men denna gång vill vi kolla på andelar på ett annat sätt. Farmaren Frans har upptäckt några av hans slajmklumpar inte verkar tycka om de maskrosor som serveras. Han misstänker att de röda slajmarna inte har tillnärmelsevis lika stor aptit för de frekventa blommorna som de gröna slajmarna.

Frans har gott minne över hur den sifferkunnige Samantha hjälpte honom tidigare (Ska jag bry mig om 1 ml hit eller dit?). Sam kunde såklart hjälpa honom även denna gång, så tillsammans utformade de ett enkelt protokoll och iakttog de slajmklumpar som idag fanns i maskroshagen. Protokollet blev en enkel tabell som såg ut så här:

Slajmklumpar som tog för sig av blommorna räknades till de som ”gärna” äter maskrosor. De slajmklumpar som kom fram och sniffade på blommorna utan att äta räknades till de som ”kanske” äter maskrosor. De slajmklumpar som inte åt, och inte sniffade blommorna räknades till de som ”inte alls” äter maskrosor. Som tur gick det ganska enkelt att räkna och hålla reda på alla slajmar eftersom Frans känner sina slajmklumpar så bra. Så efter en dag i maskroshagen hade Frans och Sam fått fram följande resultat:

”Varför har du skrivit dit en massa extra siffror?” frågade Frans.
”Jo du ser att gröna slajmar är 36 stycken, och det finns 24 röda. Det är det som jag skrivit upp till höger”, svarade Sam.
”Okej, men varför har du skrivit summor för varje kolumn? Vad ska det vara bra för?”
”Åh, jag är inte helt klar. Vänta!”

Sam började frenetiskt skriva upp siffror. Först skrev hon 60 i mörkblått i nedre högra hörnet av tabellen.
”Det är summan av alla slajmklumpar som varit i hagen idag.”
Därefter började hon räkna på vad hon kallade var ”de förväntade antalet slajmklumpar för varje cell”. Det hon menade var att man kan förvänta sig att visst många slajmklumpar kommer fördela sig i kategorierna ”gärna”, ”kanske” och ”inte alls” på ett visst sätt om det inte finns någon skillnad mellan röda och gröna slajmare. Det hon vill undersöka är om det stämmer det som Frans påstår: att det finns en skillnad.

Efter att ha räknat ett tag har Sam skrivit upp hur många slajmklumpar det kommer finnas i varje cell om det inte är någon skillnad mellan röda och gröna slajmklumpar. Enligt hennes beräkning kan man förvänta sig att 17 gröna slajmklumpar ”gärna” äter maskrosor. Men resultatet de fick var att 18 stycken gröna slajmare gärna äter blommorna. Har Sam fått ett signifikant resultat? Det verkar som att övriga förväntade resultat ligger nära det uppmäta resultatet! Sam får fortsätta räkna.

Hon börjar med att beräkna hur stor den genomsnittliga avvikelsen är och hur långt det ifrån det förväntade värdet de uppmätta värdena är. Hon använder sig av chi2:

Detta innebär att för varje cell så gör hon en beräkning enligt ovanstående formel och summerar dem.

Sam hade nu fått fram chi2 = 0,66. Med hjälp av en chi2-fördelningskurva så hade nu Sam ett mått på hur stor sannolikheten är att de skillnader mot förväntade antal skulle uppstå av slumpen. Om hon har liten sannolikhet så kan hon utesluta att det inte skulle finnas någon skillnad mellan röda och gröna slajmar. Vad är då sannolikheten?

Till sin hjälp har Sam chi2-fördelningskurva och uträkning av grader av frihet. Grader av frihet räknar hon fram genom att ta antalet rader minus ett gånger antalet kolumner minus ett: (3-1)(2-1)=2. Hon får fram följande graf där det färgade området är sannolikheten att få så stor avvikelse eller större av slumpen. Svaret? 72%!

Sam kunde inte ge stöd åt Frans hypotes. Det verkar som att det för närvarande inte är någon skillnad om röda eller gröna slajmar kommer äta maskrosor. Med Sams hjälp har Frans nu kommit fram till att alla slajmklumpar gott kan få fortsätta dela på maskroshagen.


84% av alla kunder är nöjda med Slajm

Idag skriver jag åter om statistik. Denna gång fokuserar jag på proportioner med fokus på en parameter. Ibland vill man göra en undersökning som fokuserar på hur stor andel av en population som ger lyckosamma utfall. Det kan handla om hur många produkter från en tillverkningsprocess som ej är defekta, eller det kan handla om hur många väljare som kan tänka sig rösta för ett särskilt alternativ. Denna gång återvänder jag till Slajm-farmaren för att undersöka hur stor andel av hans kunder som är nöjda med den slajm som han säljer.

Vi tar ett urval med storlek n=250. Antalet nöjda kunder är X=210. För att räkna ut andel nöjda kunder i vårat urval så har vi :

Vi vill gärna kunna säga något om alla kunder, inte bara kunderna i vårat stickprov. Vi väljer att svara med ett konfidensintervall på en konfidensnivå 95%. För att räkna ut intervallet så har vi vår andel (0,84) plus/minus en marginal:

Marginalen räknas ut med hjälp av det kritiska värdet z* som tas fram för den angivna konfidensnivån 95%. Det ger oss z*=1,96. Det kritiska värdet här är givet vid en särskild konfidensnivå när vi har en t-fördelning. Det liknar antalet standardavvikelser från medelvärdet i en normalfördelning. Det kritiska värdet multipliceras med standardfelet för urvalet. Det ger oss följande uträkning:

Vi har alltså att 84% av kunderna är nöjda med Slajm, med en felmarginal på 5% på en 95%-konfidensnivå. Slajm-farmaren Frans är inte helt nöjd med detta, för det finns en risk att han inte har uppnått en kundnöjdhet över 80%. Frans har lite att tänka över nu. Varför finns det så många kunder som inte är nöjda? Det är ett mysterium som Frans får utreda framöver. Tills dess är vi klara för den här gången.

Nästa gång, på fredag, tänker jag återvända till programmering och skriva ett par rader om det. Hur enkelt var det egentligen att jobba med Symfony och gick det bra att ladda upp applikationen på ett webbhotell? Vi ses då!


Tredje advent, nu är Bokarenan uppe

Måndag och en vecka närmare jul. Vi är i Tredje Advent och snart blir det ett uppehåll över jul och nyår när jag fokuserar på att umgås med familj. Lite nyheter jag har att komma med är att mitt projekt för Bokarenan har kommit till basversionen, eller vad man skulle kunna kalla för Minimal Viable Product. Spana in bokarenan.se och dela med dig av dina läsupplevelser. För närvarande behöver medlemmar lägga till grundinformation för böcker de recenserar, men jag har börjat lära mig lite Python för att kunna stötta upp med detta. Tanken är att skapa en Web Crawler som kan samla in information om böcker, och på så sätt underlätta för medlemmar i deras ifyllande. Jag är mycket nöjd över att ha kommit så här långt.

Men denna vecka går annars åter i statistikens tecken. Denna vecka kommer jag skriva om att bedöma statistiskt underlag när man bara har med en variabel att göra. Exempelvis hur många anser att Slajm är en produkt de skulle vilja köpa? Där jag tidigare har skrivit om medelvärden handlar det här om att göra bedömning utifrån fördelningar. Mer om detta på onsdag. Vi ses då!


Tillbaka igen

Hej igen. Det var en vecka senast jag skrev något, men nu är jag tillbaka. Ibland blir man sjuk! Senast skrev jag att jag skulle återkomma om signifikansnivå. Denna fredag handlar om när vi bortser från vår nollhypotes. Förra gången så hade vi en nollhypotes som sa att produktion av slajm var 100 ml i medel. Vi kunde bortse från denna nollhypotes till förmån för vår alternativa hypotes: att slajmproduktionen var lägre än så. Vi kunde se att sannolikheten för att få det medelvärde vi fick i vårt urval, om medelvärdet på 100 ml i populationen skulle vara rätt, var 1,25%. Det var ganska lågt och vi slöt oss till att det vi hade förutsatt i nollhypotesen inte stämde. Egentligen så hoppade vi över ett steg här, som är ganska viktigt att inkludera tidigt i undersökningen. Anledningen till att vi vill inkludera det tidigt är att vi inte vill låta våra gränsvärden styras av vårt dataunderlag. Därför sätter vi en signifikansnivå innan vi kontrollerar datat. En vanlig nivå är att 5%, eller a=0,05. Om vi sätter vår signifikansnivå vid 0,05 så kan vi säga att vi har fått ett signifikant resultat när vi har ett p-värde lägre än det. Eftersom vårat resultat var 1,25%, eller 0,0125 så ser vi att 0,0125 < 0,05, och vi har därmed ett statistiskt signifikant resultat. Även om vi nu har ett statistiskt signifikant resultat så är det värt att reflektera över om det är av något praktiskt värde. Vi hade 1 ml lägre produktion än väntat. För Frans, slajmfarmaren, så innebar det att han gick miste om cirka 1liter slajm per dag. Men än värre, så indikreade det för honom att hans slajmklumpar inte hade det så roligt som han hade hoppats. För Frans så hade det därför också en praktisk innebörd.

Och nu går vi mot fredag, denna Lucia. Det får bli fika och glögg. Och till kvällen blir det Harry Potter. Denna gång den sjätte filmen, Halvblodsprinsen. Det är filmer som jag tycker håller för att se om igen, ungefär vartannat år. Nästa år får det bli Sagan om ringen istället.

Trevlig helg, allihopa!


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!