Как подготовить историю продаж, чтобы получить корректный прогноз спроса

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

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

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

Дефициты

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

Как дефицитные периоды влияют на статистику

Представим, что в прошлом месяце у нас были дни, когда товара не было на полках и продажи были нулевые. В другие месяцы мы продали 600, 500 и 600 единиц. В месяц, когда случился дефицит, продажи упали до 200. Строим прогноз по самой простой модели — среднему: 

(600+500+600+200)/4 = 475

Что будет, если мы закажем 475 единиц? Мы искусственно ограничим спрос. Неважно, сколько захотят купить, — мы продадим не более 475. Обратите внимание, что в недефицитные месяцы спрос был гораздо выше. Следующий заказ, который мы сделаем с учетом этой закупки, станет еще меньше — 468 единиц. Мы попадем в замкнутый круг дефицита.

Как дефицит сказывается на прогнозе

475 единиц не хватит ни на один из предыдущих недефицитных месяцев

Как обнаружить дефицитные периоды

Первый шаг — пометим как дефицитные те дни из статистики, когда остаток на складе был нулевой и мы не могли ничего продать. На диаграмме ниже это 12.01, 19.01 и 20.01. Средний объем продаж до чистки — 8,49 единиц. После того, как мы уберем дефицитные дни из расчетов, среднее станет уже 9,85 единиц.

график: дни с нулевым остатком, как дефицитные.

Отмечаем дни с нулевым остатком, как дефицитные.
 

Второй шаг — найдем дефициты, которые связаны с псевдокомплектами. Что это означает? Есть товары, которые всегда покупают в определенном количестве или в наборе с другими. Если у вас на складе находится 3 свечи, а обычно покупают 4, то это потенциальный дефицит, хотя на первых двух шагах вы его не распознали.

Определим такие комплекты (они могут состоять и из разных товаров) и пометим дефицитными дни, когда запас этих товаров был ниже необходимого минимума. В примере со свечами необходимый минимум — 4 штуки. 

Подумайте, какие комплекты есть среди ваших товаров, и отслеживайте их наличие.

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

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

Почему на этом этапе нужно исключать аномальные продажи? Допустим, в месяц в среднем продается 1 тысяча болтов, а в январе кто-то купил 12 тысяч. Если не убрать эту продажу из истории, среднее по одному году получится 2 тысячи штук. Все продажи окажутся ниже среднего, и мы пометим все дни как дефицитные.

В нашем примере средний объем продаж по всем дням, кроме 12.01, 19.01 и 20.01, равен 9,85 единиц, а медиана — 11 единиц.
Воспользуемся медианой и пометим как дефицитные все периоды, когда остаток на складе был ниже 11 единиц. 

График: дни с остатком ниже уровня медианы как дефицитные.

Отмечаем дни с остатком ниже уровня медианы как дефицитные.

Средний объем продаж вначале был 8,49 единиц, а стал 9,95 единиц. Разница — почти 1,5 единицы. Это 17% от всего объема спроса!

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

Как восстановить историю спроса в периоды дефицита

Мы пометили дефицитные периоды в истории продаж. Что с ними делать? Строить прогноз на основе такой истории нельзя — попадем в порочный круг постоянного дефицита.

График: постоянный дефицит товаров.

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

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

Допустим, мы продаем товар, который был в наличии только 5% времени. За это время он каждый день продавался большими объемами. Если бы товар был в наличии постоянно, мы продали бы в 20 раз больше? Вряд ли. Особенно если речь идет об уникальном товаре. Скорее всего, спрос не успевает насытиться — когда товар есть, его покупают с очень большой скоростью. В этом случае, если мы исключим дефицитные периоды, а потом построим прогноз, то закажем значительно больше товара, чем нужно. 

Исключайте дефицитные периоды только в том случае, если история продаж достаточно длинная и дефицитные периоды занимают не больше 20-30%.

