Bladwijzers    
Kans A en B    
nPr en nCr    
Ronde tafel    
Met herhaling    
Gemiddelde    
SD berekenen    
Z-score    
P-waarde    
Percentage    
Verschil in %    
Verhoudingen    
Korting    
Btw berekenen    
Winstmarge    
Snelheid    
Dichtheid    
Molariteit    
Molaire massa    
Wet van Ohm    
Schoenmaat    
Staartdeling    
Kgv berekenen    
Ggd berekenen    
Priemfactoren    
Diofantisch    
Gemengd getal    
Afronden    
Abc-formule    
Logaritme    
Poolvorm    
De Moivre    
Rc berekenen    
Evenredigheid    
3D-afstand    
Punt tot lijn    
Afstand GPS    
Kegelsneden    
Kruisproduct    
Determinant    
Sin cos tan    
Opp. driehoek    
Pythagoras    
Cirkelsector    
Omtrekshoek    
Inhoud kubus    
Inhoud balk    
Opp. cilinder    
Inhoud bol    
Inhoud bolkap    
Opp. bolkap    
Inhoud kegel    
Inhoud buis    
Opp. capsule    
Dagen tellen    
Uren vanaf nu    
Tijd optellen    
Tijdsverschil    
Eindwaarde    
ROI berekenen    
IRR berekenen    
Bbp berekenen    
CTR berekenen    
LTV berekenen    
CAC berekenen    
Churn rate    
A/B-test    
SEO-verkeer    
BMI berekenen    
BMR berekenen    
Vetpercentage    
Eiwit per dag    
Koolhydraten    
Vet berekenen    
Golfhandicap    
1RM berekenen    
Hitte-index    
Windchill    
Dauwpunt    
Talstelsels    
Downloadtijd    
Stroomkosten    
kWh naar euro    
Airco kosten    
Kosten kachel    
Gas of stroom    
Besparing led    
Maandbudget    
Laadkosten    
EV vs benzine    
Bandenmaat    
Thuisbatterij    
Aantal tegels    
Gevelopervlak    
Mortel mengen    
Zaagplan hout    
Vloer op rol    
Gordijnmaat    
Graszoden    
Betonblokken    
Bakstenen    
Vlonder    
Hellingbaan    
Voorboren    
Raam opmeten    
Ophanghoogte    
Afschot buis    
Kit berekenen    
Warmteverlies    
Verhuisdozen    
Opbergruimte    
   Toevoegen
