Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Satunnaistaminen ja Otoskoko | Tehokkaiden A/B-testien Suunnittelu
A/B-testaus Pythonilla

Satunnaistaminen ja Otoskoko

Pyyhkäise näyttääksesi valikon

Satunnainen jako on luotettavan A/B-testauksen perusta. Jakamalla käyttäjät satunnaisesti ryhmiin varmistetaan, että molemmat ryhmät ovat tilastollisesti samanlaisia, mikä vähentää valintaharhan riskiä. Valintaharha syntyy, kun tietyillä käyttäjillä on suurempi todennäköisyys päätyä yhteen ryhmään toisen sijaan, mikä voi vääristää tuloksia ja johtaa virheellisiin johtopäätöksiin. Ilman asianmukaista satunnaistamista ryhmien väliset erot voivat johtua taustatekijöistä testattavan muuttujan sijaan.

A/B-testauksessa käytetään yleisesti useita satunnaistamistekniikoita:

  • Yksinkertainen satunnaistaminen: jokaisella käyttäjällä on yhtä suuri mahdollisuus päätyä mihin tahansa ryhmään, usein satunnaislukugeneraattorin avulla;
  • Lohkosatunnaistaminen: käyttäjät jaetaan lohkoihin, ja jokaisessa lohkossa käyttäjät jaetaan satunnaisesti eri ryhmiin tasapainon säilyttämiseksi koko testin ajan;
  • Kerrostettu satunnaistaminen: käyttäjät jaetaan kerroksiin ominaisuuksien (kuten iän tai sijainnin) perusteella, ja satunnaistaminen tapahtuu jokaisessa kerroksessa, jotta kaikki alaryhmät ovat edustettuina.

Yksinkertainen satunnaistaminen on suoraviivaisin ja usein riittävä useimmissa digitaalisissa kokeissa. Kehittyneemmät tekniikat auttavat säilyttämään tasapainon erityisesti pienissä otoskoissa tai tärkeissä alaryhmissä.

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}")

Oikean otoskoon määrittäminen on ratkaisevaa A/B-testin tulosten luotettavuuden kannalta. Liian pieni otos voi johtaa epäluotettaviin tai epäselviin tuloksiin, kun taas tarpeettoman suuri otos tuhlaa resursseja. Otoskoko vaikuttaa suoraan testin tilastolliseen voimaan – todennäköisyyteen havaita todellinen ero, jos sellainen on olemassa.

Keskeisiä käsitteitä otoskoon laskennassa ovat:

  • Vähimmäishavaittava vaikutus (MDE): pienin ero ryhmien välillä, jonka haluat havaita;
  • Merkitsevyystaso (alfa): väärän positiivisen todennäköisyys (yleensä 0,05);
  • Voima (1 - beeta): todennäköisyys havaita todellinen vaikutus (yleensä 0,8 eli 80%).

Voima-analyysi yhdistää nämä tekijät arvioidakseen vähimmäiskäyttäjämäärän kummassakin ryhmässä. Suuremmat vaikutuskoot tai korkeammat merkitsevyystasot vaativat vähemmän käyttäjiä, kun taas pienemmät vaikutukset tai suurempi voima vaativat enemmän käyttäjiä.

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

Mikä on suurin riski huonossa satunnaistamisessa tai liian pienessä otoskoossa A/B-testauksessa?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 2

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 2. Luku 2
some-alt