Прогноз по методу экспоненциального сглаживания Хольта

Автор: Алексей Батурин.

grafikХольт развил модель простого экспоненциального сглаживания (прочитать статью о модели прогноза "Простое экспоненциальное сглаживание") и добавил в неё тренд.

Метод Хольта используется для прогнозирования временных рядов, когда есть тенденция к росту или падению значений временного ряда. А также для рядов, когда данные есть не за полный цикл, и сезонность еще не выделить (например, за неполный год для прогноза по месяцам).

Из данной статьи вы узнаете:

1. Как в Excel рассчитать прогноз по методу экспоненциального сглаживания Хольта;

2. Как оценить точность модели и подобрать оптимальные коэффициенты сглаживания.

Если временной ряд имеет тенденцию к росту или падению, то вместе с оценкой текущего уровня ряда (как в простом экспоненциальном сглаживании) стоит выделить тренд. Для управления уровнем и наклоном в модели Хольта вводится 2 коэффициента сглаживания – коэффициент сглаживания ряда и тренда.

Как рассчитать прогноз по методу Хольта:

  1. Рассчитываем экспоненциально-сглаженный ряд;
  2. Определяем значение тренда;
  3. Делаем прогноз.

Рассмотрим подробнее:

1. Рассчитываем экспоненциально-сглаженный ряд:

Lt=k*Yt+(1-k)*(Lt-1-Tt-1), где

  • Lt  – сглаженная величина на текущий период;
  • k – коэффициент сглаживания ряда;
  • Yt – текущие значение ряда (например, объём продаж);
  • Lt-1 – сглаженная величина за предыдущий период;
  • Tt-1 – значение тренда за предыдущий период;

