我正在尝试为以下模式的数据集做一个冬季天气预报:
>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没有帮助。
hw_fits <- group_by(Insample, Region) %>% do(fit=hw(.$Sales))
在ets(x, "AAA", alpha = alpha, beta = beta, gamma = gamma,阻尼=阻尼,:非季节性数据
因为我得到了这个错误,我试着对每个地区(单变量序列- 1个地区的销售额)进行分析,结果很好。
fit1 <- hw(Region1, seasonal="additive")
有什么建议吗?
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))))
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')'