Raw

Лекція 14. Аналіз часових рядів

Огляд

Досі кожне спостереження в наших даних було самостійним: у Лекції 3 вибірку x1,,xnx_1, \dots, x_n можна було переставляти як завгодно — середнє, дисперсія чи гістограма від порядку не залежали. Але величезний клас даних аналітики має одну додаткову властивість: спостереження впорядковані в часі й ідуть із рівними проміжками — щогодинний трафік сайту, щоденні продажі, щомісячна температура, щоквартальний виторг. Такі дані називають часовим рядом, і порядок у них — не випадковість, а носій інформації: сьогоднішнє значення тісно пов’язане із вчорашнім, а грудневі продажі схожі на торішні грудневі.

Через цей зв’язок сусідніх спостережень до часових рядів не можна прямо застосувати інструменти попередніх лекцій, що припускали незалежність даних (довірчі інтервали Лекції 3, перевірку гіпотез Лекції 4). Натомість ряд розкладають на осмислені складові (тренд, сезонність, шум), згладжують, щоб побачити основну тенденцію, вимірюють внутрішню залежність автокореляцією й, нарешті, прогнозують майбутнє. Багато ідей ми запозичимо з уже вивченого: згладжування спирається на середнє (Лекція 3), прогноз за трендом — це пряма лінійна регресія на час (Лекція 5), а оцінка похибки прогнозу — близький родич залишків регресії. Так аналіз часових рядів об’єднує описову статистику, регресію та прогнозування в один робочий цикл.

Практичний бік. Ковзне середнє, експоненційне згладжування та метрики похибки прогнозу ви обчислите «руками» й програмою в Лабораторній роботі 14.

Завершальна лекція курсу. Це остання тема «Аналітики даних» і другий розділ змістового модуля «Розширені методи аналітики даних» (після Лекції 13). Вона замикає повний маршрут аналітика: від опису даних (Лекції 13) через висновок (Лекції 45) і методи навчання (Лекції 611) до прогнозування майбутнього за впорядкованими в часі даними.


14.1 Часовий ряд і його компоненти

Означення (часовий ряд). Часовим рядом (англ. time series) називають послідовність значень x1,x2,,xnx_1, x_2, \dots, x_n однієї величини, виміряних у послідовні моменти часу t=1,2,,nt = 1, 2, \dots, n, зазвичай через однакові проміжки (крок дискретизації). Індекс tt задає порядок спостережень.

Дві риси відрізняють часовий ряд від звичайної вибірки:

  • Впорядкованість. Порядок значень фіксований і змістовний; переставляти спостереження не можна, бо втратиться сама динаміка.
  • Залежність спостережень. Сусідні значення, як правило, не незалежні: знаючи xt1x_{t-1}, ми вже дещо знаємо про xtx_t. Це порушує припущення незалежності, на якому будувалися класичні статистичні висновки.

Приклади. Щоденна кількість відвідувачів сайту; щомісячний обсяг продажів; щогодинна температура повітря; щоквартальний ВВП; хвилинне навантаження на сервер. У кожному випадку природний перший крок — лінійний графік значень проти часу (див. Лекцію 3): він одразу показує напрям руху, повторювані коливання й аномалії.

Компоненти ряду

Складну поведінку ряду зручно уявляти як накладання кількох простих компонент:

  • Тренд (TtT_t, англ. trend) — повільна довгострокова тенденція до зростання чи спадання (наприклад, поступове зростання аудиторії продукту рік за роком).
  • Сезонність (StS_t, англ. seasonality) — коливання зі сталим відомим періодом LL (доба, тиждень, рік): пік продажів щогрудня, спад трафіку щоночі.
  • Циклічність (CtC_t, англ. cyclic component) — коливання без фіксованого періоду, пов’язані з довгими хвилями (економічні цикли підйому й спаду). На відміну від сезонності, довжина циклу заздалегідь невідома й змінна.
  • Шум (ete_t, англ. noise, нерегулярна/випадкова компонента) — те, що лишилось після вилучення регулярних складових: непередбачувані дрібні коливання.

Розклад часового ряду на чотири панелі: вихідний ряд, тренд, сезонність і шум, які в сумі складаються у вихідний ряд

