Теорія
ANOVA з повторними вимірюваннями
Відстеження тих самих користувачів у кількох точках часу: дисперсійний аналіз із повторними вимірюваннями і критерій Фрідмана.
~10 хв читання · 11 вправ · 250 балів
Перед початком
Три контрольні точки
Та сама програма лояльності, та сама продуктова команда Котокорму. Тепер ти відстежуєш місячну кількість замовлень тих самих п'яти підписників у трьох точках: тиждень реєстрації, 4-й і 8-й тижні. Якщо запускати парний тест для кожної пари точок, повернеться проблема множинних порівнянь.
Цей урок завершує модуль дисперсійним аналізом із повторними вимірюваннями — одним тестом для тих самих людей, виміряних кілька разів, — і його ранговою альтернативою.
Більше двох точок: повторні вимірювання
Коли тих самих суб'єктів вимірюють у трьох і більше точках, скажімо місячні замовлення 5 підписників програми лояльності в тиждень реєстрації, на 4-му і 8-му тижні, маємо дизайн із повторними вимірюваннями. Це ідея «до/після», розтягнута в часі.

Спокусливий аналіз — t-критерій для залежних вибірок для кожної пари точок: тиждень 0 проти 4, 4 проти 8, 0 проти 8. Це три перевірки й та сама проблема множинних порівнянь, що й у трьох t-критеріях замість однофакторного ANOVA: якщо насправді нічого не змінилося, шанс, що хоча б одна спрацює, — приблизно 1 − 0,95³ ≈ 14%.
Дисперсійний аналіз із повторними вимірюваннями відповідає на широке запитання за раз: чи взагалі відрізняються середні між точками часу? Він тримає одну чесну частку помилок 5% і зберігає головну перевагу парування: кожного суб'єкта порівнюють із самим собою.
Якщо загальний критерій значущий, далі йдуть попарні порівняння з поправкою, як-от Бонферроні (0,05 / 3 ≈ 0,0167 для трьох пар).
- Так«Три точки, ті самі 5 підписників: один дисперсійний аналіз із повторними вимірюваннями, а тоді за потреби попарні перевірки з поправкою».
- Не так«Три критерії для залежних вибірок при 0,05; тиждень 4 проти 8 вийшов значущим».
Три спроби без поправки роздувають частку хибнопозитивних результатів.
Три шматки замість двох
Однофакторний ANOVA розкладає мінливість даних на дві частини: між групами і всередині груп. Дисперсійний аналіз із повторними вимірюваннями — на три:
SS_total = SS_subjects + SS_time + SS_error
- суб'єкти: наскільки підписники загалом відрізняються один від одного. U1 у середньому робить 6 замовлень на місяць, U5 — 14. Це реально, стабільно й не те, що ми перевіряємо;
- час: наскільки відрізняються середні контрольних точок (7, 10 і 13 замовлень). Це цікавий нам ефект;
- похибка: решта, та частина руху кожного підписника, що не йде за спільним трендом.
Дані графіка
| Контрольна точка | U1 | U2 | U3 | U4 | U5 |
|---|---|---|---|---|---|
| Week 0 | 2 | 6 | 7 | 8 | 12 |
| Week 4 | 6 | 7 | 11 | 13 | 13 |
| Week 8 | 10 | 11 | 12 | 15 | 17 |
Ключовий хід — шматок «суб'єкти». У дизайні з різними людьми в кожній точці ці особисті відмінності сиділи б у похибці й розмивали ефект часу. Тут кожен підписник присутній у кожній точці, тож його особистий рівень можна виміряти й прибрати.

