我正在尝试比较来自hts包的预测调节方法与以前已有的预测。forecast.gts函数对我来说是不可用的,因为没有可计算的可操作的方法来创建返回预测对象中的值的用户定义函数。因此,我使用包中的combinef()函数重新分发预测。我已经能够使用适当的weights来获得wls和nseries方法,而ols版本是默认的。我能够使用以下方法获得“自下而上”方法:
# 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或NaN值,这取决于你如何看待它。
combinef(allf, htseg1$nodes, weights = c(1, rep(0, numTS - 1)))我知道自上而下的方法并不是最难手工计算的东西,我只需要编写一个函数就可以了,但是在hts包中有什么工具可以帮助做到这一点呢?我想保持数据格式的一致性,以简化我的分析。具体来说,我想得到“自顶向下预测比例”或tdfp方法。
发布于 2017-04-03 01:41:52
使用“自顶向下”方法调节预测的功能目前还没有输出。也许我应该导出它们以使下一个版本中的“自上而下”结果像combinef()一样易于处理。解决办法如下:
hts:::TdFp(allf, nodes = htseg1$nodes)希望能帮上忙。
https://stackoverflow.com/questions/43058495
复制相似问题