Сезонність проти циклічності. Сезонність має сталий період (рівно рік, рівно тиждень) і прив’язана до календаря; цикл — плаваючий і календарем не визначений. Тому сезонність прогнозувати легко, а цикл — важко.

Адитивна та мультиплікативна моделі

Компоненти поєднують у ряд одним із двох способів.

Означення (адитивна та мультиплікативна моделі). Адитивна модель складає компоненти:

xt=Tt+St+Ct+et.x_t = T_t + S_t + C_t + e_t.

Мультиплікативна модель їх перемножує:

xt=TtStCtet.x_t = T_t \cdot S_t \cdot C_t \cdot e_t.

Вибір моделі підказує графік. Якщо розмах сезонних коливань сталий (не залежить від рівня ряду) — беруть адитивну модель. Якщо розмах коливань зростає разом із рівнем ряду (продажів усе більше, і сезонні піки теж усе вищі) — беруть мультиплікативну. Мультиплікативну модель зводять до адитивної логарифмуванням: lnxt=lnTt+lnSt+lnCt+lnet\ln x_t = \ln T_t + \ln S_t + \ln C_t + \ln e_t.

Порівняння адитивної моделі зі сталим розмахом сезонних коливань і мультиплікативної, де розмах коливань зростає разом із рівнем ряду

Приклад 14.1 (адитивний розклад). Нехай продажі мають лінійний тренд Tt=100+2tT_t = 100 + 2t і сезонність із періодом L=4L = 4 та сезонними поправками S=(+8, 3, 6, +1)S = (+8,\ -3,\ -6,\ +1), що повторюються. Тоді (нехтуючи шумом) за перші 44 кроки:

tt Tt=100+2tT_t = 100 + 2t StS_t xt=Tt+Stx_t = T_t + S_t
1 102 +8+8 110
2 104 3-3 101
3 106 6-6 100
4 108 +1+1 109

Тут рівень ряду щокроку зростає на 22 (тренд), а всередині кожного періоду з 44 кроків повторюється той самий сезонний візерунок. Сума сезонних поправок за період 836+1=08 - 3 - 6 + 1 = 0 — нормування, характерне для адитивної сезонності.


14.2 Згладжування: ковзне середнє

Сирий ряд «тремтить» через шум, і за коливаннями важко розгледіти тренд. Згладжування прибирає дрібні коливання, лишаючи основну тенденцію. Найпростіший згладжувач — ковзне середнє.

Означення (просте ковзне середнє). Простим ковзним середнім (англ. simple moving average, SMA) з вікном ww називають середнє ww останніх спостережень:

MAt(w)=1wj=0w1xtj=xt+xt1++xtw+1w,tw. \mathrm{MA}_t^{(w)} = \frac{1}{w}\sum_{j=0}^{w-1} x_{t-j} = \frac{x_t + x_{t-1} + \dots + x_{t-w+1}}{w}, \qquad t \ge w.

Кожне нове значення «вкочується» у вікно, а найстаріше — «викочується»; звідси й назва. Ширина вікна ww керує силою згладжування: більше ww — гладкіша крива, але сильніше запізнення за реальними змінами й втрата початкових w1w - 1 точок; менше ww — крива ближча до даних, але й «шумніша».

Приклад 14.2 (ковзне середнє, вікно 3). Тижневі продажі (n=8n = 8): 12, 15, 14, 16, 19, 18, 20, 2312,\ 15,\ 14,\ 16,\ 19,\ 18,\ 20,\ 23. Обчислимо MA(3)\mathrm{MA}^{(3)} (перші два кроки невизначені, бо вікно ще не заповнене):

tt xtx_t MAt(3)\mathrm{MA}_t^{(3)}
1 12
2 15
3 14 (12+15+14)/3=13.667(12+15+14)/3 = 13.667
4 16 (15+14+16)/3=15.000(15+14+16)/3 = 15.000
5 19 (14+16+19)/3=16.333(14+16+19)/3 = 16.333
6 18 (16+19+18)/3=17.667(16+19+18)/3 = 17.667
7 20 (19+18+20)/3=19.000(19+18+20)/3 = 19.000
8 23 (18+20+23)/3=20.333(18+20+23)/3 = 20.333

