使用 R 预测包中的 TBATS 解释时间序列分解

机器算法验证 r 时间序列 预测 多重季节性 tbats
2022-03-17 22:05:30

我想将以下时间序列数据分解为季节性、趋势和剩余分量。数据是来自商业建筑的每小时冷却能源概况:

TotalCoolingForDecompose.ts <- ts(TotalCoolingForDecompose, start=c(2012,3,18), freq=8765.81)
plot(TotalCoolingForDecompose.ts)

冷却能量时间序列

因此,根据以下建议,有明显的每日和每周季节性影响:如何分解具有多个季节性成分的时间序列?,我使用了包中的tbats函数forecast

TotalCooling.tbats <- tbats(TotalCoolingForDecompose.ts, seasonal.periods=c(24,168), use.trend=TRUE, use.parallel=TRUE)
plot(TotalCooling.tbats)

结果是:

在此处输入图像描述

该模型的levelslope组件描述了什么?我怎样才能获得与此软件包( De Livera、Hyndman 和 Snyder(JASA,2011) )引用的论文类似的trend和组件remainder

1个回答

这个页面的用户评论中,有人询问水平和斜率的解释,以及如何获得decompose()函数提供的趋势和残差。Hyndman 评论说,没有直接的翻译decompose()tbats()使用不同的模型。但如果您的 TBATS 模型没有 Box-Cox 变换,则 TBATS 水平与decompose()趋势大致相同。另一方面,如果模型确实应用了 Box-Cox 变换,那么您必须在将水平解释为(大致)趋势之前撤消变换。至少我是这样解读他的回应的。

至于残差和斜率,它们是不一样的。

您可以认为基本分解具有趋势成分、季节性成分和残差成分。

您可以将趋势进一步细分为水平和斜率。水平本质上是趋势的基线,斜率是每单位时间的变化。

将趋势分解为水平和斜率的原因是某些模型支持抑制增长。也许您观察到当前的增长,但您预计增长会随着时间的推移逐渐减少,并且您希望您的预测能够反映这种预期。该模型支持这一点,允许您通过对斜率应用阻尼因子来抑制增长,使其趋向于零,这意味着趋势趋向于其水平分量。

对于水平和斜率如何结合产生趋势的问题,没有一个直接的答案。这取决于您使用的模型类型。作为一般陈述,加法趋势模型以加法方式组合它们,而乘法趋势模型以乘法方式组合它们。模型的阻尼变体将水平与阻尼斜率结合在一起。Hyndman 的“指数平滑预测”一书(希望可以包含亚马逊链接——我与作者没有任何隶属关系)在表 2.1 中提供了基于每个模型的精确方程。