该项目基于 2010 年 1 月 4 日至 2016 年 10 月 30 日期间比利时电价的小时时间序列。我的数据集是上面的:
训练集:
> dput(head(data1))
structure(list(datetime_utc = c("2010-01-04 00:00:00", "2010-01-04 01:00:00",
"2010-01-04 02:00:00", "2010-01-04 03:00:00", "2010-01-04 04:00:00",
"2010-01-04 05:00:00"), Generation_BE = c(13143.7, 13143.7, 13143.7,
13143.7, 13143.7, 13143.7), Generation_FR = c(63599, 62212, 62918,
62613, 62432, 63411), Prices.BE = c(37.15, 33.47, 28, 21.29,
16.92, 28), holidaysBE = c(0L, 0L, 0L, 0L, 0L, 0L)), row.names = c(NA,
6L), class = "data.frame")
测试集:
> dput(head(data2))
structure(list(datetime_utc = c("2016-10-24 00:00:00", "2016-10-24 01:00:00",
"2016-10-24 02:00:00", "2016-10-24 03:00:00", "2016-10-24 04:00:00",
"2016-10-24 05:00:00"), Generation_BE = c(9615.7075, 9626.865,
9648.0025, 9668.42, 9681.805, 9688.425), Generation_FR = c(45605L,
44629L, 44073L, 44359L, 44056L, 44799L), Prices.BE = c(44.6,
40.92, 37.39, 36.4, 33.01, 37.89), holidaysBE = c(0L, 0L, 0L,
0L, 0L, 0L)), row.names = c(NA, 6L), class = "data.frame")
我应该使用时间序列预测方法来预测比利时价格 (Prices.Be) 的时间序列,考虑范围为 168(未来 7 天的每小时预测)。对于这个构造,我必须使用训练集数据。
我已经制作了时间序列:
library(dplyr)
library(zoo)
colSums(is.na(data1))
newdata1 <- data1 %>%
mutate(across(where(~ is.numeric(.) && anyNA(.)),
na.aggregate, FUN = median))
colSums(is.na(newdata1))
# Extract Belgium prices time series from data
belgiump_ts <- ts(newdata1$Prices.BE, start = as.Date("2001-01-01"), frequency = 365*24)
所以,我决定选择 ARIMA 模型来实现对时间序列的预测。 我面临的问题是我不知道如何创建 ARIMA 预测的交叉验证??? 我对此很困惑,我无法理解如何面对这些困难。我无法考虑如何开始构建这个。