使用 Rob Hyndman 的出色预测包,我发现不仅需要有预测区间,还需要模拟许多未来路径,给定过去对具有复杂季节性的时间序列的观察。对于只有一个或两个季节性的不太复杂的时间序列有一些东西(预测包中的 simulate.ets() ),但在我的情况下,对于更复杂的 tbats 模型,我需要等价于模拟.ets() 。
我假设创建此类路径所需的数据已经存在于 fit 对象中,但创建示例路径的可能性似乎无法直接访问。因此,我想出了一个幼稚的解决方案,并想知道这种方法是否正确。
require(forecast)
fit = bats(test,use.parallel=T,use.damped.trend=F,use.trend=T,seasonal.periods=seasonal.periods)
天真地,我想可以通过使用来自的点预测来构建样本路径
fit
> forecast(fit)
Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
1960.016 24.48576 23.82518 25.14633 23.47550 25.49602
1960.032 24.79870 23.88004 25.71735 23.39374 26.20366
1960.048 25.31743 24.39878 26.23608 23.91247 26.72239
1960.065 25.69254 24.77389 26.61120 24.28759 27.09750
1960.081 26.06863 25.14998 26.98729 24.66367 27.47359
1960.097 26.43215 25.51350 27.35080 25.02719 27.83711
1960.113 26.77674 25.85809 27.69540 25.37179 28.18170
并简单地从模型拟合过程中添加随机抽取的值。
> fit$errors
Time Series:
Start = c(1959, 2)
End = c(1960, 1)
Frequency = 365
[1] 0.140656913 -0.455335141 -0.558989185 1.697532911 -0.114406022 0.366182718 -0.377056927 0.396144296
因此,与
prediction = forecast(fit)
errors = fit$errors
path = prediction$mean + sample(errors, size = length(prediction$mean))
plot(ts(path))
可以构建一个样本路径。
这是构建示例路径的有效方法吗?如果不是,那么正确的方法是什么?
非常感谢您的帮助!