如何使用`hts :: combinef()`获得自上而下的预测?

时间:2017-03-28 00:09:58

标签: r time-series hierarchy forecasting

我正在尝试比较先前现有预测中hts包的预测对帐方法。 forecast.gts函数不可用,因为没有计算上易于处理的方法来创建用户定义的函数来返回预测对象中的值。因此,我使用包中的combinef()函数来重新分配预测。我能够使用正确的weights来获取wlsnseries方法,ols版本是默认版本。我能够得到#34;自下而上"方法使用:

# Creates sample forecasts, taken from `combinef()` example
library(hts)
h <- 12
ally <- aggts(htseg1)
allf <- matrix(NA, nrow = h, ncol = ncol(ally))
for(i in 1:ncol(ally))
    allf[,i] <- forecast(auto.arima(ally[,i]), h = h, PI = FALSE)$mean
allf <- ts(allf, start = 51)
# create the weight vector
numTS <- ncol(allf) # Get the total number of series
numBaseTS <- sum(tail(htseg1$nodes, 1)[[1]]) # Get the number of bottom level series
# Create weights of 0 for all aggregate ts and 1 for the base level
weightVals <- c(rep(0, numTS - numBaseTS), rep(1, numBaseTS))
y.f <- combinef(allf, htseg1$nodes, weights = weightVals)

我希望像第一个重量1和其他0这样的东西可能会给我三个自上而下的预测中的一个,但这只会产生一堆0 s或NaN值取决于您尝试查看它的方式。

combinef(allf, htseg1$nodes, weights = c(1, rep(0, numTS - 1)))

我知道自上而下的方法并不是手动计算最困难的方法,我只能编写一个函数来做到这一点,但hts包中是否有任何工具可以帮助解决这个问题?我希望保持数据格式一致,以简化我的分析。最具体地说,我希望得到自上而下的比例&#34;或tdfp方法。

1 个答案:

答案 0 :(得分:2)

目前尚未导出使用“自上而下”方法协调预测的功能。可能我应该导出它们以使“自上而下”的结果在下一版本中与combinef()一样易于处理。解决方法如下:

hts:::TdFp(allf, nodes = htseg1$nodes)

希望它有所帮助。