Naar hoofdinhoud

A/B-test Manifesto

Samen met de beste online marketing bureau’s wil ik een gezamenlijk dossier over A/B-testen schrijven waar alle bureau’s achter staan. De afgelopen maanden heb ik verschillende boeken en informatie op het internet doorgenomen. Het viel mij op dat veel informatie elkaar tegenspreekt en dat er vaak discussie is onder experts. Als wat ik heb geschreven klopt, dan zou veel informatie op internet onjuist zijn.

Dit is een eerste opzet. Graag zou ik hierover van gedachten willen wisselen. Ik sta open voor vragen, opmerkingen, kritiek en andere correspondentie. Mail naar

1. Er is normaliter geen sprake van het trekken van steekproeven bij een A/B-test op een website

Als men een A/B-test doet deelt men op in groepen. Strikt gezien is er bij een A/B-test sprake van twee groepen: variant A en variant B. Wie een bredere definitie van A/B-testen hanteert voegt meer dan twee varianten toe. Een experiment met vijf varianten (A/B/C/D/E-test) kent vijf groepen. Groepen zijn niet altijd steekproeven.

1.1 Het opdelen van een selectie van de totale populatie in steekproeven

Als men de totale populatie niet kan of wil meten, meet men een selectie van de totale populatie die representatief is voor die totale populatie. Deze selectie bestaat uit groepen: dit worden steekproeven genoemd. Het hangt van het aantal variaties af hoe groot elke steekproef is. Stel, in totaal wordt 10% van de totale populatie meegenomen in het experiment. Bij 2 variaties is elke steekproef dan 5% van de totale populatie. Bij 5 variaties is elke steekproef 2% van de totale populatie. In dit geval is 90% van de totale populatie niet meegenomen in het experiment. Omdat niet van iedereen de gegevens bekend zijn, zijn er statistische berekeningen nodig om uitspraak te doen over de totale populatie.

E-mailmarketeers doen vaak een A/B-test mét steekproeven: zo kan het bijvoorbeeld zijn dat uit een totaal bestand van 50.000 e-mailadressen slechts 5.000 van de 50.000 e-mailadressen worden meegenomen in een A/B-test. Als die A/B-test een winnende variant oplevert kan deze variant vervolgens naar de overige 45.000 e-mailadressen worden gestuurd.

Er is sprake van een A/B-test op een website mét steekproeven als men ervoor kiest om minder dan 100% van het websitebezoek mee te nemen in de A/B-test. Een voorbeeld hiervan is een A/B-test waarbij 25% van het bezoek variant A ziet, 25% variant B ziet, en 50% helemaal niet meedoet met de A/B-test. In dat geval gaan steekproef gerelateerde problemen een rol spelen: hoe zorg je ervoor dat de selecties representatief zijn voor het geheel. Dit soort A/B-testen mét steekproeven worden hoofdzakelijk uitgevoerd door bedrijven die websites beheren met forse hoeveelheden verkeer. Denk bijvoorbeeld aan Google en Facebook. Voor het gros van de bedrijven is het echter gebruikelijk om met 100% van het websitebezoek te testen. Het is voor die bedrijven al moeilijk genoeg om aan voldoende verkeer te komen: dan geldt hoe meer verkeer hoe beter. In de regel neemt men dus geen steekproeven.

1.2 Het opdelen van de totale populatie in groepen

Als men de totale populatie wél kan en wil meten neemt men een census. Dit is het geval bij een A/B-test met 100% van het websitebezoek. Als de totale populatie wordt opgedeeld in groepen zijn het geen steekproeven: het zijn gewoon groepen. In totaal wordt 100% van de totale populatie meegenomen in het experiment. Bij 2 variaties is elke groep 50% van de totale populatie. Bij 5 variaties is elke groep 20% van de totale populatie. 0% van de totale populatie is niet meegenomen in het experiment. Omdat van iedereen de gegevens bekend zijn, hoeven er geen statistische berekeningen te worden gedaan om uitspraken te doen over de totale populatie: men kan direct uitspraken doen. Het hele plaatje is inzichtelijk, niet slechts een gedeelte. Er is dus geen onzekerheid, er is niets ‘groters’. Beschrijvende statistiek volstaat: het vergelijken van de gemiddeldes van de groepen geeft het beeld dat je wil hebben: hoger is hoger.

1.3 Bij een A/B-test met 100% websitebezoek zijn statistische berekeningen niet nodig

De reden dat ik dit verschil tussen A/B-testen mét en zonder steekproeven zo duidelijk neerzet is omdat hier naar mijn mening regelmatig een denkfout wordt gemaakt. Ik denk dat je kunt stellen dat er vaak van uit wordt gegaan dat de A/B-test die men op de website doet een A/B-test mét steekproeven is, terwijl dit niet zo is. Op internet kom ik tegen dat men spreekt over steekproeven als men het heeft over een A/B-test met 100% van het websitebezoek, terwijl er dan eigenlijk sprake is van census. Het gaat dan ten onrechte over het berekenen van de grootte van een steekproef (sample in het Engels) met een steekproefcalculator (sample size calculator in het Engels) om te kijken hoe lang de A/B-test op de website moet draaien.