Kansrekening en willekeurige getallen: rekenmachines
Kans A en B
Kans A en B
Kans terugrekenen
Kans terugrekenen
Herhaalde kans
Herhaalde kans
Stelling van Bayes
Stelling van Bayes
Verwachtingswaarde
Verwachtingswaarde
Binomiale kans
Binomiale kans
nPr en nCr
nPr en nCr
Ronde tafel
Ronde tafel
Met herhaling
Met herhaling
Willekeurig getal
Willekeurig getal
Gemiddelden en statistiek: rekenmachines
Gemiddelde
Gemiddelde
Modus en mediaan
Modus en mediaan
SD berekenen
SD berekenen
Kwartielen & IQR
Kwartielen & IQR
Frequentietabel
Frequentietabel
Correlatie (r)
Correlatie (r)
Normale verdeling
Normale verdeling
Z-score
Z-score
Interval (95%)
Interval (95%)
Steekproefgrootte
Steekproefgrootte
Vangst-hervangst
Vangst-hervangst
P-waarde
P-waarde
Procenten en verhoudingen: rekenmachines
Percentage
Percentage
Verandering in %
Verandering in %
Verschil in %
Verschil in %
Afwijking in %
Afwijking in %
Verhoudingen
Verhoudingen
Korting
Korting
Btw berekenen
Btw berekenen
Winstmarge
Winstmarge
Snelheid: rekenmachines
Snelheid
Snelheid
Dichtheid en concentratie: rekenmachines
Dichtheid
Dichtheid
Molariteit
Molariteit
Molaire massa
Molaire massa
Natuurkunde en elektriciteit: rekenmachines
Wet van Ohm
Wet van Ohm
Watt naar ampère
Watt naar ampère
Weerstand kleur
Weerstand kleur
Spanningsverlies
Spanningsverlies
Eenheden omrekenen: rekenmachines
Gewicht omrekenen
Gewicht omrekenen
Schoenmaat
Schoenmaat
Gehele getallen: rekenmachines
Staartdeling
Staartdeling
Kgv berekenen
Kgv berekenen
Ggd berekenen
Ggd berekenen
Negatieve getallen
Negatieve getallen
Priemfactoren
Priemfactoren
Diofantisch
Diofantisch
Modulo rekenen
Modulo rekenen
Delers berekenen
Delers berekenen
Romeinse cijfers
Romeinse cijfers
Breuken, decimalen en afronden: rekenmachines
Breuken rekenen
Breuken rekenen
Gemengd getal
Gemengd getal
Vereenvoudigen
Vereenvoudigen
Breuk omzetten
Breuk omzetten
Decimaal naar breuk
Decimaal naar breuk
Afronden
Afronden
Vergelijkingen en ongelijkheden: rekenmachines
Vergelijking (x)
Vergelijking (x)
Stelsel oplossen
Stelsel oplossen
Abc-formule
Abc-formule
Absolute waarde
Absolute waarde
Ongelijkheid x²
Ongelijkheid x²
Veeltermen: rekenmachines
Binomium Newton
Binomium Newton
Wortels: rekenmachines
Wortel herleiden
Wortel herleiden
Wortel berekenen
Wortel berekenen
Machten en logaritmen: rekenmachines
Machten berekenen
Machten berekenen
Logaritme
Logaritme
Aantal cijfers
Aantal cijfers
Wetensch. notatie
Wetensch. notatie
Rekenen ×10ⁿ
Rekenen ×10ⁿ
Halveringstijd
Halveringstijd
Complexe getallen: rekenmachines
Complexe getal
Complexe getal
Poolvorm
Poolvorm
De Moivre
De Moivre
Functies en grafieken: rekenmachines
Rc berekenen
Rc berekenen
Lineaire functie
Lineaire functie
Evenredigheid
Evenredigheid
y = ax² berekenen
y = ax² berekenen
Afstandsformule
Afstandsformule
3D-afstand
3D-afstand
Verdelingspunt
Verdelingspunt
Punt tot lijn
Punt tot lijn
Afstand GPS
Afstand GPS
Kwadraat afsplitsen
Kwadraat afsplitsen
Cirkelvergelijking
Cirkelvergelijking
Kegelsneden
Kegelsneden
Poolcoördinaten
Poolcoördinaten
Rijen: rekenmachines
Rekenkundige rij
Rekenkundige rij
Meetkundige rij
Meetkundige rij
Rij van Fibonacci
Rij van Fibonacci
Recursieve rij
Recursieve rij
Vectoren: rekenmachines
Vectoren berekenen
Vectoren berekenen
Kruisproduct
Kruisproduct
Matrices: rekenmachines
Matrix berekenen
Matrix berekenen
Determinant
Determinant
Inverse matrix
Inverse matrix
Vlakke meetkunde: rekenmachines
Sin cos tan
Sin cos tan
Graden ⇔ radialen
Graden ⇔ radialen
a sin θ + b cos θ
a sin θ + b cos θ
Driehoek berekenen
Driehoek berekenen
Opp. driehoek
Opp. driehoek
Rechthoekige driehoek
Rechthoekige driehoek
Pythagoras
Pythagoras
Hoeken veelhoek
Hoeken veelhoek
Gelijkvormigheid
Gelijkvormigheid
Evenwijdige lijnen
Evenwijdige lijnen
Oppervlakte rechthoek
Oppervlakte rechthoek
Parallellogram
Parallellogram
Oppervlakte trapezium
Oppervlakte trapezium
Cirkel berekenen
Cirkel berekenen
Cirkelsector
Cirkelsector
Omtrekshoek
Omtrekshoek
Oppervlakte ellips
Oppervlakte ellips
Ruimtemeetkunde: rekenmachines
Inhoud kubus
Inhoud kubus
Oppervlakte kubus
Oppervlakte kubus
Inhoud balk
Inhoud balk
Oppervlakte balk
Oppervlakte balk
Inhoud cilinder
Inhoud cilinder
Opp. cilinder
Opp. cilinder
Inhoud bol
Inhoud bol
Oppervlakte bol
Oppervlakte bol
Inhoud bolkap
Inhoud bolkap
Opp. bolkap
Opp. bolkap
Inhoud ellipsoïde
Inhoud ellipsoïde
Opp. ellipsoïde
Opp. ellipsoïde
Inhoud piramide
Inhoud piramide
Piramideoppervlak
Piramideoppervlak
Inhoud kegel
Inhoud kegel
Oppervlakte kegel
Oppervlakte kegel
Inhoud kegelstomp
Inhoud kegelstomp
Opp. kegelstomp
Opp. kegelstomp
Inhoud buis
Inhoud buis
Inhoud capsule
Inhoud capsule
Opp. capsule
Opp. capsule
Datum en tijd: rekenmachines
Leeftijd berekenen
Leeftijd berekenen
Dagen tellen
Dagen tellen
Datum berekenen
Datum berekenen
Uren vanaf nu
Uren vanaf nu
Dag van de week
Dag van de week
Tijd optellen
Tijd optellen
Tijdzones omrekenen
Tijdzones omrekenen
Werktijd berekenen
Werktijd berekenen
Tijdsverschil
Tijdsverschil
Urenregistratie
Urenregistratie
Financiën en economie: rekenmachines
Rente op rente
Rente op rente
Enkelvoudige rente
Enkelvoudige rente
Rente berekenen
Rente berekenen
TVM-rekenmachine
TVM-rekenmachine
Contante waarde
Contante waarde
Eindwaarde
Eindwaarde
ROI berekenen
ROI berekenen
IRR berekenen
IRR berekenen
Terugverdientijd
Terugverdientijd
Gem. rendement
Gem. rendement
Bbp berekenen
Bbp berekenen
Online marketing en advertentiecijfers: rekenmachines
CTR berekenen
CTR berekenen
Conversie (CVR)
Conversie (CVR)
CPC, CPM en CPA
CPC, CPM en CPA
ROAS berekenen
ROAS berekenen
Break-even-CPA
Break-even-CPA
LTV berekenen
LTV berekenen
CAC berekenen
CAC berekenen
Churn rate
Churn rate
A/B-test
A/B-test
A/B-steekproef
A/B-steekproef
SEO-verkeer
SEO-verkeer
Break-evenpunt
Break-evenpunt
Marge en opslag
Marge en opslag
CAGR berekenen
CAGR berekenen
Gezondheid en fitness: rekenmachines
BMI berekenen
BMI berekenen
Slaapcalculator
Slaapcalculator
Caloriebehoefte
Caloriebehoefte
BMR berekenen
BMR berekenen
TDEE berekenen
TDEE berekenen
Ideaal gewicht
Ideaal gewicht
Vetpercentage
Vetpercentage
Vetvrije massa
Vetvrije massa
Calorieverbruik
Calorieverbruik
Eiwit per dag
Eiwit per dag
Macro’s berekenen
Macro’s berekenen
Koolhydraten
Koolhydraten
Vet berekenen
Vet berekenen
Lengte voorspellen
Lengte voorspellen
Sport: rekenmachines
Golfhandicap
Golfhandicap
Tempo berekenen
Tempo berekenen
1RM berekenen
1RM berekenen
Streefhartslag
Streefhartslag
Weer: rekenmachines
Hitte-index
Hitte-index
Windchill
Windchill
Dauwpunt
Dauwpunt
Informatica: rekenmachines
Talstelsels
Talstelsels
Subnetcalculator
Subnetcalculator
Downloadtijd
Downloadtijd
Energie in huis en budget: rekenmachines
Stroomkosten
Stroomkosten
kWh naar euro
kWh naar euro
Kosten per jaar
Kosten per jaar
Airco vermogen
Airco vermogen
Airco kosten
Airco kosten
Kosten kachel
Kosten kachel
Gas of stroom
Gas of stroom
Besparing led
Besparing led
Salaris omrekenen
Salaris omrekenen
Maandbudget
Maandbudget
Auto: rekenmachines
Brandstofkosten
Brandstofkosten
Laadkosten
Laadkosten
EV vs benzine
EV vs benzine
Verbruik berekenen
Verbruik berekenen
Bandenmaat
Bandenmaat
Zonne-energie en batterijen: rekenmachines
Zonne-opbrengst
Zonne-opbrengst
Aantal panelen
Aantal panelen
Terugverdientijd
Terugverdientijd
Thuisbatterij
Thuisbatterij
Wonen en klussen: rekenmachines
Aantal tegels
Aantal tegels
Trap berekenen
Trap berekenen
Beton berekenen
Beton berekenen
Wandoppervlakte
Wandoppervlakte
Behang berekenen
Behang berekenen
Verf berekenen
Verf berekenen
Vloer berekenen
Vloer berekenen
Gevelopervlak
Gevelopervlak
Grind en split
Grind en split
Mortel mengen
Mortel mengen
Helling berekenen
Helling berekenen
Zaagplan hout
Zaagplan hout
Bebouwing en FSI
Bebouwing en FSI
Vloer op rol
Vloer op rol
Isolatie berekenen
Isolatie berekenen
Gordijnmaat
Gordijnmaat
Tv kijkafstand
Tv kijkafstand
Potgrond berekenen
Potgrond berekenen
Graszoden
Graszoden
Betonblokken
Betonblokken
Bakstenen
Bakstenen
Vlonder
Vlonder
Hellingbaan
Hellingbaan
Voorboren
Voorboren
Ventilatievoud
Ventilatievoud
Verf verdunnen
Verf verdunnen
Plint berekenen
Plint berekenen
Raam opmeten
Raam opmeten
Ophanghoogte
Ophanghoogte
Afschot buis
Afschot buis
Aantal schroeven
Aantal schroeven
Houtvolume (m³)
Houtvolume (m³)
Palen en panelen
Palen en panelen
Krimp van hout
Krimp van hout
Kit berekenen
Kit berekenen
Warmteverlies
Warmteverlies
Past het door?
Past het door?
Verhuisdozen
Verhuisdozen
Opbergruimte
Opbergruimte
Zaagplan platen
Zaagplan platen
Doorbuiging plank
Doorbuiging plank

A/B-test steekproefgrootte berekenen (MDE, significantie, power en testduur)

Om de steekproefgrootte te vinden, vul je de basis-CVR, de MDE, het significantieniveau en de power in en klik je op “Berekenen”. Je krijgt de steekproefgrootte per groep voor A en B (naar boven afgerond) en het totaal, plus de benodigde dagen als je je bezoekers per dag invult. Zet “Bereken” op power om de steekproefgrootte per groep vast te leggen en in plaats daarvan de power 1 − β te vinden.

Vul de CVR en de MDE in als percentages (voor 3% vul je “3” in; voor een stijging van 10% vul je “10” in). De MDE kan een relatief % zijn (3% naar 3,3% is 10%) of in procentpunten, pp (3% naar 3,3% is 0,3). Vul bij bezoekers per dag het totaal voor A en B samen in (alle bezoeken aan de geteste pagina).
Resultaat en grafiek
Vul links de velden in en klik op “Berekenen”. Het resultaat en een grafiek van de MDE tegenover de benodigde steekproefgrootte verschijnen hier.

