Skip to content

Forstå A/B-testing med eksempelet på Optimalisering av konverteringer og Python kode

A/B-testing er en metode for å sammenligne to versjoner av en nettside, e-post, annonse eller annen digital ressurs for å finne ut hvilken som gir best resultat. Testen går ut på å vise to varianter – versjon A og versjon B – til ulike segmenter av brukerne og deretter analysere hvilken versjon som gir bedre ytelse basert på en bestemt måleparameter, for eksempel klikkrate, konverteringsrate eller engasjement.

Hvordan fungerer A/B-testing?

  1. Definer mål – Bestem hva du ønsker å optimalisere (for eksempel flere kjøp, høyere engasjement, lavere fluktfrekvens).
  2. Lag to versjoner – Versjon A (kontrollversjonen) og versjon B (den modifiserte versjonen).
  3. Tilordne brukere tilfeldig – Besøkende fordeles tilfeldig mellom de to versjonene.
  4. Samle data – Overvåk hvordan brukerne interagerer med hver versjon.
  5. Analyser resultatene – Bruk statistiske metoder for å avgjøre hvilken versjon som presterer best.
  6. Implementer vinneren – Rull ut den beste versjonen til alle brukere.

Hvor brukes A/B-testing?

  • Nettsider og landingssider – For å forbedre brukeropplevelsen og konverteringer.
  • E-postmarkedsføring – For å teste emnelinjer, innhold og CTA-knapper.
  • Digitale annonser – For å finne ut hvilke budskap, bilder eller videoer som gir best resultat.
  • App-design – For å optimalisere brukergrensesnitt og funksjonalitet.

Fordeler med A/B-testing

  • Datadrevet beslutningstaking – Valg baseres på faktiske brukerdata, ikke antakelser.
  • Bedre brukeropplevelse – Optimaliserer innholdet for maksimal effekt.
  • Høyere konverteringsrate – Identifiserer hvilke elementer som påvirker brukeratferd.
  • Redusert risiko – Tester endringer i liten skala før full utrulling.

A/B-testing er en viktig metode innen digital markedsføring, produktutvikling og UX-design for å sikre at endringer og optimaliseringer gir best mulig resultat.

For å bruke statistiske metoder til A/B-testing og forbedre konverteringsraten, må du følge en strukturert prosess. Her er en detaljert guide:

See also  Giới thiệu về Dự báo Chuỗi Thời gian và Các Chỉ số Đánh giá Dự báo Chính

1. Definer mål og hypoteser

Før du starter testen, må du definere:

  • Nullhypotese (H?): Det er ingen forskjell i konverteringsrate mellom versjon A og B.
  • Alternativ hypotese (H?): Versjon B har en høyere (eller lavere) konverteringsrate enn versjon A.

Eksempel:

  • H?: Konverteringsraten for versjon A (p_A) = konverteringsraten for versjon B (p_B).
  • H_1: p_B > p_A (hvis du tester en forbedring).

2. Velg statistisk test

Den vanligste metoden for A/B-testing av konverteringsrater er Z-test for proporsjoner fordi vi sammenligner to grupper av binære utfall (konvertering vs. ikke-konvertering).

Hvis samplet er lite, kan en Fisher’s exact test eller en chi-kvadrat-test brukes.


3. Bestem nødvendig utvalgsstørrelse

For å sikre at testen har nok statistisk styrke, må du beregne en passende utvalgsstørrelse. Formelen for dette avhenger av:

  • Signifikansnivå (?): Vanligvis 0.05 (5% risiko for falskt positivt resultat).
  • Statistisk styrke (1 – ?): Vanligvis 80% (sannsynligheten for å oppdage en sann effekt).
  • Forventet konverteringsrate: Basert på historiske data.

4. Gjennomfør testen

  • Tilordne brukere tilfeldig til versjon A eller B.
  • Samle inn data (antall besøkende og konverteringer per gruppe).

5. Analyser resultatene

Bruk en Z-test for proporsjoner for å sammenligne de to konverteringsratene:

Z = \frac{(p_A - p_B)}{\sqrt{p(1-p) \left( \frac{1}{n_A} + \frac{1}{n_B} \right)}}

hvor:

  • p_A = konverteringsrate i gruppe A
  • p_B = konverteringsrate i gruppe B
  • p er den kombinerte konverteringsraten for begge grupper
  • n_A og n_B er utvalgsstørrelsene

P-verdi

  • Hvis p < 0.05, avvis nullhypotesen – det er en signifikant forskjell.
  • Hvis p ? 0.05, kan vi ikke konkludere at versjon B er bedre enn A.

6. Beregn konfidensintervaller

For å være mer sikker på forskjellen mellom versjonene, beregn konfidensintervallet (CI):

CI = (p_B - p_A) \pm Z_{\alpha/2} \sqrt{p(1-p) \left( \frac{1}{n_A} + \frac{1}{n_B} \right)}

Hvis 0 ikke er inkludert i intervallet, har vi en signifikant forskjell.


7. Implementer den vinnende versjonen

Hvis versjon B har en signifikant bedre konverteringsrate, rull den ut til alle brukere.


Eksempel

La oss si at:

  • Gruppe A: 5000 besøkende, 250 konverteringer (p_A = 5\% )
  • Gruppe B: 5000 besøkende, 300 konverteringer (p_B = 6\% )
See also  Farer ved å møte fremmede på nettet - Dangers of meeting strangers online

