Анализ временных рядов и R Holt Winters

У меня есть сезонный (7-дневный интервал) временной ряд, ежедневные данные за 30 дней. Каков наилучший подход для разумного прогноза? Временной ряд содержит заказы, сделанные с помощью приложения, он показывает сезонность в 1 неделю (более низкие продажи в начале недели). Я пробую подход Холт Винтерс с этим кодом:

(m <- HoltWinters(ts,seasonal = "mult"))
 plot(m)
 plot(fitted(m))

но это дает мне ошибку типа: Ошибка в разложении (ts(x[1L: ветер], start = start(x), частота = f), сезонная): временной ряд не имеет или меньше 2 периодов

Что ты предлагаешь?

РЕДАКТИРОВАТЬ: данные здесь

1 ответ

Вы должны сначала определить ts объект. Предполагая, что ваши данные называются df:

ts <- ts(df$install, frequency = 7)
(m <- HoltWinters(ts,seasonal = "mult"))
 plot(m)
 plot(fitted(m))

Затем вы можете сделать прогноз, как (10 шагов вперед):

predict(m, n = 10)
Time Series:
Start = c(4, 5) 
End = c(5, 7) 
Frequency = 7 
            fit
 [1,] 1028.8874
 [2,] 1178.4244
 [3,] 1372.5466
 [4,] 1165.2337
 [5,]  866.6185
 [6,]  711.6965
 [7,]  482.2550
 [8,]  719.0593
 [9,]  807.6147
[10,]  920.3250

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

Вы можете использовать df$data, чтобы сохранить даты, которые соответствуют каждому дню в серии ts.

ts_series <- ts(df$install, frequency = 7)
ts_dates <- as.Date(df$data, format = "%d/%m/%Y")

Аналогичным образом даты для прогнозируемых значений могут храниться в другой последовательности

m <- HoltWinters(ts_series, seasonal = "mult")
predict_values <- predict(m, 10)
predict_dates <- seq.Date(tail(ts_dates, 1) + 1, length.out = 10, by = "day")

С помощью последовательности дат можно построить дневной ряд с датами по оси x в правильном формате. С помощью оси можно получить больше контроля над отметками оси X. Функция даты

plot(ts_dates, ts_series, typ = "o"
  , ylim = c(0, 4000)
  , xlim = c(ts_dates[1], tail(predict_dates, 1))
  , xlab = "Date", ylab = "install", las = 1)
lines(predict_dates, predict_values, lty = 2, col = "blue", lwd = 2)
grid()

Другие вопросы по тегам