关于以下查询,我需要建议:“根据您的观察,您能对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()
#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,看上去还是很平坦的。
答案 0 :(得分:0)
要将vector
或data.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年的价值。我将剩下的代码留给您使用。谢谢!!