0Pricing
Learn AI with Python · Урок

Компоненты временных рядов и стационарность

Тренд, сезонность, шум, тест ADF на стационарность, дифференцирование для достижения стационарности

«Компоненты временных рядов и стационарность» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.

Что такое временной ряд

Временной ряд — это данные, упорядоченные по времени, например ежедневные продажи или почасовая температура. Поскольку наблюдения упорядочены и часто взаимосвязаны, требуются специальные методы: нельзя просто перемешать строки, как в обычных табличных данных.

Три компонента

В классическом представлении ряд раскладывается на:

  • Тренд: долгосрочное движение вверх или вниз.
  • Сезонность: повторяющиеся закономерности с фиксированным периодом — например, недельным или годовым.
  • Остаток: оставшийся случайный шум после удаления тренда и сезонности.

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

В аддитивной модели: y = trend + seasonality + residual. Её используют, когда сезонные колебания имеют постоянную амплитуду.

В мультипликативной модели: y = trend * seasonality * residual. Её используют, когда сезонные колебания увеличиваются вместе с трендом.

seasonal_decompose

Библиотека statsmodels может автоматически разделить ряд на его компоненты.

from statsmodels.tsa.seasonal import seasonal_decompose

result = seasonal_decompose(series, model="additive", period=12)
result.trend
result.seasonal
result.resid

Визуализация разложения

График результата показывает каждый компонент отдельным слоем, благодаря чему тренд и сезонность легко заметить и выбрать подход к прогнозированию.

import matplotlib.pyplot as plt

result.plot()
plt.tight_layout()
plt.show()

Что такое стационарность

Ряд является стационарным, если его статистические свойства — среднее, дисперсия и автокорреляция — остаются постоянными во времени. Многие классические модели, например ARIMA, предполагают стационарность, поэтому её проверка и обеспечение — важнейший первый шаг.

Почему стационарность важна

Если среднее значение со временем смещается или дисперсия резко возрастает, модель, обученная на ранних данных, не будет обобщаться на более поздние данные. Удаление тренда и стабилизация дисперсии делают ряд предсказуемым единообразным образом.

Тест ADF

Расширенный тест Дики—Фуллера (ADF) проверяет стационарность. Нулевая гипотеза утверждает: «ряд нестационарен и имеет единичный корень». Если p-значение меньше 0,05, нулевую гипотезу можно отвергнуть и считать ряд стационарным.

from statsmodels.tsa.stattools import adfuller

stat, pvalue, *_ = adfuller(series)
print("p-value:", pvalue)
# pvalue < 0.05  -> stationary

Дифференцирование для достижения стационарности

Дифференцирование вычитает каждое значение из предыдущего, удаляя тренд. Дифференцирование первого порядка обычно устраняет линейный тренд; при необходимости примените его ещё раз.

diff1 = series.diff().dropna()      # first difference
diff2 = series.diff().diff().dropna()  # second difference

Проверка после дифференцирования

Повторно выполните тест ADF для продифференцированного ряда. Когда p-значение опустится ниже 0,05, стационарность достигнута, а порядок дифференцирования d зафиксирован; именно он напрямую передаётся в ARIMA.

stat, pvalue, *_ = adfuller(series.diff().dropna())
print("p-value after differencing:", pvalue)

Другие преобразования для стабилизации

Если дисперсия со временем растёт, перед дифференцированием стабилизируйте её с помощью преобразования log или Box-Cox. Сочетание логарифмического преобразования с дифференцированием подходит для многих реальных рядов с мультипликативным ростом.

import numpy as np

log_series = np.log(series)
stationary = log_series.diff().dropna()

Быстрая проверка

Проверьте своё понимание стационарности.

Повторение

Вы разложили ряды на тренд, сезонность и остаток с помощью seasonal_decompose, изучили аддитивные и мультипликативные модели, проверили стационарность с помощью теста ADF и использовали дифференцирование (порядка d), чтобы сделать ряд стационарным. Далее: ARIMA и SARIMA.

Часто задаваемые вопросы

Урок «Компоненты временных рядов и стационарность» бесплатный?

Да — полный текст урока «Компоненты временных рядов и стационарность» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.

Чему я научусь в уроке «Компоненты временных рядов и стационарность»?

Тренд, сезонность, шум, тест ADF на стационарность, дифференцирование для достижения стационарности Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Learn AI with Python?

Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Компоненты временных рядов и стационарность»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Learn AI with Python?

Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Компоненты временных рядов и стационарность
  2. Модели ARIMA и SARIMA
  3. Prophet для автоматического прогнозирования
  4. LSTM для прогнозирования временных рядов
← Назад к Learn AI with Python