ETS と季節ナイーブの比較
この演習では、cement の20年分(四半期ごとのセメント生産量)のデータに対して、4期先の時系列クロスバリデーションを用い、ETS 予測と季節ナイーブ予測を比較します。実行に時間がかかるため、作業スペースには短縮版の cement 系列が用意されています。
tsCV() の2番目の引数は forecast オブジェクトを返す必要があるため、モデルを当てはめて予測を返す関数が必要です。思い出してください:
> args(tsCV)
function (y, forecastfunction, h = 1, ...)
この演習では、既存の予測関数と、あらかじめ用意された関数の両方を使います。ときには、シンプルな手法のほうが高度な手法より良い結果を出すこともあります。
この演習はコースの一部です
Rで学ぶ予測入門
演習の手順
- ETS の予測を返す関数
fets()は用意されています。 - ETS と季節ナイーブの両手法に対して、
cementデータにtsCV()を適用し、予測ホライズンを 4 にします。予測関数の引数には、新しく作成されたfetsと既存のsnaiveをそれぞれe1とe2に使ってください。 - 得られた 4 期先誤差の MSE を計算し、欠損値を除外します。MSE を計算する式は用意されていますが、2つ目のオプション引数は未指定です(以前に使いましたね)。
- 最良の MSE を
bestmseとして保存します。前の指示で最良の MSE を生成するコード行をそのままコピーして構いません。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Function to return ETS forecasts
fets <- function(y, h) {
forecast(ets(y), h = h)
}
# Apply tsCV() for both methods
e1 <- tsCV(___, ___, h = ___)
e2 <- tsCV(___, ___, h = ___)
# Compute MSE of resulting errors (watch out for missing values)
mean(e1^2, ___)
mean(e2^2, ___)
# Copy the best forecast MSE
bestmse <- ___