Wat je op deze pagina kunt doen

  • Vul de basis-CVR in (het conversiepercentage van je huidige versie A), het minimaal detecteerbaar effect (MDE, als relatief % of in procentpunten), het significantieniveau \(\alpha\) (tweezijdig of eenzijdig) en de power \(1-\beta\). Je krijgt de steekproefgrootte die elke groep van je A/B-test nodig heeft (naar boven afgerond) en het totaal
  • “Mijn pagina converteert met 3%. Hoeveel bezoekers hebben A en B elk nodig om een stijging van 10% (3% naar 3,3%) te detecteren?” Deze pagina beantwoordt de belangrijkste vraag die je stelt voordat een test begint
  • Vul je bezoekers per dag in (optioneel) en je ziet ook hoeveel dagen het duurt om die steekproefgrootte te halen (naar boven afgerond)
  • Kun je maar een vast aantal bezoekers per groep krijgen, leg dan de steekproefgrootte vast en los de power \(1-\beta\) op (de kans een verschil te vinden als er werkelijk een is)
  • Een grafiek van hoe de steekproefgrootte met de MDE verandert, een heldere uitleg van de formules en formules om te kopiëren voor Excel, Google Spreadsheets en Python staan ook op deze pagina
Deze pagina is alleen bedoeld voor A/B-tests die controleren of versie A en B verschillen in CVR (conversiepercentage). Hij gebruikt de standaardformule voor een z-toets voor twee proporties. Om te vinden hoeveel mensen een enquête nodig heeft om één percentage nauwkeurig te meten, gebruik je de calculator voor de steekproefgrootte. Om de p-waarde uit al verzamelde resultaten te lezen, gebruik je de calculator voor de p-waarde. Het bereiken van de benodigde steekproefgrootte bewijst op zich niet dat een significant resultaat een echt effect is. Lees ook de waarschuwingen in de uitleg van de formule.

Waarvoor is deze berekening handig?

Een A/B-test plannen voor de knop “In winkelwagen” in een webshop

Stel dat de productpagina van een webshop met 2% converteert en je een relatieve stijging van 10% (2% naar 2,2%) door nieuwe knoptekst wilt kunnen detecteren. Bij een significantieniveau van 5% (tweezijdig) en 80% power heb je ongeveer 80.682 bezoekers per groep nodig, ongeveer 161.364 in totaal.
Een paar tientallen of honderden bezoekers vergelijken (“B deed het vorige week beter”) kan een toevallig verschil niet van een echt verschil onderscheiden. Het vooraf uitrekenen van de steekproefgrootte voorkomt dat je weken besteedt aan een test die geen antwoord kan geven.

Bepalen hoeveel dagen je een B2B-SaaS-landingspagina test

Een landingspagina krijgt demo-aanvragen met een CVR van 5%. Om een stijging van 1 punt (5% naar 6%) te kunnen detecteren heb je 8.158 bezoekers per groep nodig, 16.316 in totaal. Bij 300 bezoeken per dag is dat \(16.316 \div 300 \approx 54{,}4\), dus 55 dagen, of 8 weken als je de dagen van de week wilt uitmiddelen.
Vraagt iemand om resultaten binnen 2 weken, dan kun je met dit getal uitleggen: “In 2 weken (4.200 bezoekers, 2.100 per groep) hebben we een veel grotere MDE nodig, rond de 3 punten (5% naar 8%, wat 1.059 per groep vraagt).”

Onderwerpregels van een nieuwsbrief testen (openpercentages)

Heeft je nieuwsbrief een openpercentage van 20% en wil je een stijging van 2 punten (20% naar 22%) door een nieuwe onderwerpregel kunnen detecteren, dan moet je naar 6.510 mensen per groep versturen, 13.020 in totaal (significantieniveau 5%, power 80%).
Een maatstaf met een hoog percentage, zoals een openpercentage, heeft minder mensen nodig om een verschil te laten zien dan een CVR van een paar procent. Dat komt doordat het \(p(1-p)\)-deel van de formule anders is: dezelfde “2 punten” vraagt voor elke maatstaf een andere steekproefgrootte.

De power controleren voordat je concludeert “geen verschil”

Stel dat een test gericht op een relatieve stijging van 10% op een pagina met een CVR van 3% draaide met 5.000 bezoekers per groep en “geen significant verschil” liet zien. Terugrekenen van de power geeft maar ongeveer 13,5%. De test was zo opgezet dat een echte verbetering in meer dan 8 van de 10 gevallen werd gemist.
De juiste conclusie is hier niet “het had geen effect” maar “met deze steekproefgrootte konden we het niet zien”. Terugrekenen van de power voorkomt dat je een test verkeerd leest en een goed idee weggooit.

Retentie vergelijken na een nieuwe app-tutorial

Een app heeft een retentie van 40% op de volgende dag. Om een relatieve stijging van 10% (40% naar 44%) door een nieuwe tutorial te kunnen detecteren zijn ongeveer 2.389 nieuwe gebruikers per groep, ongeveer 4.778 in totaal, genoeg (significantieniveau 5%, power 80%).
Een maatstaf dichtbij 50%, zoals retentie, heeft een grote spreiding, maar het verschil in percentages (4 punten) is ook groot, dus resultaten komen sneller dan bij een test op een CVR van een paar procent. Het schatten van de steekproefgrootte per maatstaf helpt je ook te beslissen aan welke verbetering je eerst werkt.

90% power gebruiken voor tests die je niet wilt missen

Voor een test waarbij het missen van een goed idee duur zou zijn, zoals een verandering in hoe prijzen worden getoond, kun je de power van 80% naar 90% verhogen. Bij een CVR van 3% en een relatieve stijging van 10% stijgt de steekproefgrootte per groep van 53.211 naar 71.233 (ongeveer 1,34 keer).
Deze berekening laat precies zien hoeveel extra bezoekers het kost om de gemiste effecten te halveren (van 20% naar 10%), zodat je de steekproefgrootte en de testduur kunt afstemmen op hoe belangrijk de test is.

Formules en figuren

