[1] Введение

Прогнозирование будущих продаж для компании - один из важнейших аспектов стратегического планирования. Я хотел проанализировать, как внутренние и внешние факторы одной из крупнейших компаний США могут повлиять на их еженедельные продажи в будущем. Этот модуль содержит полный анализ данных, включает анализ временных рядов, определяет лучшие магазины, выполняет прогноз продаж с помощью множественной линейной регрессии.

Собранные данные относятся к периоду с 2010 по 2012 год, когда в этот анализ были включены 45 магазинов Walmart по всей стране. Важно отметить, что у нас также есть внешние данные, такие как ИПЦ, уровень безработицы и цены на топливо в регионе каждого магазина, которые, мы надеемся, помогут нам провести более подробный анализ.

[2] Описание набора данных

У меня был доступ к трем различным наборам данных о компании с сайта Kaggle.com. Эти наборы данных содержат информацию о магазинах, отделах, температуре, безработице и т. Д. Я объясню каждый из наборов данных более подробно с каждой его особенностью.
[2.1] Магазины:
- Магазин
: номер магазина. Диапазон от 1 до 45.
- Тип: три типа магазинов: "A", "B" или "C".
- Размер: Устанавливает размер магазина будет рассчитываться по номеру. Товаров, доступных в конкретном магазине, варьируется от 34 000 до 210 000.

[2.2] Продажи:
- Дата: дата недели, когда было выполнено это наблюдение.

- Weekly_Sales: продажи, зарегистрированные в течение этой недели.
- Store: магазин, наблюдение которого записано в 1–45.
- Dept : один из 1–99, который показывает отдел.
- IsHoliday: логическое значение, обозначающее праздничную неделю или нет.

[2.3] Возможности:

  • Температура: температура в регионе в течение этой недели.
    - Fuel_Price: цена на топливо в этом регионе в течение этой недели.
    - MarkDown1: 5: представляет тип уценки и количество, доступное в течение этой недели.
    - ИПЦ: индекс потребительских цен в течение этой недели.
    - Безработица : уровень безработицы в течение недели в районе магазина.

[3] Объединение данных

Я объединил три файла в один для обработки. Я объединил файлы store.csv и sales.csv на основе атрибутов store, и его результирующий файл объединен с features.csv на основе атрибутов store, date и IsHoliday.

›store‹ - read.csv («~ / store.csv»)

›Посмотреть (магазины)

›store_df‹ -магазины

›продажи‹ - read.csv («~ / sales.csv»)

›sales_df‹ - продажи

›test1‹ - read.csv («~ / features.csv», header = TRUE, check.names = TRUE)

›features_df‹ - test1

›pre_final_df‹ - объединить (store_df, sales_df, by = c («Store»))

›head (pre_final_df)

›final_df‹ - объединить (pre_final_df, features_df, by = c («Магазин», «Дата», «IsHoliday»))

›head (final_df)

[4] Очистка и предварительная обработка данных

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



Предварительная обработка данных используется в приложениях на основе баз данных, таких как управление взаимоотношениями с клиентами и приложения на основе правил (например, нейронные сети). Чтобы добиться единообразия при анализе данных, мы преобразовали все логические значения (ИСТИНА = 1 и ЛОЖЬ = 0). В большинстве случаев операторы и функции автоматически преобразуют значение в нужный тип. Это называется «преобразованием типа».

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

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

# РАБОТА С БУЛЕВЫМИ ЗНАЧЕНИЯМИ

›final_df $ IsHoliday [final_df $ IsHoliday ==« true »]‹ - 1

›final_df $ IsHoliday [final_df $ IsHoliday ==« false »]‹ - 0

›head (final_df)

# РАБОТА СО ЗНАЧЕНИЯМИ "НЕТ"

›final_df [is.na (final_df)]‹ - 0

[5] Конструкция подмножества

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

›subset1‹ - subset (final_df $ Date, final_df $ Weekly_Sales ‹0): ЛОГИЧЕСКИЙ

