01 · Podstawy · 4 min czytania · Interaktywne · aktualizacja
Jak poprawnie przeprowadzić test A/B i ile potrzeba użytkowników?
W skrócie
Test A/B losowo dzieli użytkowników na dwie wersje i porównuje wyniki. Losowanie daje efekt przyczynowy, a wielkość próby trzeba ustalić przed startem.
Co to jest
Test A/B to kontrolowany eksperyment, w którym użytkowników losowo przydziela się do wersji A (kontrolnej) lub B (zmienionej) i porównuje wybraną metrykę, na przykład odsetek zakupów. Dzięki losowemu przydziałowi różnica wyników może być przypisana samej zmianie, a nie różnicom między grupami. Test statystyczny i przedział ufności rozstrzygają, czy różnica jest większa niż typowy szum.
Intuicja: porównanie „sprzedaż w tym miesiącu po zmianie przycisku” z „poprzednim miesiącem” miesza efekt przycisku z sezonowością, kampaniami i pogodą. Test A/B uruchamia obie wersje jednocześnie na losowo dobranych ludziach, więc wszystkie te czynniki działają tak samo na obie grupy i znoszą się w porównaniu.
Mechanizm — dlaczego tak działa
Siła testu A/B to randomizacja. Skoro o przydziale decyduje los, żadna cecha użytkownika — znana ani nieznana — nie jest z nim powiązana. Średnia różnica metryki między grupami jest więc nieobciążonym oszacowaniem efektu przyczynowego zmiany. To ta sama logika co w badaniu klinicznym.
Wnioskowanie to zwykły test dwóch proporcji lub średnich. Dla odsetków konwersji p_A i p_B błąd standardowy różnicy to √(p_A(1 − p_A)/n_A + p_B(1 − p_B)/n_B), a statystyka z = różnica / SE. Ważniejszy od samej wartości p jest przedział ufności dla różnicy: mówi, jak duży może być zysk albo strata.
Decydujące jest planowanie wielkości próby, bo małe efekty wymagają ogromnych prób. Liczba użytkowników na grupę rośnie jak 1/δ², gdzie δ to najmniejszy efekt, który chcemy wykryć (MDE). Dwukrotnie mniejszy efekt wymaga czterokrotnie większej próby. Przed startem ustala się α (zwykle 0,05), moc (zwykle 80%) i MDE, a z nich n.
Najczęstszy błąd to podglądanie: sprawdzanie wyniku codziennie i zatrzymanie testu, gdy tylko p spadnie poniżej 0,05. Wartość p błądzi losowo w trakcie testu, a każde zajrzenie to kolejna szansa na przypadkowe przekroczenie progu — to problem wielokrotnych porównań w czasie. Jeśli chcemy mieć prawo do wcześniejszego zatrzymania, trzeba użyć metod sekwencyjnych (granice typu O’Briena–Fleminga, testy zawsze ważne) albo podejścia bayesowskiego z jasną regułą decyzji.
Inne pułapki. Niezgodność proporcji próby (SRM): jeśli planowano podział 50/50, a wyszło 50,8/49,2 przy milionie użytkowników, przydział jest zepsuty i wynik niewiarygodny. Efekt nowości: użytkownicy klikają w nowe, bo jest nowe, więc krótki test zawyża efekt. Interferencja: w serwisach społecznościowych czy marketplace’ach użytkownicy z grupy B wpływają na grupę A. Wiele metryk i podgrup bez korekty zawsze da jakiś „istotny” wynik. Wreszcie optymalizacja jednej metryki (kliknięcia) może psuć to, na czym naprawdę zależy (zadowolenie) — dlatego definiuje się metryki ochronne.
Na przykładzie
Prosty rachunek: sklep ma konwersję 10% i chce wykryć wzrost do 11% (MDE = 1 punkt procentowy) przy α = 0,05 i mocy 80%. Ze wzoru na test dwóch proporcji potrzeba 14 751 użytkowników na grupę, razem około 29 500. Wykrycie wzrostu o 2 punkty wymaga już tylko 3841 osób na grupę, a o pół punktu — 57 763. W jednej symulacji z prawdziwymi wartościami 10% i 11% oraz 15 000 osób na grupę wyszło 10,13% wobec 10,95%, z = 2,29, p = 0,022, a 95% przedział dla różnicy to od 0,12 do 1,51 punktu procentowego. Wynik jest istotny, ale przedział mówi uczciwie, że prawdziwy zysk może być zarówno znikomy, jak i półtorapunktowy.
Skutki podglądania pokazuje symulacja testów A/A, w których obie wersje mają identyczną konwersję 10%. Sprawdzając wynik raz, po 20 000 osób na grupę, fałszywy alarm pojawił się w 4,8% z 4000 symulacji — zgodnie z α = 5%. Sprawdzając po każdym tysiącu osób (20 zajrzeń) i zatrzymując przy pierwszym p < 0,05, „zwycięzcę” ogłoszono w 24,4% testów, w których żadnej różnicy nie było. Pięciokrotnie więcej fałszywych odkryć tylko przez niecierpliwość.
W praktyce
- Wielkość próby:
statsmodels.stats.power.NormalIndPower().solve_power(effect_size=proportion_effectsize(0.11, 0.10), alpha=0.05, power=0.8). - Analiza:
statsmodels.stats.proportion.proportions_ztesticonfint_proportions_2indepdla różnicy odsetków; dla średnich (przychód na użytkownika) test t Welcha. - Losuj na poziomie jednostki, którą analizujesz (użytkownik, a nie odsłona), i przydzielaj deterministycznie, np. przez hash identyfikatora — ten sam człowiek zawsze widzi tę samą wersję.
- Sprawdzaj SRM testem χ² liczebności grup; puść test A/A przed pierwszym prawdziwym testem, by zweryfikować całą infrastrukturę.
- Testuj przez pełne cykle tygodniowe, ustal jedną metrykę główną z góry, a wcześniejsze zatrzymanie tylko z metodą sekwencyjną.
Najczęstsze pytania
- Ile użytkowników potrzeba do testu A/B?
- Zależy od bazowej konwersji i najmniejszego efektu, który chcesz wykryć. Przy konwersji 10% i efekcie 1 punktu procentowego to około 14 750 na grupę (α = 0,05, moc 80%). Połowa efektu oznacza czterokrotnie więcej użytkowników.
- Czy można zakończyć test, gdy tylko wynik stanie się istotny?
- Nie przy klasycznym teście. Wielokrotne sprawdzanie wielokrotnie zwiększa szansę fałszywego alarmu — w symulacji z 20 zajrzeniami z 5% do około 24%. Wcześniejsze zatrzymanie wymaga testu sekwencyjnego zaprojektowanego do tego celu.
- Czym test A/B różni się od wielorękiego bandyty?
- Test A/B dzieli ruch po równo do końca, by dokładnie zmierzyć efekt. Bandyta stopniowo kieruje więcej ruchu do lepszej wersji, ograniczając koszt pokazywania gorszej, ale daje mniej precyzyjne oszacowanie różnicy. Wybór zależy od tego, czy celem jest wiedza, czy zysk w trakcie.
Źródła
- Kohavi, R., Tang, D., Xu, Y. (2020). Trustworthy Online Controlled Experiments: A Practical Guide to A/B Testing. Cambridge University Press.
- Johari, R., Koomen, P., Pekelis, L., Walsh, D. (2017). "Peeking at A/B tests: why it matters, and what to do about it". Proceedings of the 23rd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.
- Wasserman, L. (2004). All of Statistics. Springer, rozdz. 10 (Hypothesis Testing and p-values).
- statsmodels: Power and sample size, https://www.statsmodels.org/stable/stats.html#power-and-sample-size-calculations