Згладжений ряд (13.66720.33313.667 \to 20.333) монотонно зростає, тимчасом як сирий ряд скаче вгору-вниз — ковзне середнє виявило висхідний тренд.

Сирий ряд тижневих продажів і його згладження ковзним середнім з вікном 3

Центроване ковзне середнє

У наведеній формі MAt\mathrm{MA}_t спирається лише на минулі значення (кінцеве, англ. trailing), тож зручне для прогнозу, але зсунуте вправо відносно даних. Щоб згладжене значення стояло навпроти відповідної точки (для виділення тренду в розкладі ряду), беруть центроване ковзне середнє: для непарного w=2k+1w = 2k + 1

MAt(w)=1wj=kkxt+j,k<tnk.\mathrm{MA}_t^{(w)} = \frac{1}{w}\sum_{j=-k}^{k} x_{t+j}, \qquad k < t \le n - k.

Для парного ww вікно несиметричне, тож застосовують подвійне згладжування (центрування) — усереднюють два сусідні ковзні середні.

Зважене ковзне середнє

Просте ковзне середнє надає всім ww точкам вікна однакову вагу. Але свіжіші спостереження зазвичай важливіші. Зважене ковзне середнє (англ. weighted moving average, WMA) дає їм більшу вагу:

WMAt=j=0w1wjxtjj=0w1wj,\mathrm{WMA}_t = \frac{\sum_{j=0}^{w-1} w_j\, x_{t-j}}{\sum_{j=0}^{w-1} w_j},

де ваги wjw_j спадають від найсвіжішого до найстарішого спостереження.

Приклад 14.2а (WMA). Для тих самих даних візьмемо вікно 33 з вагами 1,2,31, 2, 3 (найбільша — найсвіжішому). У точці t=8t = 8 значення вікна — x6=18x_6 = 18, x7=20x_7 = 20, x8=23x_8 = 23, тож

WMA8=118+220+3231+2+3=18+40+696=1276=21.167. \mathrm{WMA}_8 = \frac{1 \cdot 18 + 2 \cdot 20 + 3 \cdot 23}{1 + 2 + 3} = \frac{18 + 40 + 69}{6} = \frac{127}{6} = 21.167.

Порівняно з простим MA8(3)=20.333\mathrm{MA}_8^{(3)} = 20.333 зважене середнє вище (21.16721.167) — воно сильніше «тягнеться» за останнім високим значенням 2323, тобто швидше реагує на зміни.


14.3 Експоненційне згладжування

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

Означення (просте експоненційне згладжування). Простим експоненційним згладжуванням (англ. single exponential smoothing, SES) називають рекурентну оцінку рівня ряду

x^t=αxt+(1α)x^t1,0<α<1,\hat{x}_t = \alpha\, x_t + (1 - \alpha)\,\hat{x}_{t-1}, \qquad 0 < \alpha < 1,

зі стартом x^1=x1\hat{x}_1 = x_1. Параметр α\alpha називають сталою згладжування.

Кожна оцінка — це компроміс між свіжим спостереженням xtx_t (вага α\alpha) і всією накопиченою історією x^t1\hat{x}_{t-1} (вага 1α1 - \alpha). Розкривши рекурсію, дістаємо явні геометрично спадні ваги:

x^t=αxt+α(1α)xt1+α(1α)2xt2+\hat{x}_t = \alpha x_t + \alpha(1-\alpha) x_{t-1} + \alpha(1-\alpha)^2 x_{t-2} + \dots

  • велике α\alpha (близьке до 11) — швидка реакція на зміни, слабке згладжування (майже повторює ряд);
  • мале α\alpha (близьке до 00) — сильне згладжування, повільна реакція (крива інертна).

Експоненційне згладжування того самого ряду за двох значень сталої: alpha 0.6 швидко реагує на зміни, alpha 0.2 дає гладкішу, інертнішу криву

Приклад 14.3 (експоненційне згладжування, α=0.3\alpha = 0.3). Візьмемо ряд 12, 15, 14, 16, 1912,\ 15,\ 14,\ 16,\ 19 і α=0.3\alpha = 0.3. Старт x^1=12\hat{x}_1 = 12; далі за формулою:

