enter code here
Я работаю над проектом по анализу и прогнозированию временных рядов продаж и доходов клиента.Существуют различные модели, которые я хочу протестировать в целях точности, а именно: Линейный метод Холта, Метод Холта Винтера, ARIMA, Seasonal ARIMA и ARIMAX (поскольку я также хочу учитывать категориальные переменные в данных).Данные представлены в ежедневной форме, и, следовательно, я выбрал частоту 7.
startW <- as.numeric(strftime(head(revenue$date, 1), format = "%W"))
startD <- as.numeric(strftime(head(revenue$date, 1) + 1, format =" %w"))
revenue <- ts(revenue$amount, start = c(startW, startD), frequency = 7)
Затем я разделил их на тренировку и тестирование, сохранив последний месяц в качестве периода ожидания.
Я использовал функцию auto.arima()
для модели ARIMA, и она дает ARIMA (0,0,0) (2,1,0) [7].Что это значит?График остатков выглядит следующим образом
После этого я добавил праздники в качестве экзогенной переменной
encoded_regressors <- sparse.model.matrix(amount~holiday, data = train_set)
encoded_regressors <- (encoded_regressors[,-1])
model2 <- auto.arima(revenue.train, xreg = encoded_regressors)
Модель, которую я получаю сейчас, - ARIMA (0,0, 1) (2,1,0) [7] и здесь - остаточный участок .
В обоих случаях, если я вижу разницу в прогнозируемом и наблюдаемом значении, процентная разница колеблется в среднем от 3% до 50%.Как я могу улучшить свою модель и понять результаты модели ARIMA?
Спасибо!