Ответ
Временной ряд — это последовательность данных, упорядоченных во времени. Его структуру и поведение описывают следующие ключевые компоненты и свойства:
1. Компоненты ряда (декомпозиция):
- Тренд (Trend, T): Долгосрочное направленное движение данных (возрастающее, убывающее, горизонтальное). Например, общий рост числа пользователей приложения за год.
- Сезонность (Seasonality, S): Периодические, повторяющиеся колебания с фиксированной и известной частотой (сутки, неделя, месяц, квартал, год). Например, пики продаж мороженого летом или всплески трафика на сайте в понедельник утром.
- Цикличность (Cyclical, C): Колебания без строгой фиксированной периодичности, обычно связанные с экономическими циклами (длительностью более года).
- Шум/Остатки (Residual/Noise, R): Случайные, несистематические колебания, которые нельзя объяснить трендом, сезонностью или цикличностью.
Модель аддитивной декомпозиции: Y(t) = T(t) + S(t) + C(t) + R(t)
Модель мультипликативной декомпозиции: Y(t) = T(t) * S(t) * C(t) * R(t)
2. Критические статистические свойства:
- Стационарность (Stationarity): Свойство ряда, при котором его статистические характеристики (среднее значение, дисперсия, автокорреляция) не меняются со временем. Большинство классических моделей (ARIMA) требуют стационарности. Проверяется тестами (Дики-Фуллера, KPSS).
- Автокорреляция (Autocorrelation): Корреляция ряда с самим собой на разных временных лагах. Функция автокорреляции (ACF) показывает, насколько текущее значение зависит от предыдущих. Частная автокорреляция (PACF) измеряет чистую зависимость между
Y(t)иY(t-k), исключая влияние промежуточных лагов.
Пример проверки стационарности и визуализации ACF/PACF:
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
# Тест Дики-Фуллера
result = adfuller(series)
print(f'ADF Statistic: {result[0]:.4f}')
print(f'p-value: {result[1]:.4f}')
if result[1] < 0.05:
print("Ряд стационарен (отвергаем H0 о наличии единичного корня).")
else:
print("Ряд нестационарен.")
# Графики ACF и PACF
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(12, 8))
plot_acf(series, lags=40, ax=ax1)
plot_pacf(series, lags=40, ax=ax2, method='ywm')
plt.show()
Понимание этих компонент — основа для выбора и настройки моделей прогнозирования (ARIMA, SARIMA, Exponential Smoothing).