Lt (Сглаженная величина текущий период) = k(коэффициент сглаживания ряда)* Yt(текущие значение ряда (например, объём продаж))+(1-коэффициент сглаживания ряда)*( Lt-1(сглаженная величина за предыдущий период) -Tt-1(тренд за предыдущий период)

Коэффициент сглаживания ряда k задается вами в ручную и находится в диапазоне от 0 до 1.

Для первого периода в начале данных экспоненциально-сглаженный ряд равен первому значению ряда (например, объему продаж за первый месяц) L1=Y1;

В приложенном файле вводим значение L первого периода и рассчитываем сглаженную величину для всего массива данных:

сглаженный ряд метод Хольта
 

2. Определяем значение тренда

Tt=b*(Lt - Lt-1)+(1-b)*Tt-1,  где:

  • Tt – значение тренда на текущий период;
  • b – коэффициент сглаживания тренда;
  • Lt – экспоненциально сглаженная величина за текущий период;
  • Lt-1 – экспоненциально сглаженная величина за предыдущий период;
  • Tt-1 – значение тренда за предыдущий период.

Tt(значение тренда на текущий период)=b(коэффициент сглаживания тренда)*(Lt (экспоненциально сглаженная величина за текущий период)- Lt-1(экспоненциально сглаженная величина за предыдущий период))+(1-b(коэффициент сглаживания тренда))*Tt-1 (значение тренда за предыдущий период)

Коэффициент сглаживания тренда b задается вами в ручную и находится в диапазоне от 0 до 1.

Значение тренда для первого периода равно 0  (T1 =0);

В приложенном файле рассчитаем значения тренда:

расчет тренда

3. Делаем прогноз по методу Хольта

Прогноз на p периодов вперед равен:

Ŷt+p = Lt + p *Tt, где

  • Ŷt+p – прогноз по методу Хольта на p период;
  • Lt – экспоненциально сглаженная величина за последний период;
  • p – порядковый номер периода, на который делаем прогноз;
  • Tt – тренд за последний период.

Ŷt+p (Прогноз по методу Хольта)= Lt (экспоненциально сглаженная величина за последний период)+ p (количество периодов вперед, на которое делаем прогноз) *Tt (тренд за последний период)

Во вложенном файле сделаем прогноз на 3 месяца.

Для этого заполним номера периодов, на 3 месяца вперед

 период для прогноза

Вводим формулу прогноза в ячейку. Для этого к экспоненциальному ряду за последний период прибавляем значение тренда за последний период, умноженное на номер периода для прогноза. Также зафиксируем ссылку на последнее значение экспоненциально сглаженного ряда и тренда — для этого выделяем ссылку и нажимаем F4:

рассчитываем прогноз по методу экспоненциального сглаживания Хольта

Протягиваем формулу на 3 периода вперед, получаем прогноз:

прогноз по методу Хольта

Отмечу, что при появлении новых данных прогноз по методу Хольта необходимо пересчитывать. Также при подготовке данных для прогноза всегда стоит очищать данные от факторов, которые в прогнозном периоде не повторятся (например, прирост продаж по мероприятию по стимулированию сбыта) или учитывать запланированные факторы, которые дадут дополнительный прирост продаж (например, ввод продукции в розничную сеть).

2. Как оценить точность модели Хольта и подобрать оптимальные коэффициенты сглаживания ряда и тренда.

Для этого:

  1. Рассчитаем значения прогнозной модели;
  2. Определим ошибку модели;
  3.  Рассчитаем показатель точность прогноза;
  4. Подберем оптимальные коэффициенты сглаживания ряда и тренда;

1. Рассчитаем значения прогнозной модели.

Рассчитываем прогноз на 1 период вперед для каждого месяца, когда продажи нам известны (во вложенном файле столбец "прогноз на 1 период для анализа ").

Прогноз на 1 период для анализа = значение экспоненциально-сглаженного ряда за предыдущий период + значение тренда за предыдущий период. (значение тренда мы не умножаем на p, т.к. прогноз делаем на 1 период, а в этом случае p=1).

оценка модели прогноза 

2. Рассчитаем ошибку модели = из фактических данных вычитаем прогноз на этот период.

расчет ошибки модели прогноза

3. Рассчитаем точность прогноза

Для этого определим отклонение ошибки модели от прогнозной модели = отношение ошибки модели в квадрате к фактическому значению в квадрате.

среднеквадратическое отклонение

Рассчитаем точность прогноза = единица минус среднее значение отклонений ошибок модели от прогнозной модели

точность модели

Для подбора коэффициентов сглаживания ряда и тренда k и b, при которых прогноз будет максимально точным, нам необходимо последовательно перебрать все значения k и b в диапазоне от 0 до 1 и найти такое сочетание, при котором точность прогноза будет максимальна приближена к 100%.

Если вы хотите подобрать коэффициенты, которые будут делать максимально точный прогноз на 3 периода вперед (а не на 1, как в примере выше), то на анализируемых данных вам надо оценить модель с прогнозом на 3-й период. Для этого на входящих данных рассчитываем прогноз по следующей формуле:

Ŷt+3 = Lt + 3 *Tt

оценка модели прогноза на 3 месяца

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

Последовательно перебирая коэффициенты k и b от 0 до 1 с шагом 0,1 , находим такое сочетание, которое дает максимальное значение точности прогноза.

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

Точных вам прогнозов!

Присоединяйтесь к нам!

Скачивайте бесплатные приложения для прогнозирования и бизнес-анализа:

Novo Forecast - прогноз в Excel - точно, легко и быстро!

  • Novo Forecast Lite - автоматический расчет прогноза в Excel.
  • 4analytics - ABC-XYZ-анализ и анализ выбросов в Excel.
  • Qlik Sense Desktop и QlikView Personal Edition - BI-системы для анализа и визуализации данных.

Тестируйте возможности платных решений:

  • Novo Forecast PRO - прогнозирование в Excel для больших массивов данных.

Получите 10 рекомендаций по повышению точности прогнозов до 90% и выше.

Зарегистрируйтесь и скачайте решения

Статья полезная? Поделитесь с друзьями

 

Комментарии   

#26 Алексей Батурин 16.06.2016 07:06
Цитирую ольга:
В статье написано
Последовательно перебирая коэффициенты k и b от 0 до 1 с шагом 0,1 , находим такое сочетание, которое дает максимальное значение точности прогноза.
Может есть какая то зависимость?)
У некоторых прогнозов не получается увеличить выше 88%.
Хотя может и данная модель прогнозирования не вполне подходит :D