Це рівно те, що t-критерій для залежних вибірок робив із різницями, лише узагальнене: замість віднімати «до» від «після», аналіз віднімає власний середній рівень кожного суб'єкта.
- Так220 = 120 (суб’єкти) + 90 (час) + 10 (похибка)
- Не так220 = 90 (час) + 130 (похибка), без урахування, хто є хто
Залишає відмінності між суб’єктами всередині шуму.
Як порахувати суми квадратів
Для 5 підписників у 3 точках загальне середнє — 10 замовлень на місяць.
- SS_total: квадрати відхилень усіх 15 чисел від 10, у сумі: 220.
- SS_subjects: середнє кожного підписника (6, 8, 10, 12, 14) мінус 10, у квадраті, помножене на 3 точки: 3 × (16 + 4 + 0 + 4 + 16) = 120.
- SS_time: середнє кожної точки (7, 10, 13) мінус 10, у квадраті, помножене на 5 підписників: 5 × (9 + 0 + 9) = 90.
- SS_error: усе, що лишилося: 220 − 120 − 90 = 10.
Зверни увагу на ваги: середнє суб'єкта підсумовує 3 числа, тож його множать на 3; середнє точки підсумовує 5, тож множать на 5. Забути ці множники — типова помилка, і тоді похибка виходить абсурдно великою (220 − 40 − 18 = 162).
Мала похибка тут каже щось конкретне: коли відомо, хто підписник і яка це точка, пояснювати майже нічого. Підписники рухаються майже в ногу.
- ТакSS_error = 220 − 120 − 90 = 10
- Не такSS_error = 220 − 90 = 130
Забуває вилучити шматок «суб’єкти».
Ступені свободи й F для повторних вимірювань
Кожна сума квадратів має власні ступені свободи; n суб'єктів і k точок:
- суб'єкти: n − 1 = 5 − 1 = 4;
- час: k − 1 = 3 − 1 = 2;
- похибка: (n − 1)(k − 1) = 4 × 2 = 8.
F-статистика для ефекту часу порівнює середній квадрат часу із середнім квадратом похибки:
- MS_time = 90 / 2 = 45;
- MS_error = 10 / 8 = 1,25;
- F = 45 / 1,25 = 36.
Критичне значення F при α = 0,05 для df(2, 8) — приблизно 4,46, тож F = 36 далеко за ним (p ≈ 0,0001). Замовлення явно змінюються між точками.
Зверни увагу: похибка має лише 8 ступенів свободи, менше за 12, які взяв би аналіз незалежних груп для 15 чисел. Вилучення суб'єктів коштує 4 ступені свободи. Це вигідний обмін щоразу, коли суб'єкти сильно різняться між собою, як тут: середній квадрат похибки меншає значно сильніше, ніж ступені свободи.
Рядок суб'єктів зазвичай узагалі не перевіряють: ніхто не сумнівається, що люди різні.
- ТакF = (90 / 2) / (10 / 8) = 45 / 1,25 = 36
- Не такF = (90 / 2) / (10 / 12) = 54
Бере df незалежних груп (12) для похибки замість (n − 1)(k − 1) = 8.
Ті самі 15 чисел, дві дуже різні F
Візьмімо місячні замовлення 5 підписників програми лояльності Котокорму у 3 точках: SS_total = 220, SS_subjects = 120, SS_time = 90, тож MS_time = 45. Проаналізуймо їх наївно, ніби кожного тижня були різні люди:
- SS похибки = SS_total − SS_time = 220 − 90 = 130, на 15 − 3 = 12 ступенях свободи;
- MS_error = 130 / 12 ≈ 10,83;
- F = 45 / 10,83 ≈ 4,15 проти критичного значення близько 3,89 для df(2, 12). Ледь значуще, p ≈ 0,04.
Тепер із повторними вимірюваннями: 120 суб'єктів виходять із похибки, лишається 10 на 8 ступенях свободи, MS_error = 1,25 і F = 36, p ≈ 0,0001.
Ефект часу однаковий в обох випадках (MS_time = 45). Змінився лише шум. У наївній версії те, що U5 завжди замовляє більше за U1, рахується як випадковий шум, і він затьмарює тренд. У версії з повторними вимірюваннями це визнано стабільною рисою й відкладено вбік.

