簡體   English   中英

借助dplyr groupby函數使用auto.arima進行預測

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM