回答:
一般に、複数の時系列がある場合、何らかの種類のベクトルベースのモデルを使用して、それらをすべて同時にモデリングします。この目的のためのARIMAモデルの自然な拡張は、VARIMA(Vector ARIMA)モデルです。時系列があるという事実は、時系列変数のすべてのペアの自由なパラメーターを扱うことができないため、モデル内の相互相関項にいくつかの重いパラメーターの制限を指定する必要があることを意味します。
低次の単純なベクトルベースのモデル(VAR、VMA、VARMAなど)、および相互相関の単純なパラメーター制限から始めることをお勧めします。少なくとも1度の遅延に対する相互相関を組み込んだ合理的なモデルを見つけることができるかどうかを確認し、そこから進んでください。この演習では、ベクトルベースの時系列モデルについて調べる必要があります。MTS
パッケージとbigtime
pacakageではR
、それはまた価値がこれらのパッケージをよく理解されるだろうので、多変量時系列に対処するためのいくつかの機能があります。
ベンが述べたように、複数の時系列のテキストブックメソッドはVARおよびVARIMAモデルです。ただし、実際には、需要予測のコンテキストで頻繁に使用されることはありません。
私のチームが現在使用しているものを含め、より一般的なのは階層的な予測です(こちらも参照してください))。階層的予測は、類似または時系列のグループがある場合は常に使用されます:類似または関連製品のグループの販売履歴、地理的地域ごとにグループ化された都市の観光データなど...
アイデアは、さまざまな製品の階層リストを作成し、ベースレベル(つまり、個々の時系列)と製品階層で定義された集約レベル(添付図を参照)の両方で予測を行うことです。次に、ビジネス目標と目的の予測ターゲットに応じて、さまざまなレベルで予測を調整します(トップダウン、ボタンアップ、最適調整などを使用)。この場合、1つの大きな多変量モデルではなく、階層内の異なるノードにある複数のモデルを適合させ、選択した調整方法を使用して調整します。
このアプローチの利点は、類似の時系列をグループ化することにより、それらの間の相関および類似性を利用して、単一の時系列で見つけるのが困難なパターン(季節変動など)を見つけることができることです。手動で調整することは不可能な多数の予測を生成するため、時系列予測手順を自動化する必要がありますが、それはそれほど難しくありません- 詳細はこちらを参照してください。
AmazonとUberでは、より高度ではあるが同様の精神のアプローチを使用しており、1つの大規模なRNN / LSTMニューラルネットワークがすべての時系列で一度にトレーニングされます。また、関連する時系列間の類似性と相関関係からパターンを学習しようとするため、階層的予測と精神的に似ています。階層的予測とは異なります。予測を行う前にこの関係を事前に決めて固定するのではなく、時系列間の関係を学習しようとするためです。この場合、1つのモデルのみを調整するため、自動予測生成を処理する必要はなくなりましたが、モデルは非常に複雑なモデルであるため、調整手順はもはや単純なAIC / BIC最小化タスクではなく、より高度なハイパーパラメーター調整手順を確認するには、
この応答(およびコメント)を参照してくださいを参照してください。
Pythonパッケージの場合、PyAFは利用可能ですが、あまり人気がありません。ほとんどの人はRでHTSパッケージを使用しますが、これにはさらに多くのコミュニティサポートがあります。LSTMベースのアプローチには、料金が必要なサービスの一部であるAmazonのDeepARおよびMQRNNモデルがあります。Kerasを使用した需要予測のためにLSTMを実装している人もいます。それらを調べることができます。
提案されている質量適合パッケージの問題は、パルス、レベル/ステップシフト、季節的パルス、時間傾向などの潜在的な決定論的構造を一様に処理できないか、https://に従ってユーザーが提案する因果を効率的に処理できないことです。 autobox.com/pdfs/SARMAX.pdf
さらに、計算時間は深刻な問題になる可能性があります。AUTOBOX(私が開発を支援した)には、モデルをアーカイブする非常に高度なモデル構築フェーズと、以前に開発されたモデルを再利用する非常に迅速な予測オプションがあります。モデルが開発および保存された後に観測されたデータ。これは、PriceとWeatherを考慮に入れた50以上のアイテムのAnnheuser-Buschの600,000店舗予測プロジェクトに実装されました。
モデルはローリング方式で更新でき、必要に応じて以前のモデルを置き換えます。
パラメトリック制限の必要はありません。また、ARIMAのすべてのシリーズの過去のみに依存しながら、VARおよびVARIMAのように原因変数の同時効果を省略します。
モデルは個々のシリーズに合わせて調整/最適化できるため、1セットのパラメーターを持つ1つのモデルだけでなくてもかまいません。
残念ながらPythonソリューションはまだありませんが、永遠に続くことを願っています。
1200の製品が問題の次元の主な要因です。これで、25期間のみになりました。これはごくわずかなデータであり、あらゆる種類の包括的な相関分析を行うには不十分です。言い換えると、次元を減らすことなく、すべての製品の同時予測を行うためのデータがありません。これにより、すべてのVARMAおよびその他の優れた理論モデルがほとんどなくなります。これらのモデルの係数を扱うことは不可能であり、推定するにはそれらが多すぎます。
単純な相関分析を検討してください。共分散/相関行列には(1200x1200 + 1200)/ 2個のセルが必要です。データポイントは25個しかありません。行列は、ランクが非常に低くなります。何をする?大きく分けて、2つの単純なアプローチがあります。別々の予測と因子モデルです。
最初のアプローチは明らかです。各製品を個別に実行します。バリエーションは、「メンズクロージング」などのセクターなど、いくつかの機能によってグループ化することです。
係数です。要因は何ですか?これらは、GDP成長率などの外因性の要因である可能性があります。または、PCA分析で取得したものなど、外因性の要因である可能性があります。
外因性の要因である場合、これらの要因の系列を個別に回帰してベータを取得する必要があります。PCAの場合、堅牢なPCAを実行して、ベータ版である重みを持つ最初のいくつかの要因を取得できます。
クラウドベースのソリューションに興味があるかどうかはわかりませんが、Amazonは、「DeepAR」と呼ばれるアルゴリズムを、AWS SageMakerを介して利用できるようにします。
このアルゴリズムは、静的および動的な機能を含む予測を作成するために、複数の入力時系列から学習できることを特に目的としています。上記のリンクされたページからのこの抜粋に見られるように:
DeepARアルゴリズムのトレーニング入力は、同じプロセスまたは同様のプロセスによって生成された1つ以上のターゲット時系列です。この入力データセットに基づいて、アルゴリズムはこのプロセスの近似を学習するモデルをトレーニングし、それを使用してターゲット時系列がどのように進化するかを予測します。各ターゲット時系列は、オプションで、catフィールドが提供する静的(時間に依存しない)カテゴリ機能のベクトルと、dynamic_featフィールドが提供する動的(時間依存)の時系列のベクトルに関連付けることができます。
残念ながら、私が知る限り、彼らはこのアルゴリズムをオフライン/自己ホストの使用に利用できるようにしません。
bigtime
はRにあります。おそらくそれを使用するためにPythonからRを呼び出すことができます。