Продолжаем тему экспоненциального сглаживания, начатую статьей Экспоненциальное сглаживание.

В прошлый раз было рассмотрено простое экспоненциальное сглаживаниеsingle exponential smoothing, сегодня я рассмотрю двойное экспоненциальное сглаживаниеdouble exponential smoothing.

Простое экспоненциальное сглаживание проявляет не особо выдающиеся характеристики на данных показывающих наличие четкой тенденции или тренда. Ну то есть, оно его вроде как «ловит», но не очень хорошо.

Чтобы работать с данными, показывающими четкую тенденцию, придумали двойное экспоненциальное сглаживание.

Идея его такова — в формулу простого экспоненциального сглаживания, см. Экспоненциальное сглаживание, вводят дополнительный член, который изменяет вклад предыдущего значения в зависимости от тенденции.

Обобщенные формулы выглядят так:

S_t = \alpha y_t + (1-\alpha)(S_{t-1}+b_{t-1}),
где \alpha принимает значение из диапазона [0;1)

b_t = \gamma (S_t - S_{t-1}) + (1-\gamma)b_{t-1},
где \gamma принимает значение из диапазона [0;1]

Обратите внимание, что здесь для расчета текущего S используется текущее же значение y.

Как и в случае простого экспоненциального сглаживания, существует несколько способов выбора начальных параметров, а именно, S и b, которые оказывает влияние на конечный результат.

Как правило, используют следующие способы (и я тоже их использую):

S_1=y_1
b_1=y_2-y_1

Также для расчета начального b предлагают и такие варианты:

b_1=\frac{ (y_2-y_1) + (y_3-y_2) + (y_4-y_3)}{3}
b_1=\frac{y_n-y_1}{n-1}

И опять-таки, как и в случае простого экспоненциального сглаживания, выбор оптимальных показателей \alpha и \gamma — задача нетривиальная, и один из способов — метод перебора с последующим выбором оптимального значения по критерию минимума среднеквадратической ошибки.

Есть, правда, одна тонкость — так как в формуле присутствует текущее значение y, то ошибку нельзя считать как разность между текущим S и текущим y — очевидно, она будет равна 0 при \alpha равном 1 (это, в общем, выколотый случай). Поэтому в качестве ошибки используют разность между прогнозируемым значением (см. ниже) и следующим фактическим значением.

Теперь про прогнозирование.

Для прогнозирования следующего значения используется формула

S_{t+1}=S_t + b_t

для прогнозирования нескольких значений

S_{t+n}=S_t + nb_t

В калькуляторе ниже можно изменять значения \alpha и \gamma, а также сравнить результат с простым экспоненциальным сглаживанием.
На графике для справки показано следующее прогнозируемое значение, т. е. сглаженные средние продлены на один отсчет дальше фактических данных.

Двойное экспоненциальное сглаживаниеCreative Commons Attribution/Share-Alike License 3.0 (Unported)
Ряд динамики
Импортировать данные
Добавить Импортировать данные Очистить таблицу
0.12345678901234567890
 
 
Двойное экспоненциальное сглаживание

Для данных по умолчанию лучшими, навскидку, являются коэффициенты \alpha=0.6 и \gamma=0.05. Замечу, что ошибка у двойного сглаживания с коэффициентами по умолчанию больше, чем у простого сглаживания, потому что двойное сглаживание хуже ведет себя на неожиданных разворотах тенденции (см. колонку прогноз и сравнивай со следующим фактическим значением) — в таких случаях отличие прогноза от фактического значения дает большую ошибку.