Рандомізація та розмір вибірки
Свайпніть щоб показати меню
Випадковий розподіл є основою надійного A/B тестування. Призначаючи користувачів у групи випадковим чином, забезпечується статистична подібність обох груп, що знижує ризик селекційної упередженості. Селекційна упередженість виникає, коли певні користувачі мають більшу ймовірність потрапити до однієї групи, що може спотворити результати та призвести до хибних висновків. Без належної рандомізації відмінності між групами можуть бути зумовлені не досліджуваною змінною, а прихованими характеристиками.
У A/B тестуванні зазвичай використовують кілька технік рандомізації:
- Проста рандомізація: кожен користувач має рівну ймовірність потрапити до будь-якої групи, часто із застосуванням генератора випадкових чисел;
- Блокова рандомізація: користувачів об'єднують у блоки, і в межах кожного блоку випадково розподіляють по групах для підтримки балансу протягом усього тесту;
- Стратифікована рандомізація: користувачів ділять на страти за характеристиками (наприклад, вік або місцезнаходження), і рандомізація відбувається в межах кожної страти для представлення всіх підгруп.
Проста рандомізація є найпростішою та часто достатньою для більшості цифрових експериментів. Однак складніші методи допомагають зберігати баланс при роботі з меншими вибірками або важливими підгрупами.
1234567891011121314151617import 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%).
Аналіз потужності поєднує ці фактори для оцінки мінімальної кількості користувачів у кожній групі. Більші ефекти або вищий рівень значущості потребують меншої кількості користувачів, тоді як менші ефекти або вища потужність — більшої кількості користувачів.
12345678910111213141516171819202122from 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)}")
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат