2016-12-02 63 views
2

我正在构建时间序列模型。“预测”包中模拟()和预测()之间的区别

但是,我无法理解forecast软件包中的simulate函数和forecast函数之间的区别。

假设我构建了arima模型,并且想用它来模拟未来值长达10年的模型。数据是每小时,我们有一年的数据。

当使用forecast预测下一个1000步提前估计时,我得到了下面的图。

使用预测方法

enter image description here

然后我用的simulate功能来模拟未来1000个模拟值,并得到了以下情节。

使用模拟方法

enter image description here

数据点红线是模拟数据点之后。

在后面的例子中,我用下面的代码来模拟未来的值。

simulate(arima1, nsim=1000, future=TRUE, bootstrap=TRUE)) 

其中arima1是我训练的ARIMA模型,引导残差使用,因为模型残差不是非常正常的。

根据forecast包中的定义,future=TRUE意味着我们将根据历史数据模拟未来值。

谁能告诉我这两种方法有什么区别?为什么simulate()给了我一个更现实的结果,但是预测值forecast()在多次迭代后收敛于常数(simulate()的结果没有太大波动)?

回答

2

模拟是该系列未来可能的样品路径。

点预测是所有可能的未来样品路径的平均值。所以点预测通常比数据变化小得多。

forecast函数生成包含未来样本路径中估计变化的点预测(均值)和区间预测。

作为一个观点,由于偏度的原因,ARIMA模型不适合这个时间序列。您可能需要先使用转换。

+0

感谢您的回复! –

相关问题