季節性データに対する auto.arima() と ets() の比較
年次よりも高頻度のデータで学習用とテスト用のデータセットを作りたい場合はどうすればよいでしょうか。必要に応じて、window() 関数の start および/または end キーワードに c(year, period) 形式のベクトルを使えます。また、予測関数で適切な h の値を使っていることを確認する必要があります。h はテストセットのデータ長と等しくするのが原則でしたね。
たとえば、データが 15 年分あり、学習データが最初の 10 年、最後の 5 年を予測したい場合、テストセットには月次で 60 観測が含まれるため、h = 5 ではなく h = 12 * 5 を使います。もし学習データが最初の 9.5 年で、最後の 5.5 年を予測したいなら、余分な 6 か月を考慮して h = 66 を使います。
この章の最後の演習では、四半期ごとのセメント生産データ qcement に適用した季節 ARIMA と ETS モデルを比較します。系列が非常に長いため、時系列のクロスバリデーションではなく、学習用とテスト用に分割しても十分です。このほうがはるかに高速です。
qcement データはワークスペースで利用できます。
この演習はコースの一部です
Rで学ぶ予測入門
演習の手順
trainという学習データを作成します。1988 年から始まり 2007 年第4四半期で終わる、qcementの 20 年分のデータで構成します。endにはベクトルを使用してください。残りがテストデータになります。- 学習データに ARIMA モデルと ETS モデルを当てはめ、順に
fit1とfit2に保存します。 - これまでの演習と同様に、両モデルの残差がホワイトノイズか確認します。
- テストデータ期間に対応する予測を、それぞれ
fc1とfc2として生成します。hにはテストセットに含まれる四半期の総数を設定します。注意:qcementの最後の観測値は年の最終四半期ではありません! accuracy()関数を使い、RMSE に基づいて優れているモデルを特定し、bettermodelとして保存します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
# Use 20 years of the qcement data beginning in 1988
train <- window(___, start = ___, end = ___)
# Fit an ARIMA and an ETS model to the training data
fit1 <- ___
fit2 <- ___
# Check that both models have white noise residuals
___
___
# Produce forecasts for each model
fc1 <- forecast(___, h = ___)
fc2 <- forecast(___, h = ___)
# Use accuracy() to find better model based on RMSE
accuracy(___, ___)
accuracy(___, ___)
bettermodel <- ___