Stäng

Experimentell design, del 1

Detta är del 1 i min serie om Experimentell design. Även om A/B-testet kanske är de mest vedertagna testet inom området, kommer vi att börja med Permutationstestet som är lite lättare att förstå och därför passade bättre som en introduktion på ämnet. I del 2 kommer vi att gå vidare in på A/B-testet, men jag rekommenderar att läsa delarna i ordning då serien bygger vidare på såväl exempel, som kodexempel, framlagda i denna del.

Ett Permutationstest kan med fördel användas för att avgöra den statistiska signifikansen i de fall du inte har tillräckligt med data för tillämpa det, eller vet för lite om den datagenererande mekanismen (exempelvis webbplatsbesökarna). Det är ett typiskt scenario som ofta härrör från en begränsad urvalsstorlek (trafikmängd), vilket annars ligger till grund för den statistiska styrkan i ett traditionellt A/B-test. Liksom namnet A/B-test antyder ämnar båda dessa tester till att jämföra två, eller ibland flera varianter, av en design för att avgöra vilken som fungerar bäst för ett givet ändamål. Eftersom vi tenderar att underskatta sannolikheten för att något osannolikt inträffar, likväl som vi är snabba med att rationalisera något som är väldigt slumpartat, kan dessa tester hjälpa oss att fatta rätt beslut i utvecklingen av vår produkt.

Det kanske vanligaste exemplet (eller reduceringen) jag som designer och frontend-utvecklare möts av till vardags, är att det är min uppgift är att bestämma färgen på köpknappen. En absolut klyscha såklart, men kanske också en kliché av en anledning: det är ett ganska enkelt och konkret exempel på något som de flesta kan relatera till. Jag tänkte därför använda detta som exempel för att på ett förhoppningsvis enkelt och lättförståeligt sätt beskriva hur ett Permutationstest går till, utan några krav på förkunskaper. Längst vägen kommer vi också redogöra för några "vardagliga" vetenskapliga begrepp som kan vara bra att känna till om du ska arbeta med experimentell design.

Du har säkert hört någon säga "Jag har en teori", vilket är ett exempel på hur vetenskapliga begrepp inte alltid är lika förstådda som de är använda. En teori är resultatet av ett rationellt abstrakt; en generaliserande förklaring till varför något hände. Men, en teori är baserad på empiri. Empiri i sin tur är ordet för våra kvalitativa och kvantitativa insiktsinsamlingar: kvalitativa data är de sinnesintryck som samlas in genom exempelvis intervjuer och enkäter (våra användares berättelser om sina subjektiva upplevelser) och kvantitativa data utgörs av logiska eller statistiska observationer av en hypotes. De kvalitativa undersökningarna kräver i regel inte lika många svarande som de kvantitativa, utan ämnar främst till att ge oss en fingervisning, tillräckligt sann för att identifiera de vidmakthållande faktorer som ligger till grund för ett problem, behov, möjlighet eller förändring. Utan att veta vad vi har för variationer kan heller inga mätningar genomföras...

Alla teorier börjar som en hypotes, vilket du säkert också har hört någon säga att de har en. Återigen, det är vanligtvis inte vad de har, vad de har är en idé. En hypotes är en föreslagen åtgärd baserad på en förståelse av korrelationen mellan en orsak (en oberoende variabel som avsiktligen förändras och testas) och en verkan (en beroende variabel som mäts i experimentet) i ett antal representativa ärenden. Våra tester eller "experiment" vi använder oss av för hypotesprövning består av en kontrollgrupp (vad vi jämför med = A), en eller flera behandlingsgrupper (medvetet förändrade variationer = B, C...), samt konstanter (rigida faktorer som inte förändras). Ju fler konstanter vi har, desto mer kontrollerat kan vi också anse vårat test vara.

En hypotes ska vara formulerad på ett sådant sätt att det är möjligt att motbevisa den, om den inte vore sann. Det är inte ovanligt att nya designförslag och förändringar motiveras med med påståenden som är exempel på vad människor upplevt, så frågan du ska ställa dig (den rätta frågan) är: finns det exempel även på motsatsen? Om inte, försöka att motbevisa den! Om vi misslyckas med detta genom ett antal olika prövningar kan vi vartefter upphöja vår hypotes till en teori.

