1

我正在尝试对具有这种模式的数据集进行冬季预测:

>Insample

Region   Week     Sales
   x    01/1/2013   200
   x    08/1/2013   250
   x    15/1/2013   185
   x    22/1/2013   375
   y    01/1/2013   155
   y    08/1/2013   160
   y    15/1/2013   225
   y    22/1/2013   200
   z    01/1/2013   345
   z    08/1/2013   285
   z    15/1/2013   300 
   z    22/1/2013   325

我一直在关注R和 Rob Hyndman 的Otexts的小书。但据我了解,我们一次只能考虑一个数据集。但是考虑到我在这个数据集中拥有的区域数量,我可能必须将每个区域的数据分别存储在工作区中,并且每次都从那里读取。这似乎效率不高。有没有办法处理这个?

我也有同样的问题,arima但有人建议使用它并且它有效:

arima_fits <- group_by(Insample, Region) %>% do(fit=auto.arima(.$Sales))

但这似乎对硬件没有帮助。

hw_fits <- group_by(Insample, Region) %>% do(fit=hw(.$Sales))

错误:

ets(x, "AAA", alpha = alpha, beta = beta, gamma = gamma, damped = damped, : 非季节性数据中的错误

由于我收到此错误,我尝试按地区(单变量系列 - 1 个地区的销售额)进行此操作,并且效果很好。

fit1 <- hw(Region1, seasonal="additive")

有什么建议么?

4

2 回答 2

2
 Insample <- read.table(text="Region Week Sales
  x 01/1/2013 200
  x 08/1/2013 250
  x 15/1/2013 185
  x 22/1/2013 375
  y 01/1/2013 155
  y 08/1/2013 160
  y 15/1/2013 225
  y 22/1/2013 200
  z 01/1/2013 345
  z 08/1/2013 285
  z 15/1/2013 300
  z 22/1/2013 325",sep="",header=T,stringsAsFactors=F)

  library(stringr)
  library(dplyr)
  library(forecast)

  Insample %>% 
  group_by(Region) %>%
  mutate(year= as.numeric(str_extract(Week, perl('(?<=\\/)\\d+$'))), #extract year from Week column
       tsR= ts(Sales, start=year, frequency=52)) %>% 
       do(data.frame(fc = forecast(ets(.$tsR))))
于 2014-08-04T14:38:20.853 回答
0
hltwtr<-function(x)   
{

tsfull<- ts(x$Sales, start=c(2013,2), freq=12)

  fr<-hw(tsfull, seasonal="additive", bootstrap=TRUE, simulate=TRUE,h=1, alpha = 0.7)

  fr<-data.frame(fr)

  return(fr)
}

i6<-split(Insample,list(Insample$Region))

dspt6<-i6[sapply(i6, function(x) dim(x)[1]) >= 2]

forecast<-sapply(dspt6,function(x) hltwtr(x))

forecast<-data.frame(forecast)

forecast <- t(forecast)

forecast <- as.data.frame(forecast)

forecast <- forecast[c(1)]

forecast <- do.call(rbind,forecast)

forecast <- t(forecast)

write.csv(forecast,'D:/forecast.csv')'
于 2016-11-08T07:27:34.220 回答