GH GambleHub

Analiza kohort

Analiza kohort

Analiza kohort grupuje obiekty (zwykle użytkowników) przez pojedyncze zdarzenie startowe i porównuje jak i jak długo pozostają aktywne i wartościowe. Podejście to oddziela efekt czasu w systemie (pory roku, zapasy) od wpływu wieku kohorty (dni od początku).

1) Podstawowe definicje

Kohorta: wielu graczy zjednoczyło się przez wydarzenie „narodziny” - rejestracja, pierwszy depozyt, pierwsza gra, pierwszy zakup.
Oś czasu kalendarzowego: daty rzeczywiste (2025-10-01,...).
Oś wiekowa kohorty: dni/tygodnie od urodzenia (D0, D1,...).
Wskaźniki retencji: D1/D7/D30 (precyzyjne i walcowanie), WAU/MAU, lepkość (DAU/MAU).
Monetyzacja: ARPU/ARPPU, łączny LTV (na D7/D30/D90).
Jednostka księgowa: użytkownik (user/master_id) - zapis w paszporcie.

💡 Złota zasada: zdarzenie urodzenia przed zapisem, TZ, okno aktywności i wyjątki (boty/QA/oszustwo).

2) Rodzaje kohort i kiedy je wybrać

Kohorty nabywcze: według daty rejestracji/pierwszej wizyty - ocena rekrutacji i kanałów pokładowych.
Aktywacja/Monetyzacja-kohorty: przez pierwszy depozyt/zakup - wczesna monetyzacja oceny i promo.
Kohorty funkcyjne: do pierwszego zastosowania w kategorii funkcja/gra - efekt wydań.
Kohorty zachowania: według wzoru RFM/start (na przykład „mobile night”).

3) Osie i siatki: jak oglądać matrycę

Macierz kohorty: wiersze - kohorty (kalendarz), kolumny - wiek (D0... D90).
Sezonowość: Porównaj przekątne (ten sam dzień kalendarzowy) do oddzielnych efektów sezonowych.
Normalizacja: metryki względne (CR, frakcje) + skumulowane (LTV), pokaż oba.

4) Paszport kohorty i mierniki (szablon)

KOHORTA: „REG _ DAY”„FIRST _ DEPOSIT _ WEEKEND”
Oś wiekowa: dzień (D), horyzonty D1/D7/D30/D90.
Aktywność: ≥ 1 sesja lub ≥ 1 szybkość (ustalenie).
Wyjątki: boty/oszustwa/QA/duplikaty.
Domyślne segmenty: kraj, platforma, kanał, kategoria treści, segment cen.
Metryki: CR, walcowanie/dokładne zatrzymywanie, łączny LTV, ARPU/ARPPU,% płacenia.
Wersja: 'COHORT _ RET _ v3', właściciele, data rewizji.

5) Pseudo-SQL: matryca retencyjna (Exact Dn)

sql
WITH regs AS (
SELECT user_id, DATE_TRUNC('day', MIN(ts)) AS cohort_day
FROM event_register
GROUP BY 1
),
act AS (
SELECT user_id, DATE_TRUNC('day', ts) AS act_day
FROM event_activity
),
ages AS (
SELECT r. user_id, r. cohort_day, a. act_day,
(a. act_day - r. cohort_day) AS age_days
FROM regs r
JOIN act a ON a. user_id = r. user_id
),
exact AS (
SELECT cohort_day,
age_days,
COUNT(DISTINCT user_id) AS users_active
FROM ages
GROUP BY 1,2
),
coh_size AS (
SELECT cohort_day, COUNT(DISTINCT user_id) AS cohort_size
FROM regs GROUP BY 1
)
SELECT e. cohort_day,
e. age_days,
e. users_active::decimal / NULLIF(c. cohort_size,0) AS exact_retention
FROM exact e
JOIN coh_size c USING (cohort_day)
WHERE age_days IN (1,7,30,90)
ORDER BY cohort_day, age_days;

Rolling Dn (aktywność w dniu 1... n)

sql
WITH days AS (... as above...),
roll AS (
SELECT cohort_day,
CASE WHEN age_days BETWEEN 1 AND 7 THEN 7
WHEN age_days BETWEEN 1 AND 30 THEN 30 END AS bucket,
COUNT(DISTINCT user_id) AS any_active
FROM days
WHERE age_days BETWEEN 1 AND 30
GROUP BY 1,2
)
SELECT r. cohort_day, r. bucket AS Dn,
r. any_active::decimal / s. cohort_size AS rolling_retention
FROM roll r
JOIN (SELECT cohort_day, COUNT(DISTINCT user_id) cohort_size FROM regs GROUP BY 1) s USING (cohort_day)
ORDER BY cohort_day, Dn;

6) Kohorta LTV i monetyzacja

Łączny LTV (Dn): suma dochodu przypadającego na jednego użytkownika kohorty według Dn.
ARPU/ARPPU: przychód na użytkownika/na płatnika Dn.
% zapłaty: udział z ≥ 1 płatnością do Dn.

sql
WITH reg AS (
SELECT user_id, DATE_TRUNC('day', MIN(ts)) AS cohort_day
FROM event_register GROUP BY 1
),
pay AS (
SELECT user_id, amount, DATE_TRUNC('day', ts) AS pay_day
FROM fact_payments
),
ltv AS (
SELECT r. cohort_day,
(pay_day - r. cohort_day) AS age_days,
SUM(amount) AS rev
FROM reg r JOIN pay p USING (user_id)
WHERE pay_day >= r. cohort_day
GROUP BY 1,2
),
cum AS (
SELECT cohort_day, age_days,
SUM(rev) OVER (PARTITION BY cohort_day ORDER BY age_days ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS rev_cum
FROM ltv
)
SELECT c. cohort_day, c. age_days,
c. rev_cum::decimal / NULLIF(sz. cohort_size,0) AS ltv_per_user
FROM cum c
JOIN (SELECT cohort_day, COUNT(DISTINCT user_id) cohort_size FROM reg GROUP BY 1) sz USING (cohort_day)
WHERE age_days IN (7,30,90)
ORDER BY cohort_day, age_days;

7) Przeżycie/zagrożenie dla zachowania

