スピーカー
|
成績証明書
|
| |
こんにちは、ご覧いただきありがとうございます。 私の名前はジェイコブ・ラインです。 私は JMP のソフトウェア テスターです。 今日は、JMP の時系列プラットフォームで ARIMA モデルと状態空間平滑化モデルのどちらを選択するかを支援するために私が作成したアドインを共有します。 |
| |
そこで、まず、時系列プラットフォームにおける ARIMA モデルと状態空間平滑化モデルの適合について簡単に説明します。 |
| |
これら 2 つのモデル クラスの選択を支援するアドインの必要性について紹介します。 また、アドインの主要なツールである時系列相互検証の概要を説明します。 次に、JMP 16.1 を使用したアドインのデモで終わります。 |
| |
JMP の時系列プラットフォームを使用すると、ユーザーはさまざまな時系列モデルを適合させることができます。 このプレゼンテーションの焦点は ARIMA モデルと状態空間平滑化モデルであり、この鉄鋼出荷サンプル データを使用してこれらの両方を適合する方法を示します。 |
| |
鉄鋼出荷サンプル データには、1984 年から 1991 年までの米国の鉄鋼出荷量の月次合計が含まれています。 そして、これを Specialized Modeling メニューの Time Series プラットフォームで調べていきます。 |
| |
鉄鋼出荷の列は私の時系列です。 日付列は私の時間 ID です。 今後 2 年間の鉄鋼出荷量を予測したいとします。 したがって、これは月次データであるため、24 の予測期間が必要になります。 [OK] をクリックして、時系列レポートを起動します。 |
| |
時系列の基本的な統計と基本的な時系列診断をプロットしたことがわかります。 |
| |
ARIMA モデルをこの系列に当てはめたいのですが、ARIMA モデルを当てはめるときに、何らかの変換や差分を行う必要があるかどうかを決める必要があります。 したがって、[時系列] メニューの [差分] オプションを使用して、これを調査します。 |
| |
次数 1 の非季節差分分析から始めて、推定をクリックします。 |
| |
これで、差分系列のプロットができました。 より静止しているという点では、見た目は良くなりましたが、それでも季節性が多少あります。 そして、これは診断結果を見ればわかります。 ラグ12番まで行きます。 |
| |
ラグ 12 では自動相関値が高く、部分自己相関も少し高いことがわかります。 したがって、これは、非季節性および季節性の差分を使用して季節性 ARIMA モデルを近似する必要があることを示唆しています。 |
| |
レポートをすっきりさせるために、この相違点レポートを終了します。 そして、ARIMA モデル グループ オプションを使用して、いくつかの異なる ARIMA モデルのフィッティングを検討していきます。 |
| |
そこで、非季節差分次数 1 と季節差分次数 1 で季節性 ARIMA モデルを当てはめることにしました。 ただし、自己回帰および移動平均の次数については、0 または 1 のいずれかにするつもりです。 |
| |
したがって、「推定」をクリックすると、JMP はこれら 16 の異なる季節性 ARIMA モデルに適合します。 モデル比較ウィンドウまで下にスクロールして、これらのモデルを表示できます。 モデルは AIC の降順にソートされているので、AIC が最小になるモデルを選択します。 |
| |
下にスクロールしてモデルとレポートを確認してください。 安定して反転可能であることがわかります。 パラメータ推定テーブルをざっと見てみることができました。 予報と予報間隔を見てみましょう。 |
| |
これらの診断をすべて検討し、予測の対象候補としてこの季節性 ARIMA モデルに満足したとします。 |
| |
したがって、これらの他の季節性 ARIMA モデルをレポートから削除します。 |
| |
また、状態空間平滑化モデルを使用して予測を作成することも検討したいとします。これは、時系列メニューの状態空間平滑化オプションを使用することで実行できます。 |
| |
これは月次データであるため、期間は 12 であると言う必要があります。この時系列に対して推奨される状態空間平滑化モデルをすべて当てはめるだけです。 |
| |
そこで [OK] をクリックして実行し、モデル比較レポートまで下にスクロールすると、JMP が推奨されるすべての状態空間平滑化モデルに適合していることがわかります。 これらは再び AIC の降順で並べ替えられます。 |
| |
したがって、AIC を最小化するモデルは、トレンドと乗算季節性を持たない乗算誤差モデルでした。 ということで、このモデルを選択します |
| |
モデル比較のアウトラインで、下にスクロールしてモデルの適合性を確認します。 |
| |
したがって、モデルの概要を確認して、パラメーター推定テーブルを確認できます。 |
| |
予測と予測間隔を表示できます。 これらの診断をすべて検討し、予測の対象候補としてこの状態空間平滑化モデルに満足したとします。 |
| |
したがって、他の状態空間平滑化モデルをモデルとモデル比較ウィンドウから削除します。 |
| |
さて、問題は、私が検討している ARIMA モデルと、予測のために検討している状態空間平滑化モデルのどちらをどのように選択するかです。 |
| |
尤度ベースの基準が異なるモデル クラス間で比較できないことを示す、この既読テキスト警告が表示されていることがわかります。 |
| |
これが意味するのは、単純にスクロールして AIC を表示し、AIC が低いので ARIMA モデルの予測に使用すると言うことはできないということです。 |
| |
それは有効な決定ではありません。 それで、どうすればいいでしょうか? JMP にはすでに利用可能なオプションがあります。 データが十分に長い場合。 |
| |
ホールドバックを設定するには、時系列プラットフォームの起動時にホールドバックの予測オプションを使用できます。 |
| |
これにより、トレーニング セットに使用したすべての時系列モデルが適合します。 また、モデル比較ウィンドウでは、AIC でモデルを並べ替えるのではなく、 |
| |
二乗平均平方根誤差またはホールドバック セットの RMSE によってモデルを分類し、ホールドバック セットの RMSE を最小化するモデルを選択します。 |
| |
ただし、データがホールドバック セットを使用できるほど長くない場合、ホールドバック オプションでの予測は使用できないため、ARIMA モデルと状態空間平滑化モデルのどちらを選択するかを支援する別の方法が必要になります。 |
| |
そして、これを行うために。 |
| |
これがアドインを作成した理由です。 したがって、アドインは、時系列相互検証と呼ばれるものを使用して選択を支援します。 |
| |
時系列相互検証は基本的に、時系列を複数のトレーニング セットとテスト セットに分割し、連続するグループがトレーニング セットを 1 行ずつ拡張します。 |
| |
時系列相互検証の詳細な例をすぐに説明しますが、この方法を発明したわけではないことを指摘しておきたいと思います。 さらに詳しく知りたい場合は、 |
| |
この講演を見た後は、ロブ・ハインドマン博士による予測の原則と実践をお勧めするリソースです。 |
| |
しかし、時系列相互検証の例を見てみましょう。 |
| |
私は映画ファンなので、2021 年 1 月から 7 月までの北米の興行収入のデータを持っているとします。 |
| |
そして、ARIMA モデルまたは状態空間平滑化モデルのいずれかを使用して、今後 6 週間の興行収入を予測したいと考えています。 そして、どの予測を使用するかを決定するために、時系列相互検証を使用したいと思います。 |
| |
先ほど述べたように、時系列相互検証ではデータをトレーニング セットとテスト セットのグループにサブセット化し、トレーニング セットを 1 行および連続するグループごとに拡張します。 |
| |
したがって、最初のトレーニング セットに必要な行数を決定する必要があります。 |
| |
デフォルトでは、私のアドインでは 6 つの時系列相互検証グループが作成されます。 これにより、最初のトレーニング セットで使用するデフォルトの行数が推奨されますが、必要に応じて変更してください。 |
| |
この例では、トレーニング セットの初期行 17 行をデフォルトのままにします。 |
| |
時系列相互検証アドインを起動すると、標準の時系列レポートが提供されます。 ただし、レポートの下部には時系列相互検証コントロールのアウトライン ボックスも追加されます。 |
| |
したがって、ここでは、最初のトレーニング セットの行数である初期行数、関心のある予測期間、および季節モデルを当てはめる場合は期間を指定する必要があります。 |
| |
したがって、トレーニング セットではデフォルトの 17 行を維持し、6 つの異なる時系列相互検証グループを使用できるようにします。 |
| |
今後 6 週間の興行収入を予測したいため、予測期間を 6 とします。 また、この特定のデータに季節モデルを適合させるつもりはないため、ここでは期間を欠損値に等しいままにします。 |
| |
それでは、最初の時系列相互検証グループを見てみましょう。 |
| |
最初のトレーニング セットには 17 行があり、次の 6 行がテスト セットであることがわかります。 |
| |
私のアドインが行うことは、私が要求した ARIMA モデルをトレーニング セットに適合させることです。 そして、推奨される状態空間平滑化モデルをトレーニング セットに適合させます。 |
| |
AIC によって各クラスの最適なモデルが選択され、選択されたモデルの予測がテスト セットに取り込まれ、予測誤差が評価されます。 |
| |
2 番目の時系列相互検証グループはトレーニング セットを 1 行拡張する予定なので、トレーニング セットは次のようになります。 |
| |
行 1 から 18 で構成され、次の 6 行が私のテスト セットです。 そして、最初の時系列相互検証グループで行ったプロセスを繰り返します。 |
| |
ユーザーが要求した ARIMA モデルをすべて適合させ、推奨される状態空間平滑化モデルを適合させます。 AIC 予測によって最適なモデルをテスト セットに選択し、予測誤差を保存します。 |
| |
そして、データをすべて使い切るまでこれを続けます。 したがって、この例の最後の時系列相互検証グループは、行 1 ~ 22 をトレーニング セットとして使用し、残りのデータ (最後の 6 行) をテスト セットとして使用します。 |
| |
そこで、時系列相互検証グループごとに予測誤差を保存していると述べました。 |
| |
このアドインは、2 つのモデル クラスの全体的な RMSE、MAE、MAPE をレポートし、時系列相互検証グループごとの RMSE のプロットを提供します。 |
| |
そして、この表とこのプロットを使用すると、すべてのモデルを予測に適合させるか、状態空間平滑化モデルの予測に適合させるかを決定するのに役立ちます。 |
| |
このデータを使用して動作するアドインを見てみましょう。 |
| |
そこで、box office mojo から取得した興行収入データを開き、時系列を確認したいだけなので、このデータの時系列プラットフォームを起動するスクリプトを実行します。 |
| |
週ごとの平均興行収入を予測していますが、週が進むにつれて変動があり、平均興行収入が大きくなっていることがわかります。そこで、対数変換を実行したいと思います。 |
| |
平均総計に。 平均総総額の対数式列を作成することでこれを行うことができますが、 |
| |
これは必須ではありません。アドインを使用すると、標準の時系列プラットフォームと同様に、Box Cox 変換を行うことができます。 そこで、アドインを起動し、免責事項をクリックして越えます。 今後 6 週間の週ごとの興行収入の平均を予測したいと思います。 |
| |
そして、平均総売上高に対数変換を行いたいので、Lambda が 0 に等しい Box Cox 変換を使用します。 |
| |
そして「OK」をクリックします。 |
| |
これにより、Box Cox 変換された応答の標準時系列レポートが起動されます。 あらゆる種類の時系列モデルを適合させることができ、この赤い三角メニューを使用して JMP で利用できるようにしたいと考えていました。 |
| |
しかし、その代わりに、レポートの一番下まで進み、時系列相互検証を使用して、ARIMA モデルと状態空間平滑化モデルのどちらを当てはめるべきかに関する推奨事項を取得します。 |
| |
前の例で示した 6 つの時系列相互検証グループが得られるため、最初の行を 17 のままにします。 |
| |
次の 6 週間の興行収入を予測したいため、予測期間を 6 のままにし、この例では期間を欠席と同じにします。 |
| |
そこで、「実行」をクリックします。次に、各時系列相互検証グループにどの ARIMA モデルを当てはめるかを指定する必要があります。 そこで、非季節差分法 1 を使用することにしましたが、自己回帰および移動平均次数は 0 または 1 にすることにします。 |
| |
したがって、[推定] をクリックすると、すべての時系列相互検証グループがこれら 4 つの ARIMA モデルと推奨される状態空間平滑化モデルに適合することになります。 |
| |
そこで [推定] をクリックすると、アドインが行っていることは、このデータ セットを 6 つの時系列相互検証グループに拡張し、要求されたモデルをトレーニング セットに当てはめてテスト セットに予測し、予測誤差を保存することです。 |
| |
下にスクロールして結果を表示します。 表から、全体的に ARIMA モデルは状態空間平滑化モデルよりも低い RMSE、MAE、および MAPE を生成したことがわかります。 そして、プロットを見てみると、 |
| |
ARIMA モデルでは、時系列相互検証グループごとに RMSE が低くなっていることがわかります。 |
| |
したがって、このアドインでは、状態空間平滑化モデルではなく、ARIMA モデルを使用してこのデータの予測を作成することをお勧めします。 したがって、赤い三角ボタンのメニューに移動して、ARIMA モデル グループ オプションを使用して ARIMA モデルを当てはめることができます。 |
| |
アドインの別の例を見てみましょう。次の例では、MC3 Quarterly サンプル データのサブセットを使用します。 |
| |
MC3 Quarterly サンプル データには、MC3 モデリング コンペティションからの 100 を少し超える異なる時系列のデータが含まれています。 シリーズはすべて季刊です。 |
| |
非常に多くの異なる時系列が含まれているというだけで、これは興味深いデータセットだと思います。 ただし、この講演では時間の都合上、表から 3 つのシリーズのサブセットをランダムに取り出しただけです。 |
| |
そこで、アドインを起動します。 |
| |
そして、ランチャーを設定します。Y 列は時系列、time は時間 ID です。 また、複数の系列のデータがあるため、系列列に対して by オプションを使用する必要があります。 もう一度、今後 2 年間を予測したいので、8 つの予測期間を入力して [OK] をクリックするとします。 |
| |
これにより、ご想像のとおり、テーブル内のさまざまな系列ごとの時系列レポートが表示されました。 また、テーブル内の各シリーズの時系列相互検証コントロールも用意しています。 |
| |
したがって、これらの各系列に対して時系列相互検証を使用して、予測に ARIMA モデルまたは状態空間平滑化モデルを使用することに関する推奨事項を得ることができます。 |
| |
時間の都合上、最初のシリーズのみにさせていただきます。 このシリーズに季節モデルを適合させたいため、周期を 4 にします。 「実行」をクリックします。 |
| |
したがって、非季節差分次数の 1 を使用しますが、他のすべての自己回帰移動平均次数と季節差分次数の範囲は 0 または 1 とします。 |
| |
これも四半期データであるため、観察期間を 4 に設定します。 それでは、推定をクリックすると何が起こるかというと、これらの 32 個の ARIMA モデルに適合することになります。 |
| |
各時系列相互検証グループで。 したがって、アドインはシリーズが N 691 である場所に移動します。 |
| |
それを 6 つの異なる時系列相互検証グループに拡張しています。 私が要求した ARIMA モデルをトレーニング セットに適合させています。 トレーニング セットに推奨される状態空間平滑化モデル。 |
| |
AICによる最適なモデルの選択。 テスト セットに予測し、予測誤差を保存します。 |
| |
もうちょっと待って終わります。 |
| |
さぁ行こう。 |
| |
スクロールして結果を表示できます。 したがって、表からわかるように、ARIMA モデルは状態空間平滑化モデルよりも低い RMSE、MAE、MAPE を生成しました。 |
| |
そして、プロットから、最後の時系列相互検証グループを除くすべてのグループで、ARIMA モデルの RMSE が低いことがわかります。 |
| |
状態空間平滑化モデルよりも優れており、最後のグループでもほぼ同じでした。 |
| |
したがって、ここでも時系列相互検証であり、シリーズ N 691 の予測を作成するために ARIMA モデルを使用することをお勧めします。 そして、他の異なるシリーズに移動してプロセスを繰り返すことができ、それらに対しては状態空間平滑化モデルが推奨される場合があります。 |
| |
そこで、アドインの別の機能が実際には時系列相互検証に関連していないことを示してデモを終了します。 |
| |
また、アドインを使用して予測を評価するためのテスト セットを使用する機能も提供しました。Steel Shippings サンプル データを使用してこれを再度示します。 そこで、アドインを起動します。 さて、鉄鋼出荷を日付別に予測したいと思います。 |
| |
今後 2 年間を予測したいので、24 の予測期間をとり、前に述べたように、シリーズが十分に長い場合は、ホールドバック セットに対してホールドバック オプションの予測を使用できるとします。 |
| |
を押してモデルを選択します。 したがって、これを実行しているので、時系列相互検証を使用する必要は実際にはありません。 したがって、トレーニング テスト セット オプションを使用できます |
| |
選択したモデルを評価するための独立したテスト セットを用意するためです。 テスト セットの長さを 12 にすることにします。 |
| |
これが意味するのは、データの最後の 12 行を取得し、それを分析から完全に除外して、それを使用して予測がどのように実行されたかを評価できるようにすることです。 それで「OK」をクリックします。 |
| |
テーブルに別の列が追加されたことがわかります。 これはテスト セットの単なるインジケーター列であり、行がテスト セットに含まれている場合は 1 に等しく、そうでない場合は 0 に等しくなります。 |
| |
そして、これらの時系列モデルは、テスト セットがゼロに等しい行にのみ適合されます。 これにより、テスト セットの独立性を保つことができます。 |
| |
そこで、いくつかの ARIMA モデルをこのデータに当てはめてみましょう。 この講演の冒頭で行ったのと同じコントロールを使用し、季節性と非季節性の差分次数を 1 に設定しますが、他の次数はすべて 0 から 1 の範囲にします。 |
| |
そこで、[推定] をクリックしてこれら 16 の異なる季節性 ARIMA モデルを実行し、推奨される状態空間平滑化モデルも適合させます。 |
| |
そこで、モデル比較ウィンドウまで下にスクロールすると、ホールドバック セットの二乗平均平方根誤差を最小化するモデルは、加算誤差、傾向なし、加算季節性を備えた状態空間平滑化モデルであることがわかります。 |
| |
また、最もパフォーマンスの高い ARIMA モデルがテスト セットでどのようなパフォーマンスを発揮するかに興味があるだけだとしましょう。 それも選べるんです。 |
| |
そして、予測の対象として考慮しなくなった他のモデルを削除します。 |
| |
そこで、再びホールドバックの予測オプションを使用したので、予測に使用するためにこの状態空間平滑化モデルを選択しますが、テスト セットで ARIMA モデルがどのように機能するかが気になります。 |
| |
下にスクロールして、テスト セット分析ボックスに移動します。 そして、これが何をするのかというと、ホールドバックの予測オプションを使用したため、これらの選択したモデルの両方をトレーニング データとホールドバック データを組み合わせたものに再適合して、更新されたパラメーターを取得します。 |
| |
次に、テスト セットに予測を行い、実際のテスト セット データと比較して予測がどのように実行されたかを評価します。 |
| |
そこで、[実行] をクリックして分析を実行します。 また、テスト セット RMSE、MAE、MAPE の表と、予測と比較したテスト セットのプロットがあることがわかります。 |
| |
状態空間平滑化モデルのパフォーマンスがホールドバック セットで優れているだけでなく、テスト セットでもパフォーマンスが優れていることがわかります。 したがって、このテスト セット分析オプションは、モデルの適合がどのように実行されたかを評価するためのツールを提供するだけです。 |
| |
要約すると。 アドインを使用すると、時系列相互検証を実行できます。 |
| |
このアドインは、時系列データが JMP のホールドバック予測オプションを使用できるほど長くないが、それでも別のモデル クラスの使用を検討したい場合に役立つと思います。 |
| |
このアドインを使用すると、テスト セットを使用して予測を評価することもできます。 また、免責事項として、時系列データのすべてのモデル選択指標と同様に、アドインはより正確な予測を保証しません。 |
| |
お忙しいところありがとうございました。 ぜひアドインをお試しいただき、Discovery の残りの部分を楽しんでいただければ幸いです。 どうもありがとうございます。 |