Vi bruker en Z-test og finner at p-verdien = 0.03, som er < 0.05. Dette betyr at versjon B har en signifikant høyere konverteringsrate.


8. Ekstra tips

  • Unngå for tidlig stopp – Kjør testen til du har nok data.
  • A/B/n-testing – Hvis du har flere varianter, bruk ANOVA eller multinomiale tester.
  • Multivariat testing – For flere endringer samtidig.

Her er et Python-script for å gjennomføre en A/B-test med en Z-test for proporsjoner. Dette scriptet tar inn antall besøkende og konverteringer for både gruppe A og B, beregner Z-score, p-verdi og konfidensintervaller, og avgjør om forskjellen er signifikant.

Dette scriptet kjører en A/B-test, beregner Z-score og p-verdi, og konkluderer om forskjellen er signifikant. Du kan justere verdiene for n_A, conv_A, n_B og conv_B for å bruke dine egne data. ?

Code (click to download):

import numpy as np
import scipy.stats as stats

def ab_test(n_A, conv_A, n_B, conv_B, alpha=0.05):
    """
    Gjennomfører en A/B-test ved hjelp av en Z-test for proporsjoner.
    
    Parametere:
    n_A: Antall besøkende i gruppe A
    conv_A: Antall konverteringer i gruppe A
    n_B: Antall besøkende i gruppe B
    conv_B: Antall konverteringer i gruppe B
    alpha: Signifikansnivå (standard 0.05)
    """
    # Beregn konverteringsrater
    p_A = conv_A / n_A
    p_B = conv_B / n_B
    
    # Kombinert konverteringsrate
    p_combined = (conv_A + conv_B) / (n_A + n_B)
    
    # Standardfeil
    SE = np.sqrt(p_combined * (1 - p_combined) * (1/n_A + 1/n_B))
    
    # Z-score
    Z = (p_B - p_A) / SE
    
    # p-verdi (ensidig test, hvis vi sjekker om B > A)
    p_value = 1 - stats.norm.cdf(Z)
    
    # Konfidensintervall (95%)
    Z_alpha = stats.norm.ppf(1 - alpha/2)
    CI_lower = (p_B - p_A) - Z_alpha * SE
    CI_upper = (p_B - p_A) + Z_alpha * SE
    
    # Resultater
    print(f"Konverteringsrate A: {p_A:.4f}")
    print(f"Konverteringsrate B: {p_B:.4f}")
    print(f"Z-score: {Z:.4f}")
    print(f"p-verdi: {p_value:.4f}")
    print(f"95% konfidensintervall: ({CI_lower:.4f}, {CI_upper:.4f})")
    
    # Konklusjon
    if p_value < alpha:
        print("Statistisk signifikant forskjell! Implementer versjon B.")
    else:
        print("Ingen statistisk signifikant forskjell.")

# Eksempeldata: Gruppe A (5000 besøkende, 250 konverteringer) og Gruppe B (5000 besøkende, 300 konverteringer)
ab_test(n_A=5000, conv_A=250, n_B=5000, conv_B=300)

Utgangsresultat:

Konverteringsrate A: 0.0500
Konverteringsrate B: 0.0600
Z-score: 2.1932
p-verdi: 0.0141
95% konfidensintervall: (0.0011, 0.0189)
Statistisk signifikant forskjell! Implementer versjon B.

R kode (click to download)

Dette er koden til å bruke prop.test fra base R for å utføre A/B-testen. Denne metoden er mer robust og anbefales for testing av proporsjoner.

# A/B-test i R ved hjelp av en Z-test for proporsjoner med 'prop.test' fra base R
library(stats)

ab_test <- function(n_A, conv_A, n_B, conv_B, alpha=0.05) {
  # Data
  successes <- c(conv_A, conv_B)
  trials <- c(n_A, n_B)
  
  # Utfør proporsjonstest
  test_result <- prop.test(successes, trials, alternative = "two.sided", conf.level = 1 - alpha)
  
  # Resultater
  cat(sprintf("Konverteringsrate A: %.4f\n", successes[1] / trials[1]))
  cat(sprintf("Konverteringsrate B: %.4f\n", successes[2] / trials[2]))
  cat(sprintf("Z-score: %.4f\n", sqrt(test_result$statistic)))
  cat(sprintf("p-verdi: %.4f\n", test_result$p.value))
  cat(sprintf("95%% konfidensintervall: (%.4f, %.4f)\n", test_result$conf.int[1], test_result$conf.int[2]))
  
  # Konklusjon
  if (test_result$p.value < alpha) {
    cat("??  Statistisk signifikant forskjell! Implementer versjon B.\n")
  } else {
    cat("??  Ingen statistisk signifikant forskjell.\n")
  }
}

# Eksempeldata: Gruppe A (5000 besøkende, 250 konverteringer) og Gruppe B (5000 besøkende, 300 konverteringer)
ab_test(n_A=5000, conv_A=250, n_B=5000, conv_B=300)

Utgangsresultat:

Konverteringsrate A: 0.0500
Konverteringsrate B: 0.0600
Z-score: 2.1493
p-verdi: 0.0316
95% konfidensintervall: (-0.0191, -0.0009)
??  Statistisk signifikant forskjell! Implementer versjon B.


Discover more from Knowledge sparks

Subscribe to get the latest posts sent to your email.

Leave a Reply

error: Content is protected !!