Bij een A/B-test met 100% van het websitebezoek is er geen sprake van het trekken van steekproeven. Dit betekent dat bij het gros van de A/B-testen statistische berekeningen geen rol spelen. Een A/B-test op een website met 100% van het websitebezoek is gewoon feitelijk datgene wat je waarneemt. Er hoeven dus ook geen statistische berekeningen te worden uitgevoerd om vanuit de steekproeven uitspraken te doen over ‘alle bezoekers’: het zijn al alle bezoekers. Met andere woorden: de meeste tools die nu gebruikt worden voor A/B-testen op websites zijn, zoals ik er tegenaan kijk, in de meeste gevallen overbodig en onbruikbaar.

Als Google het bijvoorbeeld heeft over een A/B-test dan is dat waarschijnlijk een andere A/B-test dan een A/B-test van een bedrijf met een website met een geringere hoeveelheid verkeer. Het idee dat je steekproeven neemt als dit niet zo is maakt dat het veel ingewikkelder wordt dan het in werkelijkheid is. Omdat A/B-testen op een website mét steekproeven gezien kan worden als een uitzondering, ga ik in dit artikel hier niet verder op in.

1.4 Een steekproef uit een onbekende toekomst nemen kan niet

De gedachte over steekproeven nemen bij een A/B-test met 100% van het websitebezoek gaat vaak gepaard met de gedachte dat het mogelijk is om een steekproef te nemen in de tijd. Bij het lezen van het vorige gedeelte is misschien deze gedachte bij je opgekomen: “Ja maar, het blijft altijd een steekproef van potentiële klanten zelfs als je iedere bezoeker meeneemt, niet elke potentiële klant kijkt tijdens het experiment op je site.”

Het idee is dan dat er een totale populatie is die bestaat uit alle bezoekers vanaf nu tot in de oneindige toekomst. Men doet dan bijvoorbeeld een A/B-test van een maand, en gaat er van uit dat dit een steekproef is van alle bezoekers die de daaropvolgende jaren naar de website komen. In dit gedeelte leg ik uit waarom die redenatie niet klopt.

Een zuiver experiment

Eerst ga ik in op wat een experiment precies is. Met een experiment is een relatie te ‘kwantificeren’ (causaal verband) tussen een verandering enerzijds en een uitkomst anderzijds. Met andere woorden: het manipuleren van de ene variabele (factor) om te kijken hoe deze van invloed is op een andere variabele (respons). Bij een A/B-test bijvoorbeeld is een link aan te tonen tussen het veranderen van de kleur van een button en het aantal verkochte producten.

Het ideaal is om een zodanige experimentele setting te ontwerpen dat een verandering in de ene variabele alleen kan worden toegeschreven aan een verandering in de andere variabele: een zuiver experiment. Het credo is: everything else stays equal. De setting wordt zodoende geïsoleerd en alle relevante (externe) variabelen worden gecontroleerd: gelijk gehouden of geëlimineerd. De variabele die gemanipuleerd wordt is dan het enige dat verschillend is, en dat dus de oorzaak kan zijn. In een zuiver experiment is een duidelijke oorzaak-en-gevolg relatie te vinden, omdat er zicht is op de variabelen die een rol spelen.

Alleen als het experiment elke keer dat het experiment herhaald wordt precies hetzelfde is kunnen verschillen worden toegeschreven aan toeval. Theoretisch zou het experiment in de toekomst herhaald kunnen worden, maar de voorwaarde is dan dus dat alles precies hetzelfde verloopt. Met alles wordt dan ook letterlijk alles bedoeld. Dit is in praktijk niet haalbaar. De enige manier waarop dat kan is als men een tijdmachine heeft en terug in de tijd gaat.

Een experiment in de praktijk

In de praktijk kan bij een A/B-test op een website een gedeelte van de tijdlijn nooit als steekproef worden genomen voor een groter gedeelte van de tijdlijn dat nog niet bestaat. Een A/B-test op een website wordt gedaan in een bepaalde tijdsperiode. Als men de totale populatie (100% van het verkeer) niet kan of wil meten in die tijdsperiode dan kan men een selectie nemen uit de totale populatie (bijvoorbeeld 50% van het verkeer) van die tijdsperiode. In de toekomst veranderen er teveel variabelen die niet te voorzien zijn.

Het nemen van een (simpele random) steekproef is te vergelijken met een hoge hoed waar de totale populatie in zit, en dat er vervolgens random een selectie uit deze hoge hoed wordt gepakt. Elk element in de hoed heeft evenveel kans om gekozen te worden, en elke selectie heeft evenveel kans om gekozen te worden (bij dezelfde steekproefgrootte). Voor de duidelijkheid: de totale populatie zit dus in de hoed. Het zou raar zijn om te zeggen dat de hoed de steekproef is, en dat de totale populatie iets groters omvat wat op dat moment nog niet bestaat. Toch is dat wat er gebeurt als een A/B-test met 100% van het websitebezoek gezien wordt als een steekproef.