Formule voor de doel-CVR (de CVR die je hoopt dat versie B bereikt)
Wiskundige notatie (de gebruikelijke schrijfwijze)
\(p_2\) \(=\) \(p_1\) \(\times\) \(\left(1 + \dfrac{r}{100}\right)\)
\(p_2\) \(=\) \(p_1\) \(+\) \(d\)
In woorden (symbolen vervangen door woorden)
③ \(p_2\): doel-CVR \(=\) ① \(p_1\): basis-CVR \(\times\) ② \(1 +\) relatieve stijging \(r \div 100\)
\(p_2\): doel-CVR \(=\) \(p_1\): basis-CVR \(+\) ④ \(d\): MDE in procentpunten
De formule in woorden
① Neem de \(p_1\): basis-CVR
② vermenigvuldig die met \(1 +\) relatieve stijging \(r \div 100\)
③ en je krijgt de \(p_2\): doel-CVR
④ (Geef je de MDE op in procentpunten, tel dan de \(d\): MDE in procentpunten direct op bij de basis-CVR \(p_1\) om de doel-CVR te krijgen.)
Een eenvoudig voorbeeld
Bij een basis-CVR van 3% en een te detecteren relatieve stijging van 10% is de doel-CVR
\(p_2\): doel-CVR \(=\) basis-CVR (3%) \(\times\) \(1 + 10 \div 100\)
\(3 \times (1 + 10 \div 100) = 3 \times 1{,}1 = 3{,}3\ \ (3{,}3\%)\)
Het belangrijkste idee
Pas op: “een verbetering van 10%” kan op twee manieren worden gelezen. Als relatief % is het “3% plus een tiende van 3% = 3,3%”. In procentpunten is het “3% + 10 punten = 13%”. De twee geven totaal verschillende steekproefgroottes. In marketing verwijst “10% stijging van de CVR” meestal naar het relatieve %, en dat is ook de standaard van deze pagina. De doel-CVR \(p_2\) is geen voorspelling van wat versie B werkelijk zal doen. Het is het kleinste verschil dat je niet wilt missen (de MDE). Is het werkelijke verschil kleiner, dan zal de test waarschijnlijk geen significant verschil laten zien, zelfs bij de volledige steekproefgrootte.
Formule voor de steekproefgrootte per groep (z-toets voor twee proporties)
Figuur
Wiskundige notatie (de gebruikelijke schrijfwijze)
\(n\) \(=\) \(\bigl(\) \(z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})}\) \(+\) \(z_{\beta}\sqrt{p_1(1-p_1)+p_2(1-p_2)}\) \(\bigr)^2\) \(\div\) \((p_2 - p_1)^2\)
In woorden (symbolen vervangen door woorden)
④ \(n\): steekproefgrootte per groep \(=\) \(\bigl(\) ① \(z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})}\): significantieterm \(+\) ② \(z_{\beta}\sqrt{p_1(1-p_1)+p_2(1-p_2)}\): powerterm \(\bigr)^2\) \(\div\) ③ \((p_2 - p_1)^2\): het te detecteren verschil in het kwadraat
De formule in woorden
① Tel de significantieterm (de \(z_{\alpha/2}\) uit het significantieniveau × de spreiding als er geen verschil is, \(\sqrt{2\bar{p}(1-\bar{p})}\))
② op bij de powerterm (de \(z_{\beta}\) uit de power × de spreiding als er wel een verschil is, \(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\)) en kwadrateer de som,
③ deel dat door het kwadraat van het te detecteren verschil, \((p_2 - p_1)^2\)
④ en je krijgt de \(n\): steekproefgrootte per groep (rond een eventuele breuk naar boven af)
Een eenvoudig voorbeeld
Bij een basis-CVR van 3% (0,03), een doel van 3,3% (0,033), een tweezijdige toets bij het significantieniveau van 5% (\(z_{\alpha/2} = 1{,}9600\)) en 80% power (\(z_{\beta} = 0{,}8416\)) is de steekproefgrootte per groep
\(n\): steekproefgrootte per groep \(=\) \(\bigl(\) \(1{,}9600 \times \sqrt{2 \times 0{,}0315 \times 0{,}9685}\) \(+\) \(0{,}8416 \times \sqrt{0{,}03 \times 0{,}97 + 0{,}033 \times 0{,}967}\) \(\bigr)^2\) \(\div\) \((0{,}033 - 0{,}03)^2\)
\(\bar{p} = (0{,}03 + 0{,}033) \div 2 = 0{,}0315\)
\(1{,}9600 \times \sqrt{2 \times 0{,}0315 \times 0{,}9685} = 1{,}9600 \times 0{,}24701 \approx 0{,}48414\)
\(0{,}8416 \times \sqrt{0{,}03 \times 0{,}97 + 0{,}033 \times 0{,}967} = 0{,}8416 \times 0{,}24700 \approx 0{,}20788\)
\((0{,}48414 + 0{,}20788)^2 \div (0{,}033 - 0{,}03)^2 = 0{,}47889 \div 0{,}000009 \approx 53.210{,}3 \rightarrow 53.211\)
Het belangrijkste idee
\(\bar{p}\) is het gemiddelde van de twee CVR’s, \((p_1 + p_2) \div 2\): de gedeelde CVR die je veronderstelt als er geen verschil is. \(\sqrt{2\bar{p}(1-\bar{p})}\) en \(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\) meten allebei hoeveel het verschil in CVR door toeval schommelt. De eerste is voor “geen verschil” en de tweede voor “een werkelijk verschil”. Kijk naar de formule: de steekproefgrootte wordt gedeeld door het kwadraat van het verschil dat je wilt detecteren. Halveer je de MDE, dan wordt de steekproefgrootte ongeveer 4 keer zo groot, en maak je hem een derde, dan ongeveer 9 keer zo groot. Daarom stijgt het aantal bezoekers zo snel als je zelfs kleine stijgingen wilt vinden. De z-waarde uit het significantieniveau is \(z_{\alpha/2}\) voor een tweezijdige toets (1,9600 bij 5%, 2,5758 bij 1%, 1,6449 bij 10%) en \(z_{\alpha}\) voor een eenzijdige toets (1,6449 bij 5%, 2,3263 bij 1%, 1,2816 bij 10%). De z-waarde uit de power, \(z_{\beta}\), is 0,8416 bij 80% en 1,2816 bij 90%. Studieboeken en andere tools gebruiken soms een vereenvoudigde formule die de twee spreidingen samenvoegt tot één \(\sqrt{2\bar{p}(1-\bar{p})}\): \(n \approx 2\bar{p}(1-\bar{p})(z_{\alpha/2}+z_{\beta})^2 \div (p_2-p_1)^2\). Deze calculator gebruikt de formule op de kaart hierboven (met twee aparte spreidingen) en toont de vereenvoudigde waarde ter vergelijking ook in het resultaat. Is de CVR klein, dan verschillen de twee nauwelijks (53.211 tegenover 53.212 in het voorbeeld hierboven). Het bereiken van de benodigde steekproefgrootte maakt een significant resultaat nog geen zeker effect. De formule geldt alleen als bezoekers willekeurig worden toegewezen, je niet steeds naar de resultaten blijft kijken en vroeg stopt (tussentijds kijken), en je een strengere grens gebruikt als je meerdere meetwaarden of meerdere B-versies tegelijk vergelijkt (meervoudig toetsen).
Formule voor de benodigde dagen (uit het aantal bezoekers per dag)
Wiskundige notatie (de gebruikelijke schrijfwijze)
\(D\) \(=\) \(\lceil\) \(2n\) \(\div\) \(V\) \(\rceil\)
In woorden (symbolen vervangen door woorden)
③ \(D\): benodigde dagen \(=\) \(\lceil\) ① \(2n\): totale steekproefgrootte voor A en B \(\div\) ② \(V\): bezoekers per dag \(\rceil\)
De formule in woorden
① Neem de \(2n\): totale steekproefgrootte voor A en B (twee keer de steekproefgrootte per groep \(n\))
② deel die door de \(V\): bezoekers per dag en rond een eventuele breuk naar boven af (\(\lceil\ \rceil\) is het symbool voor naar boven afronden),
③ en je krijgt de \(D\): benodigde dagen
Een eenvoudig voorbeeld
Is de steekproefgrootte per groep 53.211 en krijgt de geteste pagina 2.000 bezoeken per dag, dan zijn de benodigde dagen
\(D\): benodigde dagen \(=\) \(\lceil\) \(2 \times 53.211\) \(\div\) 2.000 bezoeken \(\rceil\)
\(2 \times 53.211 \div 2.000 = 106.422 \div 2.000 = 53{,}211 \rightarrow 54\)
Het belangrijkste idee
\(\lceil\ \rceil\) is het symbool voor naar boven afronden (de plafondfunctie), dus 53,211 dagen wordt 54 dagen. Bezoekers worden half-half over A en B verdeeld, dus vul de bezoekers per dag voor A en B samen in (alle bezoeken aan de geteste pagina). Ook als de berekening 54 dagen zegt, worden echte tests meestal in hele weken gedraaid. De CVR verandert per dag van de week (bezoekers op werkdagen en in het weekend verschillen), dus 7, 14, ... dagen draaien verdeelt het effect van de dag van de week gelijkmatig over beide groepen. In dit voorbeeld is 8 weken (56 dagen) een goed plan. Lopen de benodigde dagen op tot enkele maanden, dan is het realistischer een grotere MDE te kiezen of te testen op een pagina met meer verkeer.
Formule voor de power (bij een vaste steekproefgrootte per groep)
Figuur
Wiskundige notatie (de gebruikelijke schrijfwijze)
\(z_{1-\beta}\) \(=\) \(\bigl(\) \(|p_2 - p_1|\sqrt{n}\) \(-\) \(z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})}\) \(\bigr)\) \(\div\) \(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\)
\(1-\beta\) \(=\) \(\Phi\bigl(\) \(z_{1-\beta}\) \(\bigr)\)
In woorden (symbolen vervangen door woorden)
④ \(z_{1-\beta}\): z-waarde voor de power \(=\) \(\bigl(\) ① \(|p_2 - p_1|\sqrt{n}\): te detecteren verschil × \(\sqrt{\text{steekproefgrootte per groep}}\) \(-\) ② \(z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})}\): significantieterm \(\bigr)\) \(\div\) ③ \(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\): spreiding als er een verschil is
⑥ \(1-\beta\): power \(=\) \(\Phi\bigl(\) ⑤ \(z_{1-\beta}\): z-waarde voor de power \(\bigr)\)
De formule in woorden
① Neem het te detecteren verschil \(|p_2 - p_1|\) maal de wortel uit de steekproefgrootte per groep, \(\sqrt{n}\)
② trek de \(z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})}\): significantieterm
③ af, deel dan door de \(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\): spreiding als er een verschil is
④ en je krijgt de \(z_{1-\beta}\): z-waarde voor de power
⑤ Zoek met de cumulatieve verdelingsfunctie \(\Phi\) van de standaardnormale verdeling de kans op een waarde kleiner dan of gelijk aan \(z_{1-\beta}\): z-waarde voor de power
⑥ en je krijgt de \(1-\beta\): power
Een eenvoudig voorbeeld
Bij een basis-CVR van 3%, een doel van 3,3% en een tweezijdige toets bij het significantieniveau van 5% (\(z_{\alpha/2} = 1{,}9600\)) is de power, als je maar 30.000 bezoekers per groep kunt krijgen,
\(z_{1-\beta}\): z-waarde voor de power \(=\) \(\bigl(\) \(0{,}003 \times \sqrt{30.000}\) \(-\) \(1{,}9600 \times 0{,}24701\) \(\bigr)\) \(\div\) \(0{,}24700\)
\(0{,}003 \times \sqrt{30.000} = 0{,}003 \times 173{,}205 \approx 0{,}51962\)
\((0{,}51962 - 0{,}48414) \div 0{,}24700 \approx 0{,}1436\)
\(1 - \beta = \Phi(0{,}1436) \approx 0{,}5571\ \ (55{,}71\%)\)
Het belangrijkste idee
Dit is de formule voor de “steekproefgrootte per groep” opnieuw opgelost voor \(z_{\beta}\). \(\Phi\) (fi) is de cumulatieve verdelingsfunctie van de standaardnormale verdeling. Ze geeft de kans dat een z-waarde kleiner dan of gelijk aan een gegeven waarde is (\(\Phi(0{,}8416) \approx 0{,}80\), \(\Phi(1{,}2816) \approx 0{,}90\)). In het voorbeeld hierboven is de power maar ongeveer 56%. Ook als versie B werkelijk 3,3% haalt, zal een test met 30.000 bezoekers per groep dus bijna de helft van de keren “geen verschil” zeggen. Een test met een power onder 80% mist vaak werkelijke effecten. Uit een test met lage power concluderen “er was geen verschil” is te snel conclusies trekken. Strikt genomen moet een tweezijdige toets ook de andere staart meetellen (de kans dat B significant slechter uitkomt). Die waarde is minuscuul, dus deze calculator volgt de gangbare praktijk en laat haar weg.
De steekproefgrootte per groep voor een A/B-test is “(significantieterm + powerterm) in het kwadraat ÷ (te detecteren verschil) in het kwadraat”, naar boven afgerond. Halveer je de MDE, dan wordt de steekproefgrootte ongeveer 4 keer zo groot; de kunst is dus eerst te bepalen hoe groot een stijging is die je wilt vinden (de MDE). Deel door de bezoekers per dag voor de benodigde dagen, of leg de steekproefgrootte vast en los de formule opnieuw op voor de power.

