評估季節性方法的預測準確度
就像你在第一章學到的,window() 會用實際的時間點(而不是索引值)來指定時間序列的 start 與 end。這兩個參數都可以用像 c(year, period) 這樣的向量來表示,你先前在 ts() 的參數中也用過。再次強調,這裡的 period 指的是 quarter(季)。
這裡你會使用墨爾本的季別訪客人數(visnights[, "VICMetro"]),分別建立略去最後 1、2、3 年的三個訓練集。開始練習前,請先在主控台檢視已預先載入的 visnights 資料;這有助於你判斷在各個預測方法裡,h(欲預測的期數)該設定為多少。
接著,對每個訓練集預測下一年的資料,最後使用 accuracy() 比較這些預測的 平均絕對百分比誤差(MAPE)。你覺得為什麼 MAPE 會差異這麼大?
本練習屬於課程
R 的時間序列預測
練習說明
- 使用
window()從visnights[,"VICMetro"]建立三個訓練集,略去最後 1、2、3 年;分別命名為train1、train2、train3,並相應設定end參數。 - 對每個訓練集使用
snaive()計算未來一年的預測。分別命名為fc1、fc2、fc3。 - 依照範例程式碼的結構,使用
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"]
___
___