Экспоненциальное сглаживание

Теория экспоненциального сглаживания

Я тут было собрался написать еще одну статью о технических индикаторах и рассказать про экспоненциальное скользящее среднее (exponential moving average, EMA), однако получилось так, что, изучая теорию этого индикатора, я наткнулся на довольно интересные вещи, относящиеся все-таки больше к статистике, нежели к рынку акций или forex.

Поскольку на этом сайте статистика уже затрагивалась, я решил написать отдельную статью на эту тему, а именно, статью, посвященную методу экспоненциального сглаживания (exponential smoothing) в анализе рядов динамики (time series)

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

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

PLANETCALC, Постоянная средняя - график

Постоянная средняя - график

Постоянная средняя
Файл очень большой, при загрузке и создании может наблюдаться торможение браузера.

Ряд динамики

Значение
Записей:

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

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

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

Теперь опишем это определение формулами.
Традиционно обозначим наблюдаемую величину как y, а сглаженное среднее как S.
Тогда,
S_1 не определено
S_2 = y_1
S_3 = \alpha y_2 + (1-\alpha)S_2

и, обобщенно

S_t = \alpha y_{t-1} + (1-\alpha)S_{t-1}

где, \alpha принимает значение из диапазона [0;1)

Откуда берется экспонента — раскроем предыдущие средние

S_t = \alpha y_{t-1} + (1-\alpha)S_{t-1} = \alpha y_{t-1} + (1-\alpha)[\alpha y_{t-2} + (1-\alpha)S_{t-2}] = \alpha y_{t-1} + (1-\alpha)[\alpha y_{t-2} + (1-\alpha)[\alpha y_{t-3} + (1-\alpha)S_{t-3}]]
S_t = \alpha y_{t-1} + \alpha(1-\alpha)y_{t-2} + \alpha(1-\alpha)^{2}y_{t-3} + (1-\alpha)^{3}S_{t-3}

и, обобщенно

S_t=\alpha\sum_{i=1}^{t-2}(1-\alpha)^{i-1}y_{t-i} + (1-\alpha)^{t-2}S_2, для t > 2

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

Предположим, что y_1=1000, посмотрим, как меняется его вклад для различных S.

PLANETCALC, Изменение веса значения при экспоненциальном сглаживании

Изменение веса значения при экспоненциальном сглаживании

Знаков после запятой: 4
Значение y1
 
Изменение веса значения при экспоненциальном сглаживании
Файл очень большой, при загрузке и создании может наблюдаться торможение браузера.

Для S2 берется как есть, а вот в S3 при коэффициенте альфа равном 0.5, вклад y1 будет всего только 250, в S4 — 125, и так далее.

При этом большое значение имеет выбор коэффициента \alpha. Если поиграться с параметром «a» в калькуляторе (см. выше), то становится ясно, что чем выше его значение, тем быстрее отсчет фактически перестает влиять на сглаженное среднее, и наоборот - чем ниже, тем дольше сохраняется его влияние.

Соответственно, при малых \alpha, метод получения S2 оказывает большое влияние на результат. Присвоение S_2=y_1 это только один из методов. В качестве альтернативы начальным значением может выступать простое среднее по первым нескольким значениям y, например.

Но как же выбрать \alpha? Какой показатель больше всего подходит для моделирования данного ряда динамики? Никаких математических формул по точному расчету \alpha нет. Этот показатель чаще всего выбирается методом подбора, или методом «проб и ошибок» (англ. trial and errors). Я еще пару раз видел название «метод научного тыка» :)

Метод заключается в том, что берется несколько значений \alpha и потом среди них выбирается одно лучшее. Что же является критерием «лучшести» в нашем случае?

Таким критерием является минимизация среднеквадратической ошибки (mean of squared errors). Ошибка — это отклонение фактического значения от прогнозного. Для каждого значения S ее возводят в квадрат, чтобы избавиться от влияния знака, и затем вычисляют среднее по всем значениям. Тот показатель \alpha, для которого среднее значение минимально и является лучшим из нескольких.

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

Следующее значение ряда прогнозируется прямо по формуле
S_{forecast} = \alpha y_{last} + (1-\alpha)S_{last}

В случае если надо получить прогноз на большее число отсчетов, используется техника под названием bootstrapping (даже не знаю, какой адекватный русский термин здесь подойдет). Последнее известное значение «y» принимается за константу, и используется в рекурсивной формуле

S_{forecast+n} = \alpha y_{origin} + (1-\alpha)S_{forecast+n-1}

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

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

PLANETCALC, Расчет экспоненциально сглаженного среднего

Расчет экспоненциально сглаженного среднего

Ряд динамики

Значение
Записей:

Знаков после запятой: 2
Среднеквадратическая ошибка 1
 
Среднеквадратическая ошибка 2
 
Среднеквадратическая ошибка 3
 
Экспоненциальное сглаживание
Файл очень большой, при загрузке и создании может наблюдаться торможение браузера.

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

Ссылка скопирована в буфер обмена
PLANETCALC, Экспоненциальное сглаживание

Комментарии