2014-12-07 88 views
0

我想用r中的hts package的最佳联合方法来获得单指数平滑(SES)预测方法的分层预测,我在手册中阅读了可用预测方法是ets,arima和rw的手册。我想知道是否可以使用SES等其他预测方法?我试图使用下面的代码,但我得到一个错误。hts package in R

library(forecast)  
library(hts) 

mydata <- matrix(rnorm(103*2, mean = 200, sd = 20), nrow = 103, ncol = 2) 

data <- hts(mydata) 
tdata=window(data,1,70)# training data 
test=window(data,71,103)# test data 
alldata <- aggts(tdata) 

allf <- matrix(NA, nrow = 33, ncol = ncol(alldata))#all forecast 

for(i in 1:ncol(alldata)) 
    allf[,i] <- ses((alldata[,i]), h = 33)$mean# generate forecasts usign SES 

tdata.f <- combinef(allf, data$nodes, weights = NULL, keep = "gts") 
+0

该代码适用于使用CRAN当前版本的hts(v4.4)。你使用的是什么版本的HTS? – 2014-12-08 20:37:19

回答

1

?ets告诉你如何使用添加剂的错误,没有趋势但没有季节性的,这是SES状态空间形式指定一个模型。应该添加参数model="ANN"。这将传递到ets()

+0

谢谢Stephan,是的,我已经试过model =“ANN”,fmethod =“ets(model =”ANN“)”,但它不起作用 – Roji 2014-12-07 14:07:04

+0

@Roji你应该发布一个工作示例代码失败。尝试使用示例中'hts'包中的'infantgts'数据集,以便我们可以重现它。 – Zach 2014-12-07 15:24:54

+0

其实,我有420个系列,想用最佳组合方法得到顶级和底级的预测,所以有两个级别可用,level0(一个系列)和level1(420)系列,我使用这些cods:mydata < - hts(mydata)#我只有两个级别; aggts(数据) ALLF < - - 矩阵(NA与一个系列,1级与420系列 H = 12 数据=窗口(MYDATA,1,70) 测试=窗口(MYDATA,71103) ALLDATA <0级(alldata [,i]),model =“ANN”),nrow = h,ncol = ncol(alldata)) (i in 1:ncol(alldata)) allf [,i] < - forecast ,h = h)$ mean data.f < - combinef(allf,mydata $ nodes,weights = NULL,keep =“gts”) – Roji 2014-12-07 15:25:03