【发布时间】:2019-08-19 07:37:45
【问题描述】:
我正在对如下所示的数据框(名称:df5)使用批量预测方法:
Primary.Base.Product Variable Value
A Aug '16 1
A Sep '16 4
B Aug '16 10
B Sep '16 2
Z Aug '16 6
Z Sep '16 12
我在这里尝试了 ramhiser 建议的 DPLYR 代码:For loop for forecasting several datasets at once in R
library(dplyr)
library(smooth)
library(forecast)
library(tstools)
#Create a DF
Primary.Base.Product <- c('A','A','B','B','C','C')
variable <- c('Aug16','Sep16','Aug16','Sep16','Aug16','Sep16')
value <- c(1,4,10,2,6,12)
df5 = data.frame(Primary.Base.Product,variable,value)
#Do Batch Forecasting:
model_fits2 <- group_by(df5, Primary.Base.Product) %>% do(fit=ets(.$value))
head(model_fits2)
forecast(model_fits2$fit[[1]])
它工作正常,但我如何将数据拆分为测试和训练并使用 accuracy() 函数计算准确度?另外,如何计算拟合值与实际值的准确性?
感谢任何形式的帮助!提前致谢!
我试过了:
model_fits2 <- group_by(df5, Primary.Base.Product) %>%
do(fit=ets(.$value[1:(nrow(df5)-10)]))
model_acc2 <- group_by(df5, Primary.Base.Product) %>%
do(acc=accuracy(.$value[(nrow(df5)+1):nrow(df5)],
forecast(model_fits2$fit,h=10)))
错误是:
ets 中的错误(对象,lambda = lambda,biasadj = biasadj,allow.multiplicative.trend = allow.multiplicative.trend,: y 应该是一个单变量时间序列
【问题讨论】:
-
您好,请提供complete reproducible example,一定会有人帮忙的。
-
This 可能会有所帮助。
-
非常感谢您编辑我的问题,@A。苏里曼。我现在提供了一个完整的例子。
标签: r loops dplyr forecasting