Ольга, здравствуйте. Зависимость есть, чем коэффициент ближе к нулю, тем больше влияние длительных тенденций, чем ближе к единице, последних изменений в ряде. Модель подходит для прогнозирования неполных рядов, когда не можем выделить сезонность :-)
Цитировать
#25 ольга 16.06.2016 05:05
В статье написано
Последовательно перебирая коэффициенты k и b от 0 до 1 с шагом 0,1 , находим такое сочетание, которое дает максимальное значение точности прогноза.
Может есть какая то зависимость?)
У некоторых прогнозов не получается увеличить выше 88%.
Хотя может и данная модель прогнозирования не вполне подходит :D
Цитировать
#24 Алексей Батурин 13.07.2015 15:00
Цитирую Елена Семчук:
Цитирую Алексей Батурин:
Цитирую Любовь:
Могли бы Вы еще уточнить один момент по Вашим подсчетам, пожалуйста. У Вас для подбора коэффициентов на 3 периода вперёд немного запутано расписаны подсчеты:
1. На синем фоне написано "Для оценки точности прогноза на 6 периодов", а ниже на красном "Прогноз на 3 периода для анализа".
2. Потом не совсем понятно почему отступаются две верхние строчки,потом нумеруются периоды 1 и 2, но также не заполняются.
3. И только на пятой строчке начинаются подсчеты, но с пропуском данных за март. И заканчиваются эти подсчеты на августе. Хотя для одного периода была сказана фраза "Рассчитываем прогноз на 1 период вперед для каждого месяца", а тут получается и не сначала, и не до конца, и еще пропускается один месяц.

Вот я сделала, например, прогноз на 6 месяцев вперед. И мне нужно оценить точность такого прогноза с моими коэффициентами(k,b). Как всё-таки правильно подсчитать в таком случае точность прогноза?


Любовь, в данном примере под синими надписями " Для оценки точности прогноза " мы подбираем коэффициенты, которые дадут наименьшее отклонение прогноза от факта при прогнозе на 1 период и при прогнозе на 3 периода вперед.

Поэтому мы вначале делаем прогноз на 1 период вперед и сравниваем отклонения с фактом
Потом мы делаем прогноз на 3 периода вперед и сравниваем с фактом.

В данной статье не написано, как оценить точность модели, если мы берем 100% данных и рассчитываем прогноз на 6 месяцев.
В этом файле сделал пример с расчетом как это делается:
https://dl.dropboxusercontent.com/u/28745003/Forecast-Holt-tochnost.xls
Для оценки точности прогноза нам надо рассчитать

1. Значение модели прогноза для каждого периода в прошлом
2. Оценить среднеквадратическую ошибку модели и фактических значений.
В преложенном файле в последних столбцах как раз нужный вам расчет.

Будут вопросы, пишите. Буду рад помочь.
Спасибо!



Алексей, здравствуйте.
Решила "освежить" в памяти методы, которые Вы даете статьях.
Помотрела пример оценки точности модели, ссылку на который вы давали в комментариях (https://dl.dropboxusercontent.com/u/28745003/Forecast-Holt-tochnost.xls)
вопрос, почему в формуле извлекаете КОРЕНЬ? Столбец R
Например, при оценке точности прогноза в модели Хольта-Винтерса Вы не пишите, что нужно извлечь корень при расчете "Отклонение ошибки модели от прогнозной модели".


Елена, здравствуйте.
Файл не скачать.
Точность можно считать по разному, главное понимать, к чему это приводит и что с этим потом делать. Можно возводить в квадрат с корнем, можно возводить в квадрат, можно по модулю...
Главное выбрать такой способ оценки, который приведет к лучшему результату. В программе у нас, например, рассчитывается 6 разных показателей точности и ошибок, которые в итоге влияют на выбор коэффициентов и модели.
Цитировать
#23 +1 Резеда 07.05.2015 21:55
Это я учла)
Цитировать
#22 Алексей Батурин 07.05.2015 21:24
Цитирую Резеда:
Спасибо большое за ответ!
У меня уже есть данные не за 13 кварталов, а за 25. Решила воспользоваться демо-версией программы Forecast. Поставила автоматический выбор модели, программа выбрала модель Хольта-Винторса


