Вербальная постановка задачи Задачи прогнозирования временных рядов находят реальное применение на практике в бизнесе. Попытка предсказания различных распределенных во времени параметров может дать превосходные результаты в случае если задача поставлена мудро и нет попытки воздействовать на все возможные не решенные задачи только при использовании прогнозирования. Важными моментами в данной области являются следующие: Превосходный прогноз обрести можно в жизни только для предопределённого ряда, развитие которого и так заметно. Прогноз предопределяет, что в будущем не будет каких-то определяющих изменений факторов, которые могут воздействовать на ряд. Обычно, отдача от прогнозирования достигается при использовании пакетных решений, включающих не только методы прогнозирования, но и способы оптимизации. Применение на практике методов прогнозирования мы покажем на примере задачи, стоящей перед каждым производителем - задачи прогнозирования продаж некоторой продукции. Проблематично ждать, что изначальный временной ряд (распределенные во времени продажи) будет детерминированным; продажи подвержены влиянию со стороны многих моментов, учесть которые практически нельзя. Ряд, который мы будет рассматривать, оформился в течении двух лет - в течение этого времени фиксировались еженедельные отгрузки пищевых полуфабрикатов со склада изготовителя. Изначальный временной ряд был представлен в виде таблицы excel. Данные были удачно импортированы в STATISTICA.
Рисунок 1. Изначальные данные
Полученные данные являются отчетом о продажах полуфабрикатов. Всего 116 наблюдений. В итоге мы уже имеем "спущенную сверху" сезонную структуру. Экспертно подтверждено, что ряд подвержен высокочастотным колебаниям маленькой амплитуды с периодом в 4 измерения. Такие колебания присуще любому производителю, продающему товар, в частности оптом. Покупатели делают закупки с периодичностью в месяц. Нужно спланировать прогнозирование продаж искомого товара - за небольшой период времени и среднесрочный. Для решения этой задачи будет использован компонент STATISTICA, владеющий, в частности, возможностями для построения прогнозов временных рядов.
Наглядный анализ Описательные исследования временного ряда являются необходимой частью прогнозирования. Вначале производится визуализация временного ряда. Это возможно реализовать посредством контекстного меню или воспользовавшись схемой Графика - 2М графики - Линейные графики. Будет выведенно диалоговое окно настройки графиков.
Рисунок 2. Диалоговое окно настройки графиков
Шаг 2. На вкладке параметры 1 задайте переменную с обозначением сезонных циклов как отвечающую за разметку по оси Х. Шаг 3. Нажмите на кнопку ОК - будет выведен линейный график для переменной.
Рисунок 3. Линейный график продаж
На графике четко выделяется годовая сезонная компонента, она обрисовывает в среднем 2,5 цикла. А также ряд зависим от высокочастотным блужданиям небольшой амплитуды, что подходит экспертной оценке, заданной в исходном файле данных.
Сезонная декомпозиция Дальнейшие исследования будут затрагивать структуры ряда и построения его прогноза. В авангарде задач является генерация картины долгосрочного развития ряда. Это быть может сделано с поддержкой методов классической сезонной декомпозиции. Шаг 1. Выберете анализ - Углубленные методы анализа - Временные ряды и прогнозирование продаж. В появившемся окне выберете классическая сезонная декомпозиция (Census 1). Шаг 2. В появившемся диалоговом окне задайте категорию модели «Аддитивная», величина сезонного лага установите равным 4. Задайте добавление в рабочую область компоненты скользящего среднего для нашего ряда. Верно настроенная панель анализа выглядит так:
Рисунок 4. Настройки сезонной декомпозиции
Шаг 3. Нажмите ОК для начала вычислений. В итоге будет отображена панель анализа с добавленным рядом скользящего среднего. Шаг 4. На вкладке Прогноз задайте переменную с циклами как ответственную за разметку по оси Х и нажмите на клавишу обзор нескольких переменных. Будет выведен график скользящего среднего и изначального ряда.
Рисунок 5. Изначальный и сглаженный ряды
Из этого графика бесспорно, что скользящее среднее испытывает низкочастотные колебания большой амплитуды. Их можно интерпретировать как годовые циклы. Дальнейшее выравнивание бессмысленно, так как ряд слишком короткий для этого.
Выстраивание прогнозирования продаж с поддержкой модели АРПСС Прогноз данного временного ряда будет двух видов: Краткосрочный и среднесрочный. Краткосрочный прогноз удлинит ряд на 1,5 - 2 месяца и может быть основанием для принятия решений на ближайшее время, среднесрочный прогноз даст тенденцию развития продаж на более длительное время. Технически, два прогноза будут отличаться исходными рядами. Для краткосрочного прогнозирования продаж полезно брать непреобразованный ряд, что сбережет наибольшее число его особенностей. Среднесрочный прогноз будет строиться на основании выровненного ряда, то есть ряда, ответственного за долгосрочное развитие и за годовые колебания. Краткосрочное прогнозирование продаж может быть построено авторегрессиоными методами, учитывая взаимную линейную взаимозависимость членов ряда. Инструменты этого доступны в среде STATISTICA в модуле Временные ряды и прогнозирование. Шаг 1. Выберете Анализ – Углубленные методы анализа(data mining) - Временные ряды и прогнозирование. На появившейся панели выберете АРПСС и автокорреляционные функции. Шаг 2. Задайте параметры модели. Это параметры авторегрессии и скользящего среднего, вычеты и предварительные преобразования ряда. Анализ АКФ и ЧАКФ показывает, что оптимальной для прогнозирования продаж будет модель (2,1,0)(1,1,0). Такая модель быть может задана следующим образом:
Рисунок 6. Настройки АРПСС
Шаг 3. Нажмите на ОК для начала оценки параметров. Если все настройки сделаны верно, все 3 параметра окажутся высоко значимыми. Нажмите на кнопку График ряда и прогнозов - будет выведен последующий график:
Рисунок 7. Прогноз АРПСС
Прогнозирование продаж обещает относительно равномерное повышение уровня продаж на ближайшие 2 месяца. Существующий прогноз не берет в расчет годовых колебаний и мы можем ему верить в том случае если есть вера в желаемую стабильность развития рынка.
Кросс – проверка Независимая проверка качества прогнозирования продаж предоставляет собой одну из важных задач в прогнозировании. Нам необходимо быть уверенными, что прогноз в будущем будет приближен к реальным (исследуемым) данным. Переодически для этой цели выбирается алгоритм кросс - теста. Способ состоит из следующих этапов - вначале изначальный временной ряд укорачивается на 7-10%, «хвост» ряда сохраняется для дальнейшего анализа, а после этого создается прогноз «укороченного» ряда и полученное сравнивается с предыдущими данными. Если подтвердится, что в конце наблюдаемого периода на ряд не делались интервенций, можно ждать, что вероятность ошибки, полученной в результате сопоставления, будет оценкой ошибки на будущий период. Другими словами, если наш прогноз на 2-5% имеет отклонение от уже имеющихся данных, высока вероятность, сохранение ошибки в будущем. Данный алгоритм в данном случае выглядит следующим образом.
Рисунок 8. Исходный ряд и кросс – проверка
Красным выделена часть ряда, изъятая из анализа. При использовании метода АРПСС был воспроизведен прогноз части ряда, выделенной синим цветом. Результат сравнили с данными, изъятыми из анализа.
Рисунок 9. Прогноз ряда и данные кросс – проверки
Синим выделены реальные данные, красным – прогнозирование продаж, воспроизведенное как прогноз временного ряда с «обрезанным» концом. На графике показано, что прогноз дает совпадение с имеющимися данными, что говорит о правильности выбранной модели. Вычисление ошибки и подгонки перекрестной проверки и прогнозирование продаж возможно воспроизвести с помощью конкретных готовых решений предоставленных программой. Для данного ряда вероятность ошибки порядком 10%, что говорит о том, что есть большая вероятность повторения подобной ошибки в будущем. Следующим объектом анализа для долгосрочного прогнозирования продаж будет ряд, сглаженный скользящим средним. График этого ряда показан ниже.
Рисунок 10. Сглаженный скользящим средним ряд продаж
Нашему взгляду представлен экспоненциальный тренд и большие сезонные скачки. При этом не получается увидеть годовой рост, потому что для качественной работы методам нужно как минимум иметь 5 сезонных циклов. Этот ряд, как бы то ни было, выглядит неплохим объектом для следующего прогнозирования продаж.
Разработка прогноза с помощью нейронных сетей Методы для разработки прогноза подобного ряда были выбраны нейронные сети. Другие методы оказались неэффективными по нижеследующим этим причинам: Достаточно короткий ряд для использования сезонных методов. Ряд выявлен благодаря сглаживанию изначального, в результате чего из него были удалены практически все значимые автокорреляции. Кроме того, использование нейронных сетей избавит нас от необходимости держаться какой-то однозначной сезонной или трендовой модели. Шаг 1. Выберите Анализ - Нейронные сети. Будет выведено диалоговое окно настройки работы с нейронными сетями. Надлежит установить тип задачи на Временные ряды. Шаг 2. Кликните на кнопку Переменные и задайте переменную, отвечающую за сглаженный ряд как выходную и входную непрерывную. Нажмите на ОК для возврата на главное окно. Установите опцию Инструмент на Мастер решений. Затем нажмите ОК для перехода на диалоговое окно настроек Мастера. Шаг 3. На вкладке Временные ряды установите параметры временного окна от 1 до 30. Этот параметр используется как основание для определения периода сезонной компоненты. Шаг 4. На вкладке Тип сети установите все галочки, чтобы позволить системе тестировать все возможные типы нейронных сетей. Шаг 5. На вкладке Быстрый выберете обучение 50 нейронных сетей и сохранение 50 лучших. Правильно настроенная панель будет выглядеть следующим образом:
Рисунок 11. Настройки нейронной сети
Шаг 6. Кликните клавишу ОК для начала обучения нейронных сетей. Спустя немного времени будет выведена панель анализа результатов.
Рисунок 12. Панель результатов обучения нейронных сетей
Из обученных 50 нейронных сетей необходимо выбрать несколько с минимальной тестовой производительностью. Это возможно при помощи кнопки Итоги моделей на вкладке Быстрый. Все сети необходимо отсортировать по параметру Тестовая производительность и выбрать несколько верхних сетей. Искомый прогноз получается перебором наблюдений через нейронную сеть – создается проекция временного ряда. Данное можно сделать на вкладке Дополнительно. Нажмите на кнопку Проекция временного ряда, будет отображено следующее диалоговое окно:
Рисунок 13. Настройки проекции временного ряда
Шаг 7. Задайте проекцию на 12 наблюдений (3 месяца) и нажмите на клавишу График. Будет выведен график удлинения нашего временного ряда.
Рисунок 14. Проекция временного ряда
При наложении на изначальный график он принимает вид:
Рисунок 15. График прогноза трендовой компоненты ряда
В итоге мы получили прогноз детрендированной части исходного сглаженного ряда. Прогноз можно восстановить в изначальном состоянии прибавив среднее и линейный тренд. Результат приведен ниже.
Рисунок 16. График ряда и прогнозов сглаженного ряда
В итоге, в течение ближайших нескольких месяцев можно ожидать спада уровня продаж. Красным цветом выделен исследуемый сглаженный ряд, синим - построено прогнозирование продаж. Заметим, что прогнозный ряд короче исследуемого на конкретное число исследований. Это завязано на то, что некоторое число исследований было потеряно как итог формирования окна для нейронной сети. Стабильная отрицательная линия в развитии данного временного ряда представляет собой необычной. Действительно, прогнозное понижение составляет около половины от общего уровня продаж, а такого за всю историю не было никогда. В результате, рациональным будет сократить удлинение ряда до 2 месяцев, так снижение в этот период будет гарантированным.
Резюме Конечное прогнозирование продаж возможно добиться исключительно на ближайшие 1,5-2 месяца – за это время будет наблюдаться снижение еженедельных продаж приблизительно до 450 единиц в неделю, впоследствии требуется дальнейшее изучение рынка и уточнение, прогнозирования продаж.
Вероятно очень "умная линейка", будет интересна разным родам аналитикам/статистам/прогнозистам/магам/предсказателем судеб и.т.д. Результат будет зависеть к какому месту прикладывать. off Что-то из разряда: "когда что у кого-то, что-то не запускалось, позвали знающего человека" "он стукнул немного и все заработало" "говорит за работу прошу оплатите XXXXXXX $, ему в ответ XXXXXXX $ за один удар? нет удар бесплатно, а то, что я знал куда ударить XXXXXXX $. Вот и с этой линейкой также.