季節性手法の予測精度を評価する
第1章で学んだとおり、window() 関数はインデックスではなく、該当する時点を使って時系列の start と end を指定します。これら2つの引数は、以前に ts() の引数としても使ったように、c(year, period) のようなベクトルで指定できます。ここでも period は quarter(四半期)を指します。
ここでは、メルボルンの四半期ごとの来訪者数(visnights[, "VICMetro"])を使って、直近の 1 年、2 年、3 年をそれぞれ除いた3つのトレーニングデータを作成します。演習を始める前に、コンソールで事前読み込み済みの visnights データを確認してください。これにより、予測手法で使用するキーワード h(予測したい値の数を指定)の正しい値を判断しやすくなります。
その後、各トレーニングデータに対して翌年分のデータを予測し、最後に accuracy() を使って予測の 平均絶対百分率誤差(MAPE) を比較します。なぜ MAPE に大きな差が出ると思いますか?
この演習はコースの一部です
Rで学ぶ予測入門
演習の手順
visnights[,"VICMetro"]から、直近の 1 年、2 年、3 年をそれぞれ省いた3つのトレーニングデータをwindow()で作成し、それぞれtrain1、train2、train3と名付けてください。endキーワードを適切に設定します。- 各トレーニングデータに対して、
snaive()手法で 1 年分の予測を計算します。結果をそれぞれfc1、fc2、fc3と名付けてください。 - サンプルコードの構成に従って、
accuracy()関数を用い、テストセットとして3つの予測の 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"]
___
___