I detta fall har vi en hypotes om att en svart knapp skulle generera fler klick än en blå. Detta skulle kunna vara baserat på en kvalitativ undersökning som indikerat på att den blå knappen inte står ut tillräckligt på webbsidan, eftersom många andra element på den också är blå. Den skulle också kunna vara baserat på en heuristik, som är en tillämpningsbar teknik för problemlösning eller upptäckt. En heuristik är en tumregel och kan mycket väl ifrågasättas, men fungerar normalt som förväntat även om den inte kan garanteras vara optimal, eller ens rationell, för att nå ett kortsiktigt mål eller estimat. (Tvärtom, kan det istället vara väldigt opraktiskt att hitta en optimal lösning på hur ett problem ska lösas, eller beslut ska fattas kring ett komplext problem, utan fullständig information.) Hade knappen exempelvis varit röd hade vi från första början kunnat anta att, eftersom röd ofta används som en varningsfärg, det kunde vara rimligt att byta färg.

Permutationstest4

Variation A: 10 besökare (50%), 3 konverteringar, konverteringsgrad = 30% Variation B: 10 besökare (50%), 5 konverteringar, konverteringsgrad = 50%

För att analysera resultatet organiserar vi vårt data i tabeller och/eller i grafer. En komplett analys skulle innehålla både vårt kvalitativa data (vad vi beskriver med ord) och vårt kvantitativa data (siffror och statistik), men nu kommer vi fokusera på det senare. I Graf 1 ser vi konverteringsgraden för våra respektive knappar, den blå (A) och den svarta (B). För att förenkla räkneexemplet kommer vi att använda oss av en mindre datamängd i beräkningarna: vår webbplats har totalt haft 20 besök, varav hälften fått variation A och hälften B. Av de 10 besökare som fått A har 3 klickat på knappen (konverterat) och av de som fått B har 5 klickat på den. Detta innebär att version B har konverterat 66,67% bättre än version A, vilket beräknas såhär:

100 x (konverteringsgrad B – konverteringsgrad A) / konverteringsgrad A = 0,6667

Validitet och reliabilitet är två ofta adekvata kriterier för kvalitetsbedömningen av en kvantitativ undersökning. Mäter vi det vi avser att mäta och mäter vi det korrekt? Eftersom vår provstorlekt i detta fall är väldigt liten, endast 20 besökare, hade vi normalt sett kunnat utgå från att detta inte vore fallet här. Men för enkelhetens skull kommer vi nu ändå att fortsätta vår analys som om det inte varit lika uppenbart. Vad vi ska göra härnäst är att beräkna sannolikheten för att resultatet vi ser inte är till följd av naturlig variation (slump), den så kallade statistiska signifikansen. Den statistiska signifikansen skulle kunna beskrivas som sannolikheten för ett falsk-positivt svar. Den anger huruvida ett värde i en stickprovsundersökning avviker från ett hypotetiskt värde och är ett kvantitativt mått på hur väl det överensstämmer med det troligaste värdet, som kallas nollhypotesen. Om hypotesen som prövas skiljer sig för mycket från det förväntade värdet (vad som hade observerats om hypotesen varit sann) kallas det för att förkasta nollhypotesen. Beroende på konsekvensen av att felaktigt förkasta nollhypotesen bestäms signifikansnivån utifrån syftet av en hypotesprövning. Det kan verka lite rörigt, men vi kommer sätta detta i ett sammanhang alldeles snart, vilket förhoppningsvis gör det lite enklare att förstå.

Permutationstest3

I Tabell 1 ser vi våra 20 besökare, vad dem fick för variation samt om de konverterade eller inte. Vi ska nu genomföra en simulation genom att lyfta ut alla värden från kolumnen "Variation" (det vill säga alla A och B), för att sedan blanda dem och föra tillbaka dem in i tabellen igen, men slumpmässigt. Logiken är enkel: vore det ingen skillnad på knapp A och B skulle detta inte påverka teststatistiken. Vi repeterar denna så kallade permutation, vilket alltså givit namn åt testet, exempelvis 5000 gånger. I vissa fall kommer detta leda till att något extremt inträffar, såsom att alla 8 konverteringar har tilldelats A—eller tvärtom, att alla har tilldelats B. Det kommer inte inträffa särskilt ofta, utan utgör distributionens ytterligheter. Här kan vi se hela resultatet:

Permutationstest1