x^2=0.315+0.712=4.5+8.4=12.900,\hat{x}_2 = 0.3 \cdot 15 + 0.7 \cdot 12 = 4.5 + 8.4 = 12.900,

x^3=0.314+0.712.900=4.2+9.030=13.230,\hat{x}_3 = 0.3 \cdot 14 + 0.7 \cdot 12.900 = 4.2 + 9.030 = 13.230,

x^4=0.316+0.713.230=4.8+9.261=14.061,\hat{x}_4 = 0.3 \cdot 16 + 0.7 \cdot 13.230 = 4.8 + 9.261 = 14.061,

x^5=0.319+0.714.061=5.7+9.843=15.543.\hat{x}_5 = 0.3 \cdot 19 + 0.7 \cdot 14.061 = 5.7 + 9.843 = 15.543.

Згладжений ряд 1212.913.2314.06115.54312 \to 12.9 \to 13.23 \to 14.061 \to 15.543 плавно рухається за даними, не повторюючи їхні різкі стрибки.

Подвійне згладжування (метод Гольта)

Просте SES добре працює для рядів без тренду: за стійкого зростання його оцінка систематично відстає. Метод Гольта (англ. Holt’s double exponential smoothing) додає окрему компоненту тренду й згладжує дві величини — рівень LtL_t і нахил btb_t:

Lt=αxt+(1α)(Lt1+bt1),bt=β(LtLt1)+(1β)bt1. L_t = \alpha\, x_t + (1 - \alpha)(L_{t-1} + b_{t-1}), \qquad b_t = \beta\,(L_t - L_{t-1}) + (1 - \beta)\, b_{t-1}.

Прогноз на hh кроків уперед враховує тренд: x^t+h=Lt+hbt\hat{x}_{t+h} = L_t + h\, b_t. Розширення методом Гольта–Вінтерса додає ще й сезонну компоненту. Ці методи — природне продовження SES, коли в ряді є тренд або сезонність.


14.4 Автокореляція та стаціонарність

Головна особливість часового ряду — залежність спостережень одне від одного. Виміряти її дає змогу автокореляція — кореляція ряду із його ж зсунутою копією.

Означення (лаг, автокореляція). Лагом (англ. lag) kk називають зсув ряду на kk кроків. Вибірковою автокореляційною функцією (англ. autocorrelation function, ACF) на лазі kk називають

rk=t=1nk(xtxˉ)(xt+kxˉ)t=1n(xtxˉ)2,xˉ=1nt=1nxt. r_k = \frac{\sum_{t=1}^{n-k} (x_t - \bar{x})(x_{t+k} - \bar{x})} {\sum_{t=1}^{n} (x_t - \bar{x})^2}, \qquad \bar{x} = \frac{1}{n}\sum_{t=1}^{n} x_t.

Це той самий коефіцієнт кореляції Пірсона (Лекція 5), але між парами (xt,xt+k)(x_t, x_{t+k}) — значенням та його «минулим» на kk кроків. Властивості: r0=1r_0 = 1 завжди; 1rk1-1 \le r_k \le 1; знак показує напрям зв’язку значення з його минулим.

Приклад 14.4 (автокореляція лагу 1). Для ряду 12, 15, 14, 16, 1912,\ 15,\ 14,\ 16,\ 19 (xˉ=15.2\bar{x} = 15.2) відхилення від середнього: 3.2, 0.2, 1.2, 0.8, 3.8-3.2,\ -0.2,\ -1.2,\ 0.8,\ 3.8. Чисельник (сума добутків сусідніх відхилень):

(3.2)(0.2)+(0.2)(1.2)+(1.2)(0.8)+(0.8)(3.8)=0.64+0.240.96+3.04=2.96. (-3.2)(-0.2) + (-0.2)(-1.2) + (-1.2)(0.8) + (0.8)(3.8) = 0.64 + 0.24 - 0.96 + 3.04 = 2.96.

Знаменник (сума квадратів відхилень):

