如何解释 TBATS 模型结果和模型诊断

机器算法验证 r 时间序列 诊断 多重季节性 tbats
2022-03-30 00:22:48

我有一个半小时的需求数据,这是一个多季节的时间序列。我在 Rtbats中的forecastpackage 中使用,得到如下结果:

TBATS(1, {5,4}, 0.838, {<48,6>, <336,6>, <17520,5>}) 

是不是表示序列不一定要用Box-Cox变换,误差项是ARMA(5, 4),用6、6、5项来解释季节性?阻尼参数 0.8383 是什么意思,它也用于转换吗?

下面是模型的分解图:

在此处输入图像描述

我想知道该模型的作用levelslope说明。“斜率”说明了趋势,但是呢level如何为session 1和获得更清晰的图session 2,它们分别是每日和每周的季节性。

我还知道如何进行模型诊断tbats以评估模型,除了 RMSE 值。正常的方法是检查错误是否是白噪声,但这里的错误应该是ARMA系列。我绘制了错误的“acf”和“pacf”,我认为它看起来不像 ARMA(5,4)。这是否意味着我的模型不好?

acf(resid(model1),lag.max = 1000)
pacf(resid(model1),lag.max=1000)

在此处输入图像描述

最后一个问题,RMSE是使用拟合值和真值计算的。如果我使用预测值fc1.week$mean和真实值来评估模型怎么办,它仍然被称为RMSE或者,这个还有别的名字吗?

fc1.week <-forecast(model1,h=48*7)
fc1.week.demand<-fc1.week$mean
1个回答

在 的帮助页面中?tbats,我们发现:

拟合模型指定为 TBATS(omega, p,q, phi, ...,),其中 omega 是 Box-Cox 参数,phi 是阻尼参数;误差被建模为 ARMA(p,q) 过程,m1,...,mJ 列出了模型中使用的季节性周期,k1,...,kJ 是用于每个季节性的傅里叶项的相应数量。

所以:

  • omega = 1,这意味着确实没有Box-Cox 变换
  • phi = 0.838,意味着趋势将受到抑制。(老实说,我不知道是否对应于总阻尼。最好用模拟数据玩一下。)见参数ϕ=0ϕ=1use.damped.trendtbats()
  • 您有三个不同的季节周期,一个长度为 48 = 24*2(每天),一个长度为 336 = 7*24*2(每周),一个长度为 17520 = 365*24*2(每年)。tbats使用六个傅立叶项拟合第一个,第二个再次使用六个,最后一个使用五个。

De Livera, Hyndman & Snyder (2011, JASA )的原始 TBATS 论文当然很有用。

下一个:

  • “级别”是时间序列的本地级别。
  • “趋势”是局部趋势。

这些类似于使用 lowess (STL) 的更常见的季节趋势分解看一下stl()命令。

要获得更清晰的第 1 季和第 2 季图,您可以查看 TBATS 模型的各个组件的数值。str(tbats.components(model1))summary(tbats.components(model1))tbats.components()为您提供多个时间序列 ( mts) 对象,该对象本质上是一个矩阵 - 其中一列将为您提供每个季节性分量。

residuals()应该像它在 R 中的任何地方一样工作;也就是说,它应该返回最终的残差。这些确实应该是白噪声,因为它们是应用 ARMA(5,4)后的残差。您的 ACF 中的峰值似乎是有规律的 - 看起来还有一些剩余的季节性。你能推断出它们的周期性吗?(滞后以最长季节性周期的倍数计算并没有真正帮助。)

最后,是的,均方根误差是一种常见的点预测精度度量,具有相同的首字母缩略词 out-of sample:RMSE。