定義 ARIMA 順序的問題
這篇文章很長,希望大家多多包涵,有錯誤的地方請指正。
我的目標是根據 3 或 4 週的歷史數據生成每日預測。
該數據是其中一條變壓器線路的本地負載的 15 分鐘數據。我無法找到季節性 ARIMA 過程的模型順序。考慮電力需求時間序列:
原始時間序列 http://i.share.pho.to/80d86574_l.png
當將前 3 周作為子集並進行差分時,計算以下 ACF/PACF 圖:
子集 http://i.share.pho.to/5c165aef_l.png
第一個區別 http://i.share.pho.to/b7300cc2_l.png
季節性和第一個差異 http://i.share.pho.to/570c5397_l.png
這看起來像這個系列有點固定。但季節性也可以是每週一次(請參閱季節性差異周和二階差異 [此處] http://share.pho.to/3owoq,您怎麼看?)
因此,讓我們得出結論,模型的形狀為: $$
ARIMA(p,1,q)(P,1,Q)_{96} $$在最後一個圖中,滯後 96 處的明顯尖峰表明存在季節性 MA(1) 分量(也許 AR(1) 可能以及 PACF 中也存在明顯尖峰)。滯後 1:4 處的尖峰表示 MA(4) 分量,它與 PACF 中的指數衰減相對應,具有一點想像力。因此,手動選擇的初始模型可能是: $$
ARIMA(0,1,4)(0,1,1)_{96} $$ 和Series: x ARIMA(0,1,4)(0,1,1)[96] Coefficients: ma1 ma2 ma3 ma4 sma1 -0.2187 -0.2233 -0.0996 -0.0983 -0.9796 s.e. 0.0231 0.0234 0.0257 0.0251 0.0804 sigma^2 estimated as 364612: log likelihood=-15138.91 **AIC=30289.82 AICc=30289.87 BIC=30323.18**
auto.arima 函數計算以下模型(逐步和近似為 TRUE,否則需要很長時間才能收斂): $$
ARIMA(1,1,1)(2,0,2)_{96} $$ 和Series: x ARIMA(1,1,1)(2,0,2)[96] Coefficients: ar1 ma1 sar1 sar2 sma1 sma2 0.7607 -1.0010 0.4834 0.4979 -0.3369 -0.4168 s.e. 0.0163 0.0001 0.0033 0.0116 0.0216 0.0255 sigma^2 estimated as 406766: log likelihood=-15872.02 **AIC=31744.99 AICc=31745.05 BIC=31784.25**
這意味著沒有應用季節性差異。這 是兩個模型的殘差。Ljung Box 統計量給出了一個非常小的 p 值,表明仍然存在一些自相關(如果我錯了,請糾正我)。
預測
因此,要確定哪個更好,那麼樣本外準確度測試是最好的。因此,對於這兩種模型,都會提前 24 小時進行預測,並相互比較。結果是: auto.arima http://i.share.pho.to/5d1dd934_l.png 手動模型 http://i.share.pho.to/7ca69c97_l.png
汽車:
ME RMSE MAE MPE MAPE MASE ACF1 Theil's U Training set -2.586653 606.3188 439.1367 -1.284165 7.599403 0.4914563 -0.01219792 NA Test set -330.144797 896.6998 754.0080 -7.749675 13.268985 0.8438420 0.70219229 1.617834
手動的
ME RMSE MAE MPE MAPE MASE ACF1 Theil's U Training set 2.456596e-03 589.1267 435.6571 -0.7815229 7.509774 0.4875621 -0.002034122 NA Test set 2.878919e+02 919.7398 696.0593 3.4756363 10.317420 0.7789892 0.731013599 1.281764
問題
您可以認為這是對數據集前三週的分析。我在腦海中掙扎著以下問題:
- 我如何選擇最好的 ARIMA 模型(通過嘗試所有不同的順序並檢查最好的 MASE/MAPE/MSE?性能測量的選擇可以自己討論……)
- 如果我為每一天的預測(如在線預測)生成一個新模型和預測,我是否需要考慮年度趨勢以及如何考慮?(因為在這麼小的一個子集中,我的猜測是趨勢可以忽略不計)
- 您是否期望模型順序在整個數據集中保持不變,即當採用另一個子集時會給我相同的模型?
- 有什麼好的方法,在這個方法內應付假期?或者為此需要帶有外部假日假人的 ARIMAX 嗎?
- 我是否需要使用傅里葉級數方法來嘗試長季節性週期
seasonality=672
中討論的模型 ?- 如果是這樣
fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)
的話(函數傅立葉在 Hyndman 的博客文章中定義)- 傅立葉級數中是否包含初始 P 和 Q 分量?
從FPP獲得的大部分理論知識,很棒的東西!
在建議使用指數平滑或(動態)線性回歸之前,這也在進行比較。
數據
https://www.dropbox.com/sh/mzx61sskya5ze6x/Zq3A7Q6htH/trafo.txt
代碼
data<-read.csv("file", sep=";") load<-data[,3]
我在值前一周刪除了幾個零值
stepback<-672 load[is.na(load)] <- 0 # Assumed no 0's in first 672 values! idx <- which(load == 0) idx <- idx[which(idx>stepback)] load[idx] <- load[idx-stepback] ED<-ts(load,start=0, end=c(760,96),frequency=96) x<-window(ED,start=0, end=c(20,96))
也可以發布一個可重複的示例,但這會使帖子更長,但如果需要,可以。所以如果有什麼我應該提供的,請告訴我。
- 我如何選擇最好的 ARIMA 模型(通過嘗試所有不同的順序並檢查最好的 MASE/MAPE/MSE?性能測量的選擇可以自己討論……)
樣本外風險估計是績效評估的黃金標準,因此也是模型選擇的黃金標準。理想情況下,您可以進行交叉驗證,以便您的風險估計在更多數據上進行平均。FPP 解釋了一種時間序列的交叉驗證方法。有關其他方法的評論,請參見 Tashman:
LJ 塔什曼 (2000)。預測準確性的樣本外測試:分析和審查。國際預測雜誌,16(4),437–450。doi:10.1016/S0169-2070(00)00065-0
當然,交叉驗證非常耗時,因此人們經常求助於使用樣本內標準來選擇模型,例如 AIC,這就是 auto.arima 選擇最佳模型的方式。這種方法是完全有效的,即使可能不是最優的。
- 如果我為每一天的預測(如在線預測)生成一個新模型和預測,我是否需要考慮年度趨勢以及如何考慮?(因為在這麼小的一個子集中,我的猜測是趨勢可以忽略不計)
我不確定你所說的年度趨勢是什麼意思。假設您的意思是每年的季節性,那麼實際上沒有任何方法可以將不到一年的數據考慮在內。
- 您是否期望模型順序在整個數據集中保持不變,即當採用另一個子集時會給我相同的模型?
我希望除非對數據的生成方式進行一些更改,否則最正確的基礎模型在整個數據集中都是相同的。但是,這與說任何程序(例如 auto.arima 使用的程序)選擇的模型如果該程序應用於數據的不同子集將是相同的不同。這是因為抽樣引起的變異性會導致模型選擇過程的結果發生變異性。
- 有什麼好的方法,在這個方法內應付假期?或者為此需要帶有外部假日假人的 ARIMAX 嗎?
外部假期假人是最好的方法。
- 我是否需要使用傅里葉級數方法來嘗試長季節性週期
seasonality=672
中討論的模型?你需要做點什麼,因為正如那篇文章中提到的,R 中的 arima 函數不支持大於 350 的季節性週期。我在傅里葉方法方面取得了相當大的成功。其他選項包括季節性分解後的預測(也包括在 FPP 中),以及指數平滑模型,例如 bats 和 tbats。
- 如果是這樣
fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)
的話(函數傅立葉在 Hyndman 的博客文章中定義)這看起來是正確的。您應該嘗試不同數量的術語。請注意,現在
fourier
預測包中有一個函數,其規範略有不同,我假設它取代了 Hyndman 博客上的那個。有關語法,請參閱幫助文件。
- 傅立葉級數中是否包含初始 P 和 Q 分量?
我不確定你在這裡問什麼。P 和 Q 通常指的是 AR 和 MA 季節性分量的度數。使用傅立葉方法,沒有季節性成分,而是有與季節相關的傅立葉項的協變量。它不再是季節性 ARIMA,而是協變量接近季節的 ARIMAX。