3.22+0.22+1.22+0.82+3.82=10.24+0.04+1.44+0.64+14.44=26.8.3.2^2 + 0.2^2 + 1.2^2 + 0.8^2 + 3.8^2 = 10.24 + 0.04 + 1.44 + 0.64 + 14.44 = 26.8.

Отже, r1=2.96/26.8=0.110r_1 = 2.96 / 26.8 = 0.110 — слабка додатна автокореляція. Натомість для «пилкоподібного» ряду 10, 2, 9, 3, 8, 410,\ 2,\ 9,\ 3,\ 8,\ 4 (значення чергуються високе/низьке) r1=0.810r_1 = -0.810 — сильна від’ємна автокореляція: за високим значенням майже завжди йде низьке.

Автокореляційна функція пилкоподібного ряду: стовпці за лагами з великою відʼємною автокореляцією на лазі 1 і чергуванням знаку

Практичний зміст ACF. Пік ACF на лазі k=Lk = L виказує сезонність із періодом LL (наприклад, для щоденних даних r7r_7 великий за тижневої сезонності). Повільне спадання ACF свідчить про тренд. Тому графік ACF — стандартний діагностичний інструмент перед вибором моделі прогнозу.

Стаціонарність

Означення (стаціонарність, спрощено). Ряд називають стаціонарним (англ. stationary), якщо його статистичні властивості не змінюються з часом: сталі середнє й дисперсія, а автокореляція rkr_k залежить лише від лагу kk, а не від моменту tt.

Тренд і сезонність роблять ряд нестаціонарним (середнє «пливе»). Багато методів прогнозування (зокрема родина ARIMA, що виходить за межі курсу) вимагають стаціонарності, тож ряд спершу стаціонаризують. Найпростіший спосіб — різницювання (англ. differencing): перехід до ряду приростів

xt=xtxt1,\nabla x_t = x_t - x_{t-1},

який прибирає лінійний тренд (сталий приріст перетворюється на стале значення). Логарифмування стабілізує зростаючу дисперсію, а сезонне різницювання xtxtLx_t - x_{t-L} прибирає сезонність.


14.5 Прогнозування

Прогнозування (англ. forecasting) — оцінювання майбутніх значень ряду x^n+1,x^n+2,\hat{x}_{n+1}, \hat{x}_{n+2}, \dots за наявною історією. Розгляньмо чотири базові методи від найпростішого до найзмістовнішого.

  • Наївний прогноз (англ. naive forecast). Прогноз дорівнює останньому відомому значенню: x^n+1=xn\hat{x}_{n+1} = x_n. Попри примітивність, це важливий еталон (baseline): складніший метод має бути кращим за наївний, інакше він зайвий.
  • Прогноз за ковзним середнім. Прогноз — середнє ww останніх спостережень: x^n+1=1w(xn+xn1++xnw+1)\hat{x}_{n+1} = \frac{1}{w}(x_n + x_{n-1} + \dots + x_{n-w+1}). Придатний для ряду без тренду, що коливається навколо сталого рівня.
  • Прогноз за трендом (лінійна регресія на час). Будуємо пряму x^t=b0+b1t\hat{x}_t = b_0 + b_1 t методом найменших квадратів (Лекція 5), де роль незалежної змінної грає час t=1,2,,nt = 1, 2, \dots, n, і екстраполюємо її на майбутні tt. Годиться для рядів із вираженим трендом.
  • Прогноз за експоненційним згладжуванням. Прогноз дорівнює останній згладженій оцінці: x^n+1=x^n\hat{x}_{n+1} = \hat{x}_n (просте SES — для ряду без тренду; метод Гольта — для ряду з трендом).

Приклад 14.5 (чотири прогнози). Місячні дані (n=6n = 6) з чітким зростанням: 10, 12, 13, 15, 16, 1810,\ 12,\ 13,\ 15,\ 16,\ 18. Спрогнозуємо значення на місяць 77.

Наївний: x^7=x6=18\hat{x}_7 = x_6 = 18.

Ковзне середнє, w=3w = 3: x^7=(15+16+18)/3=49/3=16.333\hat{x}_7 = (15 + 16 + 18)/3 = 49/3 = 16.333.

