開始使用免費開始

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

當資料頻率高於「年度」時,該如何建立訓練集與測試集?如有需要,可以在 window() 函式的 start 和/或 end 參數中使用 c(year, period) 形式的向量。同時也要確認在各種預測函式中,h 的取值正確。記得 h 應等於測試集資料的長度。

例如,若你的資料涵蓋 15 年,訓練集是前 10 年,預測最後 5 年,應該使用 h = 12 * 5,而不是 h = 5,因為測試集會包含 60 個每月觀測值。若改為訓練集是前 9.5 年,且你要預測最後 5.5 年,則應使用 h = 66,以涵蓋多出的 6 個月。

在本章最後一個練習中,你會比較應用於季節性水泥產量季資料 qcement 的季節性 ARIMA 與 ETS 模型。因為這個時間序列很長,你可以不必用時間序列交叉驗證,改用訓練集與測試集。這樣速度更快。

qcement 資料已可在你的工作環境中使用。

本練習屬於課程

R 的時間序列預測

檢視課程

練習說明

  • 建立名為 train 的訓練集,包含自 1988 年開始至 2007 年最後一季的 qcement 資料共 20 年;end 參數必須使用向量格式。剩餘的資料作為測試集。
  • 對訓練資料分別配適 ARIMA 與 ETS 模型,並各自儲存為 fit1fit2
  • 如同先前的練習一樣,檢查兩個模型的殘差是否為白噪音。
  • 針對剩餘資料從兩個模型各自產生預測,分別儲存為 fc1fc2。將 h 設為測試集中總季數。請留意——qcement 的最後一筆觀測並不是該年的最後一季!
  • 使用 accuracy() 函式,根據 RMSE 值找出較好的模型,並將其儲存為 bettermodel

動手互動練習

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

# Use 20 years of the qcement data beginning in 1988
train <- window(___, start = ___, end = ___)

# Fit an ARIMA and an ETS model to the training data
fit1 <- ___
fit2 <- ___

# Check that both models have white noise residuals
___
___

# Produce forecasts for each model
fc1 <- forecast(___, h = ___)
fc2 <- forecast(___, h = ___)

# Use accuracy() to find better model based on RMSE
accuracy(___, ___)
accuracy(___, ___)
bettermodel <- ___
編輯並執行程式碼