问:如何进行分层对账:
以下是我尝试过的几个选项。不幸的是,两者都达不到我的需求:
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
。也许我是个东西,一个参数,一个函数,一个包,明白吗?我希望我是。如果是这样,请告诉我。否则,
问:您建议采用什么方法?
现在,我认为对我来说最好的选择是:
fabletools::min_trace()
协调基本预测(可能出现负输出)但也许有更好的方法?
目前,我认为你提出的方法是最好的方法。在步骤 4 中,我假设您的意思是添加底层协调预测(将负数设置为零后)以获得更高水平的预测。
我们正在对寓言中的和解进行重大重写,以使其能够处理更多功能。在准备就绪之前,我们已暂停移植一些仅在 hts 中可用的功能。
我认为你也可以使用 FoReco 包以非 tidyverse 的方式完成你所提议的事情。