[英]Forecast using auto.arima with help of dplyr groupby function
我需要预测150天中100家商店中某些产品(10种产品)的需求。 在这种情况下,我需要对PRODUCT和STORE进行分组,并拟合Arima模型并对其进行预测。 另外,某些产品的商店可能更少。 我需要使用auto.arima,因为有10000个子集。 我写了一个代码,可以计算适合度,但无法预测它。
data <- read.csv("data.csv")
dat <- data.frame(data)
library(dplyr)
library(forecast)
model_fit <- group_by(dat, PRODUCT,STORE) %>% do({fit=auto.arima(.$DEMAND)})
直到此处,该代码还可以通过一些警告(例如“无法使用最大似然来拟合最终模型。AIC值近似”)正常运行。 我希望一切都好,请让我知道是否以及为什么。
现在,我需要将其预测到“我是R的新手”一栏中,因此通过在线材料,我认为这是可行的。
dat[,"Forecast"] <- NULL
model_fit <- group_by(dat, PRODUCT,STORE) %>% do({fit=auto.arima(.$DEMAND) Forecast = forecast(fit)})
write.csv(dat,"Forecast.csv",row.names = FALSE)
这部分不起作用。 请让我知道此代码的问题。 谢谢。
仅供参考,如果您声明一个简单的,可复制的示例,您将获得更多/更好/更快的答案(我没有访问data.csv的权限,因此我无法运行您拥有的功能)。
我认为这是一些示例输入,它们反映了您的问题的主要思想:
> df <- data_frame(g = c(1, 1, 1, 1, 2, 2, 2, 2), v = c(1, 2, 3, 4, 1, 4, 9, 16))
> df
Source: local data frame [8 x 2]
g v
1 1 1
2 1 2
3 1 3
4 1 4
5 2 1
6 2 4
7 2 9
8 2 16
如果您确切说明所收到的错误消息,它也有帮助。 我的猜测是,您将得到一些类似“结果不是数据帧”的信息,就像我在这里所做的那样:
> df %>% group_by(g) %>% do(forecast(auto.arima(.$v), h=3))
Error: Results are not data frames at positions: 1, 2
我相信您的问题是您没有在do()语句中返回数据帧,也许您还想返回$ mean值。
在我给出的示例中,要为每个组g创建一个预测,您可以执行以下操作:
> df %>% group_by(g) %>% do(data.frame(v_hat = forecast(auto.arima(.$v), h=3)$mean))
Source: local data frame [6 x 2]
Groups: g
g v_hat
1 1 6
2 1 7
3 1 8
4 2 31
5 2 37
6 2 43
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.