Symbolen en begrippen

Symbolen

\(p_1\) p index 1 De basis-CVR (het conversiepercentage van de huidige versie A). \(p\) staat voor proportie of kans. In de formules wordt 3% geschreven als het decimale getal 0,03.
\(p_2\) p index 2 De doel-CVR (het conversiepercentage dat je hoopt dat versie B bereikt). Het is \(p_1 (1 + r/100)\) bij een relatief % en \(p_1 + d\) bij procentpunten.
\(\bar{p}\) p-streep Het gemiddelde van de twee CVR’s, \((p_1 + p_2) \div 2\). Het is de gedeelde CVR die je veronderstelt als er geen verschil is. In de statistiek geeft de streep erboven een gemiddelde aan.
\(r\) er De MDE opgegeven als relatief %. Het staat voor ratio (verhouding) en zegt met hoeveel procent de basis-CVR verbetert (3% naar 3,3% geeft \(r = 10\)).
\(d\) dee De MDE opgegeven in procentpunten. Het staat voor difference (verschil) en is het gewone verschil in CVR (3% naar 3,3% geeft \(d = 0{,}3\) punten).
\(p_2 - p_1\) p twee min p een Het te detecteren verschil, in procentpunten als decimaal getal geschreven (0,3 punten is 0,003). De steekproefgrootte wordt gedeeld door het kwadraat ervan, dus hoe kleiner het verschil, hoe sneller de steekproefgrootte groeit.
\(\alpha\) alfa Het significantieniveau: de kans een verschil echt te noemen terwijl er geen is (de kans op een type I-fout). 5% (0,05) is gebruikelijk. Alfa is de eerste Griekse letter en wordt in de statistiek gebruikt voor de kans op de “eerste” soort fout.
\(\beta\) bèta De kans een verschil te missen dat er werkelijk is (de kans op een type II-fout). Bèta is de tweede Griekse letter, gebruikt voor de kans op de “tweede” soort fout.
\(1-\beta\) een min bèta De power: de kans een verschil te vinden als er werkelijk een is. 80% of 90% is gebruikelijk.
\(z_{\alpha/2}\) z index alfa gedeeld door twee De z-waarde voor het significantieniveau \(\alpha\) bij een tweezijdige toets (het punt waarboven \(\alpha/2\) van de standaardnormale verdeling ligt). Het is 1,9600 bij 5%, 2,5758 bij 1% en 1,6449 bij 10%. Een eenzijdige toets gebruikt in plaats daarvan \(z_{\alpha}\) (1,6449 bij 5%).
\(z_{\beta}\) z index bèta De z-waarde voor de power \(1-\beta\) (het punt waaronder een kans \(1-\beta\) van de standaardnormale verdeling ligt). Het is 0,8416 bij 80% en 1,2816 bij 90%.
\(z_{1-\beta}\) z index een min bèta In de powerformule de z-waarde die uit de steekproefgrootte is teruggerekend. Vul die in \(\Phi\) in en je krijgt de power. (Het is hetzelfde als \(z_{\beta}\), geschreven vanuit de kant van de waarde die je oplost.)
\(\Phi\) hoofdletter fi De cumulatieve verdelingsfunctie van de standaardnormale verdeling. Ze geeft de kans dat een z-waarde kleiner dan of gelijk aan een gegeven waarde is: \(\Phi(1{,}96) \approx 0{,}975\) en \(\Phi(0{,}8416) \approx 0{,}80\). De Griekse hoofdletter fi is het gebruikelijke symbool voor deze functie.
\(n\) en De steekproefgrootte per groep (voor versie A en versie B elk). Het staat voor number (aantal). Het totaal voor A en B is \(2n\).
\(\sqrt{\ \ }\) wortel De wortel: het positieve getal dat het getal eronder geeft als je het kwadrateert, bijvoorbeeld \(\sqrt{30.000} \approx 173{,}205\). Hij komt voor bij het bepalen van de spreiding (standaardafwijking) van een CVR.
\(V\) vee Bezoekers per dag (alle bezoeken aan de geteste pagina, A en B samen). Het staat voor visits (bezoeken).
\(D\) dee De benodigde dagen. Het staat voor days (dagen).
\(\lceil\ \rceil\) plafond Het symbool voor naar boven afronden (de plafondfunctie). Het geeft het kleinste gehele getal dat groter dan of gelijk aan het getal erin is (\(\lceil 53{,}211 \rceil = 54\)).

Begrippen

