Forecasting

定義 ARIMA 順序的問題

  • September 24, 2013

這篇文章很長,希望大家多多包涵,有錯誤的地方請指正。

我的目標是根據 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

問題

您可以認為這是對數據集前三週的分析。我在腦海中掙扎著以下問題:

  1. 我如何選擇最好的 ARIMA 模型(通過嘗試所有不同的順序並檢查最好的 MASE/MAPE/MSE?性能測量的選擇可以自己討論……)
  2. 如果我為每一天的預測(如在線預測)生成一個新模型和預測,我是否需要考慮年度趨勢以及如何考慮?(因為在這麼小的一個子集中,我的猜測是趨勢可以忽略不計)
  3. 您是否期望模型順序在整個數據集中保持不變,即當採用另一個子集時會給我相同的模型?
  4. 有什麼好的方法,在這個方法內應付假期?或者為此需要帶有外部假日假人的 ARIMAX 嗎?
  5. 我是否需要使用傅里葉級數方法來嘗試長季節性週期seasonality=672中討論的模型 ?
  6. 如果是這樣fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)的話(函數傅立葉在 Hyndman 的博客文章中定義)
  7. 傅立葉級數中是否包含初始 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))

也可以發布一個可重複的示例,但這會使帖子更長,但如果需要,可以。所以如果有什麼我應該提供的,請告訴我。

  1. 我如何選擇最好的 ARIMA 模型(通過嘗試所有不同的順序並檢查最好的 MASE/MAPE/MSE?性能測量的選擇可以自己討論……)

樣本外風險估計是績效評估的黃金標準,因此也是模型選擇的黃金標準。理想情況下,您可以進行交叉驗證,以便您的風險估計在更多數據上進行平均。FPP 解釋了一種時間序列的交叉驗證方法。有關其他方法的評論,請參見 Tashman:

LJ 塔什曼 (2000)。預測準確性的樣本外測試:分析和審查。國際預測雜誌,16(4),437–450。doi:10.1016/S0169-2070(00)00065-0

當然,交叉驗證非常耗時,因此人們經常求助於使用樣本內標準來選擇模型,例如 AIC,這就是 auto.arima 選擇最佳模型的方式。這種方法是完全有效的,即使可能不是最優的。

  1. 如果我為每一天的預測(如在線預測)生成一個新模型和預測,我是否需要考慮年度趨勢以及如何考慮?(因為在這麼小的一個子集中,我的猜測是趨勢可以忽略不計)

我不確定你所說的年度趨勢是什麼意思。假設您的意思是每年的季節性,那麼實際上沒有任何方法可以將不到一年的數據考慮在內。

  1. 您是否期望模型順序在整個數據集中保持不變,即當採用另一個子集時會給我相同的模型?

我希望除非對數據的生成方式進行一些更改,否則最正確的基礎模型在整個數據集中都是相同的。但是,這與說任何程序(例如 auto.arima 使用的程序)選擇的模型如果該程序應用於數據的不同子集將是相同的不同。這是因為抽樣引起的變異性會導致模型選擇過程的結果發生變異性。

  1. 有什麼好的方法,在這個方法內應付假期?或者為此需要帶有外部假日假人的 ARIMAX 嗎?

外部假期假人是最好的方法。

  1. 我是否需要使用傅里葉級數方法來嘗試長季節性週期seasonality=672中討論的模型?

你需要做點什麼,因為正如那篇文章中提到的,R 中的 arima 函數不支持大於 350 的季節性週期。我在傅里葉方法方面取得了相當大的成功。其他選項包括季節性分解後的預測(也包括在 FPP 中),以及指數平滑模型,例如 bats 和 tbats。

  1. 如果是這樣fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)的話(函數傅立葉在 Hyndman 的博客文章中定義)

這看起來是正確的。您應該嘗試不同數量的術語。請注意,現在fourier預測包中有一個函數,其規範略有不同,我假設它取代了 Hyndman 博客上的那個。有關語法,請參閱幫助文件。

  1. 傅立葉級數中是否包含初始 P 和 Q 分量?

我不確定你在這裡問什麼。P 和 Q 通常指的是 AR 和 MA 季節性分量的度數。使用傅立葉方法,沒有季節性成分,而是有與季節相關的傅立葉項的協變量。它不再是季節性 ARIMA,而是協變量接近季節的 ARIMAX。

引用自:https://stats.stackexchange.com/questions/70929

comments powered by Disqus