MinT 具有非负约束的分层协调? hts vs 寓言?

问题描述 投票:0回答:1

:如何进行分层对账:

  • 使用 MinT 算法(理想情况下)的各种基本预测模型,
  • 具有非负协调预测输出(必要),
  • 是分布式的(必然是封闭形式或模拟形式),
  • 在 R tidyverts/fable 框架内(理想情况下)?

以下是我尝试过的几个选项。不幸的是,两者都达不到我的需求:

  • fabletools::min_trace(method='mint_shrink')
    :我喜欢它有不幸的是,它没有非负参数。因此,即使由于对数转换而保证为正值,我的预测也会与负值相一致。这太令人失望了,因为它甚至可以通过引导抽样基本预测模型残差作为基本预测模型预测误差来生成协调预测(经验)的分布,然后协调每个引导模拟预测。
  • hts::forecast.gts(fmethod='arima', weights='mint', nonnegative=TRUE)
    :这个函数应该被前一个函数取代,但它确实有一些
    fabletools::min_trace()
    中不存在的功能,即
    nonnegative=TRUE
    选项。不幸的是,唯一的
    fmethod
    选项是
    'ets'
    'arima'
    'rw'
    。这对我的情况来说是相当有限的。我需要使用各种基本预测模型 - 即使是像在
    d=1
    模型中强制使用差异参数
    arima
    这样简单的事情,我可以通过
    fable
    ARIMA(y~pdq(d=1))
    中执行此操作,但不能在此处执行此操作
    hts

也许我是个东西,一个参数,一个函数,一个包,明白吗?我希望我是。如果是这样,请告诉我。否则,

:您建议采用什么方法?

现在,我认为对我来说最好的选择是:

  1. 产生基本预测(非负输出)
  2. 通过
    fabletools::min_trace()
    协调基本预测(可能出现负输出)
  3. 对于层次结构最低级别的协调预测,将所有负数设置为零
  4. 将差异传播到层次结构的下一个级别,重复直到到达顶层
  5. 通过协调的分布预测中描述的引导程序重复所有这些。

但也许有更好的方法?

r time-series forecasting tidyverts fabletools
1个回答
0
投票

目前,我认为你提出的方法是最好的方法。在步骤 4 中,我假设您的意思是添加底层协调预测(将负数设置为零后)以获得更高水平的预测。

我们正在对寓言中的和解进行重大重写,以使其能够处理更多功能。在准备就绪之前,我们已暂停移植一些仅在 hts 中可用的功能。

我认为你也可以使用 FoReco 包以非 tidyverse 的方式完成你所提议的事情。

© www.soinside.com 2019 - 2024. All rights reserved.