A/B-test Een experiment waarbij je bezoekers willekeurig verdeelt over de huidige versie (A) en een nieuwe versie (B) in dezelfde periode, om te zien welke beter presteert (bijvoorbeeld een hogere CVR). Je gebruikt het om met gegevens in plaats van onderbuikgevoel te controleren of een verandering zoals een knopkleur, een kop, de manier waarop een prijs wordt getoond of de indeling van een landingspagina echt helpt.
CVR (conversiepercentage) Het deel van de bezoekers of klikken dat eindigt in een doelhandeling (een conversie), zoals een aankoop of aanmelding. In de formules op deze pagina is de CVR van versie A \(p_1\) en die van versie B \(p_2\).
MDE (minimaal detecteerbaar effect) De kleinste stijging die je wilt kunnen detecteren. Het is de eerste waarde die je bepaalt als je een A/B-test plant. Hoe kleiner, hoe sneller de steekproefgrootte groeit (hij is omgekeerd evenredig met het kwadraat van het verschil), dus kies de kleinste stijging die voor je bedrijf zou tellen.
significantieniveau De kans \(\alpha\) op de fout die je bereid bent te accepteren: een toevallig verschil zien en het echt noemen terwijl er geen verschil is. 5% is standaard, wat ongeveer 1 keer op de 20 een vals alarm toelaat. Een strenger niveau (1%) vraagt een grotere steekproefgrootte.
power (onderscheidend vermogen) De kans \(1-\beta\) om een verschil te vinden als er werkelijk een is. 80% is standaard, wat accepteert dat je ongeveer 1 keer op de 5 een echte stijging mist. Zegt een test met lage power “geen verschil”, dan is dat geen bewijs dat er geen verschil is.
type I-fout De fout om een verschil echt te noemen terwijl er geen is (een vals positief). De kans die je daarvoor toestaat is het significantieniveau \(\alpha\). Het is de keerzijde van een type II-fout (een gemiste): de ene omlaag duwen duwt de andere meestal omhoog. De meest basale manier om beide klein te maken is een grotere steekproefgrootte.
type II-fout De fout om een verschil te missen dat er werkelijk is (een vals negatief). De kans is \(\beta\), en \(1-\beta\) is de power. Het is de keerzijde van een type I-fout (een vals alarm): de ene omlaag duwen duwt de andere meestal omhoog. De meest basale manier om beide klein te maken is een grotere steekproefgrootte.
nulhypothese De hypothese “versie A en B hebben dezelfde CVR” die de toets probeert te verwerpen. De toets vraagt hoe ongewoon de gegevens zouden zijn als de nulhypothese waar was. Is dat ongewoon genoeg, dan wordt de nulhypothese verworpen en is het resultaat “een verschil”.
alternatieve hypothese De hypothese “versie A en B hebben verschillende CVR’s” die de toets probeert aan te tonen. Ze wordt aanvaard als de nulhypothese (geen verschil) wordt verworpen.
tweezijdige toets Een toets die zowel “B is hoger” als “B is lager” als een verschil telt. Hij wordt gebruikt in een gewone A/B-test, waarbij je niet weet welke kant het opgaat. Hij vraagt een grotere steekproefgrootte dan een eenzijdige toets, maar vangt ook op dat B slechter presteert.
eenzijdige toets Een toets die alleen zoekt naar “B is hoger”. Hij vraagt een kleinere steekproefgrootte dan een tweezijdige toets, maar kan niet opvangen dat B slechter presteert, dus je moet hem vóór de start van de test kiezen. (Na het zien van de resultaten overstappen op eenzijdig is niet geldig.)
z-toets voor twee proporties Een toets die controleert of twee groepen verschillen in een proportie (zoals de CVR), met een z-waarde (het gestandaardiseerde verschil) en de standaardnormale verdeling. De formules op deze pagina vinden de steekproefgrootte voor deze toets. De normale benadering werkt als elke groep genoeg conversies heeft (als vuistregel minstens 5 tot 10).
standaardnormale verdeling De normale verdeling met gemiddelde 0 en standaardafwijking 1 (een symmetrische klokvorm). Een z-waarde is een punt op de horizontale as, en elke z-waarde hoort bij één kans, zoals in “de oppervlakte rechts van 1,96 is 2,5%”.
cumulatieve verdelingsfunctie Een functie die de kans geeft op een gegeven waarde of lager. Die van de standaardnormale verdeling wordt \(\Phi\) geschreven en staat aan het eind van de powerformule. In Excel is het NORM.S.VERD (met WAAR als tweede argument) en in Python NormalDist().cdf.
standaardafwijking (spreiding) Hoe ver gegevens uit elkaar liggen. De spreiding van een proportie \(p\) is evenredig met \(\sqrt{p(1-p)}\). De \(\sqrt{2\bar{p}(1-\bar{p})}\) en \(\sqrt{p_1(1-p_1)+p_2(1-p_2)}\) in de formules zijn de spreiding van het verschil tussen de CVR’s van de twee groepen.
meervoudig toetsen Meerdere B-versies of meetwaarden tegelijk vergelijken. Hoe meer vergelijkingen, hoe waarschijnlijker dat er minstens één toevallig significant lijkt, dus je hebt een correctie nodig, zoals het significantieniveau delen door het aantal vergelijkingen (de Bonferroni-correctie).
tussentijds kijken (peeking) Steeds opnieuw naar de resultaten kijken voordat de benodigde steekproefgrootte is bereikt en stoppen zodra het resultaat significant lijkt. Het maakt toevallige verschillen makkelijk te vangen, dus een test die een significantieniveau van 5% moest hebben, doet veel vaker een verkeerd oordeel. De formules op deze pagina gaan ervan uit dat je eerst de steekproefgrootte vastlegt en wacht tot je hem bereikt.

Handig om vooraf te weten

Dit helpt je om de berekening op deze pagina echt te begrijpen, in plaats van alleen op de knop te drukken.
Loop je vast, dan is het herhalen van deze onderwerpen de snelste weg vooruit.

Procenten (groep 7–8, 10-12 jaar)
  • Kunnen wisselen tussen percentages en decimale getallen (\(3\% = 0{,}03\), \(0{,}033 = 3{,}3\%\))
  • Het verschil kennen tussen een relatieve stijging in % (3% met een tiende omhoog is 3,3%) en een stijging in procentpunten (3% + 0,3 punt = 3,3%)
Wortels (klas 2–3, 13-15 jaar)
  • Weten dat \(\sqrt{a}\) het positieve getal is dat \(a\) geeft als je het kwadrateert, en waarden zoals \(\sqrt{30.000} \approx 173{,}2\) op een rekenmachine kunnen vinden
  • Weten dat als je door een kwadraat deelt, het halveren van het getal waardoor je deelt het antwoord 4 keer zo groot maakt (\((1/2)^2 = 1/4\))
Basiskansrekening (klas 1–3, 12-15 jaar)
  • Een percentage zoals “30 aankopen uit 1.000 bezoeken” kunnen zien als een kans (een getal van 0 tot 1)
  • Een gevoel hebben voor hoe er toevallig een verschil kan ontstaan terwijl er geen is (7 keer kop bij 10 keer een munt opgooien is niet ongewoon)
De normale verdeling en z-scores (havo/vwo wiskunde A/C, 15-18 jaar)
  • Weten dat de normale verdeling een symmetrische klokvorm is en dat ongeveer 95% binnen 1,96 standaardafwijkingen van het gemiddelde ligt
  • Weten dat een z-score zegt hoeveel standaardafwijkingen een waarde van het gemiddelde ligt
Het idee van hypothesetoetsen (vwo wiskunde A/C, 16-18 jaar)
  • Weten hoe een toets werkt: je stelt de nulhypothese “geen verschil” op en als de gegevens daaronder ongewoon zouden zijn, concludeer je “er is een verschil”
  • Weten dat het significantieniveau \(\alpha\) (de kans een verschil echt te noemen terwijl er geen is) en de power \(1-\beta\) (de kans een echt verschil te vinden) over twee verschillende fouten gaan
Naar boven afronden (groep 5–6, 8-10 jaar)
  • Weten waarom aantallen mensen en dagen naar boven worden afgerond op hele getallen, zoals 53.210,3 bezoekers die 53.211 worden en 53,211 dagen die 54 worden

Berekenen met Excel

