#r #time-series #prediction #trend
Вопрос:
У меня есть 3-летний набор данных о почасовых продажах(9-6 вечера, только с понедельника по субботу), и я хотел бы делать прогнозы на день или неделю вперед с помощью линейной регрессии. Набор данных исключил все национальные праздники, так как магазин не открыт. Эти данные временных рядов демонстрируют сильную сезонность внутри дня и внутри недели и показывают высокий пик в период национальных праздников. Поэтому я извлек следующие переменные для разработки функций:
(1) функции, связанные со временем: метка времени(«2021-02-01 09:00:00»), час, день недели, месяц, год (2) переменная с недельным запаздыванием (3) переменная тренда путем разложения «тренда» на исторические данные и добавления в качестве нового предиктора
decomp_ts <- decompose(ts)
data$trend <- decomp_ts$trend
(4) фиктивные переменные праздника, указывающие на день перед праздниками
Модель работает нормально, но при развертывании модели с данными в реальном времени я сталкиваюсь с двумя вопросами.
(1) Я хотел использовать функцию predict() с будущим набором данных на неделю вперед в качестве входных данных для аргумента «newdata». Но мой разум искажен, так как я не уверен, как поступить с переменной тренда. Должен ли я выполнить дополнительный прогноз по тренду на следующую неделю и добавить эту информацию обратно в будущий набор данных для прогнозирования продаж?
(2) Как бы вы предложили генерировать данные с задержкой в одну неделю с учетом пропущенных значений, вызванных праздниками? В моем случае магазин может открыться только два дня на рождественской неделе, тогда переменная с задержкой в одну неделю на следующую неделю будет содержать пропущенные значения для дней, когда магазин не открыт.
Я с нетерпением жду любых предложений.
Комментарии:
1. Тренд является функцией последнего расчетного уровня, согласно приведенной здесь формуле. Поэтому я считаю, что вам нужен только обучающий набор данных для его получения.
2. Вопрос 2.Согласны ли вы с тем, что вы могли бы уменьшить влияние разницы рабочих дней в каждой неделе, если бы использовали номер недели в качестве входных данных. Я думаю, что модель легче усвоит, что на рождественской неделе она достигает определенной суммы, независимо от количества рабочих дней.
3. @PauloSchauGuerra спасибо вам за отзывы! Я получил прогнозируемый тренд на будущую неделю с помощью функции auto.arima() и добавил прогнозируемый тренд обратно в будущий набор данных для подачи в функцию predict (). Верен ли мой подход?
4. @PauloSchauGuerra Не могли бы вы подробнее объяснить, как использовать номер недели в качестве входных данных? Вы имеете в виду добавить номер недели, например, 52-ю неделю года, в качестве одной из переменных в модели?
5. Функция auto.arima() должна быть способна предсказывать точки данных в будущем, просто понимая закономерности изменений с течением времени до этого момента. Теперь я считаю, что модель ARIMA хороша только для временных рядов, где у вас будет дата-время в качестве индекса и значение, которое нужно предсказать. Вам понадобится другая модель, чтобы объединить результаты arima() с другими функциями.