使用R-需要根据不规则的时间序列预测明年的建议

时间:2018-10-24 13:32:42

标签: r predict

关于以下查询,我需要建议:“根据您的观察,您能对2019年同期的负载怎么说?”

df的str()/ head()看起来像这样:

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()

Predicted outcome image

#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)

预测似乎合理吗?即使我也通过arima尝试了train(1:480)/ validat(481:611),然后预测的RMSE为0.036,看上去还是很平坦的。

2 个答案:

答案 0 :(得分:0)

要将vectordata.frame转换为时间序列,可以使用:

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

答案 1 :(得分:0)

这是您可以尝试的解决方案。我可以指导您使用以下函数生成时间序列。首先加载您的数据,说它是df,它的列为Booked,因此您可以使用以下方法来生成易于拟合的时间序列。

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

现在,您只需在此ts_data上应用时间序列预测来预测2019年的价值。我将剩下的代码留给您使用。谢谢!!