Kopieer de hele tabel hieronder en plak die in cel A1 van Excel. Het werkt direct.
Tabel voor de doel-CVR (relatief %)
Basis-CVR p1 (%) 3
Relatieve stijging r (%) 10
Doel-CVR p2 (%) =B1*(1+B2/100)
Tabel voor de steekproefgrootte per groep
Basis-CVR p1 (%) 3
Doel-CVR p2 (%) 3,3
Significantieniveau α (%, tweezijdig) 5
Power 1−β (%) 80
z_α/2 =NORM.S.INV(1-B3/100/2)
z_β =NORM.S.INV(B4/100)
Gemiddelde CVR p̄ =(B1+B2)/2/100
Steekproefgrootte per groep n (naar boven afgerond) =AFRONDEN.NAAR.BOVEN((B5*WORTEL(2*B7*(1-B7))+B6*WORTEL(B1/100*(1-B1/100)+B2/100*(1-B2/100)))^2/((B2-B1)/100)^2;0)
Tabel voor de benodigde dagen
Steekproefgrootte per groep n 53211
Bezoekers per dag V (A + B samen) 2000
Benodigde dagen D (naar boven afgerond) =AFRONDEN.NAAR.BOVEN(2*B1/B2;0)
Tabel voor de power (vaste steekproefgrootte per groep)
Basis-CVR p1 (%) 3
Doel-CVR p2 (%) 3,3
Significantieniveau α (%, tweezijdig) 5
Steekproefgrootte per groep n 30000
z_α/2 =NORM.S.INV(1-B3/100/2)
Gemiddelde CVR p̄ =(B1+B2)/2/100
z_1−β =(ABS(B2-B1)/100*WORTEL(B4)-B5*WORTEL(2*B6*(1-B6)))/WORTEL(B1/100*(1-B1/100)+B2/100*(1-B2/100))
Power 1−β (%) =NORM.S.VERD(B7;WAAR)*100
Na het plakken zijn de bovenste rijen je invoer en wordt de laatste rij automatisch berekend.
De eerste tabel toont 3,3 in B3 (een doel-CVR van 3,3%), de tweede toont 53211 in B8 (de steekproefgrootte per groep), de derde toont 54 in B3 (de benodigde dagen) en de vierde toont ongeveer 55,71 in B8 (een power van 55,71%).
NORM.S.INV zet een kans om in een z-waarde en NORM.S.VERD (met WAAR als tweede argument) zet een z-waarde om in een kans. Voor een eenzijdige toets verwijder je de “/2” uit de formule voor z_α/2, zodat die =NORM.S.INV(1-B3/100) wordt. AFRONDEN.NAAR.BOVEN(…;0) rondt naar boven af.

Berekenen met Google Spreadsheets

Kopieer de hele tabel hieronder en plak die in cel A1 van Google Spreadsheets. Het werkt direct.
Tabel voor de doel-CVR (relatief %)
Basis-CVR p1 (%) 3
Relatieve stijging r (%) 10
Doel-CVR p2 (%) =B1*(1+B2/100)
Tabel voor de steekproefgrootte per groep
Basis-CVR p1 (%) 3
Doel-CVR p2 (%) 3,3
Significantieniveau α (%, tweezijdig) 5
Power 1−β (%) 80
z_α/2 =NORM.S.INV(1-B3/100/2)
z_β =NORM.S.INV(B4/100)
Gemiddelde CVR p̄ =(B1+B2)/2/100
Steekproefgrootte per groep n (naar boven afgerond) =AFRONDEN.NAAR.BOVEN((B5*WORTEL(2*B7*(1-B7))+B6*WORTEL(B1/100*(1-B1/100)+B2/100*(1-B2/100)))^2/((B2-B1)/100)^2;0)
Tabel voor de benodigde dagen
Steekproefgrootte per groep n 53211
Bezoekers per dag V (A + B samen) 2000
Benodigde dagen D (naar boven afgerond) =AFRONDEN.NAAR.BOVEN(2*B1/B2;0)
Tabel voor de power (vaste steekproefgrootte per groep)
Basis-CVR p1 (%) 3
Doel-CVR p2 (%) 3,3
Significantieniveau α (%, tweezijdig) 5
Steekproefgrootte per groep n 30000
z_α/2 =NORM.S.INV(1-B3/100/2)
Gemiddelde CVR p̄ =(B1+B2)/2/100
z_1−β =(ABS(B2-B1)/100*WORTEL(B4)-B5*WORTEL(2*B6*(1-B6)))/WORTEL(B1/100*(1-B1/100)+B2/100*(1-B2/100))
Power 1−β (%) =NORM.S.VERD(B7;WAAR)*100
Dezelfde formules als in Excel werken ongewijzigd (ook Google Spreadsheets heeft NORM.S.INV, NORM.S.VERD en AFRONDEN.NAAR.BOVEN). Kopieer de hele tabel, plak die in cel A1 en vervang de invoer in kolom B door je eigen getallen.

Berekenen met Python

from math import sqrt, ceil
from statistics import NormalDist

base_cvr = 3.0          # basis-CVR (%)
relative_mde = 10.0     # te detecteren MDE (relatief %)
alpha = 0.05            # significantieniveau (tweezijdig)
power = 0.80            # power
daily_visits = 2000     # bezoekers per dag (A + B samen)

p1 = base_cvr / 100
p2 = p1 * (1 + relative_mde / 100)          # doel-CVR
z_alpha = NormalDist().inv_cdf(1 - alpha / 2)  # voor een eenzijdige toets gebruik je 1 - alpha
z_beta = NormalDist().inv_cdf(power)
p_bar = (p1 + p2) / 2

n_exact = (z_alpha * sqrt(2 * p_bar * (1 - p_bar))
           + z_beta * sqrt(p1 * (1 - p1) + p2 * (1 - p2))) ** 2 / (p2 - p1) ** 2
n_per_group = ceil(n_exact)                  # steekproefgrootte per groep (naar boven afgerond)
days = ceil(2 * n_per_group / daily_visits)  # benodigde dagen

print(f"Doel-CVR: {p2 * 100:.4g}%")
print(f"Steekproefgrootte per groep: {n_per_group} (totaal {2 * n_per_group})")
print(f"Benodigde dagen: {days}")

# Andersom: de power met 30.000 bezoekers per groep
n_fixed = 30000
z_power = (abs(p2 - p1) * sqrt(n_fixed) - z_alpha * sqrt(2 * p_bar * (1 - p_bar))) \
          / sqrt(p1 * (1 - p1) + p2 * (1 - p2))
print(f"Power met {n_fixed} per groep: {NormalDist().cdf(z_power) * 100:.2f}%")
Draait met alleen de standaardbibliotheek (statistics.NormalDist vereist Python 3.8 of nieuwer). In dit voorbeeld is de doel-CVR 3,3%, de steekproefgrootte per groep 53211 (106422 in totaal), zijn de benodigde dagen 54 en is de power met 30.000 bezoekers per groep ongeveer 55,71%. Pas bovenaan de waarden aan en voer het uit.

De formule in LaTeX en andere wiskundenotaties (om te kopiëren)

Formule voor de doel-CVR (de CVR die je hoopt dat versie B bereikt)
p₂ = p₁ × (1 + r/100)
p_2 = p_1 \left(1 + \dfrac{r}{100}\right)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <msub><mi>p</mi><mn>2</mn></msub>
    <mo>=</mo>
    <msub><mi>p</mi><mn>1</mn></msub>
    <mo>(</mo><mn>1</mn><mo>+</mo><mfrac><mi>r</mi><mn>100</mn></mfrac><mo>)</mo>
  </mrow>
