我想用 dplyr 预测几个模型。这些模型适用于时间序列数据,因此每个小时都是自己的模型。即hour=1是model,hour=18是model。
例子:
# Historical data - Basis for the models:
df.h <- data.frame(
hour = factor(rep(1:24, each = 100)),
price = runif(2400, min = -10, max = 125),
wind = runif(2400, min = 0, max = 2500),
temp = runif(2400, min = - 10, max = 25)
)
# Forecasted data for wind and temp:
df.f <- data.frame(
hour = factor(rep(1:24, each = 10)),
wind = runif(240, min = 0, max = 2500),
temp = runif(240, min = - 10, max = 25)
)
我可以按小时适应每个模型:
df.h.1 <- filter(df.h, hour == 1)
fit = Arima(df.h.1$price, xreg = df.h.1[, 3:4], order = c(1,1,0))
df.f.1 <- filter(df.f, hour == 1)
forecast.Arima(fit, xreg = df.f.1[ ,2:3])$mean
但是做这样的事情会很棒:
fits <- group_by(df.h, hour) %>%
do(fit = Arima(df.h$price, order= c(1, 1, 0), xreg = df.h[, 3:4]))
df.f %>% group_by(hour)%>% do(forecast.Arima(fits, xreg = .[, 2:3])$mean)
最佳答案
如果您想将其打包到一个调用中,您可以将数据绑定(bind)到一个 data.frame
中,然后在 do
调用中再次将其拆分。
df <- rbind(df.h, data.frame(df.f, price=NA))
res <- group_by(df, hour) %>% do({
hist <- .[!is.na(.$price), ]
fore <- .[is.na(.$price), c('hour', 'wind', 'temp')]
fit <- Arima(hist$price, xreg = hist[,3:4], order = c(1,1,0))
data.frame(fore[], price=forecast.Arima(fit, xreg = fore[ ,2:3])$mean)
})
res
关于r - 预测几个时间序列模型,dplyr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27502350/