Захват сезонности в множественной регрессии для ежедневных данных

13

У меня есть ежедневные данные о продажах для продукта, который является очень сезонным. Я хочу уловить сезонность в регрессионной модели. Я читал, что если у вас есть квартальные или месячные данные, в этом случае вы можете создать 3 и 11 фиктивных переменных соответственно - но могу ли я иметь дело с ежедневными данными?

У меня есть три года ежедневных данных. Независимыми переменными являются цена, рекламный флаг (да / нет) и температура. Зависимая переменная - продажи этого продукта. Я не ищу модель временного ряда, поскольку я использую модель множественной регрессии.

Arushi
источник
Сколько данных у вас есть? Сколько лет стоит? У вас есть данные о температуре? Как выглядит остальная часть вашей модели? Каковы ваши DV и IV?
Питер Флом - Восстановить Монику
В дополнение к тому, что спросил Питер Флом, моделируете ли вы свои данные как одномерный временной ряд или многомерный временной ряд? Если он многомерный, есть ли у вас другие переменные? Эти переменные показывают сезонное поведение? если это так, добавление фиктивной переменной не требуется. Можете ли вы предоставить эту дополнительную информацию?
синоптик
Я отредактировал свой вопрос. Подскажите пожалуйста решение. Спасибо
Аруши
См. Robjhyndman.com/hyndsight/dailydata
Роб Хиндман
Я полностью согласен с @IrishStat, мы не будем игнорировать модели временных рядов, довольно хорошую модель, в которой учитывается множественная сезонность. Я хотел бы предложить вам проверить модель пространства экспоненциального сглаживания, которая способна обрабатывать множественные сезонности, Тенденция, одновременно. Это исключительно в R. Вы можете использовать пакет прогнозирования ().
Карти V

Ответы:

10

@Irishstat подробно рассказал о том, что я собирался сказать, но я бы ответил своим личным опытом моделирования этих данных с помощью регрессии временных рядов и регрессии OLS.

Если это ежедневные данные, я бы сделал следующее:

Создайте фиктивную переменную для различной сезонности:

  • Чтобы зафиксировать сезонность дня недели, создайте 6 фиктивных переменных.
  • Чтобы зафиксировать сезонность дня месяца, создайте 30 фиктивных переменных
  • Чтобы зафиксировать месяц года, создайте 11 фиктивных переменных.

Создайте фиктивную переменную для трендовых переменных:

  • Если временной ряд демонстрирует линейный тренд, добавьте переменную временного тренда.

  • Если временной ряд показывает нелинейный тренд, добавьте переменную нелинейного временного тренда, такую ​​как квадратичный / кубический / лог

Добавить независимые переменные Переменные

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

  • Вам также необходимо добавить переменные индикатора движущихся праздничных дней, например, как указал Irishstat, вы хотели бы добавить пасхальные / благодарственные (в США), которые перемещают праздничные дни. Праздники с фиксированными датами будут автоматически учтены, если вы используете фиктивную схему кодирования для определения сезонности.

  • Кроме того, вам нужно будет определить выбросы, такие как аддитивная / импульсная (одноразовое событие) или сдвиг уровня (постоянное смещение), и добавить их в качестве регрессоров. Выявить выбросы в множественной регрессии для данных временных рядов практически невозможно; вам потребуются методы обнаружения выбросов во временном ряду, такие как процедура Цая или процедура Чена и Лю, встроенная в такие программы, как AUTOBOX, SPSS, SAS или tsoutlierпакет в R.

Потенциальные проблемы:

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

  • Ошибки могут быть автокоррелированными. Смотрите этот хороший сайт и этот сайт, объясняющий эту проблему. Одним из способов избежать этого является использование подхода обобщенных наименьших квадратов (GLS) или ARIMAX против множественной регрессии OLS, где вы можете исправить автокорреляцию.
  • 6+30+11=47
  • Используя фиктивные переменные, вы предполагаете, что ваша сезонность является детерминированной, то есть она не изменяется с течением времени. Поскольку у вас есть данные только за 3 года, я не стал бы беспокоиться об этом, но все же стоит построить серию и посмотреть, не изменится ли сезонность.

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

Если вам интересно, вы можете обратиться к превосходному тексту Панкраца , для передачи функции и динамического регрессионного моделирования. Для общего прогнозирования временных рядов, пожалуйста, обратитесь к Makridakis et al . Кроме того, Diebold может предложить хороший справочный текст для прогнозирования на основе регрессии и временных рядов.

предсказатель
источник
Очень хорошее резюме, НО я хотел бы добавить, что вы игнорировали особые эффекты недели месяца и особые эффекты дня месяца в дополнение к возможным эффектам выходных, которые я считаю очень важными. Кроме того, эффекты до и после события не следует игнорировать. Рассмотрите деятельность вокруг Пасхи и вокруг других главных праздников / событий. Часто есть индивидуальный образец ответа, который требует включения спецификации LEAD. Следует также отметить, что параметры могут и часто изменяются со временем, и необходимо подтвердить предположение о постоянстве параметров.
IrishStat
Спасибо @Irishstat. Вы правы. Я забыл о переездах в отпуск и об их эффектах опережения и отставания.
синоптик
2

Что вам нужно, так это модель, которая будет включать ежедневные эффекты, еженедельные эффекты, ежемесячные эффекты, эффекты недели месяца, эффекты дня месяца, опережающие и запаздывающие эффекты праздников, неопределенные, но эмпирически идентифицируемые сдвиги уровня / шага, местные тренды времени, изменения в сезонных импульсах и импульсах при включении структуры ARIMA и, возможно, в связи с изменениями параметров и дисперсией ошибок во времени. Это называется передаточной функцией и может быть легко пересчитано (НО НЕ ПАРСИНОМНО) как множественная линейная регрессия.

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

IrishStat
источник