За трохи шумніших даних наївний аналіз узагалі пропустив би ефект. Тож коли тих самих людей вимірюють повторно, член «суб'єкти» не є необов'язковим: без нього втрачаєш потужність, яку дав дизайн, і ще й порушуєш припущення про незалежність, на якому стоїть простіший критерій.
- ТакНаївно: 45 / (130 / 12) ≈ 4,15. Повторні вимірювання: 45 / (10 / 8) = 36.
- Не так«F ≈ 4,15 однаково значуща, тож простіший аналіз годиться».
Він ігнорує парування й порушує незалежність; тут просто пощастило.
Словник повторних вимірювань
Чотири терміни, які трапляються разом:
- дисперсійний аналіз із повторними вимірюваннями: ANOVA для трьох і більше вимірювань тих самих суб'єктів, де міжсуб'єктну мінливість вилучено з похибки;
- критерій Фрідмана: його непараметрична альтернатива. Він ранжує власні вимірювання кожного суб'єкта (1-ше, 2-ге, 3-тє) і порівнює суми рангів між точками часу;
- когорта: група користувачів зі спільною початковою подією в одному періоді, наприклад усі, хто приєднався до програми лояльності того самого тижня. Повторні вимірювання природно пасують до спостереження за однією когортою в часі;
- ступені свободи (df): кількість значень, що можуть вільно змінюватися за фіксованих оцінених величин. У повторних вимірюваннях похибка отримує (n − 1)(k − 1).
Одне практичне застереження щодо когорт: якщо частина підписників випадає до 8-го тижня, класичний аналіз потребує кожного суб'єкта в кожній точці. Тихо відкинути неповних суб'єктів — означає ризикувати зміщенням на користь тих, хто залишився, часто найзадоволеніших. Повідом, скільки суб'єктів втрачено і чому.
- Так«Когорта: 5 підписників, що приєдналися на 1-му тижні, усі присутні на тижнях 0, 4 і 8».
- Не так«Двоє підписників пішли до 8-го тижня, тож ми просто проаналізували решту».
Мовчазне вибування зміщує тренд на користь тих, хто залишився.
Критерій Фрідмана: ранги всередині кожного суб’єкта
Критерій Фрідмана — ранговий варіант дисперсійного аналізу з повторними вимірюваннями. Його трюк — ранжувати всередині кожного суб'єкта, ніколи між суб'єктами, тож великий і малий покупець важать однаково.
- Для кожного підписника проранжуй його власні точки: найменше = 1, найбільше = 3. 2, 6, 10 у U1 стають 1, 2, 3. Тут кожен підписник зростає, тож кожен рядок — 1, 2, 3.
- Додай ранги за кожною точкою: R = 5, 10, 15.
- Обчисли Q = 12 / (n·k·(k + 1)) × ΣR² − 3n(k + 1) = 12 / 60 × 350 − 60 = 10.
- Порівняй із розподілом хі-квадрат із k − 1 = 2 ступенями свободи: критичне значення на рівні 5% — приблизно 5,99. Q = 10 більше, p ≈ 0,007.
Якби час не впливав, ранги розсипалися б, і сума для кожної точки була б близько n(k + 1) / 2 = 10.
Оскільки враховується лише порядок усередині суб'єкта, одне дике значення (обвал NPS з 20 до −20 після збою білінгу) зсуває ранги цього суб'єкта щонайбільше на крок-два, а не домінує в середніх. Ціна, як завжди з рангами, — трохи менша потужність на чистих даних.
- ТакQ = 0,2 × (25 + 100 + 225) − 60 = 70 − 60 = 10 > 5,99
- Не такПроранжувати всі 15 чисел разом від 1 до 15, а тоді порівнювати тижні.
Ранжування між суб’єктами повертає відмінності між ними назад.
Чому повторним вимірюванням потрібно менше людей
Поставмо поруч факти про дизайн із повторними вимірюваннями:
- ті самі суб'єкти в кожній точці. Це визначення; різні люди в кожній точці — це незалежні групи;
- менше ступенів свободи похибки: (n − 1)(k − 1) = 8 тут, проти N − k = 12 для незалежних груп. Невелика ціна;
- значно менша похибка: MS_error = 1,25 замість приблизно 10,83, бо стабільні відмінності між підписниками вилучено. Великий виграш;
- тож більша потужність: ті самі 15 чисел дають F = 36 замість приблизно 4,15. Щоб досягти тієї самої потужності з незалежними групами, людей знадобилося б значно більше.
Саме тому продуктові команди люблять такі дизайни для спостереження за когортами, порівняння поведінки користувача до і після змін в онбордингу чи тестування кількох версій на тій самій панелі користувачів.
Основна ціна — практична, а не статистична: люди з часом випадають, ранні вимірювання можуть впливати на пізніші (навчання, втома), а без групи порівняння спільний тренд у часі, як-от сезон, виглядає точнісінько як ефект.
Коли дані скошені або вибірка крихітна, ранговий запасний варіант — критерій Фрідмана.
- Так«Ті самі 5 підписників у 3 точках: df похибки = 4 × 2 = 8, F(2, 8) = 36».
- Не так«Повторним вимірюванням потрібна нова вибірка в кожній точці, щоб лишатися незалежними».
Повторне використання тих самих суб’єктів — це і є дизайн, а не вада.
Як чесно подати результат повторних вимірювань
Сильний результат повторних вимірювань добре відповідає на одне запитання: чи змінюються значення в часі для тих самих людей? На два інші він не відповідає.
Наскільки велика зміна? F = 36 каже, що зміна значно більша за шум, а не що вона велика для бізнесу. Подай середні й різницю: 7 → 10 → 13 замовлень на місяць, приблизно +6 від реєстрації до 8-го тижня. А тоді оціни, чи виправдовують +6 замовлень вартість програми.
Що її спричинило? Кожен підписник увесь час був у програмі, тож час і вплив переплетені. Нові клієнти часто замовляють більше, коли звикають; сезони змінюються; ціни змінюються. Без когорти порівняння, яка не отримала програми, або рандомізованого запуску чесне формулювання — «замовлення зросли за період», а не «програма підняла замовлення».
Добрий рядок підсумку: зміна з її розміром, результат критерію і головне застереження: «+6 замовлень/місяць від реєстрації до 8-го тижня (F(2, 8) = 36, p ≈ 0,0001); групи порівняння немає, тож частина може бути звичайним розгоном нового клієнта».
- Так«+6 замовлень/місяць за 8 тижнів, F(2, 8) = 36; без когорти порівняння причинність не доведена».
- Не так«F = 36, отже, програма працює в 36 разів краще».
F — це відношення сигналу до шуму, а не розмір ефекту.
Готові потренуватися?
Виконайте вправи уроку й отримайте 250 балів, коли пройдете його вперше.
Розпочати вправи