Резеда, в программе еще главное выберите, что прогноз по кварталам - по умолчанию стоят месяца.
Цитировать
#21 Резеда 07.05.2015 20:12
Спасибо большое за ответ!
У меня уже есть данные не за 13 кварталов, а за 25. Решила воспользоваться демо-версией программы Forecast. Поставила автоматический выбор модели, программа выбрала модель Хольта-Винторса
Цитировать
#20 Алексей Батурин 06.05.2015 22:39
Цитирую Резеда:
Добрый день!
У меня есть данные по 13 периодам, необходимо спрогнозировать на следующие 9 периодов. Возникли трудности в понимании, когда начала оценивать точность модели.. Объясните, пожалуйста, как лучше подбирать коэффициенты? Оценивания модель с прогнозом на 1 или 3 периода?
В исходных данных имеется тенденция как к увеличению, так и к уменьшению.. Но спрогнозированные данные с увеличением периода только уменьшаются.. Может ли такое быть? Или я что-то неправильно делаю?


Резеда, здравствуйте.
Почему хотите именно Хольтом прогнозировать?
Уже есть 13 периодов - это месяца?

Попробуйте, модель с трендом и сезонностью
http://www.4analytics.ru/prognozirovanie/kak-rasschitat-prognoz-prodaj-s-uchetom-rosta-i-sezonnosti-v-excel.html

Или скользящей средней
http://www.4analytics.ru/prognozirovanie/raschet-prognoza-prodaj-po-metodu-skolzyasheie-sredneie-v-excel.html

Эти модели больше подходят для длительных прогнозов.

А коэффициенты можно визуально подбирать, постройте график, если видите, что модель при выбранных коэффициентах строит прогноз в который вы верите - визуально, то используете их.
Или
Тестируете коэффициенты на тестовом отрезке и используете эти коэффициенты. Т.к. вы хотите сделать прогноз на 9 месяцев, то тестировать желательно минимум на 3-4 месяца.

Но возможно вам вообще стоит использовать многофакторную модель прогноза, если продажи только развиваются:
http://www.4analytics.ru/prognozirovanie/ot-prognoza-k-planu-prodaj-na-primere-mnogofaktornoie-modeli.html
Цитировать
#19 Резеда 06.05.2015 12:42
Добрый день!
У меня есть данные по 13 периодам, необходимо спрогнозировать на следующие 9 периодов. Возникли трудности в понимании, когда начала оценивать точность модели.. Объясните, пожалуйста, как лучше подбирать коэффициенты? Оценивания модель с прогнозом на 1 или 3 периода?
В исходных данных имеется тенденция как к увеличению, так и к уменьшению.. Но спрогнозированн ые данные с увеличением периода только уменьшаются.. Может ли такое быть? Или я что-то неправильно делаю?
Цитировать
#18 Алексей Батурин 21.02.2015 07:37
Цитирую Дмитрий:
Алексей, так при расчете прогноза на 3 периода на май мы берем шаг в 3 месяца (Lt, Tt февраля), при расчете на июнь, судя по файлу с примером, мы берем шаг уже в 2 месяца (т.к. Lt, Tt за апрель). Разве при расчете июньского прогноза (на 3 периода) мы должны брать не мартовские данные Lt, Tt?

Хочется до конца разобраться в этой методике. Спасибо.


Дмитрий, здравствуйте.

В файле была ошибка, исправил. сделал шаг 3 месяца.

Будут вопросы, пишите!

Спасибо!
Цитировать
#17 Дмитрий 20.02.2015 17:02
Алексей, так при расчете прогноза на 3 периода на май мы берем шаг в 3 месяца (Lt, Tt февраля), при расчете на июнь, судя по файлу с примером, мы берем шаг уже в 2 месяца (т.к. Lt, Tt за апрель). Разве при расчете июньского прогноза (на 3 периода) мы должны брать не мартовские данные Lt, Tt?

Хочется до конца разобраться в этой методике. Спасибо.
Цитировать

Добавить комментарий