Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Рандомізація та розмір вибірки | Розробка ефективних A/B-тестів
A/B Тестування з Python

Рандомізація та розмір вибірки

Свайпніть щоб показати меню

Випадковий розподіл є основою надійного A/B тестування. Призначаючи користувачів у групи випадковим чином, забезпечується статистична подібність обох груп, що знижує ризик селекційної упередженості. Селекційна упередженість виникає, коли певні користувачі мають більшу ймовірність потрапити до однієї групи, що може спотворити результати та призвести до хибних висновків. Без належної рандомізації відмінності між групами можуть бути зумовлені не досліджуваною змінною, а прихованими характеристиками.

У A/B тестуванні зазвичай використовують кілька технік рандомізації:

  • Проста рандомізація: кожен користувач має рівну ймовірність потрапити до будь-якої групи, часто із застосуванням генератора випадкових чисел;
  • Блокова рандомізація: користувачів об'єднують у блоки, і в межах кожного блоку випадково розподіляють по групах для підтримки балансу протягом усього тесту;
  • Стратифікована рандомізація: користувачів ділять на страти за характеристиками (наприклад, вік або місцезнаходження), і рандомізація відбувається в межах кожної страти для представлення всіх підгруп.

Проста рандомізація є найпростішою та часто достатньою для більшості цифрових експериментів. Однак складніші методи допомагають зберігати баланс при роботі з меншими вибірками або важливими підгрупами.

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

Визначення правильної вибірки є критично важливим для надійності результатів A/B тесту. Занадто мала вибірка може призвести до ненадійних або непереконливих результатів, а надмірно велика — до нераціонального використання ресурсів. Розмір вибірки безпосередньо впливає на статистичну потужність тесту — ймовірність виявлення справжньої різниці, якщо вона існує.

Ключові поняття при розрахунку розміру вибірки:

  • Мінімально виявлений ефект (MDE): найменша різниця між групами, яку потрібно виявити;
  • Рівень значущості (альфа): ймовірність хибнопозитивного результату (зазвичай встановлюється на рівні 0,05);
  • Потужність (1 - бета): ймовірність виявлення справжнього ефекту (зазвичай встановлюється на рівні 0,8 або 80%).

Аналіз потужності поєднує ці фактори для оцінки мінімальної кількості користувачів у кожній групі. Більші ефекти або вищий рівень значущості потребують меншої кількості користувачів, тоді як менші ефекти або вища потужність — більшої кількості користувачів.

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

Який основний ризик недостатньої рандомізації або занадто малого розміру вибірки в A/B тестуванні?

Виберіть правильну відповідь

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 2. Розділ 2

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 2. Розділ 2
some-alt