Тренд (регресія на час). За t=1,,6t = 1, \dots, 6: tˉ=3.5\bar{t} = 3.5, xˉ=14\bar{x} = 14. За формулами найменших квадратів (Лекція 5):

b1=(ttˉ)(xtxˉ)(ttˉ)2=2717.5=1.543,b0=xˉb1tˉ=141.5433.5=8.600. b_1 = \frac{\sum (t - \bar{t})(x_t - \bar{x})}{\sum (t - \bar{t})^2} = \frac{27}{17.5} = 1.543, \qquad b_0 = \bar{x} - b_1 \bar{t} = 14 - 1.543 \cdot 3.5 = 8.600.

Прогноз: x^7=8.600+1.5437=19.400\hat{x}_7 = 8.600 + 1.543 \cdot 7 = 19.400 (а на місяць 88x^8=8.600+1.5438=20.943\hat{x}_8 = 8.600 + 1.543 \cdot 8 = 20.943).

Експоненційне згладжування, α=0.5\alpha = 0.5: послідовно x^1=10\hat{x}_1 = 10, x^2=11\hat{x}_2 = 11, x^3=12\hat{x}_3 = 12, x^4=13.5\hat{x}_4 = 13.5, x^5=14.75\hat{x}_5 = 14.75, x^6=16.375\hat{x}_6 = 16.375; прогноз x^7=x^6=16.375\hat{x}_7 = \hat{x}_6 = 16.375.

Метод Прогноз x^7\hat{x}_7
Наївний 18.000
Ковзне середнє (w=3w = 3) 16.333
Тренд (регресія на час) 19.400
Експоненційне (α=0.5\alpha = 0.5) 16.375

Прогнози помітно різняться. Оскільки ряд зростає, ковзне середнє та SES відстають (усереднюють уже застарілі нижчі значення), наївний прогноз повторює останнє значення, і лише тренд-модель екстраполює зростання далі (19.4>1819.4 > 18). Це головний висновок: метод має відповідати структурі ряду — для трендового ряду виграє прогноз за трендом.

Прогноз за лінійним трендом на три кроки вперед із зоною похибки, що розширюється з горизонтом прогнозу


14.6 Оцінка похибки прогнозу

Щоб порівняти методи, прогноз перевіряють на даних, для яких відоме фактичне значення. Стандартний прийом — відкласти (англ. hold out) останню частину ряду: навчати метод на початку, а перевіряти на кінці, порівнюючи прогнози x^t\hat{x}_t з фактами xtx_t. Похибку зводять до одного числа трьома метриками.

Означення (MAE, RMSE, MAPE). Для mm пар «факт xtx_t — прогноз x^t\hat{x}_t»:

MAE=1mtxtx^t,RMSE=1mt(xtx^t)2, \mathrm{MAE} = \frac{1}{m}\sum_{t} |x_t - \hat{x}_t|, \qquad \mathrm{RMSE} = \sqrt{\frac{1}{m}\sum_{t} (x_t - \hat{x}_t)^2},

MAPE=100%mtxtx^txt.\mathrm{MAPE} = \frac{100\%}{m}\sum_{t} \left| \frac{x_t - \hat{x}_t}{x_t} \right|.

  • MAE (mean absolute error, середня абсолютна похибка) — середня величина промаху в одиницях ряду; проста й стійка, усі похибки враховані однаково.
  • RMSE (root mean square error, корінь із середньоквадратичної похибки) — теж в одиницях ряду, але через квадрат сильніше карає великі промахи; чутлива до викидів. Завжди RMSEMAE\mathrm{RMSE} \ge \mathrm{MAE}.
  • MAPE (mean absolute percentage error, середня абсолютна відсоткова похибка) — безрозмірна (у відсотках), тож дає змогу порівнювати точність на рядах різного масштабу.

Приклад 14.6 (обчислення метрик). Порівняємо прогноз (x^\hat{x}) із фактом (xx) на m=5m = 5 періодах:

