[英]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.