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

How to get top down forecasts using `hts::combinef()`?

我正在尝试将 hts 包中的预测协调方法与先前存在的预测进行比较。 forecast.gts 函数对我不可用,因为没有计算上易于处理的方法来创建用户定义的函数,returns 预测对象中的值。因此,我在包中使用 combinef() 函数来重新分配预测。我已经能够使用正确的 weights 来获得 wlsnseries 方法,并且 ols 版本是默认版本。我能够使用以下方法获得 "bottom up" 方法:

# 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 这样的东西可能会给我三个自上而下的预测之一,但这只会导致一堆 0s 或 NaN 值取决于您如何看待它。

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

我知道自上而下的方法并不是最难手动计算的,我可以编写一个函数来完成,但是 hts 包中是否有任何工具可以帮助解决这个问题?我想保持数据格式一致以简化我的分析。最具体地说,我想获得 "top down forcasted proportions" 或 tdfp 方法。

使用 "top-down" 方法协调预测的函数当前未导出。可能我应该导出它们以使 "top-down" 结果在下一版本中与 combinef() 一样易于处理。解决方法如下:

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

希望对您有所帮助。