Использование R - Нужен совет прогнозирования на следующий год на основе нерегулярных временных рядов - PullRequest
0 голосов
/ 24 октября 2018

Мне нужен совет по поводу следующего запроса: «На основании ваших наблюдений, что вы могли бы сказать о нагрузке за те же месяцы в 2019 году?»

str () / head () df выглядит так:

data.frame':    683 obs. of  10 variables:
$ Route       : chr  "A" "B" "A" "A" ...
$ FlightNumber: int  770 279 128 235 434 543 556 663 770 279 ...
$ Capacity    : int  375 345 375 375 375 375 375 375 375 345 ...
$ Booked      : int  379 314 374 379 373 377 379 378 379 294 ...
$ DDate       : Date, format: "2018-05-01" "2018-05-01" "2018-05-02" "2018-05-03" ...
$ Year        : num  2018 2018 2018 2018 2018 ...
$ Month       : num  5 5 5 5 5 5 5 5 5 5 ...
$ Day         : int  1 1 2 3 4 5 6 7 8 8 ...
$ Hour        : int  12 20 12 12 12 12 12 12 12 20 ...
$ load        : num  1.011 0.91 0.997 1.011 0.995 ...

Route FlightNumber Capacity Booked DDate Year Month Day Hour load(=Booked/Capacity) 1 A 770 375 379 2018-05-01 2018 5 1 12 1.0106667 2 B 279 345 314 2018-05-01 2018 5 1 20 0.9101449 3 A 128 375 374 2018-05-02 2018 5 2 12 0.9973333 4 A 235 375 379 2018-05-03 2018 5 3 12 1.0106667 5 A 434 375 373 2018-05-04 2018 5 4 12 0.9946667 6 A 543 375 377 2018-05-05 2018 5 5 12 1.0053333

Если я строю данные, это выглядит так: geom_point

ОБНОВЛЕНИЕ : я закончил тем, что сделал следующее:

dat_A <- test %>% select(Route, DDate, load) %>% filter(Route == "A")
ts_A <- ts(dat_A$load, start = c(2017,5), end = c(2018,11), frequency = 1*12)
forecast(ts_A, h=12) %>% plot()

Прогнозируемое изображение результата

#Double checking
fit <- auto.arima(ts_A)
summary(fit)
predict <- forecast(fit,n=1)
plot(predict)

plot.ts(predict$residuals)
qqnorm(predict$residuals) 
acf(predict$residuals)

Кажется ли предсказание верным?Выглядит довольно плоско, хотя я также пробовал тренировать (1: 480) / валидат (481: 611) через ариму, а затем прогнозировать с RMSE 0,036 ...

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

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

ts_data = ts(df$Booked, start = c(2017,1), end = c(2018,12), frequency = 12)

Теперь вы можете простоПримените прогноз временных рядов к этому ts_data, чтобы предсказать значение 2019. Я оставляю оставшуюся часть кода для вас.Спасибо !!

0 голосов
/ 24 октября 2018

Чтобы преобразовать vector или data.frame во временной ряд, вы можете использовать:

dat <- as.ts(as.matrix(dat))
...