Детерминированные тренды против стохастических трендов и как с ними бороться

Обнаружение тренда и работа с ним — ключевой шаг в моделировании временных рядов.

В этой статье мы:

  • Описать тренд временного ряда и его различные характеристики;
  • Узнайте, как его обнаружить;
  • Обсудите способы борьбы с трендом;

Понимание тенденции

Тренд как строительный блок временного ряда

В любой момент времени временной ряд можно разбить на три части: тренд, сезонность и остаток.

Тренд представляет собой долгосрочное изменение уровня временного ряда. Это изменение может быть как вверх (увеличение уровня), так и вниз (понижение уровня). Если изменение систематично в одном направлении, то тренд монотонный.

Тренд как причина нестационарности

Временной ряд является стационарным, если его статистические свойства не меняются. Сюда входит уровень временного ряда, который постоянен в стационарных условиях.

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

Правильная характеристика тренда влияет на решения по моделированию. Это, в дальнейшем, влияет на эффективность прогнозирования.

Детерминированные тенденции

Тренд может быть как детерминированным, так и стохастическим.

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

В большинстве случаев детерминированные тренды являются линейными и могут быть записаны следующим образом:

Но тренды также могут иметь экспоненциальную или полиномиальную форму.

В экономике есть несколько примеров временных рядов, которые увеличиваются в геометрической прогрессии, например, ВВП:

Временной ряд с детерминированным трендом называется трендово-стационарным. Это означает, что ряд становится стационарным после удаления компонента тренда.

Линейные тренды также можно смоделировать, включив время в качестве объясняющей переменной. Вот пример того, как вы можете это сделать:

import numpy as np
import pandas as pd
from statsmodels.tsa.arima.model import ARIMA

# https://github.com/vcerqueira/blog/blob/main/data/gdp-countries.csv
series = pd.read_csv('data/gdp-countries.csv')['United States']
series.index = pd.date_range(start='12/31/1959', periods=len(series), freq='Y')

log_gdp = np.log(series)

linear_trend = np.arange(1, len(log_gdp) + 1)

model = ARIMA(endog=log_gdp, order=(1, 0, 0), exog=linear_trend)
result = model.fit()

Стохастические тренды

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

Случайное блуждание является примером временного ряда со стохастическим трендом:

rw = np.cumsum(np.random.choice([-1, 1], size=1000))

Стохастические тренды связаны с единичными корнями, интеграцией и дифференцированием.

Временные ряды со стохастическими трендами называются разностно-стационарными. Это означает, что временной ряд можно сделать стационарным путем разностных операций. Дифференциация означает получение разницы между последовательными значениями.

Разностно-стационарные временные ряды также называют интегрированными. Например, модели ARIMA (авторегрессивное интегрированное скользящее среднее) содержат специальный термин (I) для интегрированных временных рядов. Этот термин включает в себя применение разностных шагов до тех пор, пока ряд не станет стационарным.

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

Прогнозирование последствий

Детерминированные и стохастические тренды имеют разное значение для прогнозирования.

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

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

Как определить тренд

Стохастические тренды можно обнаружить с помощью тестов на единичный корень. Например, расширенный тест Дики-Фуллера или тест KPSS.

Расширенный тест Дики-Фуллера (ADF)

Тест ADF проверяет, содержит ли авторегрессионная модель единичный корень. Гипотезы теста:

  • Нулевая гипотеза: существует единичный корень (временной ряд не является стационарным);
  • Альтернативная гипотеза: единичного корня нет.

Этот тест доступен в statsmodels:

from statsmodels.tsa.stattools import adfuller

pvalue_adf = adfuller(x=log_gdp, regression='ct')[1]

print(pvalue_adf)
# 1.0

Параметр regression=‘ct’ используется для включения в модель постоянного члена и детерминированного тренда. Как вы можете проверить в документации, есть четыре возможных альтернативных значения этого параметра:

  • c: включая постоянный термин (значение по умолчанию);
  • ct: постоянный член плюс линейный тренд;
  • ctt: постоянный член плюс линейный и квадратичный тренд;
  • n: нет постоянной или тенденции.

Очень важно выбрать, какие термины следует включить. Неправильное включение или исключение термина может существенно снизить мощность теста. В нашем случае мы использовали параметр ct, поскольку ряд логарифмических GPD показывает линейное детерминированное поведение тренда.

КПСС тест

Тест KPSS также можно использовать для обнаружения стохастических трендов. Гипотезы теста противоположны по отношению к ADF:

Нулевая гипотеза: временной ряд стационарен по тренду;

Альтернативная гипотеза: существует единичный корень.

from statsmodels.tsa.stattools import kpss

pvalue_kpss = kpss(x=log_gdp, regression='ct')[1]

print(pvalue_kpss)
# 0.01

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

Итак, как вы можете работать с единичными корнями?

Как бороться с трендом

Мы рассмотрели, как использовать время в качестве независимой переменной для учета линейного тренда.

Еще один способ справиться с трендами — дифференцировать. Вместо работы с абсолютными значениями вы моделируете изменение временного ряда в последовательных периодах.

Одной операции разности обычно достаточно для достижения стационарности. Тем не менее, иногда вам нужно сделать этот процесс много раз. Вы можете использовать ADF или KPSS, чтобы оценить необходимое количество разностных шагов. Библиотека pmdarima заключает этот процесс в функцию ndiffs:

from pmdarima.arima import ndiffs

# how many differencing steps are needed for stationarity?
ndiffs(log_gdp, test='adf')
# 2

В этом случае для серии логарифмических GPD требуется 2 шага разности для стационарности:

diff_log_gdp = log_gdp.diff().diff()

Ключевые выводы

  • Тренд является ключевым компонентом временного ряда;
  • Временные ряды, демонстрирующие тренд, нестационарны, поскольку средний уровень непостоянен;
  • Тренд временного ряда может быть детерминированным или стохастическим. Детерминированные тренды моделируются с помощью четко определенных математических функций, в то время как стохастические тренды могут изменяться случайным образом;
  • Стохастические тренды можно обнаружить с помощью тестов на единичный корень, таких как ADF или KPSS;
  • Операции разности используются для удаления стохастических трендов из временного ряда.

Спасибо за прочтение и до встречи в следующей истории!

Рекомендации

[1] Данные временных рядов ВВП для разных стран (Лицензия: CC0: Public Domain)

[2] Стохастические и детерминированные тренды // Прогнозирование: принципы и практика.

[3] Случайное блуждание — введение и свойства Бена Ламберта.