Efter 5000 simuleringar kan vi också se att vårt faktiska scenario, 3 konverteringar för A och 5 konverteringar för B, förekommer relativt ofta. Det ger oss en tydlig indikation på att sannolikheten för ett falsk-positivt resultat är hög. Vårt nästa steg är följaktligen att räkna ut exakt hur hög:

Permutationstest 2

Vi summerar alla de scenarion där B konverterade minst 66,67% eller bättre än A (likt vårt stickprov), alla de staplar inom rutan. Vi dividerar sedan summan med antalet gånger som vi körde vår simulation (5000):

(6 + 49 + 338 +1199) / 5000 = 0,3184

Sannolikheten för att vårt scenario - eller något mer extremt - skulle inträffa till följd av naturlig variation är 31,84%. Detta värde kallas för P-värdet. Den statistiska signifikansen anges som 1 – p-värdet vilket i detta fall alltså ger oss en signifikans på 68,16%. Låt oss nu komma tillbaka till nollhypotesen igen: är detta bra, eller dåligt?

Går vi på casino kan detta låta som ganska bra odds, men hade du låtit en läkare som gjorde fel 3 av 10 gånger operera dig? Eller hur mycket pengar skulle du vara villig att satsa innan 68,16% började kännas som en alltför hög risk att ta? Skulle konsekvensen av en förlust vara att du blir skuldsatt på obestämd tid hade du antagligen inte varit lika villig att spela mot dessa odds. Eller rättare sagt, du borde inte göra det. Hade vi haft en signifikansnivå på 95%, vilket är standarden inom IT-branschen, hade felrisken sjunkit markant till endast 1 av 20 gånger. Ligger vi på 99%, vilket ofta krävs i vetenskapliga studier och kliniska prövningar, motsvarar det 1 gång på 100. IQ-test och femfaktorsteorin är två exempel på test som ligger inom denna percentil, medan de associationstester som härstammar från den Jungianska psykoanalysen och som idag missbrukas till att påvisa bland annat "omedvetna preferenser" endast har en signifikans på ca. 50%. Hur man gör skillnad på omedveten preferens och momentan perception är dock mer av ett tekniskt problem än ett statistiskt... Men grundregeln för diagnostiska data är alltså signifikans. Och som du kanske märker är vårt datas tillförlitlighet oerhört viktigt för våra beslut, som formar vår värld, vilket också är anledningen till att vi vill genomföra ett Permutations- eller A/B-test. Men vi är inte riktigt helt klara än.

I vår analys beskriver vi hypotesens variabler, våra urvalsgrupper, konstanter, vad det insamlade datat indikerar samt varför testet fick det resultat det fick. Analysen brukar också innehålla en felanalys, det vill säga vad som inte gick så bra eller hade kunnat förbättrats i testet. Till sist presenterar vi också vår slutsats som beskriver huruvida resultatet av vårt experiment stödjer hypotesen eller inte; vilket inte är detsamma som en absolut sanning; utan endast en beskrivning av experimentets utfall, av vad det lärt oss och hur det skulle kunna appliceras i andra sammanhang (empiri). Slutsatsen bör därför inte innehålla ord såsom rätt eller fel. Kunskap är föränderlig så när vi nu inte kan använda ordet sanning blir istället ordet vi använder oss av alltså Teori (eller modell). Nästa gången du hör någon säga "det är bara en teori", ta dock inte för givet att denna person är så säker som det bara går att vara på en sak, utan antagligen använder ordet felaktigt. Desto bättre vi blir på att kontrollera ett förväntat utfall, desto mer kunskap kring det skulle vi däremot kunna anse oss att ha. Till vardags nöjer vi oss ofta med att saker fungerar, men för att faktisk göra saker bättre och annorlunda måste vi ha en djupare förståelse kring Hur de faktiskt fungerar. Nu gällande just våra knappar, även om det var uppenbart från första början, saknar vi alltså belägg för att en förändring av knappfärgen från blå (nollhypotesen) till svart skulle kunna förutsäga beteendet hos våra besökare i detta fall.

Licensserbara testverktyg kan hjälpa oss att genomföra denna typ av tester och mycket annat i vårt vardagliga arbete. Vi kan också välja att implementera denna logik själva med bara några rader kod! Jag inser såklart att mina exempel kommer att gå ur tiden, men förhoppningsvis är de åtminstone någorlunda lättförståeligt för dig med lite kodvana: GitHub-sida.