開始使用免費開始

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

在資料科學中,訓練集(training set)用來發掘可能的關聯,而測試集(test set)則用來驗證這些潛在關聯的強度。當你把資料集分成這兩部分時,通常會把較多資料分配給訓練、較少資料留給測試。

可以用來建立訓練集與測試集的其中一個函式是 subset()。它會回傳時間序列的子集合,其中可選的 startend 參數以索引值指定。

> # x 是數值向量或時間序列
> # 擷取第 101 到 500 筆觀測
> train <- subset(x, start = 101, end = 500, ...)

> # 擷取前 500 筆觀測
> train <- subset(x, end = 500, ...)

正如你在影片中看到的,另一個函式 accuracy() 會在你提供預測值與相對應的實際觀測值時,計算各種預測準確度統計量。若你給它的資料多於實際被預測的部分,它也能自動找出相關的觀測值。

> # f 是類別為 "forecast" 的物件
> # x 是數值向量或時間序列
> accuracy(f, x, ...)

所提供的準確度量包含均方根誤差(RMSE),也就是均方誤差(MSE)的平方根。最小化 RMSE(代表提高準確度)等同於最小化 MSE。

預先載入的時間序列 gold 包含連續 1108 天的黃金日價。這裡你將使用前 1000 天作為訓練集,並對剩下的 108 天進行預測。接著使用簡單的預測函式 naive()(你已在本章前面使用過)與 meanf()(產生等於所有觀測平均值的預測)將這些預測與實際值進行比較。你需要為兩者都指定關鍵字參數 h(你要預測的值的數量)。

本練習屬於課程

R 的時間序列預測

檢視課程

練習說明

  • 使用 subset()gold 建立包含前 1000 筆觀測的訓練集,命名為 train
  • 使用 naive() 對測試集(其餘資料)進行預測,指定適當的 h,並指派給 naive_fc
  • 以相同的測試集使用 meanf() 進行預測,指定適當的 h,並指派給 mean_fc
  • 使用 accuracy() 函式比較兩種方法的預測準確度統計量。
  • 根據上述結果,將準確度較高的預測指派給 bestforecasts

動手互動練習

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

# Create the training data as train
train <- subset(___, end = ___)

# Compute naive forecasts and save to naive_fc
naive_fc <- naive(___, h = ___)

# Compute mean forecasts and save to mean_fc
mean_fc <- meanf(___, h = ___)

# Use accuracy() to compute RMSE statistics
accuracy(___, gold)
___(___, gold)

# Assign one of the two forecasts as bestforecasts
bestforecasts <- ___
編輯並執行程式碼