Второй вариант — не просто удалять дефицитные периоды, а заменять их на статистически более достоверные продажи. Среднедневные продажи не слишком подходят — среднее неустойчиво к выбросам. Лучше посчитать, как часто встречается тот или иной объем продаж в истории, и выбрать тот, который встречается чаще всего. Или использовать медиану.

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

Что делать, если дефицит случился после небольшой истории продаж, а алгоритм требует на вход большее число периодов? Просто прогнозируйте задом наперед. Если данных в будущем достаточно, дефицитами будущая история не продырявлена, то подавайте на вход данные в обратном порядке и прогнозируйте в прошлое. Например, возьмите историю продаж с 1 августа по 15 июля и стройте прогноз на 14 июля, потом на 13 июля и т.д.

Маркетинговые акции

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

Как маркетинговые акции влияют на статистику 

График ниже показывает колебания спроса в период маркетинговой акции и во время пост-эффекта. Среднее по всем продажам равно 11,2 единиц. Если исключить данные за время акции и пост-эффекта, среднее становится равным 10,56 единиц. Акция прошла хорошо и завысила среднее. 
Продажи во время маркетинговой акции и пост-эффект.

Продажи во время маркетинговой акции и пост-эффект.

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

Как рассчитать срок пост-эффекта и восстановить историю спроса

Как и в случае с дефицитами, мы должны восстановить историю спроса. Чтобы получить реальный спрос в прошлом периоде, мы можем использовать ретроспективное прогнозирование на время проведения акции — так же, как мы восстанавливали данные в дефицитные периоды. Сколько длилась рекламная акция, мы узнаем из учетной системы. Но как понять, сколько действовал пост-эффект?

Пост-эффект зависит от того, насколько был перенасыщен спрос в результате проведения акции. Если объемы продаж во время акции увеличились в два раза, мы можем предположить, что потребность в товаре была удовлетворена на два периода вперед. Значит, пост-эффект длился столько же, сколько сама акция. Строим прогноз на период с начала акции до конца пост-эффекта. 
Прогноз реального спроса в прошлом периоде.

Прогноз реального спроса в прошлом периоде.

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

Аномальные продажи (выбросы)

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

Как аномальные продажи влияют на статистику

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

Пример разовой аномальной продажи

Пример разовой аномальной продажи. Клиент купил 60 ед. товара — это средний объем продаж за 12 дней.


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

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

Рассмотрим этот случай более подробно. Допустим, мы делаем прогноз по среднему. Среднее без аномальной продажи равно 4,8 единицы, а с учетом аномальной продажи — 8,3 единицы. 8,3 единицы — это больше, чем максимальная дневная продажа. Если мы будем использовать эти данные для прогноза, то точно закажем лишний товар даже под плановый спрос. 

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

 

Страховой запас с учетом выброса

Страховой запас без учета выброса

Уровень сервиса 95%
Планируем на 5 дней

53,8

4,8

Уровень сервиса 98%
Планируем на 5 дней

67,2

5,9

Уровень сервиса 95%
Планируем на 30 дней

131,9

11,7

Уровень сервиса 98%
Планируем на 30 дней 

164,7

14,6

 

Из таблицы понятно, что если мы не исключим выброс, страховой запас окажется в 11,2 раза больше. Причем при уровне сервиса 95% и горизонте планирования 5 дней этот запас все равно не обеспечит спрос нашего покупателя.

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

 

Страховой запас с учетом выброса

Страховой запас без учета выброса

Разница запасов

Уровень сервиса 95%
Планируем на 5 дней

53,8+41,5=95,3

4,8+24=28,8

3,27 раз

Уровень сервиса 98%
Планируем на 5 дней

67,2+41,5=108,7

5,9+24=29,9

3,63 раз

Уровень сервиса 95%
Планируем на 30 дней

131,9+249=380,9

11,7+144=155,7

2,45 раз

Уровень сервиса 98%
Планируем на 30 дней 

164,7+249=413,7

14,6+144=158,6

2,6 раз

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

Как распознать аномальные продажи

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

