使用 tsCV() 進行時間序列交叉驗證
tsCV() 函式會計算時間序列的交叉驗證誤差。你需要指定時間序列、預測方法,以及前視步數(forecast horizon)。以下是影片中的範例:
> e = tsCV(oil, forecastfunction = naive, h = 1)
在這裡,你會使用 tsCV() 來計算並繪製最多前視 8 步的 MSE 值,同時將 naive() 方法套用到 goog 資料。此練習使用 ggplot2 繪圖,你可能還不熟悉,但我們已提供足夠的程式碼,讓你可以完成剩下的部分。
請務必回顧投影片中關於 tsCV() 的內容。goog 資料已經載入到你的工作空間中。
本練習屬於課程
R 的時間序列預測
練習說明
- 使用
goog資料並以naive()函式進行預測,計算最多前視 8 步的交叉驗證誤差。將結果指定給e。 - 計算各個前視步數的 MSE 值,並透過指定第二個參數來移除
e中的遺漏值。計算 MSE 的運算式已提供。 - 將得到的 MSE 值(
y)對上前視步數(x)作圖。回想你對函式的理解:如果在函式引數清單中提供了MSE = mse,那麼mse應該是函式之外、工作空間中已存在的物件;而MSE則是你在函式內部用來指稱該物件的變數。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
# Compute cross-validated errors for up to 8 steps ahead
e <- tsCV(___, forecastfunction = ___, h = ___)
# Compute the MSE values and remove missing values
mse <- colMeans(e^2, na.rm = ___)
# Plot the MSE values against the forecast horizon
data.frame(h = 1:8, MSE = mse) %>%
ggplot(aes(x = h, y = ___)) + geom_point()