1.5 Een conclusie is beperkt tot de periode van het experiment

Conclusies uit een onderzoek hebben in de praktijk alleen betrekking op de periode dat het onderzoek gedaan is. Niet op de periode na het onderzoek. Dit is het onderwerp van generaliseren: de scope van de conclusies. Het is belangrijk om goed na te gaan wat de uitkomst van een A/B-test nu eigenlijk precies betekent.

Stel, onderzoekers testen een nieuw medicijn met vijf proefpersonen: Piet, Henk, Marja, Marije en Bob. Ze doen dit om 4 uur in de middag in een lab waarbij de temperatuur 25 graden is. Om half 5 gaat het brandalarm af. Verder zijn alle variabelen constant. Na afloop van het experiment zien ze dat het nieuwe medicijn beter werkt.

De enige conclusie die ze nu mogen trekken is: als we dit experiment exact herhalen werkt het nieuwe medicijn beter. Oftewel: Als we de 5 personen kunnen brainwashen, en hun lichaam weer precies zo kunnen maken zoals toen ze binnenkwamen, en het weer 4 uur in de middag is en de temperatuur 25 graden is en om half 5 het brandalarm afgaat, en alle andere variabelen constant zijn gebleven, dan werkt het nieuwe medicijn beter.

Bij A/B-testen op websites werkt dit hetzelfde. De te formuleren conclusie is beperkt tot de periode dat het experiment gedaan is. Als er 2 weken een A/B-test gedaan is, dan kan er alleen maar geconcludeerd worden dat er een winnaar is als die 2 weken met exact alles wat er die 2 weken gebeurd is, tot op de kleinste detail, zich nog een keer voordoet. Dit zijn de beperkingen aan de conclusies: de toekomst gaan voorspellen kan niet. Als dit wel gedaan wordt dan heet het overmatige generalisatie: het toepassen van de resultaten op een veel grotere groep dan de eigenlijke populatie binnen het onderzoek. Die 2 weken dat de A/B-test gedaan is, is beslist niet representatief voor de tijd na de A/B-test. Het is dus niet mogelijk om conclusies te trekken over iets dat buiten het experiment staat.

Statistisch gezien klopt het niet

Wie een A/B-test op een website met 100% van het websitebezoek ziet als steekproef zou zich moeten afvragen wie de totale populatie dan precies is. Een van de eerste stappen bij het opzetten van een experiment met steekproeven is om duidelijk voor ogen te krijgen waar de totale populatie uit bestaat. Het doel is namelijk om uitspraken te doen over die totale populatie. De volgende stap is om een steekproef te nemen die de totale populatie vertegenwoordigt: de totale populatie moet in het klein terugkomen in de steekproef. Zijn dit de bezoekers na een maand? Na een jaar? De ‘gemiddelde’ bezoeker? Hier is geen antwoord op te vinden.

Bij de statistische formules en berekeningen voor steekproeven die in de regel gebruikt worden bij A/B-testen geldt dat de totale populatie minimaal 10 keer zo groot moet zijn als de steekproef. Dit is niet het geval bij A/B-testen op websites met 100% van het websitebezoek. Je zou dan pas uitspraken kunnen doen na 1000% van het websitebezoek.

1.6 Het zou een slechte steekproef zijn

De gedachte dat men een steekproef kan nemen in de tijd komt ook door de gedachte dat het een random steekproef zou zijn. Er zou vanuit die redenering geen verschil zijn tussen de periode dat men de A/B-test doet, en de periode na de A/B-test: de periode van de A/B-test en de periode daarna zijn vanuit die redenering allebei willekeurige selecties van bezoekers. Dit klopt echter niet.

Een representatieve steekproef dient (zonder bias) de totale populatie te vertegenwoordigen: de gehele groep van individuen waar we informatie over willen. Dit is niet het geval. Als het een steekproef zou zijn, zou het een slechte (selecte) steekproef zijn. Het zou dan een gemaksteekproef zijn: er wordt gewoon gemeten wie er langskomt. Niemand heeft de deelnemers van te voren geselecteerd, ze hebben zichzelf geselecteerd om mee te doen. Dit is een slechte vorm van steekproeftrekken omdat je mogelijk grote onder- of oververtegenwoordiging krijgt.

Het feit dat bezoekers random worden ingedeeld in variant A of B maakt het geen random steekproef. Het is geen willekeurige selectie. Er is geen sprake van een even grote kans om gekozen te worden.

Het maakt niet uit hoe groot de steekproef is, als de steekproef niet willekeurig is zal het resultaat de populatie niet vertegenwoordigen waar we conclusies over willen vormen. Bij het steekproefdenken wordt vaak de vraag gesteld hoeveel bezoekers er nodig zijn. Bezoekers zijn echter geen robots. Je kunt de ene bezoeker niet zomaar inwisselen voor de ander. De vraag waar het om zou moeten gaan is welke bezoekers er nodig zijn.