Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Randomisering og Utvalgsstørrelse | Designe Effektive A/B-Tester
A/B-testing med Python

Randomisering og Utvalgsstørrelse

Sveip for å vise menyen

Tilfeldig tildeling er grunnlaget for pålitelige A/B-tester. Ved å tildele brukere til grupper tilfeldig, sikrer du at begge gruppene er statistisk like, noe som reduserer risikoen for seleksjonsbias. Seleksjonsbias oppstår når enkelte brukere har større sannsynlighet for å havne i én gruppe fremfor en annen, noe som kan forvrenge resultatene og føre til feilaktige konklusjoner. Uten korrekt randomisering kan forskjeller mellom gruppene skyldes underliggende egenskaper i stedet for variabelen du tester.

Flere randomiseringsteknikker brukes ofte i A/B-testing:

  • Enkel randomisering: hver bruker har like stor sjanse for å bli tildelt en hvilken som helst gruppe, ofte ved bruk av en tilfeldig tallgenerator;
  • Blokk-randomisering: brukere grupperes i blokker, og innenfor hver blokk tildeles brukerne tilfeldig til ulike grupper for å opprettholde balanse gjennom hele testen;
  • Stratifisert randomisering: brukere deles inn i strata basert på egenskaper (som alder eller lokasjon), og randomisering skjer innen hvert stratum for å sikre at alle undergrupper er representert.

Enkel randomisering er den mest rett frem og er ofte tilstrekkelig for de fleste digitale eksperimenter. Mer avanserte teknikker hjelper imidlertid med å opprettholde balanse når man arbeider med mindre utvalg eller viktige undergrupper.

1234567891011121314151617
import random # Simulating random assignment of 20 users to groups 'A' and 'B' users = [f"user_{i+1}" for i in range(20)] groups = ['A', 'B'] # Dictionary to hold group assignments assignment = {} for user in users: # Randomly choosing a group for each user assigned_group = random.choice(groups) assignment[user] = assigned_group # Printing out the assignment for user, group in assignment.items(): print(f"{user} assigned to group {group}")

Å bestemme riktig utvalgsstørrelse er avgjørende for påliteligheten til resultatene fra A/B-testen. Et for lite utvalg kan føre til upålitelige eller inkonklusive resultater, mens et unødvendig stort utvalg sløser med ressurser. Utvalgsstørrelsen påvirker direkte den statistiske styrken til testen – sannsynligheten for å oppdage en reell forskjell hvis en finnes.

Nøkkelbegreper i beregning av utvalgsstørrelse inkluderer:

  • Minimum påvisbar effekt (MDE): den minste forskjellen mellom gruppene du ønsker å kunne oppdage;
  • Signifikansnivå (alfa): sannsynligheten for et falskt positivt funn (vanligvis satt til 0,05);
  • Styrke (1 - beta): sannsynligheten for å oppdage en reell effekt (vanligvis satt til 0,8 eller 80%).

Styrkeanalyse kombinerer disse faktorene for å estimere det minste antallet brukere som trengs i hver gruppe. Større effekter eller høyere signifikansnivå krever færre brukere, mens mindre effekter eller høyere styrke krever flere brukere.

12345678910111213141516171819202122
from scipy.stats import norm import math # Parameters for sample size calculation alpha = 0.05 # Significance level power = 0.8 # Desired power p1 = 0.10 # Baseline conversion rate (control group) p2 = 0.13 # Expected conversion rate (treatment group) effect_size = abs(p2 - p1) # Minimum detectable effect # Calculate pooled standard deviation pooled_prob = (p1 + p2) / 2 std_dev = math.sqrt(2 * pooled_prob * (1 - pooled_prob)) # Z-scores for alpha and power z_alpha = norm.ppf(1 - alpha / 2) z_beta = norm.ppf(power) # Sample size formula for two-proportion z-test n = ((z_alpha + z_beta) * std_dev / effect_size) ** 2 print(f"Required sample size per group: {math.ceil(n)}")
question mark

Hva er den største risikoen ved dårlig randomisering eller bruk av for liten utvalgsstørrelse i A/B-testing?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 2

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 2. Kapittel 2
some-alt