Скользящее среднее, или как сгладить график

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

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

Что здесь не так?

Достаточно очевидно, что, во-первых, график постоянно прыгает вверх-вниз, а, во-вторых, имеет некрасивые экстремумы вроде 16 заявок в октябре или 122 заявок в августе. День на день не приходится, и данные слишком сильно колеблются вокруг среднего значения (кстати, среднее тут равно 63).

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

Скользящее среднее. Простой способ.

Попробуем «сгладить» наш прыгающий график путем расчета среднего числа заявок на дату, исходя из предыдущих 6 дней (7-й — текущий день, итого ровно неделя).

Напротив 07.01.2018 напишем формулу

=СРЗНАЧ(B2:B8)

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

Визуально ничего не изменилось. Разве что, раньше были целые значения, а теперь, из-за усреднения, вылезли знаки после запятой — 79,9, 84,1. Обновим наш график:

На месте прежнего, «прыгающего», графика, теперь более гладкая линия. Исчезли аномальные дни с 16 и 122 звонками в октябре и в августе, зато теперь, на «недельном» масштабе, стал заметнее провал на майские праздники.

Скользящее среднее. Сложный способ.

Некоторое время попрактиковавшись с вычислением скользящего среднего, вы обратите внимание, что, чем шире вы будете брать «окно» для расчета среднего на дату, тем сильнее будет сглаживаться ваш график. Теоретически, вы можете взять окно шириной в 365 дней... и получится практически ровная линия. А при окне шириной в 1 день — график не сглаживается вообще.

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

Попробуем не задавать жестко ширину нашего «окна», а сделать его параметром нашего графика. Пусть «окно» в 7 дней, используемое для сглаживания графика, будет зависеть от цифры «7», помещенной в ячейку C1. И пусть, если мы меняем «7» на «5» или «30», Эксель перестраивает наш график.

Итак, настало время для красивой формулы в ячейке C8:

=СРЗНАЧЕСЛИМН(B$2:B$365;A$2:A$365;"<="&A8;A$2:A$365;">="&(A8-$C$1+1))

Функция

=СРЗНАЧЕСЛИМН()

берет и считает среднее значение для тех дат, для которых будут выполняться оба условия:

  1. Дата, которая участвует в расчете среднего, должна быть больше или равна дате, отстоящей от даты, для которой мы рассчитываем среднее, назад на N-1 дней (где N — ширина нашего «окна»).
  2. Дата, которая участвует в расчете среднего, должна быть меньше или равна дате, для которой мы это среднее рассчитываем.

Проще говоря, для расчета среднего числа заявок на 18 апреля при N=7 дней, мы возьмем среднее от числа заявок с 12 по 18 апреля (больше или равно 12 апреля и меньше или равно 18 апреля). Для расчета среднего числа заявок на 19 апреля — среднее от числа заявок с 13 по 19 апреля, и так далее.

Выделим ячейку C1 под наш параметр N, тогда формула для 07.01.2018 выглядит так:

=СРЗНАЧЕСЛИМН(B$2:B$365;A$2:A$365;"<="&A8;A$2:A$365;">="&(A8-$C$1+1))

Итого, теперь мы имеем уже знакомый нам «сглаженный» 7-дневный график, но ширину «окна» задали не строго, а привязали ее к параметру, записанному в ячейке C1:

Меняя значение параметра в ячейке C1, получаем все более и более ровную линию. Вот, для сравнения, наложенные друг на друга графики при N=1, N=5, N=30:

Поделиться
Отправить
Запинить
Популярное