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


11

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

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 1session 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

Answers:


8

在的帮助页面中?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ϕ=1个use.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中的峰值似乎是规则的-看起来还有一些季节性。你能推断出它们的周期性吗?(将延迟计算为最长的季节性周期的倍数并没有帮助。)

最后,是的,均方根误差是一种常用的点预测精度度量,在样本外具有相同的首字母缩写:RMSE。


1
非常感谢!是的,ACF的峰是规则的,在48个滞后中有一个峰。问题是我已经在时间序列中包括了48个季节。您通常如何解决季节性残差?还有什么值得尝试的吗?
珍妮

1
哼。不幸的是,我没有找到一种方法来强制tbats()针对特定的季节性添加更多的傅立叶术语。抱歉...
Stephan Kolassa,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.