Простая скользящая средняя (SMA, Simple Moving Average): формула, пример расчёта, сравнение
Простая скользящая средняя (SMA, Simple Moving Average) — один из самых простых методов прогнозирования спроса: прогноз на следующий период равен среднему значению продаж за несколько предыдущих периодов. В этой статье разберём формулу, покажем на реальных числах, как выбор ширины окна усреднения влияет на точность прогноза, и сравним метод с Forecast NOW!.
Результаты сравнения обобщены на графике ниже: по оси Х — товары, по оси Y — на сколько процентов Forecast NOW! оказывается лучше, чем простая скользящая средняя. Как можно видеть, почти всегда алгоритм Forecast NOW! прогнозирует точнее — ошибка в среднем ниже на 40 %. Подробнее об алгоритме и сравнении читайте ниже.
Описание модели
Формула простой скользящей средней
Идея алгоритма: в будущем будет продано примерно столько, сколько в среднем продавалось в прошлом. Ширина окна усреднения T определяет, сколько прошлых периодов учитывается при расчёте:
Y(t+1) = (1 / T) × [C(t) + C(t−1) + ... + C(t−T+1)]
где Y(t+1) — прогноз на период t+1, T — число прошлых периодов, C(t) — фактические продажи в период t.
Как ширина окна задаёт «память» модели
Чем больше значение T, тем более гладким и инерционным получается прогноз: если взять окно T, равное всему периоду наблюдений, прогноз выродится в среднее за всё время. Уменьшая T, можно управлять «памятью» модели — насколько быстро она реагирует на изменение продаж.
Простыми словами: SMA не пытается понять, почему спрос меняется — она просто усредняет недавнюю историю. Узкое окно даёт модель, которая быстро подстраивается под последние колебания (и рискует принять случайный всплеск за новую норму); широкое окно сглаживает шум, но медленно реагирует на реальные изменения тренда.
Пример: как ширина окна влияет на точность
Считаем скользящую среднюю вручную
Возьмём продажи товара за шесть недель подряд: 40, 50, 45, 55, 60, 50 единиц. Последняя неделя — шестая, значит по формуле считаем прогноз на седьмую, подставляя в неё T последних значений:
T = 3: Y(7) = (50 + 60 + 55) / 3 = 165 / 3 = 55 единиц T = 4: Y(7) = (50 + 60 + 55 + 45) / 4 = 210 / 4 = 52,5 единицы T = 6: Y(7) = (50 + 60 + 55 + 45 + 50 + 40) / 6 = 300 / 6 = 50 единиц
Три прогноза на одном и том же ряду расходятся на 5 единиц, то есть на 10 %. Разница берётся только из ширины окна: при T = 6 слабая первая неделя (40 единиц) тянет прогноз вниз наравне с последней, при T = 3 её в расчёте уже нет.
Что даёт разное окно на реальных продажах
На реальных данных о продажах товара сравнивались модели SMA с шириной окна T = 3, 4 и 6 недель. Ошибка прогнозирования (RMSE, чем меньше — тем точнее) получилась такой:
Как это выглядит на графиках. При узком окне T = 3 линия прогноза повторяет недавние колебания продаж:
Рисунок 1. Скользящая средняя при T = 3
При T = 4 прогноз становится глаже, а ошибка на этом товаре — минимальной:
Рисунок 2. Скользящая средняя при T = 4
При T = 6 сглаживание максимальное: модель почти не реагирует на отдельные всплески, но и отстаёт от реальных изменений спроса:
Рисунок 3. Скользящая средняя при T = 6
Почему лучшее окно видно только задним числом
Для этого конкретного товара оптимальным оказалось окно шириной 4 недели — не самое узкое и не самое широкое из проверенных. Важная оговорка: это разбор на исторических данных задним числом, когда уже известно, какое окно дало наименьшую ошибку. В реальной работе с ассортиментом заранее неизвестно, какая ширина окна окажется лучшей для конкретного товара, и она может со временем меняться вместе с характером спроса.
Где скользящая средняя перестаёт работать
Простая скользящая средняя разделяет ограничения, общие для всех классических методов прогнозирования (сюда же относятся авторегрессия, экспоненциальное сглаживание, метод Хольта—Винтерса):
- Нет управления уровнем сервиса. SMA выдаёт одно число («продадим столько же, сколько в среднем продавали») и не даёт способа явно задать нужную долю покрытия спроса — например, «обеспечить уровень сервиса 95 %» и получить под него объём запаса.
- Проблема масштабирования. Подбирать оптимальную ширину окна вручную для каждого товара на складе с широким ассортиментом практически невозможно, а неверно подобранное T на одном товаре не переносится на другой с иным характером спроса.
- Узкая область применимости. Усреднение по окну сглаживает не только шум, но и реальные всплески: разовая крупная отгрузка растворяется в среднем и почти не влияет на заказ. Поэтому SMA держится только на ровном спросе — а он встречается примерно у 6 % ассортимента продуктового супермаркета.
Когда стоит использовать простую скользящую среднюю
Скользящая средняя — алгоритм первого поколения: она отвечает на вопрос «сколько продадим», но ничего не говорит о том, сколько держать на складе. Уровень сервиса и запас приходится считать отдельно. Для остального ассортимента (а это подавляющее большинство товаров) лучше прогнозировать не спрос напрямую, а товарные запасы: подробнее в статье «Почему нужно прогнозировать товарные запасы, а не спрос?».
Сравнение простой скользящей средней с Forecast NOW!
Важное замечание: сравнение ниже построено на ошибке прогнозирования RMSE, и это не тот способ, которым мы рекомендуем выбирать алгоритм. Математическая ошибка не показывает, во сколько обойдётся промах в деньгах: она не различает дефицит и излишек и не учитывает страховой запас. Мы приводим RMSE только потому, что это привычная метрика, по которой методы сопоставимы между собой. Почему она не годится для решений о запасах — в статье почему мы не считаем MAPE, RMSE и другие математические ошибки. Рекомендуемый способ сравнения — имитационное моделирование денежных потерь на реальном ассортименте.
Условия сравнения
Для сравнения с Forecast NOW! были построены прогнозы методом SMA с разной шириной окна (от 2 до 8), и для каждого товара выбирался лучший результат по ошибке на исторических данных. Оговоримся, что в реальной эксплуатации так поступить нельзя, поскольку заранее неизвестно, какое окно окажется лучшим. Даже при этом заведомо оптимистичном условии для скользящей средней Forecast NOW! в среднем оказывается точнее примерно на 40 % по ошибке RMSE.
На графике по оси X отложены товары, по оси Y — на сколько процентов Forecast NOW! оказался лучше или хуже простой скользящей средней:
Рисунок 4. Сравнение алгоритма Forecast NOW! и простой скользящей средней
Исходные таблицы ошибок
Ниже — исходные данные этого сравнения: сначала ошибки моделей скользящего среднего с разной шириной окна, затем сопоставление лучшей из них с Forecast NOW!.
Рисунок 5. Ошибки прогнозирования для моделей скользящего среднего с шириной окна от 2 до 8
Рисунок 6. Сравнение прогнозов модели скользящего среднего и Forecast NOW!
Частые вопросы
Что такое простая скользящая средняя в прогнозировании?
Метод прогнозирования, при котором прогноз на следующий период равен среднему арифметическому продаж за несколько предыдущих периодов (ширина окна T). Чем шире окно, тем более сглаженным получается прогноз.
Как выбрать ширину окна T?
Как правило, эмпирически — сравнивая ошибку прогноза (например, RMSE) на исторических данных при разных значениях T и выбирая наименьшую. Оптимальное значение зависит от характера спроса конкретного товара и может со временем меняться.
Почему SMA даёт меньшую точность, чем более сложные методы?
Потому что метод не различает вклад разных периодов — все они учитываются с одинаковым весом, и модель не может отдельно учесть тренд или сезонность. Более сложные методы (например, экспоненциальное сглаживание или метод Хольта—Винтерса) присваивают более свежим данным больший вес и способны явно моделировать тренд и сезонность.
Для каких товаров подходит SMA?
Для позиций с ровными продажами, где нет промо и разовых крупных отгрузок: усреднение по окну их всё равно сгладит. В типовом продуктовом супермаркете таких товаров около 6 %.
Чем скользящая средняя отличается от среднего за весь период?
Только тем, что в расчёт берутся последние T периодов, а не вся история. Окно «скользит»: с каждым новым периодом старшее значение выпадает, новое добавляется. Если задать T равным длине всей истории, скользящая средняя выродится в обычное среднее и перестанет реагировать на изменения спроса вообще.
Что происходит с прогнозом, если в окно попал промо-всплеск?
Он размажется по всем T периодам окна с тем же весом, что и обычные недели, и будет завышать прогноз, пока не выпадет из окна. Чем уже окно, тем сильнее перекос: при T = 3 одна акционная неделя двигает прогноз на треть своего отрыва от нормы.
Нужно ли пересматривать ширину окна со временем?
Да. Оптимальное T привязано к характеру спроса, а он меняется: товар выходит из новинок, уходит в сезон, попадает в регулярное промо. Окно, подобранное год назад, к текущему ряду продаж может уже не подходить, поэтому подбор стоит повторять, а не фиксировать раз и навсегда.
Вывод
Простая скользящая средняя оправдана там, где спрос ровный, позиций немного, а прогноз нужен быстро: формула считается в Excel за минуту и понятна любому закупщику без объяснений. Как только появляются промо, сезонность и тысячи SKU, равный вес всех периодов начинает работать против вас — окно приходится переподбирать вручную по каждому товару, а запас считать отдельно от прогноза. Задачи такого масштаба закрывают системы прогнозирования спроса и запасов, например Forecast NOW!: модель подбирается под каждый товар автоматически, а на выходе сразу объём заказа под заданный уровень сервиса.
Обзор других методов
Остальные методы цикла — с теми же условиями сравнения. В скобках — поколение алгоритма: чем выше номер, тем позже метод появился и тем больше факторов он учитывает.
- Экспоненциальное сглаживание (ES) — 1–2 поколение
- Метод Хольта—Винтерса — 1–2 поколение
- Авторегрессия (AR) — 1–2 поколение
- Вероятностное прогнозирование — 4 поколение
