Testy A/B zasad punktacji
Punktacja jest sercem każdej gry. Dokładnie to, jak punkty są liczone, decyduje o zachowaniu gracza, strukturze uczestnictwa i ekonomii (ARPPU, kości bonusowe). Poniżej znajduje się praktyczny przepis na prawidłowe testowanie zasady nowych punktów i upewnienie się, że wzrost metryczny jest rzeczywisty, a nie artefakt.
1) Co dokładnie testujemy
Przykłady zasad:- Kwota zakładu: 1 punkt za każdy zakład 1 €.
- Mnożnik wygranej/zakładu: punkty = mnożnik ⌊ × k ⌋, z nasadką na zakład.
- Hybryda: punkty na obrót + impuls dla „serii” (N spiny z rzędu), czapki na minutę/godzinę.
- Misje: naprawić punkty do wykonywania zadań (T1...Tn) z coraz większą złożonością.
Hipoteza (przykład): „Model mnożnika + cap zwiększy participation_net i szybkość ukończenia bez pogorszenia Net ARPPU (po nagrodach/bonusach)”.
2) Jednostka doświadczalna i randomizacja
Jednostka: użytkownik (nie sesja, nie urządzenie).
Dystrybucja: hash statyczny (user_id → wiadro) ze stałymi solami; frakcje 50/50 lub 33/33/33 dla A/B/C.
Stratyfikacja (zalecana): status płatnika (nowa płatność/ponowna płatność/brak płatności), platforma, geo.
Sticky-assignment: Użytkownik zawsze widzi tę samą regułę podczas testu.
Test SRM (Sample Ratio Mismatch) - Sprawdź rzeczywiste udziały grup dziennie w stosunku do oczekiwanych (chi-kwadrat). SRM - sygnał wycieku ruchu, błędne filtrowanie, błędy.
3) Metryka i „lejek punktów”
Działalność i uczestnictwo
Reach: podziel się, kto widział wydarzenie.
Participation_gross: wprowadzony/opcjonalny.
Participation_net: rozpoczął się postęp/ideał.
Zakończenie: zakończone/rozpoczęte.
Jakość i pieniądze
ΔDAU/WAU stickiness (DAU/WAU).
Zakłady Avg na sesję, rozmiar zakładu Avg.
ARPPU (net) = ARPPU − (Nagroda + Bonus Cost per payer).
Avg Deposit, Udział płatniczy.
Net Uplift: (dodatkowe przychody) − (nagrody + bonusy + operacyjne + wycieki z oszustw).
Gardereils
Reklamacje/wsparcie techniczne dla 1000 użytkowników, odmowy KYC, nieprawidłowe wzorce zakładów, flagi RG (limity, samodzielne wykluczenie).
4) Czas trwania, sezonowość i nowość
Minimum 2 pełne cykle biznesowe (np. 2 tygodnie na zdobycie weekendu).
Zastanów się nad efektem nowości: rozpryskiem pierwszych 48-72 godzin. Naprawić i analizować w fazach (D0-D2, D3-D7, D8 +).
Nie krzyżuj się z dużymi promocjami lub planuj „równy hałas” w grupach.
5) Pojemność i objętość pobierania próbek (przykład obliczeń)
Cel: aby wykryć różnicę w miarze przez średnie „punkty na użytkownika” (lub ARPPU netto).
Wzór dla dwu-próbki t-test (równie w grupach):[
n_{\text{na grupa}} =\frac {2, (z_{1-\alpha/2}+z_{1-\beta}) ^ 2 ,\sigma ^ 2} {\Delta ^ 2}
]
Przykład: chcemy złapać Α = 5 punktów, α = 120, α = 0. 05 (dwustronna), moc 80% (β = 0. 2).
(z_{1-α/2}=1{,}96), (z_{1-β}=0{,}84) → suma 2. 8 → kwadrat 7. 84.
(\sigma ^ 2 = 14 400).
(n =\frac {2\razy 7 {,} 84\razy 14,400} {25 }\ok\frac {225,792} {25 }\ok. 9,032) na grupę.
6) Zmniejszenie dyspersji: uczynienie testu „tańszym”
PUCHAR: korekta regresji w odniesieniu do kowalanów przed badaniem (na przykład punkty/wskaźniki za ostatni tydzień).
Covariates: płatnik-flaga, logarytm-przekształcenia obrotu, aktywność, platforma, geo.
Klastrowanie błędów: na poziomie użytkownika (powtarzające się sesje wewnątrz).
7) Zakłócenia i „cieśniny”
Zasada punktów może dotyczyć więcej niż tylko uczestników testów:- Porównanie społeczne (wspólna rada liderów) → „spillover”.
- Wspólne jackpoty/wspólne misje → efekt krzyżowy.
- Oddzielne tablice liderów według grupy lub ukrytej normalizacji punktów.
- Randomizacja klastra przez ruch/klastry geo (droższe, ale czystsze).
- Per-protocol (ITT) + testy wrażliwe.
8) Antyfraud i usta zasad
Wszelkie zmiany w okularach stymulują optymalizację: mikro-zakłady, botovodstvo, „farmy okularów”.
Minimalne zabezpieczenia:- Punkty Cap na minutę/godzinę/dzień i dla jednego zakładu.
- Minimalna zmienność zakładów (zakaz sekwencji „idealnych”).
- Wykrywanie odcisków palców bez głowy/powtarzających się, proxy.
- Opóźniona weryfikacja dużych nagród + KYC.
- Analityka: Porównaj dystrybucję „punktów/zakładów” i „punktów/min”, szukaj ogonów.
9) Zdarzenia i system danych (minimum)
Wydarzenia:- „sesja _ start {user_id, ts, platform}”
- „event _ view {user_id, event_id, ts}”
- „event _ join {user_id, event_id, ts}”
- „punkty _ przyznane {user_id, event_id, rule_id, kwota, źródło, ts}”
- „mission _ progress {user_id, mission_id, step, value, ts}”
- „mission _ complete {user_id, mission_id, ts}”
- „bet {user_id, game_id, zakład, wygrana, ts}”
- „deposit {user_id, kwota, ts}”
- „rules {rule_id, name, params, caps_minute, caps_hour, caps_day, version}”
- "zadania {user_id, test_id, grupa, assigned_at}'
10) Szkice SQL do analizy
Kontrola SRM (alokacja grup):sql
SELECT GROUP, COUNT () AS USERS
OD PRZYDZIAŁÓW
WHERE test_id =: badanie
GRUPA WEDŁUG GRUP;
-- dalsze ułamki chi-kwadrat w porównaniu z oczekiwanymi
Udział/Zakończenie według grup:
sql
Z KWALIFIKUJĄCYMI SIĘ JAKO (
WYBIERZ user_id UŻYTKOWNIKÓW
GDZIE last_active_at> =: START - ODSTĘP „14 dni”
), połączone z AS (
WYBIERZ ODRĘBNE user_id OD event_join
GDZIE event_id =: ZDARZENIE I TS MIĘDZY: START I: KONIEC
), rozpoczęty AS (
WYBIERZ ODRĘBNE user_id OD mission_progress
GDZIE t MIĘDZY: START I: KONIEC I mission_id W (: misje)
), wypełniony AS (
WYBIERZ ODRĘBNE user_id OD mission_complete
GDZIE t MIĘDZY: START I: KONIEC I mission_id W (: misje)
)
SELECT a. GROUP, COUNT (DISTINCT j. user_id)::float/COUNT (ODRĘBNE E. user_id) JAKO participation_gross, LICZBA (ODRÓŻNIONE user_id)::float/COUNT (ODRĘBNE E. user_id) JAKO participation_net, LICZBA (ODRÓŻNIONE C. user_id)::float/NULLIF (LICZBA (ODRĘBNE user_id),0) JAKO ZAKOŃCZENIE
OD kwalifikujące się e
PRZYŁĄCZ SIĘ do zadań UŻYCIE (user_id)
LEWO JOIN joined j USING (user_id)
LEWE POŁĄCZENIE rozpoczęte za pomocą (user_id)
POŁĄCZENIE LEWE zakończone c za pomocą (user_id)
GDZIE a. test_id =: badanie
GRUPA BY a. grupa;
ARPPU netto i wartość nagród/bonusów:
sql
Z płatnikami AS (
WYBIERZ ODRĘBNE user_id OD PŁATNOŚCI
GDZIE t MIĘDZY: START I: KONIEC
), rev AS (
SELECT user_id, SUMA (ggr) AS ggr
DOCHODY
GDZIE t MIĘDZY: START I: KONIEC
GRUPA WEDŁUG user_id
), koszty AS (
SELECT user_id, SUMA (nagroda + bonus) Koszt AS
OD promo_costs
GDZIE t MIĘDZY: START I: KONIEC
GRUPA WEDŁUG user_id
)
SELECT a. group, AVG (COALESCE (r. gr, 0) - COALESCE (c. koszt, 0))) FILTR (GDZIE p. user_id NIE JEST NIEWAŻNY) JAKO net_arppu
Z PRZYDZIAŁÓW a
LEWE POŁĄCZENIE płatników p USING (user_id)
POŁĄCZENIE LEWE rev r PRZY UŻYCIU (user_id)
KOSZTY LEWEGO POŁĄCZENIA c PRZY UŻYCIU (user_id)
GDZIE a. test_id =: badanie
GRUPA BY a. grupa;
CAPPED (przykład):
sql
-- pre_value: okulary/dochody przed testem; wartość: podczas badania
SELECT group, AVG (value - theta pre_value) AS cuped_mean
OD (
SELECT a. group, x.user_id, x.value, x.pre_value, (SELECT COVAR_SAMP (wartość, pre_value )/ VAR_SAMP (pre_value)
OD x) AS teta
Z PRZYDZIAŁÓW a
DOŁĄCZ x NA x.user_id = a. user_id
GDZIE a. test_id =: badanie
) t
GRUPA WEDŁUG GRUP;
11) Częściowe skutki i niejednorodność
Sprawdź efekty HET:- Początkujący vs rdzeń, niska wartość vs wysoka wartość, różne platformy/geo.
- Czasami nowa formuła okularów „oświetla” środkowy rdzeń bez zmiany wielorybów - jest to pożądany wynik.
- Segmenty wstępnie zarejestrowane, aby nie łapać „p-hacking”.
12) Częste pułapki
1. Wspólna rada lidera dla wszystkich grup → ingerencja.
2. Zmiana struktury nagrody podczas testu → nieporównywalność.
3. Mikro-zakłady okularów → nieprawidłowy wzrost.
4. SRM i filtry pływające w ETL → stronnicze szacunki.
5. Poleganie na „brudnym” ARPPU bez odejmowania nagród/bonusów.
6. Wczesne zatrzymanie z powodu wahań bez poprawnych statystyk sekwencyjnych.
13) Bayes vs częstotliwość i decyzje sekwencyjne
Ramy: Można użyć podejścia Bayesian (tylna różnica w metrykach, prawdopodobieństwo „B jest lepsze niż A”), zwłaszcza podczas monitorowania w czasie.
Uwaga: bandyci do zasad okularów są odpowiednie po potwierdzonym podniesieniu - na etapie działania, a nie na wstępnym walidacji.
14) Odpowiedzialność i zgodność
Przejrzyste zasady i czapki: gracz musi zrozumieć, jak zdobywa punkty.
Limity aktywności i depozytów, „pauzy” i wiersze RG.
Żadnych ukrytych „kar” za styl gry.
15) Mini Case (syntetyczny)
Kontekst: zdarzenie tygodniowe, A = „punkty za 1 zakład €,” B = „punkty według mnożnika wygranej/zakładu, cap = 50/zakład”.
Rozmiar: 2 × 10 000 użytkowników, podzielony przez status płatnika. SRM - ok.
Wyniki:- Participation_net: 17,3% → B 22,1% (+ 4,8 ". п.) .
- Zakończenie: A 38,9% → B 44,0% (+ 5,1 ". п.) .
- Net ARPPU: A €41. 2 → B €43. 5 (+ €2. 3) z nagrodą + Bonus na płatnika "€6. 4 (bez zmian).
- Complaints/1k: bez zmian; oszustwa flagami na 0,3 pp ze względu na czapki.
- Wniosek: Zasada B - zwycięzca; skalujemy z „długim ogonem” nagród i zapisujemy ustniki.
16) Lista kontrolna punktów A/B
- Unit = użytkownik, sticky-assignment, stratification.
- Oddzielne tablice liderów/normalizacja w celu usunięcia zakłóceń.
- Przezroczyste czapki do okularów, sygnały anty-bot, KYC do głównych zwycięzców.
- Wstępna rejestracja hipotez i mierników (podstawowa/drugorzędna/bariera ochronna).
- Plan przepustowości i czasu trwania, uwzględniona sezonowość.
- Podłączony CUPED/covariates, rurociąg SRM-alerty.
- Дара „Reach → Participation → Progress → Completion → Value”.
- Raport: przyrost środków pieniężnych po nagrodach/bonusach, ogon post-effect.
Zasada punktacji jest dźwignią zachowania. Prawidłowo zaprojektowany test A/B (bez SRM, z anty-oszustwa i covariates) pozwala bezpiecznie zwiększyć udział, zakończenie i Net ARPPU, przy zachowaniu zaufania gracza i ekonomii kampanii.