| xtx_t (факт) | x^t\hat{x}_t (прогноз) | xtx^tx_t - \hat{x}_t | xtx^t|x_t - \hat{x}_t| | (xtx^t)2(x_t - \hat{x}_t)^2 | /xt|{\cdot}| / x_t | |:–:|:–:|:–:|:–:|:–:|:–:| | 20 | 19 | +1+1 | 1 | 1 | 0.0500 | | 22 | 23 | 1-1 | 1 | 1 | 0.0455 | | 19 | 20 | 1-1 | 1 | 1 | 0.0526 | | 24 | 22 | +2+2 | 2 | 4 | 0.0833 | | 23 | 25 | 2-2 | 2 | 4 | 0.0870 | | | | | 7 | 11 | 0.3184 |

MAE=75=1.400,RMSE=115=2.2=1.483,MAPE=100%50.3184=6.37%. \mathrm{MAE} = \frac{7}{5} = 1.400, \qquad \mathrm{RMSE} = \sqrt{\frac{11}{5}} = \sqrt{2.2} = 1.483, \qquad \mathrm{MAPE} = \frac{100\%}{5} \cdot 0.3184 = 6.37\%.

RMSE (1.4831.483) більша за MAE (1.4001.400) — сказалися два більші промахи по 22; у середньому прогноз хибить на 1.4\approx 1.4 одиниці, або на 6.4%\approx 6.4\%.

Алгоритм: оцінка прогнозу з відкладеною частиною
Вхід: ряд x[1..n], метод прогнозу, розмір тесту m
  1. train ← x[1 .. n-m];  test ← x[n-m+1 .. n]
  2. навчити метод на train; отримати прогнози  x̂ на m кроків
  3. e ← test − x̂
  4. MAE  ← mean(|e|)
     RMSE ← sqrt(mean(e^2))
     MAPE ← 100 * mean(|e| / |test|)
  5. return MAE, RMSE, MAPE

Типова помилка (MAPE і нулі). MAPE ділить на факт xtx_t, тож не визначена при xt=0x_t = 0 і роздувається при малих xtx_t. Для рядів із нулями чи близькими до нуля значеннями беруть MAE або RMSE (або симетричні варіанти на кшталт sMAPE).

Типова помилка (оцінка «на тих самих даних»). Не можна оцінювати прогноз на даних, на яких метод «навчали»: він підлаштувався саме під них і покаже оманливо-малу похибку. Чесна оцінка — лише на відкладеній (майбутній для моделі) частині ряду.


Застосування в аналітиці даних

  • Планування й бюджетування. Прогноз продажів, попиту, трафіку — основа планування закупівель, персоналу та потужностей.
  • Моніторинг і аномалії. Згладжений ряд задає «очікуваний коридор»; різке відхилення факту від прогнозу сигналізує про аварію, атаку чи зміну поведінки.
  • Виявлення сезонності. ACF та розклад ряду показують тижневі/річні цикли, які враховують у розкладі змін, рекламних кампаніях, тарифах.
  • Порівняння методів. MAE / RMSE / MAPE на відкладеній частині — стандартний спосіб обрати найкращий метод прогнозу для конкретного ряду (обов’язково проти наївного еталона).
  • Підготовка ознак. Лаги (xt1,xt2,x_{t-1}, x_{t-2}, \dots), ковзні середні та сезонні індикатори — типові ознаки для моделей машинного навчання (Лекції 67), коли прогноз зводять до регресії.

