開始使用免費開始

在非季節性資料上比較 auto.arima() 與 ets()

AICc 統計量適用於在「同一」模型類別中做選擇。例如,你可以用它來選擇 ETS 模型,或選擇 ARIMA 模型。不過,你不能用它來比較 ETS 與 ARIMA,因為它們屬於「不同」的模型類別。

相對地,你可以用時間序列交叉驗證來比較 austa 資料上的 ARIMA 與 ETS 模型。由於 tsCV() 需要回傳 forecast 物件的函式,你會先設定一些簡單函式來配適模型並回傳預測。tsCV() 的引數為時間序列、預測函式,以及預測視窗 h。請看第二章的這段程式碼片段:

e <- matrix(NA_real_, nrow = 1000, ncol = 8)
for (h in 1:8)
  e[, h] <- tsCV(goog, naive, h = h)
  ...

另外回想一下,R 的管線運算子會把左邊的值一步一步地由左到右傳給右邊作為引數。以下是你在前面章節看過的範例:

# 繪製以 ets() 建模之 lynx 序列的 20 年預測
lynx %>% ets() %>% forecast(h = 20) %>% autoplot()

在本練習中,你將比較套用到 austa 的兩個預測函式之 MSE,並繪製能產生最佳預測的函式之預測結果。austa 已經載入到你的工作環境中。

本練習屬於課程

R 的時間序列預測

檢視課程

練習說明

  • 完成 farima() 函式,以 auto.arima() 的結果產生預測。請依照 fets() 的既有程式碼結構(它對 ets() 做了相同的事)。
  • 使用 tsCV() 的一步預測誤差,在 austa 上計算 ETS 模型的交叉驗證誤差,並將結果存為 e1
  • 使用 tsCV() 的一步預測誤差,在 austa 上計算 ARIMA 模型的交叉驗證誤差,並將結果存為 e2
  • 計算各模型類別的交叉驗證 MSE,並移除遺漏值。若不記得如何計算 MSE,請參考上一章。
  • 使用最佳模型類別,為 austa 產生並繪製未來 10 年的預測。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

# Set up forecast functions for ETS and ARIMA models
fets <- function(x, h) {
  forecast(ets(x), h = h)
}
farima <- function(x, h) {
  forecast(___, ___)
}

# Compute CV errors for ETS on austa as e1
e1 <- tsCV(austa, ___, ___)

# Compute CV errors for ARIMA on austa as e2
e2 <- tsCV(___, ___, ___)

# Find MSE of each model class
mean(___, ___)
mean(___, ___)

# Plot 10-year forecasts using the best model class
austa %>% ___ %>% ____
編輯並執行程式碼