# Структура трафіку і сезонність

> Що сезонність і зміна структури трафіку роблять із продуктовими метриками і як порівнювати порівнюване.

- Курс: [Продуктова аналітика: від даних до рішень](https://productovi.com/uk/courses/product-analytics.md)
- Модуль: Що можна дізнатися без тесту?
- Урок 22/32, ~31 хв
- Джерело: https://productovi.com/uk/courses/product-analytics/traffic-and-seasons

## Падіння утримання після літнього релізу

**Alex Tutor:** Ще один реліз, ще одне падіння в Halves, цього разу на початку літнього сезону. Команда хоче відкотити зміни, а Maya спершу чекає від тебе даних.

**Maya:** Версія 5.0.0 вийшла 6 липня, і відтоді утримання нових користувачів на другому тижні сповзло з **37,0% у червні до 30,3% у липні**. Команда хоче повернути старий головний екран.

**Sofia:** Перш ніж звинувачувати екран: що ще було інакше в липні?

**Alex Tutor:** Добре перше запитання. Метрика в обох місяцях однакова: нові користувачі, дні 8–14, кожна когорта завершена. Відрізнятися може натовп усередині неї. А липень — це час, коли користувачі Halves разом їдуть у відпустку.

**Alex Tutor:** Ось щотижневі когорти з розбивкою за каналом і за типом групи, до якої людина долучилася першою. Почнімо із сезону: яка частка липня прийшла через групи для поїздок?

**Набір даних (CSV):** [Щотижневі когорти реєстрацій, червень і липень](https://productovi.com/datasets/product-analytics/traffic-and-seasons/halves-summer-cohorts.csv)

Нові користувачі Halves, тижні з 8 червня до 27 липня 2026 року. Версія 5.0.0 вийшла 6 липня. Кожна когорта має повні дні 8–14.

- `signup_week`: Понеділок тижня реєстрації
- `app_version`: Встановлена версія: 4.9.0 у червні, 5.0.0 у липні
- `channel`: invite, app_store_search, paid_social або partner_promo
- `first_group_type`: Тип першої групи, до якої долучився користувач: flat, couple або trip
- `new_users`: Нові користувачі в цій клітинці
- `active_days_8_14`: З них відкрили застосунок хоча б в один із днів 8–14

> **Вправа:** Яка частка нових користувачів **липня (5.0.0)** мала `trip` як тип першої групи? У відсотках, до сотих. (У червні — 20,02%.)

## Сезон поїздок: хто приходить у липні

**Alex Tutor:** Майже вдвічі більше, ніж у червні. Група для поїздки має дату завершення: відпустка скінчилася, останню вечерю поділено, усі розрахувалися. Дні 8–14 часто припадають уже на час після повернення, тож користувач із поїздки, який більше не заходить, цілком може бути задоволений.

![Літня хвиля мандрівників із валізами й капелюхами переважає сусідів по квартирі та пари серед новачків.](https://productovi.com/courses/product-analytics/inline/traffic-and-seasons-illustration-2.webp)

*Липень приносить набагато більше груп для подорожей, і вони закінчуються разом із відпусткою.*

**Sofia:** Тобто навіть якби 5.0.0 нічого не змінила, більше поїздок потягнуло б середнє липня вниз.

**Alex Tutor:** Так. Змінилася **структура трафіку (traffic mix)**, а **зсув структури (mix shift)** рухає підсумок, хоча жоден сегмент не змінився. У червні користувачі з поїздок мали 16,5% на 8–14-й день, а квартири — 43,3%. Заміни квартири на поїздки, і середнє просяде саме собою.

**Theo:** Є ще одна річ, і вона моя. Два тижні від 13 липня студентська картка одного банку платила власникам бонус $5 за реєстрацію в Halves і створення групи. Це рядки `partner_promo`.

**Alex Tutor:** Тоді це **стимульовані реєстрації (incentivized sign-ups)**: люди, які прийшли по винагороду. Дехто справді мав оренду, яку треба ділити; багато хто створив групу лише заради умови й не додав жодного рахунку. Наскільки великою була ця хвиля?

> **Вправа:** Яка частка нових користувачів, що зареєструвалися на **5.0.0** (липень), прийшла через `partner_promo`? У відсотках, до сотих.

## Порівнюване з порівнюваним

**Alex Tutor:** Понад чверть липня, і лише **19,4%** з них були активні на 8–14-й день, менше, ніж у будь-якому звичайному каналі в червні (29–41%). У червні такого каналу не було, тож їм немає з ким порівнюватися: спершу відкладаємо ці рядки. Липень без них: **34,24%**, досі нижче за 36,99% червня.

**Maya:** Але все одно нижче, ніж у червні.

**Alex Tutor:** Бо додаткові поїздки досі всередині. Крок другий: порівнюємо всередині кожного типу групи, поїздки з поїздками, квартири з квартирами. Спробуй для квартир.

![На ринку людина зважує яблука з яблуками, а груші з грушами, кожен вид у своєму ящику.](https://productovi.com/courses/product-analytics/inline/traffic-and-seasons-illustration-3.webp)

*Порівнюй подорожі з подорожами, а квартири з квартирами, перш ніж оцінювати реліз.*

> **Вправа:** Без рядків `partner_promo`: яка частка користувачів **`flat` у липні** була активна на 8–14-й день? У відсотках, до сотих. (Квартири в червні: 43,25%.)

## Вирівнювання структури: одне число для всієї картини

**Alex Tutor:** Квартири, пари й поїздки в липні показали трохи кращий результат. Щоб отримати одне підсумкове число, залиш структуру червня й підстав ставки липня: зваж кожну клітинку «канал × тип групи» липня часткою цієї клітинки в червні.

$$
r^{\text{July}}_{\text{adj}} = \sum_{c} w^{\text{June}}_{c}\, r^{\text{July}}_{c}
$$

*Утримання липня за структури червня: w_c — частка клітинки c серед нових користувачів червня, r_c — утримання липня в цій клітинці, без рядків промоакції. Тут 38,89% проти 36,99% у червні.*

**Sofia:** Тобто за червневого трафіку липень був би на 1,9 пункта **кращим**, а не на 6,7 гіршим.

**Maya:** Тоді 5.0.0 покращила утримання. Чудово, так і скажу.

## Сезонність: що вона робить із продуктовими метриками

**Sofia:** Тобто кожного липня те саме падіння повертатиметься, хоч із релізом, хоч без?

**Alex Tutor:** Дуже ймовірно. Це **сезонність (seasonality)**: закономірність, яка повторюється за календарем. Головне, що літо тут змінює, — не поведінку кожного типу груп, а те, хто приходить. Серед звичайних реєстрацій, без промоакції, частка поїздок зросла з 20,0% у червні до 40,0% у липні.

**Alex Tutor:** Спробуй самостійно порахувати сезон: червневі частки кожного типу групи, зважені за структурою липня.

> **Вправа:** Утримання нових користувачів Halves на другому тижні в червні становило 37,0%. Візьми червневі частки за типом групи (квартири **43,25%**, пари **40,29%**, поїздки **16,46%**) і зваж їх за структурою звичайних реєстрацій липня, без реєстрацій із промоакції банку (квартири **35,9%**, пари **24,1%**, поїздки **40,0%**). Яку ставку липня передбачає сам лише сезон? У відсотках, з одним знаком після коми.

**Alex Tutor:** Це можна порахувати. Візьми червневе утримання кожного типу груп (квартири 43,25%, пари 40,29%, поїздки 16,46%) і зваж його за структурою звичайних реєстрацій липня: 35,9%, 24,1%, 40,0%. Виходить **31,8%**: сам лише сезон опустив би червневі 37,0% приблизно на п’ять пунктів.

**Alex Tutor:** Ці 31,8% — сезонна база, і звичайні користувачі липня її перевершили: 34,2%. Щоб урахувати сезонність, фіксуй структуру, читай кожен сегмент окремо і порівнюй з тими самими тижнями минулого року. Червень і липень «в лоб» не порівнюй.

**Maya:** Наступного липня мені знадобиться швидка перевірка в перший же день. З чим порівнювати?

> **Вправа:** Літо приносить Halves багато груп для поїздок, які затихають, щойно відпустка скінчилася. Наступного літа Maya, продуктова лідерка, хоче швидко перевірити липневий реліз. Яке порівняння **менше** спотворює сезон?

![Сирі 30,3% липня приховують хвилю промо і більше поїздок; без промо це 34,24%, вище за сезонну базу 31,8%, а за структури червня — 38,89%.](https://productovi.com/courses/product-analytics/diagrams/m6-l2-like-for-like-uk.png)

![Коло пір року — сонце, опале листя, сніжинки й цвіт — і валіза на літньому боці.](https://productovi.com/courses/product-analytics/inline/traffic-and-seasons-illustration-4.webp)

*Той самий літній спад повертається щороку, байдуже, був реліз чи ні.*

## Що вирівнювання може і чого не може

**Sofia:** Тобто число з вирівняною структурою — це чесне порівняння?

**Alex Tutor:** Чесніше, але не чесне. Воно прибирає виміряні відмінності: канал і тип групи. Усе, за чим ти не ділиш, як-от погода чи шкільні канікули, лишається всередині.

**Theo:** Банк хоче повторити пропозицію на початку навчального року. Що мені зробити інакше?

**Alex Tutor:** Спершу визначмося, як узагалі оцінювати липневу пропозицію.

> **Вправа:** Два тижні в липні банк платив власникам студентських карток 5 дол. за реєстрацію в Halves і створення групи: так прийшли 788 людей, 26,69% липневих реєстрацій, і 153 з них були активні на 8–14-й день. Theo, маркетолог з росту в Halves, має сказати банку, чи спрацювала пропозиція. За яким числом оцінювати угоду?

**Alex Tutor:** Дай пропозиції власний код реєстрації, щоб кожен користувач із бонусом мав `partner_promo` від першого дня. Оцінюй угоду за тими, хто активний на другому тижні, а не за реєстраціями: прийшли 788, лишилися 153. І погодь дати з Maya, щоб реліз і промоакція не стартували в ті самі два тижні.

> **Вправа:** Утримання нових користувачів Halves на другому тижні в липні, без реєстрацій із промоакції банку й перезважене за червневою структурою «канал × тип групи», — 38,89% (червень: 36,99%). Що з цього досі може ховатися в цьому числі? Познач все, що підходить.

**Alex Tutor:** Повернімося до «5.0.0 покращила утримання», Maya: це вирівнює лише те, за чим ми ділили. Липень приніс ще й відпустки та спеку, а в деяких клітинках трохи більше сотні користувачів. Це підтверджує «ознак, що 5.0.0 зашкодила утриманню, немає», а не «5.0.0 додала 1,9 пункта».

> **Вправа:** Halves випустив версію 5.0.0 з новим головним екраном 6 липня, і утримання нових користувачів на другому тижні впало з 37,0% у червні до 30,3% у липні. Maya, продуктова лідерка, має відповісти команді сьогодні. Яке твердження вона може захистити таблицею тижневих когорт?

**Maya:** Гаразд, без відкату. Але мені треба пояснити це команді без лекції.

**Alex Tutor:** Тоді три кроки: хто прийшов у липні й чим ці люди відрізняються, що показують порівнянні числа і що ми можемо і чого не можемо сказати.

**Sofia:** І з числом за кожним кроком, щоб нікому не доводилося вірити нам на слово.

> **Вправа:** Утримання нових користувачів Halves на другому тижні впало з 37,0% у червні до 30,3% у липні, після виходу версії 5.0.0 з новим головним екраном 6 липня. Maya, продуктова лідерка, питає в командному каналі: «Відкочуємо 5.0.0?» Дай відповідь на 3–5 речень: спершу рішення, потім числа, на яких воно стоїть, потім те, чого дані сказати не можуть.

- Попередній урок: [Аналіз до і після: чесне порівняння версій](https://productovi.com/uk/courses/product-analytics/version-comparison.md)
- Наступний урок: [Зміщення відбору: хто робить X, той краще утримується](https://productovi.com/uk/courses/product-analytics/correlation-and-selection.md)

---
Productovi Learning. Безкоштовно, читати можна без реєстрації.