›subset2‹ - subset (final_df, select = c («Размер», «Еженедельные_продажи», «Температура», «Fuel_Price»,

[6] Корреляция между столбцами "Продажи" и "Праздники"

Корреляция - это двумерный анализ, который измеряет силу связи между двумя переменными и направление связи. Что касается силы связи, значение коэффициента корреляции варьируется от +1 до -1. Значение ± 1 указывает на идеальную степень связи между двумя переменными. Когда значение коэффициента корреляции приближается к 0, связь между двумя переменными будет слабее. Направление отношения обозначается знаком коэффициента; Знак + указывает на положительную взаимосвязь, а знак - на отрицательную взаимосвязь. Обычно в статистике мы измеряем четыре типа корреляций: корреляцию Пирсона, ранговую корреляцию Кендалла и корреляцию Спирмена. Программное обеспечение, представленное ниже, позволяет очень легко провести корреляцию.

r-корреляция Пирсона. r -корреляция Пирсона - наиболее широко используемая статистика корреляции для измерения степени взаимосвязи между линейно связанными переменными. Следующая формула используется для вычисления r корреляции Пирсона:
Ранговая корреляция Кендалла: Ранговая корреляция Кендалла - это непараметрический тест. который измеряет силу зависимости между двумя переменными. Если мы рассмотрим две выборки, a и b, где каждый размер выборки равен n, мы узнаем, что общее количество пар с ab равно n (n -1) / 2 .

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

# СООТНОШЕНИЕ МЕЖДУ ПРОДАЖАМИ И ПРАЗДНИКОМ

›cor (final_df $ Weekly_Sales, final_df $ IsHoliday, use =" everything ", method =" pearson ")

Я также заметил, что некоторые еженедельные продажи содержат «отрицательные значения», после анализа данных мы пришли к выводу, что они относятся к возвращенным продуктам за предыдущие недели.

›subset1‹ - subset (final_df $ Date, final_df $ Weekly_Sales ‹0)

# Было возвращено около 1000 товаров

Для лучшего прогноза мы добавили среднее значение MarkDown за неделю для всех MarkDown.

›mean_markdown1‹ - среднее (final_df $ MarkDown1)

›mean_markdown2‹ - среднее (final_df $ MarkDown2)

›mean_markdown3‹ - среднее (final_df $ MarkDown3)

›mean_markdown4‹ - среднее (final_df $ MarkDown4)

›mean_markdown5‹ - среднее (final_df $ MarkDown5)

›final_markdown‹ - mean_markdown1 + mean_markdown2 + mean_markdown3 + mean_markdown4 + mean_markdown5

›average_final_markdown

# Средняя итоговая уценка: [1] 1336.808

[7] Группировка данных

Разделяет все числовые данные в кадре данных по категориям одинаковой длины или содержимого или на основе автоматически определенных кластеров. В статистике биннинг данных - это способ разбить ряд непрерывных значений на меньшее количество блоков (бинов). Каждый сегмент определяет числовой интервал. Например, если существует переменная об уровне домашнего образования, которая измеряется непрерывными значениями в диапазоне от 0 до 19, при объединении данных каждое значение помещается в одну корзину, если значение попадает в интервал, охватываемый корзиной. В этом посте показано объединение данных в R, а также их визуализация.

№ БИННИРОВАНИЕ ДАННЫХ

›библиотека (classInt)

›bin_data‹ - final_df $ Weekly_Sales

РАВНАЯ ШИРИНА

›classInterval (bin_data, 5, style =" equal ")

РАВНАЯ ЧАСТОТА

›classIntervals (bin_data, 5, style =” quantile ”)

[8] Анализ временных рядов

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

Временной ряд называется стационарным, если он удовлетворяет следующим условиям.

  1. Среднее значение временного ряда остается постоянным во времени, что означает, что компонент тренда обнуляется.
  2. Разница со временем не увеличивается.
  3. Влияние сезонности минимально.

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

# ВРЕМЕННЫЙ СЕРИЙ

›fore_data‹ - ts (final_df $ Weekly_Sales, начало = 2010 г., конец = 2012 г., частота = 12)

›сюжет (fore_data)

[9] Холт Уинтерс

Holt-Winter используется для экспоненциального сглаживания, чтобы делать краткосрочные прогнозы с использованием «аддитивных» или «мультипликативных» моделей с растущим или убывающим трендом и сезонностью. Сглаживание измеряется бета- и гамма-параметрами в модели Холта. Если для параметра beta установлено значение FALSE, функция выполняет экспоненциальное сглаживание. Параметр гамма используется для сезонной составляющей. Если параметр гаммы установлен на ЛОЖЬ, применяется сезонная модель.

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

# ХОЛОДНАЯ ЗИМА

›библиотека (прогноз)

›fore_data‹ - ts (final_df $ Weekly_Sales, начало = 2010 г., конец = 2012 г., частота = 12)

›сюжет (fore_data)

›hw‹ - HoltWinters (fore_data)

›сюжет (hw)

[10] Визуализация с помощью GGPLOT

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

›библиотека (ggplot2)

›библиотека (изменить форму)

[11] Извлечение наиболее эффективных магазинов с использованием DPLYR Grouping

Dplyr - это пакет для обработки данных, разработанный Хэдли Уикхэм и Роменом Франсуа. Он построен так, чтобы быть быстрым, выразительным и непредвзятым в отношении того, как хранятся ваши данные. Он устанавливается как часть метапакета tidyverse и, как основной пакет, входит в число тех, которые загружаются через библиотеку (tidyverse).

Корни dplyr лежат в более раннем пакете под названием plyr, который реализует стратегию «разделить-применить-объединить» для анализа данных (PDF). Там, где plyr охватывает разнообразный набор входов и выходов (например, массивы, фреймы данных, списки), dplyr как лазер фокусируется на фреймах данных или, в tidyverse, «tibbles». dplyr - это пакетный вариант функции ddply () из plyr, потому что «входящий фрейм данных - исходящий» оказался невероятно важным.

›библиотека (dplyr)

›совокупный (final_df $ Weekly_Sales, by = list (Type = final_df $ Type), FUN = sum)

[12] Матрица корреляции

Термин «корреляция» относится к взаимной взаимосвязи или ассоциации между величинами. Практически в любом бизнесе полезно выражать одну величину через ее взаимосвязь с другими.

Важность показателя корреляции

  • Корреляция может помочь в прогнозировании одной величины от другой.
  • Корреляция может (но часто не является, как мы увидим в некоторых примерах ниже) указывать на наличие причинно-следственной связи.
  • Корреляция используется как основная величина и основа для многих других методов моделирования.

›subset2‹ - subset (final_df, select = c («Размер», «Еженедельные_продажи», «Температура», «Fuel_Price»,

MarkDown1, MarkDown2, MarkDown3, MarkDown4, MarkDown5, CPI, Безработица))

›res‹ - cor (subset2)

›голова (рез.)

[13] График корреляции

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

›библиотека (корп.)

›corrplot (res, type =« upper », order =« hclust », tl.col =« black », tl.srt = 45)

[14] Тепловая карта

Тепловая карта - это графическое представление данных, в котором отдельные значения, содержащиеся в матрице, представлены в виде цветов. Термин «тепловая карта» был первоначально придуман и зарегистрирован разработчиком программного обеспечения Кормаком Кинни в 1991 году для описания двухмерного дисплея, отображающего информацию о финансовых рынках, хотя подобные графики, такие как матрицы затенения, существуют уже более века.

›col‹ - colorRampPalette (c («синий», «белый», «красный»)) (20)

›тепловая карта (x = res, col = col, symm = TRUE)

[15] Анализ эффективности

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

[16] Прогнозирование продаж с использованием множественной линейной регрессии

Множественная линейная регрессия - наиболее распространенная форма линейного регрессионного анализа. В качестве прогнозного анализа множественная линейная регрессия используется для объяснения взаимосвязи между одной непрерывной зависимой переменной и двумя или более независимыми переменными. Независимые переменные могут быть непрерывными или категориальными (фиктивными кодами в зависимости от обстоятельств).

Существует 3 основных применения множественного линейного регрессионного анализа.

Во-первых, его можно использовать для определения силы влияния независимых переменных на зависимую переменную.

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

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

›input‹ -final_df [, c («Weekly_Sales», «Температура», «Fuel_Price», «MarkDown1 ',» MarkDown2', «MarkDown3 ',« MarkDown4', «MarkDown5 ',« CPI »,« Безработица) ”)]

›голова (ввод)

›модель‹ - лм (Weekly_Sales ~ Температура + Fuel_Price + MarkDown1 + MarkDown2 + MarkDown3 + MarkDown4 + MarkDown5 + CPI + Безработица, данные = ввод)

›печать (модель)

›cat (« # # # # Значения коэффициентов # # # «,» \ n »)

›a‹ - coef (модель) [1]

›печать (а)

(Перехват)

26216.43

— — -

›XTemperature‹ - коэффициент (модель) [2]

›XFuel_Price‹ - коэффициент (модель) [3]

›XMarkDown1‹ - коэффициент (модель) [4]

›XMarkDown2‹ - коэффициент (модель) [5]

›XMarkDown3‹ - коэффициент (модель) [6]

›XMarkDown4‹ - коэффициент (модель) [7]

›XMarkDown5‹ - коэффициент (модель) [8]

›XCPI‹ - коэффициент (модель) [9]

›XUnemployment‹ - коэффициент (модель) [10]

— — — — -

›печать (XTemperature)

Температура

22.77048

›печать (XFuel_Price)

Цена на топливо

-1558.433

›печать (XMarkDown1)

MarkDown1

0.1619938

›печать (XMarkDown2)

MarkDown2

0.05388858

›печать (XMarkDown3)

MarkDown3

0.157646

›печать (XMarkDown4)

MarkDown4

-0.04317213

›печать (XMarkDown5)

MarkDown5

0.2032759

›печать (XCPI)

CPI

-24.17757

›печать (XUnemployment)

Безработица

-384.1941

ОБРАЗОВАНО # НЕСКОЛЬКО ЛИНЕЙНОГО УРАВНЕНИЯ РЕГЕССИИ

y = a + XTemperature * x1 + XFuel_Price * x2 + XMarkDown1 * x3 + XMarkDown2 * x4 + XMarkDown3 * x5 + XMarkDown4 * x6 + XMarkDown5 * x7 + XCPI * x8 + XUnemployment * x9

МЫ МОЖЕМ ПРОГНОЗИРОВАТЬ ЕЖЕНЕДЕЛЬНЫЕ ПРОДАЖИ, ВСТАВЛЯЯ ЗНАЧЕНИЯ в x1…. x9 и получите значение для еженедельных продаж:

Например :

y = a + XTemperature * x1 + XFuel_Price * x2 + XMarkDown1 * x3 + XMarkDown2 * x4 + XMarkDown3 * x5 + XMarkDown4 * x6 + XMarkDown5 * x7 + XCPI * x8 + XUnemployment * x9

ПРИНЯТИЕ ПРОИЗВОДСТВЕННЫХ ЗНАЧЕНИЙ ДЛЯ ПРОГНОЗИРОВАНИЯ:

x1= 41.17

x2 = 2.562

x3 = 16305.11

x4 = 3551.41

x5=16.16

x6 = 3611.60

x7 = 1240.2

x8 = 220.806

x9 = 7.931

# Подстановка значений в уравнение

# ЕЖЕНЕДЕЛЬНЫЕ ПРОДАЖИ ДЛЯ ТАКИХ УСЛОВИЙ БУДУТ

›print (y)

(Перехват)

17707.02 ‹- Окончательное значение продаж за неделю (объем продаж за неделю - подробнее см. в пояснении к набору данных в Разделе 2.2).

Thank You !
My LinkedIn : Visit Me on LinkedIn

Получите доступ к экспертному обзору - Подпишитесь на DDI Intel