Kaplan-Meier: krzywa przeżycia niebędąca modelem (S (t)) - proporcja nie „osuszona”.
Modele zagrożenia: wpływ cech charakterystycznych (kanał, kraj, platforma, premie, zawartość) na ryzyko wypływu.
Praktyka: budujemy KM według segmentów, a następnie wyjaśniamy różnicę z modelem zagrożenia.

8) Sezonowość, TZ i kalendarz

TZ: przechowywać wydarzenia w UTC, analizować w lokalnej TZ rynku; bądź konsekwentny.
Kalendarz: wakacje/wynagrodzenie/mecze/wydania - jak flagi; porównać kohorty podobnych tygodni.
Okno przesuwne: dla kohort tygodniowych/miesięcznych - mnogość świąt i okresów sprawozdawczych.

9) Segmentacja i przypisanie

Segmenty: kanał przyciągania, platforma/system operacyjny, geo, pierwsza zawartość, cena/limity, metoda płatności.
Przypisanie kohorty: „kto przyniósł” użytkownikowi - naprawić algorytm (ostatni nie-bezpośredni, napędzany danymi).
LTV ważenie: porównać nie tylko CR, ale także LTV (D30/D90) kanał/segment.

10) Wizualizacja

Mapa ciepła matrycy kohorty (CR/LTV).
Linie trendów D1/D7/D30 według kalendarza.
Przetrwanie/wykresy zagrożeń.
Most „co zmieniło LTV na D30”: wkład płatnika, częstotliwość, średnia kontrola.

11) Eksperymenty i przyczynowość

A/B: na pokładzie, samouczki, paywall, oferty. Główną metryką jest retencja D7/D30 i LTV (D30).
Quasi-eksperymenty: DiD/syntetyczna kontrola do wprowadzania na rynek.
Modele uplift: cel zysku zwrotnego w reaktywacji (Qini/AUUC, uplift @ k).

12) Funkcjonowanie i zarządzanie

Wersioning: 'RET _ D7 _ vN',' LTV _ D30 _ vN'; changelog podczas zmiany definicji aktywności/waluty.
Świeżość SLO: kohorty dzienne - gotowość do 06:00 zamek.; dziennik danych ≤ 1 godzina.
Jakość: pokrycie zdarzeń, odsetek duplikatów, odsetek botów/oszustw poza kohortami.
Dostęp: RLS/CLS, maskowanie PII; eksport - tylko kruszywa.
Książki startowe: kropla D1 (na pokładzie), D7 (zawartość), złomowanie zdarzeń/tożsamości.

13) Częste błędy (anty-wzorce)

Mieszanie osi: Porównaj różne wieki kohort w różnych sezonach bez regulacji.
Rolling vs Exact: traktowane jak to samo.
Jednostki mieszające: sesje w mianowniku, użytkownicy w liczniku.
Agregacja „środków”: zamiast sumowania liczników/mianowników.
Ignorowanie TZ/kalendarza: D1 przesunięcie w granicach dnia/wakacji.
Brak filtra bot/fraud/QA.
Nieujawnione restarty: konta podzielone/połączone bez mostów tożsamości.

14) Lista kontrolna przed publikacją raportu kohorty

  • Zdarzenie urodzenia, jednostka, TZ, zdefiniowane okna aktywności
  • Wyłączone boty/oszustwa/QA; tożsamości mieszane (złoty rekord)
  • Zbudowane matryce CR (Exact/Rolling) i LTV do D7/D30/D90
  • Uwzględniony kalendarz/wakacje; segmenty według kanału/platformy/geo
  • Dodano grafikę przetrwania/zagrożenia i most LTV
  • Udokumentowane wersje metryczne i algorytm przypisywania
  • Konfigurowane świeże układy SLO, pokrycie/duplikat/monitorowanie błędów
  • Gotowe książki startowe do D1/D7 spadków i przerw w wydarzeniach

Razem

Analizy kohortowe to dwie osie i dyscyplina: stały „moment urodzenia”, prawidłowe okna i TZ, matryce retencji i LTV, segmentacja i weryfikacja przyczynowa zmian. To podejście pomaga nie tylko obserwować krzywe, ale także podejmować decyzje: gdzie naprawić na pokładzie, które kanały do skali, jakie treści i oferty utrzymać graczy dłużej i zwiększyć LTV.

Contact

Skontaktuj się z nami

Napisz do nas w każdej sprawie — pytania, wsparcie, konsultacje.Zawsze jesteśmy gotowi pomóc!

Telegram
@Gamble_GC
Rozpocznij integrację

Email jest wymagany. Telegram lub WhatsApp są opcjonalne.

Twoje imię opcjonalne
Email opcjonalne
Temat opcjonalne
Wiadomość opcjonalne
Telegram opcjonalne
@
Jeśli podasz Telegram — odpowiemy także tam, oprócz emaila.
WhatsApp opcjonalne
Format: kod kraju i numer (np. +48XXXXXXXXX).

Klikając przycisk, wyrażasz zgodę na przetwarzanie swoich danych.