我正致力于构建时间序列模型。
但是,我无法理解simulate
函数与forecast
包中的forecast
函数之间的区别。
假设我构建了一个arima模型,并希望用它来模拟未来的值长达10年。数据是每小时一次,我们有一年的数据。
当使用forecast
预测接下来的1000步预测时,我得到了以下图表。
使用预测方法
然后我使用simulate
函数来模拟接下来的1000个模拟值并获得以下图表。
使用模拟方法
红线后的数据点是模拟数据点。
在后一个例子中,我使用以下代码来模拟未来的值。
simulate(arima1, nsim=1000, future=TRUE, bootstrap=TRUE))
其中arima1
是我训练过的arima模型,使用自举残差,因为模型残差不是很正常。
forecast
包中的每个定义,future=TRUE
表示我们正在根据历史数据模拟未来的值。
谁能告诉我这两种方法有什么区别?为什么simulate()
给出了更加真实的结果,但forecast()
的预测值在几次迭代后收敛到一个常数(simulate()
的结果没有太大的波动)?