Аномальные продажи на графике

Аномальные продажи на графике

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

  Объем продаж  

  Частота объема продаж  

7

5,74%

8

12,44%

9

7,66%

10

13,88%

11

7,66%

12

8,61%

13

11,48%

14

8,13%

15

6,70%

16

8,61%

17

8,13%

35

0,48%

72

0,48%

Общий итог

100,00%

График: частота продаж

В таблице и на диаграмме видно, что аномально большой объем продаж встречается значительно реже других

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

Попробуем отсортировать частоты по объему продаж и исключить те частоты с конца, которые меньше некоторого порога, например, 1%. Тогда мы успешно отфильтруем продажи в 35 и 72 единицы. Но что будет, если у нас очень вариативный спрос и одинаковые объемы продаж редко повторяются?

График продаж с вариативным спросом и аномальный выброс

График продаж с вариативным спросом и аномальный выброс

Обратите внимание на диаграмму с частотой продаж. Если мы отфильтруем с конца частоты с порогом в 2%, то исключим все продажи от 100 до 91 шт. Это некорректно. При таком подходе мы можем исключить всю историю продаж, если она сильно вариативна. 

Частота продаж товара с сильно вариативным спросом

Частота продаж товара с сильно вариативным спросом

Вместо этого мы можем отфильтровать не конкретные частоты разных объемов продаж, а накопительный итог, подобно тому, который рассчитывается при определении групп ABC-анализа.

Объем продажи  

Частота продажи  

Накопительная частота продажи  

1

0,96%

0,96%

2

0,96%

1,91%

3

1,44%

3,35%

4

0,96%

4,31%

5

1,44%

5,74%

6

1,91%

7,66%

7

0,96%

8,61%

8

0,96%

9,57%

9

0,48%

10,05%

10

1,44%

11,48%

...

...

...

87

0,48%

89,95%

88

0,48%

90,43%

90

2,39%

92,82%

91

0,48%

93,30%

92

1,44%

94,74%

93

1,44%

96,17%

94

1,44%

97,61%

96

0,48%

98,09%

99

0,48%

98,56%

100

0,96%

99,52%

400

0,48%

100,00%

Общий итог

100,00%

 

Пусть порог составляет 1.0%. Тогда накопительная частота не должна превышать (100 — 1.0%) = 99.0%. Все, что имеет накопительную частоту больше 99.0%, помечаем как потенциальные выбросы. При таком подходе мы потеряем максимум 1% от всей истории. Например, в истории длиной 300 дней мы пометим только 3 продажи, даже если все продажи разные по объему. 

Что делать с аномальными продажами

Аномальные продажи, которые мы нашли, — это точки в истории продаж, а не периоды, как в случае с дефицитом или акциями. Поэтому мы просто заменим их. 

Пессимистичный вариант замены — предположим, что кроме аномальной продажи другого повышения продаж не было. Заменяем выплеск на медиану (в нашем примере это 56 единиц) или среднее (49 единиц). Здесь мы не учитываем, что в этот день продажи могли и без того быть высокими. Если так и было, то мы исключим не только клиента, который купил необычно много, но и большой объем продаж. 

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

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

Частота продаж после замены аномальных выбросов

Подготовка истории продаж: итоги

  • Прогнозируйте спрос на основе истории спроса, а не продаж. 
  • Обработайте статистику - очистите историю продаж от влияния дефицитов, маркетинговых акций и случайных выбросов.
  • Используйте ретроспективное прогнозирование, чтобы восстановить спрос в периоды дефицита и проведения маркетинговых акций.
  • Точечные искажения в истории продаж заменяйте на среднее, медиану или на самый высокий объем продаж после исключения всех аномалий.
  • Когда будете строить прогноз, учитывайте воздействия, которые предполагаются в будущем: маркетинговые акции, праздничные дни или промо.

Советуем прочитать статью “Почему нужно прогнозировать товарные запасы, а не спрос?”.
 

 

 

Другие публикации