Spis treści
- Cztery liczby, od których zależy wielkość próby
- Wzór na wielkość próby i przykład obliczenia
- Ilu użytkowników potrzebujesz: tabela dla typowych konwersji
- Jak policzyć czas trwania testu A/B
- Jak sprawdzić istotność statystyczną testu A/B po jego zakończeniu
- Istotność statystyczna a istotność biznesowa
- Podglądanie wyników i testy sekwencyjne
- Najczęściej zadawane pytania
Istotność statystyczna testu A/B mówi, jak mało prawdopodobne byłoby zaobserwowanie takiej lub większej różnicy między wariantami, gdyby w rzeczywistości działały one tak samo. Żeby test miał szansę ją wykazać, przed startem musisz policzyć wielkość próby z czterech wartości: bazowego współczynnika konwersji, minimalnego efektu, który chcesz wykryć (MDE), poziomu istotności (zwykle 5%) i mocy testu (zwykle 80%). Czas trwania wynika z podzielenia wymaganej próby przez dzienny ruch i zaokrąglenia w górę do pełnych tygodni.
Najważniejsze w skrócie
- Przy konwersji 2% i chęci wykrycia poprawy o 10% (do 2,2%) potrzebujesz ok. 80 700 użytkowników na wariant przy istotności 5% i mocy 80%.
- Wymagana próba rośnie z kwadratem zmniejszania efektu: dwukrotnie mniejszy MDE oznacza mniej więcej czterokrotnie większą próbę.
- Czas testu zaokrąglaj do pełnych tygodni i planuj co najmniej dwa tygodnie, żeby objąć różnice między dniami tygodnia.
- Wynik p < 0,05 nie oznacza 95% szansy, że wariant jest lepszy – to prawdopodobieństwo takiego lub skrajniejszego wyniku przy braku rzeczywistej różnicy.
- Codzienne sprawdzanie wyników i kończenie testu przy pierwszym „istotnym” wyniku znacznie zwiększa ryzyko fałszywego zwycięzcy, chyba że narzędzie stosuje metody sekwencyjne.
Cztery liczby, od których zależy wielkość próby
Wielkość próby w teście A/B wyznaczają: bazowy współczynnik konwersji, minimalny wykrywalny efekt, poziom istotności i moc. Trzy ostatnie wybierasz Ty, pierwszy odczytujesz z danych.
- Bazowy współczynnik konwersji (p₁). Odsetek użytkowników, którzy wykonują zdarzenie kluczowe w wersji kontrolnej. Licz go dla tej samej strony i tego samego segmentu, który obejmie test, z ostatnich 4–8 tygodni, i w przeliczeniu na użytkownika, a nie na sesję.
- Minimalny wykrywalny efekt (MDE). Najmniejsza zmiana, którą test ma wykryć. Przejście z 2% na 2,2% to +0,2 punktu procentowego, czyli +10% względnie. MDE ustalasz biznesowo: jaka poprawa uzasadnia wdrożenie zmiany.
- Poziom istotności (α). Akceptowane ryzyko fałszywego alarmu, czyli uznania różnicy, której nie ma. Standardem jest 5% w teście dwustronnym.
- Moc testu (1 − β). Szansa, że test wykryje efekt o wielkości MDE, jeśli on naprawdę istnieje. Przy mocy 80% w co piątym takim teście efekt pozostanie niewykryty.
Test dwustronny sprawdza, czy wariant jest lepszy albo gorszy, jednostronny – tylko jeden kierunek. Jednostronny wymaga mniejszej próby, ale nie zauważy pogorszenia, dlatego domyślnie wybieraj dwustronny. Pojęcie istotności statystycznej wyjaśniamy też w słowniku.
Wzór na wielkość próby i przykład obliczenia
Dla porównania dwóch współczynników konwersji liczbę użytkowników na wariant liczysz ze wzoru opartego na rozkładzie normalnym. Przy α = 5% i mocy 80% pierwszy czynnik wynosi ok. 7,85.
n = (z(1 − α/2) + z(1 − β))² × [p₁(1 − p₁) + p₂(1 − p₂)] / (p₂ − p₁)²
α = 0,05, moc = 0,80 → z ≈ 1,960 i 0,842 → (1,960 + 0,842)² ≈ 7,85
Załóżmy, że karta produktu ma konwersję 2%, a chcesz wykryć wzrost do 2,2%:
- p₁(1 − p₁) = 0,02 × 0,98 = 0,0196,
- p₂(1 − p₂) = 0,022 × 0,978 = 0,0215,
- (p₂ − p₁)² = 0,002² = 0,000004,
- n ≈ 7,85 × 0,0411 / 0,000004 ≈ 80 700 użytkowników na wariant.
Ten sam rachunek w Pythonie, bez dodatkowych bibliotek:
from math import ceil
from statistics import NormalDist
def wielkosc_proby(p1, mde_wzgl, alfa=0.05, moc=0.8):
p2 = p1 * (1 + mde_wzgl)
z = NormalDist().inv_cdf
k = (z(1 - alfa / 2) + z(moc)) ** 2
return ceil(k * (p1 * (1 - p1) + p2 * (1 - p2)) / (p2 - p1) ** 2)
print(wielkosc_proby(0.02, 0.10)) # 80679 użytkowników na wariant
Do szybkiego szacunku w głowie przydaje się reguła n ≈ 16 × p(1 − p) / δ², gdzie δ to bezwzględna różnica. Dla przykładu powyżej daje ok. 78 400, czyli wynik bliski dokładnemu.
Ilu użytkowników potrzebujesz: tabela dla typowych konwersji
Poniższa tabela pokazuje liczbę użytkowników na jeden wariant przy α = 5% (test dwustronny) i mocy 80%. MDE podano jako zmianę względną. Wartości zaokrąglono do setek.
| Bazowa konwersja | MDE 5% | MDE 10% | MDE 20% | MDE 30% |
|---|---|---|---|---|
| 1% | 637 000 | 163 100 | 42 700 | 19 800 |
| 2% | 315 200 | 80 700 | 21 100 | 9 800 |
| 3% | 207 900 | 53 200 | 13 900 | 6 500 |
| 5% | 122 100 | 31 200 | 8 200 | 3 800 |
| 10% | 57 800 | 14 700 | 3 800 | 1 800 |
Z tabeli płyną dwa praktyczne wnioski. Po pierwsze, testowanie drobnych zmian przy niskiej konwersji wymaga ogromnego ruchu – sklep z 2% konwersji potrzebuje ponad 300 000 użytkowników na wariant, żeby wykryć poprawę o 5%. Po drugie, metryka z wyższą konwersją, np. dodanie do koszyka zamiast zakupu, skraca test, ale mierzy coś innego. Zmiana, która zwiększa liczbę dodań do koszyka, nie musi zwiększać sprzedaży.
Jak policzyć czas trwania testu A/B
Czas trwania to wymagana próba dla wszystkich wariantów podzielona przez dzienny ruch, który faktycznie trafi do testu, zaokrąglona w górę do pełnych tygodni.
- Policz próbę na wariant ze wzoru albo z tabeli.
- Pomnóż przez liczbę wariantów. Test A/B/C potrzebuje trzech takich prób, a do tego korekty na wielokrotne porównania.
- Sprawdź dzienny ruch kwalifikujący się do testu. Liczą się użytkownicy, którzy zobaczą testowany element, a nie cały ruch w serwisie.
- Podziel i zaokrąglij w górę do pełnych tygodni. Zachowanie w poniedziałek i w sobotę bywa różne, więc niepełny tydzień zaburza wynik. Planuj co najmniej dwa tygodnie.
- Sprawdź kalendarz. Wyprzedaże, długie weekendy i Black Friday zmieniają strukturę ruchu. Test w takim okresie mówi, jak wariant działa w sezonie, a nie przez cały rok. O planowaniu tego okresu piszemy w tekście o budżecie na Black Friday i Q4.
- Ustal maksymalny czas. Przy testach dłuższych niż 4–6 tygodni rośnie odsetek użytkowników, którzy usunęli ciasteczka lub wrócili na innym urządzeniu i trafili do innego wariantu. Safari ogranicza też czas życia ciasteczek zapisywanych przez skrypty, zwykle do 7 dni.
Załóżmy, że testowaną kartę produktu odwiedza 6000 użytkowników dziennie. Dwa warianty po 80 700 osób to 161 400 użytkowników, czyli ok. 27 dni. Po zaokrągleniu do pełnych tygodni test powinien trwać 28 dni.
Jeśli wychodzi więcej niż 6 tygodni, masz trzy opcje: zwiększyć MDE i testować odważniejsze zmiany, objąć testem więcej ruchu (np. wszystkie karty produktów zamiast jednej) albo zrezygnować z testu i wdrożyć zmianę na podstawie innych przesłanek.
Jak sprawdzić istotność statystyczną testu A/B po jego zakończeniu
Dla współczynników konwersji najprostszy jest test z dla dwóch proporcji. Z wartości z wyliczasz p-value, a z błędu standardowego – przedział ufności dla różnicy, który mówi więcej niż sama decyzja „istotne” lub „nieistotne”.
from math import sqrt
from statistics import NormalDist
def test_proporcji(n_a, k_a, n_b, k_b):
p_a, p_b = k_a / n_a, k_b / n_b
p = (k_a + k_b) / (n_a + n_b)
z = (p_b - p_a) / sqrt(p * (1 - p) * (1 / n_a + 1 / n_b))
p_value = 2 * (1 - NormalDist().cdf(abs(z)))
se = sqrt(p_a * (1 - p_a) / n_a + p_b * (1 - p_b) / n_b)
return z, p_value, (p_b - p_a - 1.96 * se, p_b - p_a + 1.96 * se)
print(test_proporcji(82000, 1640, 82000, 1804))
Załóżmy, że w teście zaplanowanym na 82 000 użytkowników na wariant wersja A miała 1640 konwersji (2,00%), a wersja B – 1804 (2,20%). Wartość z wynosi 2,82, p-value 0,005, a 95-procentowy przedział ufności dla różnicy to od +0,06 do +0,34 punktu procentowego, czyli od ok. +3% do +17% względnie. Wynik jest istotny, a nawet dolna granica przedziału oznacza poprawę.
Gdyby wersja B miała 1740 konwersji (2,12%), p-value wyniosłoby 0,08, a przedział – od −0,02 do +0,26 punktu procentowego. To nie dowód, że warianty działają tak samo: dane są zgodne zarówno z niewielkim pogorszeniem, jak i z poprawą o kilkanaście procent.
Dane do takiego testu najłatwiej pobrać z eksportu GA4 do BigQuery, licząc użytkowników i konwersje według wariantu. Przykłady zapytań do tego eksportu znajdziesz w artykule o 10 zapytaniach do danych GA4 w BigQuery, a sposób przekazania wariantu do GA4 – w tekście o testach A/B w GA4.
Istotność statystyczna a istotność biznesowa
Wynik istotny statystycznie może być nieistotny biznesowo, a wynik nieistotny – wart wdrożenia. Decyzję podejmuj na podstawie przedziału ufności zestawionego z kosztem zmiany, a nie samego p-value.
- Czym jest p-value. To prawdopodobieństwo uzyskania takiej lub większej różnicy, gdyby warianty działały identycznie. Nie jest to prawdopodobieństwo, że wariant B jest lepszy.
- Przychód ma większą zmienność niż konwersja. Testy na średniej wartości zamówienia czy przychodzie na użytkownika wymagają zwykle większej próby, a pojedyncze bardzo duże zamówienia potrafią przesądzić o wyniku. Sprawdź wynik po ograniczeniu wartości skrajnych.
- Metryki ochronne. Wariant, który zwiększa konwersję, może obniżać marżę albo zwiększać zwroty. Dlatego obok metryki głównej monitoruj marżę i wskaźniki zysku, takie jak opisane w tekście o ROAS, POAS i MER.
- Wiele wariantów i metryk. Przy kilku porównaniach szansa, że któreś wyjdzie „istotne” przypadkiem, rośnie. Najprostsza korekta Bonferroniego dzieli α przez liczbę porównań.
Podglądanie wyników i testy sekwencyjne
Klasyczny test zakłada, że wynik sprawdzasz raz, po zebraniu zaplanowanej próby. Każde wcześniejsze sprawdzenie z możliwością zakończenia testu zwiększa ryzyko fałszywego zwycięzcy znacznie powyżej założonych 5%.
Wartość p w trakcie testu naturalnie się waha i przy wielu sprawdzeniach prędzej czy później spadnie poniżej 0,05, nawet gdy warianty niczym się nie różnią. Jeśli codziennie zaglądasz do panelu i kończysz test przy pierwszym zielonym wyniku, faktycznie testujesz z dużo wyższym poziomem błędu.
Są dwa wyjścia. Pierwsze to dyscyplina: data zakończenia ustalona przed startem i ocena wyniku tylko wtedy. Wcześniej wolno sprawdzać jedynie poprawność techniczną, np. równowagę podziału ruchu. Drugie to metody sekwencyjne, które dopuszczają wielokrotne sprawdzanie przy zachowaniu kontroli błędu, oraz podejście bayesowskie z jasno określoną regułą decyzji. Część narzędzi z naszego przeglądu narzędzi do testów A/B stosuje takie metody – sprawdź w dokumentacji, którą wykorzystuje Twoje.
Podglądanie wyników to tylko jeden z błędów, które fałszują eksperymenty. Pozostałe, w tym niezrównoważony podział ruchu, opisujemy w artykule o 12 błędach w testach A/B. Te same zasady planowania próby dotyczą testów kreacji – jak przygotować ich warianty, pokazujemy w tekście o kreacjach z AI od briefu do testu A/B, a testy kampanii w platformach opisujemy w poradniku o eksperymentach w Google Ads i Meta Ads. Wszystkie materiały znajdziesz w dziale Testy A/B.
Najczęściej zadawane pytania
Ile musi trwać test A/B?
Tyle, ile potrzeba do zebrania wyliczonej wcześniej próby, zaokrąglone w górę do pełnych tygodni – w praktyce zwykle od dwóch do sześciu tygodni. Krótszy test nie obejmie różnic między dniami tygodnia, a dłuższy traci dokładność, bo użytkownicy usuwają ciasteczka i wracają na innych urządzeniach. Czas wynika z bazowej konwersji, minimalnego efektu i dziennego ruchu w teście.
Co oznacza p-value 0,05 w teście A/B?
P-value 0,05 oznacza, że gdyby warianty w rzeczywistości działały tak samo, różnicę taką jak zaobserwowana lub większą uzyskałbyś mniej więcej w 5% przypadków. Nie oznacza to 95% pewności, że wariant B jest lepszy. Dlatego obok p-value warto patrzeć na przedział ufności różnicy, który pokazuje zakres prawdopodobnych efektów.
Czy można zakończyć test A/B wcześniej, gdy wynik jest istotny?
W klasycznym teście nie powinno się tego robić, bo wielokrotne sprawdzanie i kończenie przy pierwszym istotnym wyniku znacznie zwiększa ryzyko fałszywego zwycięzcy. Wcześniejsze zakończenie jest dopuszczalne, gdy narzędzie stosuje metody sekwencyjne zaprojektowane do wielokrotnej oceny albo gdy wariant ma poważny błąd techniczny lub wyraźnie szkodzi sprzedaży.
Co zrobić, gdy mam za mało ruchu na test A/B?
Testuj odważniejsze zmiany, które mogą dać większy efekt, bo większy MDE wymaga mniejszej próby. Obejmij testem więcej stron, np. wszystkie karty produktów, albo wybierz metrykę z wyższym współczynnikiem, pamiętając, że mierzy ona coś innego niż sprzedaż. Przy bardzo małym ruchu lepiej wdrażać zmiany na podstawie badań z użytkownikami niż na podstawie niedoszacowanego testu.
Czy wynik nieistotny statystycznie oznacza, że warianty działają tak samo?
Nie. Wynik nieistotny oznacza, że test nie dostarczył wystarczających dowodów na różnicę. Jeśli przedział ufności jest szeroki i obejmuje zarówno spadek, jak i wyraźny wzrost, test był po prostu za mały. Jeśli przedział jest wąski i bliski zera, możesz rozsądnie przyjąć, że ewentualny efekt jest zbyt mały, by miał znaczenie biznesowe.