</math>
p_2 = p_1 (1 + r/100)
p1*(1 + r/100)
p2 := p1*(1 + r/100);
p2 = p1*(1 + r/100);
p_2 = p_1 (1 + r/100)
Formule voor de steekproefgrootte per groep (z-toets voor twee proporties)
n = (z_α/2 √(2p̄(1 − p̄)) + z_β √(p₁(1 − p₁) + p₂(1 − p₂)))² ÷ (p₂ − p₁)²
n = \dfrac{\left( z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})} + z_{\beta}\sqrt{p_1(1-p_1)+p_2(1-p_2)} \right)^2}{(p_2 - p_1)^2}
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>n</mi>
    <mo>=</mo>
    <mfrac>
      <msup>
        <mrow>
          <mo>(</mo>
          <msub><mi>z</mi><mrow><mi>&#x3B1;</mi><mo>/</mo><mn>2</mn></mrow></msub>
          <msqrt><mn>2</mn><mover><mi>p</mi><mo>&#xAF;</mo></mover><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><mover><mi>p</mi><mo>&#xAF;</mo></mover><mo>)</mo></msqrt>
          <mo>+</mo>
          <msub><mi>z</mi><mi>&#x3B2;</mi></msub>
          <msqrt>
            <msub><mi>p</mi><mn>1</mn></msub><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><msub><mi>p</mi><mn>1</mn></msub><mo>)</mo>
            <mo>+</mo>
            <msub><mi>p</mi><mn>2</mn></msub><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><msub><mi>p</mi><mn>2</mn></msub><mo>)</mo>
          </msqrt>
          <mo>)</mo>
        </mrow>
        <mn>2</mn>
      </msup>
      <msup>
        <mrow><mo>(</mo><msub><mi>p</mi><mn>2</mn></msub><mo>&#x2212;</mo><msub><mi>p</mi><mn>1</mn></msub><mo>)</mo></mrow>
        <mn>2</mn>
      </msup>
    </mfrac>
  </mrow>
</math>
n = (z_(alpha/2) sqrt(2 bar p (1 - bar p)) + z_beta sqrt(p_1(1 - p_1) + p_2(1 - p_2)))^2 / (p_2 - p_1)^2
Ceiling[(za*Sqrt[2*pbar*(1 - pbar)] + zb*Sqrt[p1*(1 - p1) + p2*(1 - p2)])^2/(p2 - p1)^2]
n := ceil((za*sqrt(2*pbar*(1 - pbar)) + zb*sqrt(p1*(1 - p1) + p2*(1 - p2)))^2/(p2 - p1)^2);
n = ceil((za*sqrt(2*pbar*(1 - pbar)) + zb*sqrt(p1*(1 - p1) + p2*(1 - p2)))^2/(p2 - p1)^2);
n = (z_(α/2) √(2p̄(1 − p̄)) + z_β √(p_1(1 − p_1) + p_2(1 − p_2)))^2/(p_2 − p_1)^2
Formule voor de benodigde dagen (uit het aantal bezoekers per dag)
D = ⌈2n ÷ V⌉
D = \left\lceil \dfrac{2n}{V} \right\rceil
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mi>D</mi>
    <mo>=</mo>
    <mo>&#x2308;</mo>
    <mfrac><mrow><mn>2</mn><mi>n</mi></mrow><mi>V</mi></mfrac>
    <mo>&#x2309;</mo>
  </mrow>
</math>
D = |~ (2n)/V ~|
Ceiling[2*n/v]
days := ceil(2*n/V);
D = ceil(2*n/V);
D = ⌈2n/V⌉
Formule voor de power (bij een vaste steekproefgrootte per groep)
1 − β = Φ((|p₂ − p₁|√n − z_α/2 √(2p̄(1 − p̄))) ÷ √(p₁(1 − p₁) + p₂(1 − p₂)))
1 - \beta = \Phi\left( \dfrac{|p_2 - p_1|\sqrt{n} - z_{\alpha/2}\sqrt{2\bar{p}(1-\bar{p})}}{\sqrt{p_1(1-p_1)+p_2(1-p_2)}} \right)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
  <mrow>
    <mn>1</mn><mo>&#x2212;</mo><mi>&#x3B2;</mi>
    <mo>=</mo>
    <mi>&#x3A6;</mi>
    <mo>(</mo>
    <mfrac>
      <mrow>
        <mo>|</mo><msub><mi>p</mi><mn>2</mn></msub><mo>&#x2212;</mo><msub><mi>p</mi><mn>1</mn></msub><mo>|</mo>
        <msqrt><mi>n</mi></msqrt>
        <mo>&#x2212;</mo>
        <msub><mi>z</mi><mrow><mi>&#x3B1;</mi><mo>/</mo><mn>2</mn></mrow></msub>
        <msqrt><mn>2</mn><mover><mi>p</mi><mo>&#xAF;</mo></mover><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><mover><mi>p</mi><mo>&#xAF;</mo></mover><mo>)</mo></msqrt>
      </mrow>
      <msqrt>
        <msub><mi>p</mi><mn>1</mn></msub><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><msub><mi>p</mi><mn>1</mn></msub><mo>)</mo>
        <mo>+</mo>
        <msub><mi>p</mi><mn>2</mn></msub><mo>(</mo><mn>1</mn><mo>&#x2212;</mo><msub><mi>p</mi><mn>2</mn></msub><mo>)</mo>
      </msqrt>
    </mfrac>
    <mo>)</mo>
  </mrow>
</math>
1 - beta = Phi((|p_2 - p_1| sqrt(n) - z_(alpha/2) sqrt(2 bar p (1 - bar p))) / sqrt(p_1(1 - p_1) + p_2(1 - p_2)))
CDF[NormalDistribution[0, 1], (Abs[p2 - p1]*Sqrt[n] - za*Sqrt[2*pbar*(1 - pbar)])/Sqrt[p1*(1 - p1) + p2*(1 - p2)]]
power := Statistics[CDF](Normal(0, 1), (abs(p2 - p1)*sqrt(n) - za*sqrt(2*pbar*(1 - pbar)))/sqrt(p1*(1 - p1) + p2*(1 - p2)));
power = normcdf((abs(p2 - p1)*sqrt(n) - za*sqrt(2*pbar*(1 - pbar)))/sqrt(p1*(1 - p1) + p2*(1 - p2)));
1 − β = Φ((|p_2 − p_1| √n − z_(α/2) √(2p̄(1 − p̄)))/√(p_1(1 − p_1) + p_2(1 − p_2)))

Zo laat je ChatGPT  de berekening doen

Je bent een assistent voor het plannen van A/B-tests. Voer de volgende berekening uit door daadwerkelijk Python-code uit te voeren en baseer je antwoord alleen op de getallen uit het resultaat van de uitvoering (geef geen antwoord uit je hoofd of op basis van een gok).

De CVR van de huidige pagina (de basis-CVR) is 3%. Ik wil met versie B een relatieve stijging van 10% (een CVR van 3,3%) kunnen detecteren.
Bereken bij een significantieniveau van 5% (tweezijdige toets) en 80% power elk van de volgende punten:
1. De doel-CVR p2 (p2 = p1 × (1 + 10/100))
2. De steekproefgrootte per groep n (de formule voor de z-toets voor twee proporties: n = (z_{α/2}·√(2p̄(1−p̄)) + z_β·√(p1(1−p1)+p2(1−p2)))² ÷ (p2−p1)², met p̄ = (p1+p2)/2, naar boven afgerond) en de totale steekproefgrootte voor A en B
3. De benodigde dagen (naar boven afgerond) bij 2.000 bezoekers per dag (A en B samen)
4. De power als er maar 30.000 bezoekers per groep beschikbaar zijn (1−β = Φ((|p2−p1|·√n − z_{α/2}·√(2p̄(1−p̄))) ÷ √(p1(1−p1)+p2(1−p2))))

Gebruik statistics.NormalDist voor de z-waarden en de cumulatieve verdelingsfunctie en laat de gebruikte formules en de getallen uit het resultaat van de uitvoering zien.

Zo werkt het
  1. 1
    Vul je getallen in
    Typ de getallen waarmee je wilt rekenen in de invoervelden
  2. 2
    Bereken
    Klik op de knop “Berekenen”
  3. 3
    Bekijk het resultaat
    Het resultaat verschijnt meteen. Op dezelfde pagina vind je ook de uitwerking van de berekening en de uitleg van de formule
  Kenmerken van DataChef
Eenvoudig en gratis
Onbeperkt gratis converteren
Geen voorkennis nodig – intuïtieve en eenvoudige bediening
Geen registratie nodig
Direct te gebruiken
Zonder persoonlijke gegevens op te geven
Veilig en betrouwbaar
Sterk versleutelde verbinding (SSL)
Bestand wordt automatisch verwijderd zodra je op "Downloaden" klikt
Snel
Snelle laadtijden en snelle conversie
Zonder watermerk
Geen watermerk
Geen bronvermelding vereist
Commercieel gebruik toegestaan
Gratis voor commercieel gebruik
Geen toestemming vooraf nodig