首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用“`hts::组合()”获得自上而下的预测?

如何使用“`hts::组合()”获得自上而下的预测?
EN

Stack Overflow用户
提问于 2017-03-28 00:09:57
回答 1查看 556关注 0票数 0

我正在尝试比较来自hts包的预测调节方法与以前已有的预测。forecast.gts函数对我来说是不可用的,因为没有可计算的可操作的方法来创建返回预测对象中的值的用户定义函数。因此,我使用包中的combinef()函数重新分发预测。我已经能够使用适当的weights来获得wlsnseries方法,而ols版本是默认的。我能够使用以下方法获得“自下而上”方法:

代码语言:javascript
复制
# 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这样的东西可以给我三个自上而下的预测之一,但这只会产生一堆0NaN值,这取决于你如何看待它。

代码语言:javascript
复制
combinef(allf, htseg1$nodes, weights = c(1, rep(0, numTS - 1)))

我知道自上而下的方法并不是最难手工计算的东西,我只需要编写一个函数就可以了,但是在hts包中有什么工具可以帮助做到这一点呢?我想保持数据格式的一致性,以简化我的分析。具体来说,我想得到“自顶向下预测比例”或tdfp方法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-03 01:41:52

使用“自顶向下”方法调节预测的功能目前还没有输出。也许我应该导出它们以使下一个版本中的“自上而下”结果像combinef()一样易于处理。解决办法如下:

代码语言:javascript
复制
hts:::TdFp(allf, nodes = htseg1$nodes)

希望能帮上忙。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43058495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档