R

為什麼默認的 auto.arima 會在 (5,2,5) 處停止?

  • June 13, 2017

包中auto.arima的函數是一個強大的工具,可以識別給定數據系列的最佳 ARIMA(p,d,q) 模型。在 該函數的官方文檔頁面中,他們報告了以下內容:forecast``R

auto.arima(y, d=NA, max.p=5, max.q=5, max.order=5, max.d=2, start.p=2, start.q=2, ...)

根據上述功能,默認情況下,它似乎auto.arima試圖在所有組合中找到最佳模型:

  • p 等於或小於 5
  • q 等於或小於 5
  • d 等於或小於 2
  • 階等於或小於 5,即p + q + d ≤ 5

但是,為什麼默認代碼會在這些條件下停止?為什麼 p、q 和 d 應該等於或小於 5、5 和 2 並且它們的總和小於 5,有什麼特別的原因嗎?

有幾個原因:

限制搜索空間限制了所需的計算時間。如果您要對許多時間序列進行建模和預測,這是一個重要因素。

更複雜的 ARIMA 模型很難解釋。如果我們想做的只是預測,可解釋性在我們的理想品質列表中可能並不高,但我們通常需要向非統計學家用戶解釋我們的模型。我寧願不解釋甚至第二個差異,更不用說第三個或更高的差異了。

預報員的經驗是,大多數時間序列都可以由低階 ARIMA 模型充分描述。讓我們使用 819 非季節性 M3 系列建模auto.arima(,max.p=10,max.q=10,max.d=3)

library(Mcomp)
M3.nonseasonal <- M3[sapply(M3,"[[","period")%in%c("YEARLY","OTHER")]
models <- matrix(NA,nrow=length(M3.nonseasonal),ncol=3,
   dimnames=list(names(M3.nonseasonal),c("p","d","q")))
pb <- winProgressBar(max=length(M3.nonseasonal))
for ( ii in seq_along(M3.nonseasonal) ) {
   setWinProgressBar(pb,ii,paste(ii,"of",length(M3.nonseasonal)))
   fit <- auto.arima(M3.nonseasonal[[ii]]$x,max.p=10,max.q=10,max.d=3)
  models[ii,] <- fit$arma[c(1,6,2)]
}
close(pb)
sort(table(
 paste0( (",apply(models,1,paste0,collapse=","),")")),decreasing=TRUE)
summary(models)

輸出:

> sort(table(paste0("(",apply(models,1,paste0,collapse=","),")")),decreasing=TRUE)

(0,1,0) (0,1,1) (0,2,0) (0,2,1) (1,0,0) (1,1,0) (0,0,0) (0,0,1) (2,0,0) (1,2,0) 
   413      80      65      60      31      29      23      19      15      13 
(1,1,1) (1,2,1) (2,1,0) (2,1,2) (0,3,0) (1,1,2) (2,2,1) (0,1,2) (0,2,2) (1,0,1) 
     6       6       6       6       5       5       5       4       3       3 
(1,3,0) (1,0,2) (1,2,2) (2,0,1) (2,1,1) (2,2,2) (3,0,0) (0,3,1) (1,3,1) (2,2,0) 
     3       2       2       2       2       2       2       1       1       1 
(2,3,1) (3,0,1) (3,1,0) (3,2,3) 
     1       1       1       1 
> summary(models)
      p                d             q         
Min.   :0.0000   Min.   :0.0   Min.   :0.0000  
1st Qu.:0.0000   1st Qu.:1.0   1st Qu.:0.0000  
Median :0.0000   Median :1.0   Median :0.0000  
Mean   :0.2393   Mean   :1.1   Mean   :0.2906  
3rd Qu.:0.0000   3rd Qu.:1.0   3rd Qu.:1.0000  
Max.   :3.0000   Max.   :3.0   Max.   :3.0000

在少數情況下,auto.arima()選擇 $ d=3 $ ,但我對 3 階的積分持懷疑態度,因為它很難解釋,而且會導致立方趨勢,這幾乎沒有意義。 $ p $ 和 $ q $ 永遠不要超過3。

最後,更複雜的 ARIMA 模型很少更準確。事實上,最簡單的 ARIMA(0,0,0) 模型(即白噪聲,最佳預測只是歷史平均值)通常優於更複雜的 ARIMA 模型

據我所知,所選擇的特定默認值並非源於任何特定研究,任何此類研究當然都存在普遍性問題。如果你真的對包作者如何得出這些數字感興趣,你可以問他們(也許在這里報告你聽到的消息?),但我強烈懷疑答案將是“經驗”。

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

comments powered by Disqus