5.11 演習

  1. 以下系列の予測を生成しましょう。手法は、NAIVE(y)SNAIVE(y)RW(y ~ drift())のうち、各ケースでより適切なものを選んでください。

    • オーストラリアの人口 Australian Population (global_economy)
    • れんが生産量 Bricks (aus_production)
    • New South Wales州での子羊屠殺数 NSW Lambs (aus_livestock)
    • 家計資産 Household wealth (hh_budget)
    • オーストラリアのテイクアウト・フード産業売上高 Australian takeaway food turnover (aus_retail)
  2. gafa_stockデータセット中のFacebook株価データを使って、以下を行ってください。

    1. 系列の時間プロットを作成。
    2. ドリフト法を用いて予測を生成して、プロット。
    3. ドリフト予測は、最初と最後の観測値を結んだ線を伸ばしたものと同じであることを示す。
    4. 他のベンチマーク関数のどれかを使って、同じデータセットで予測してみましょう。どれが最良でしょう? なぜですか?
  3. オーストラリアの四半期ビール生産量の1992年からのデータに、季節ナイーブ法を適用してください。残差がホワイトノイズに見えるかチェックして、予測をプロットしてください。以下のコードが助けになるでしょう。

    # 興味のあるデータを抽出
    recent_production <- aus_production %>%
      filter(year(Quarter) >= 1992)
    # モデルを定義し、推計
    fit <- recent_production %>% model(SNAIVE(Beer))
    # 残差を見る
    fit %>% gg_tsresiduals()
    # 予測を見る
    fit %>% forecast() %>% autoplot(recent_production)

    あなたの結論を述べてください。

  4. global_economyデータセットに収録されているオーストラリアの輸出系列と、aus_productionデータセットに収録されているれんが(Bricks)系列を使って、前の演習を繰り返してください。NAIVE()あるいはSNAIVE()のうちから、それぞれより適切な方を使ってください。

  5. aus_livestockデータセット中のVictoria州の7つの系列につき、SNAIVE()を使って予測を生成してください。過去のデータと予測結果を同時にプロットしてください。SNAIVE()で計算した予測は各系列について、理にかなったベンチマークになっていますか?

  6. 以下の記述は真か偽か? その理由を説明してください。

    1. 良い予測手法の残差の分布は正規分布でなければならない。
    2. 残差が小さいモデルは良い予測である。
    3. 予測の正確性指標で最良なのはMAPEだ。
    4. モデルが上手く予測できないなら、もっと複雑にするべきだ。
    5. 常にテストセットで測った予測の正確性が最良のモデルを選びなさい。
  7. (2.10節の演習8で選んだ)あなたの時系列を使って、

    1. 以下のようにして、2011年よりも以前の観測値から成る訓練データセットを作ってください。

      myseries_train <- myseries %>%
        filter(year(Month) < 2011)
    2. 次のようにプロットして、あなたのデータが適切に分割されたかチェックしてください。

      autoplot(myseries, Turnover) +
        autolayer(myseries_train, Turnover, colour = "red")
    3. あなたの訓練データ(myseries_train)を対象に、SNAIVE()を使って季節ナイーブモデルを当てはめてください。

      fit <- myseries_train %>%
        model(SNAIVE())
    4. 残差をチェックしましょう。

      fit %>% gg_tsresiduals()

      残差は無相関で正規分布に従っているように見えますか?

    5. テストデータを使って、予測を生成してください。

      fc <- fit %>%
        forecast(new_data = anti_join(myseries, myseries_train))
      fc %>% autoplot(myseries)
    6. 実績値に対して予測の正確性を比較してください。

      fit %>% accuracy()
      fc %>% accuracy(myseries)
    7. 正確性指標は使用する訓練データの量でどれだけ左右されますか?

  8. (aus_livestockデータセット中の)New South Wales州での豚の屠殺数を考えてみましょう。

    1. データに慣れ親しむために、データのプロットをいくつか作ってください。
    2. 72個の観測値(6年分)をテストセットに取っておいて、486個の観測値から成る訓練セットを作り出してください。
    3. いろいろなベンチマークとなる手法を試して、訓練セットの予測を生成し、テストセットを使って結果を比較してください。どの手法が最良でしたか?
    4. あなたが最良と思う手法での残差をチェックしてください。ホワイトノイズに似ていますか?
    1. 家計資産(hh_budgetデータセット)につき、最近の4年分をテストセットに取りおいて、訓練セットを作り出してください。
    2. 訓練セットに全ての適切なベンチマークとなる手法を当てはめて、テストセットの期間について予測を生成してください。
    3. 予測の正確性を計算してください。どの手法が最良ですか?
    4. 最良の手法からの残差はホワイトノイズに似ていますか?
    1. (aus_retailデータセット中の)オーストラリアのテイクアウト・フード産業売上高につき、最近の4年分をテストセットに取りおいて、訓練セットを作り出してください。
    2. 訓練セットに全ての適切なベンチマークとなる手法を当てはめて、テストセットでカバーされている期間を予測してください。
    3. 予測の正確性を計算してください。どの手法が最良ですか?
    4. 最良の手法からの残差はホワイトノイズに似ていますか?
  9. aus_productionデータセットから、れんが(Bricks)データを使いましょう。(1956–2005年のオーストラリアの粘土れんが四半期生産量です。)

    1. STL分解を使って、トレンド・サイクル成分と季節インデックスを計算してください。(季節性については固定する場合と、変化させる場合を実験してください。)
    2. 季節調整値を計算して、プロットしてください。
    3. ナイーブ法を使って、季節調整値の予測を生成してください。
    4. decomposition_model()を使って、結果を再季節化して、元のデータの予測にしてください。
    5. 残差は無相関に見えますか?
    6. ロバストなSTL分解を用いて上の作業を繰り返してください。大きな違いが見られますか?
    7. データの最近の2年分から成るテストセットを使って、decomposition_model()からの予測とSNAIVE()からの予測を比較してください。どちらが良いですか?
  10. tourismデータセットは、オーストラリアの76地域への四半期訪問者数(千人)を1998年から2017年まで収録しています。

    1. filter()関数を使ってGold Coast地域のデータを抽出し、summarise()関数を使って訪問者数の合計(Purposeを問わない合計)にしてください。この新しいデータセットをgc_tourismと呼びましょう。

    2. slice()関数かfilter()関数を使って、最近の1、2、3年を除外した3つの訓練セットを作り出してください。例えば、gc_train_1 <- gc_tourism %>% slice(1:(n()-4))という具合に。

    3. 季節ナイーブ(SNAIVE())手法を使って、各訓練セットにつき1年先までの予測を計算してください。これらを、それぞれ、gc_fc_1gc_fc_2gc_fc_3と呼びましょう。

    4. accuracy()を使って、テストセットでの予測正確性をMAPEで計算してください。結果についてコメントしてください。