開始使用免費開始

評估季節性方法的預測準確度

就像你在第一章學到的,window() 會用實際的時間點(而不是索引值)來指定時間序列的 startend。這兩個參數都可以用像 c(year, period) 這樣的向量來表示,你先前在 ts() 的參數中也用過。再次強調,這裡的 period 指的是 quarter(季)

這裡你會使用墨爾本的季別訪客人數(visnights[, "VICMetro"]),分別建立略去最後 1、2、3 年的三個訓練集。開始練習前,請先在主控台檢視已預先載入的 visnights 資料;這有助於你判斷在各個預測方法裡,h(欲預測的期數)該設定為多少。

接著,對每個訓練集預測下一年的資料,最後使用 accuracy() 比較這些預測的 平均絕對百分比誤差(MAPE)。你覺得為什麼 MAPE 會差異這麼大?

本練習屬於課程

R 的時間序列預測

檢視課程

練習說明

  • 使用 window()visnights[,"VICMetro"] 建立三個訓練集,略去最後 1、2、3 年;分別命名為 train1train2train3,並相應設定 end 參數。
  • 對每個訓練集使用 snaive() 計算未來一年的預測。分別命名為 fc1fc2fc3
  • 依照範例程式碼的結構,使用 accuracy(),以測試集比較三組預測的 MAPE。

動手互動練習

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

# Create three training series omitting the last 1, 2, and 3 years
train1 <- window(visnights[, "VICMetro"], end = c(2015, 4))
train2 <- ___
train3 <- ___

# Produce forecasts using snaive()
fc1 <- snaive(___, h = ___)
fc2 <- ___
fc3 <- ___

# Use accuracy() to compare the MAPE of each series
accuracy(fc1, visnights[, "VICMetro"])["Test set", "MAPE"]
___
___
編輯並執行程式碼