Найти тему
Властелин машин

Получение компонент временного ряда

Оглавление

Рассмотрим способ разложения временного ряда на трендовую, сезонную и остаточную составляющие. Под трендом понимаем общую закономерность ряда (изменение среднего значения со временем), под сезонностью — повторяющуюся закономерность в определенных периодах (чтобы говорить о сезонности, в датасете должно быть несколько периодов).
Для демонстрации загрузим набор данных о статистике пассажирских перелетов с 1949 по 1960 из библиотеки
pmdarima:

Разложение на перечисленные выше составляющие можно произвести с помощью функции seasonal_decompose из модуля statsmodels.tsa.seasonal:

-2

В атрибутах возвращаемого seasonal_decompose объекта хранятся нужные нам тренд, сезонность и остатки. Проверим, что разложение в сумме (так как модель аддитивная) дает исходный ряд (для наглядности отобразил ряд с первого заполненного члена, так как в результате подсчета составляющих по умолчанию получаются пропуски):

-3

Тренд

Теперь подробнее рассмотрим составляющие разложения и попробуем получить их вручную. Тренд извлекается путем подсчета скользящих средних с центрированным окном. Сравните:

-4

и

-5

Ручной результат немного отличается ввиду использования в seasonal_decompose незначительно отличающейся функции свертки.

Сезонность

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

-6

Для получения сезонности вручную достаточно вычесть из исходного ряда тренд и получить среднее по "сезонным" периодам (в данном случае месяцам):

-7

Остатки

Остатки получаем как разность между исходным рядом с одной стороны и трендом и сезонностью с другой:

-8

А вот остатки, полученные с seasonal_decompose:

-9

Можно заключить, что графики почти идентичны.

Наука
7 млн интересуются