Підсумок

  • Часовий ряд — впорядкована в часі послідовність значень із залежними сусідніми спостереженнями; тому інструменти для незалежних вибірок прямо не застосовні.
  • Ряд розкладають на компоненти: тренд, сезонність (сталий період), циклічність (плаваючий період), шум; моделі — адитивна (xt=Tt+St+etx_t = T_t + S_t + e_t, сталий розмах) та мультиплікативна (xt=TtStetx_t = T_t S_t e_t, розмах росте з рівнем).
  • Ковзне середнє MAt(w)\mathrm{MA}_t^{(w)} згладжує ряд (більше ww — гладкіше, але з більшим запізненням); зважене середнє надає свіжим точкам більшу вагу.
  • Експоненційне згладжування x^t=αxt+(1α)x^t1\hat{x}_t = \alpha x_t + (1-\alpha)\hat{x}_{t-1} забуває минуле плавно (геометричні ваги); мале α\alpha — сильніше згладжування. Метод Гольта додає компоненту тренду.
  • Автокореляція rkr_k вимірює зв’язок значення з його минулим на лазі kk; пік на лазі LL виказує сезонність. Стаціонарний ряд має незмінні в часі властивості; тренд усувають різницюванням xt=xtxt1\nabla x_t = x_t - x_{t-1}.
  • Прогнозування: наївний (x^n+1=xn\hat{x}_{n+1} = x_n, еталон), за ковзним середнім, за трендом (регресія на час, Лекція 5), за експоненційним згладжуванням. Метод обирають під структуру ряду.
  • Похибку прогнозу оцінюють на відкладеній частині метриками MAE, RMSE (карає великі промахи; MAE\ge \mathrm{MAE}) та MAPE (у відсотках, для порівняння різномасштабних рядів).
  • Курс завершено. Аналіз часових рядів замикає шлях аналітика: опис даних → висновок про них → навчання моделей → прогноз майбутнього.

Вправи

Для розігріву

  1. Чим часовий ряд відрізняється від звичайної вибірки? Поясніть, чому до нього не можна прямо застосувати довірчі інтервали з Лекції 3.
  2. Назвіть чотири компоненти часового ряду. Чим сезонність відрізняється від циклічності?
  3. Для ряду 4, 6, 5, 7, 9, 84,\ 6,\ 5,\ 7,\ 9,\ 8 обчисліть просте ковзне середнє з вікном 33 (значення для t=3,,6t = 3, \dots, 6).
  4. Як стала згладжування α\alpha впливає на поведінку експоненційного згладжування? Що дає α\alpha, близьке до 11, а що — близьке до 00?

Стандартні

  1. Для ряду 30, 32, 31, 3530,\ 32,\ 31,\ 35 виконайте просте експоненційне згладжування з α=0.2\alpha = 0.2 (старт x^1=x1\hat{x}_1 = x_1). Наведіть усі кроки й прогноз на наступний період. (Відповідь: 30, 30.4, 30.52, 31.41630,\ 30.4,\ 30.52,\ 31.416.)
  2. Оберіть адитивну чи мультиплікативну модель для: (а) ряду, де сезонні коливання мають сталий розмах; (б) ряду, де розмах коливань зростає разом із рівнем. Обґрунтуйте.
  3. Для факту x=(50, 60, 55)x = (50,\ 60,\ 55) і прогнозу x^=(48, 63, 50)\hat{x} = (48,\ 63,\ 50) обчисліть MAE, RMSE та MAPE. (Відповідь: MAE=3.333\mathrm{MAE} = 3.333, RMSE=3.559\mathrm{RMSE} = 3.559, MAPE=6.03%\mathrm{MAPE} = 6.03\%.)
  4. Ряд 8, 11, 13, 16, 188,\ 11,\ 13,\ 16,\ 18 має чіткий тренд. Побудуйте лінійну регресію на час x^t=b0+b1t\hat{x}_t = b_0 + b_1 t і спрогнозуйте значення для t=6t = 6.

Підвищеної складності

  1. Розкрийте рекурсію експоненційного згладжування й покажіть, що ваги спостережень xt,xt1,xt2,x_t, x_{t-1}, x_{t-2}, \dots утворюють геометричну прогресію α,α(1α),α(1α)2,\alpha, \alpha(1-\alpha), \alpha(1-\alpha)^2, \dots. Чому їхня сума прямує до 11?
  2. Поясніть, чому просте ковзне середнє й просте експоненційне згладжування систематично відстають від ряду з лінійним трендом. Як цю ваду виправляє метод Гольта?
  3. Доведіть, що для стаціонарного (без тренду) ряду прогноз за ковзним середнім і прогноз за трендом (регресія на час) дають близькі результати, а їхня різниця зростає з силою тренду.
  4. Часовий ряд має яскраво виражену тижневу сезонність (дані щоденні). Опишіть, який вигляд матиме його ACF (на яких лагах очікувати піки) і як сезонне різницювання xtxt7x_t - x_{t-7} змінить ряд.

Lectures/DA-L14.md · 37.5 KB · updated 2026-08-05 09:37