2016-12-02 189 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

感謝您的回覆! –