時系列を生成したプロセスが時間とともに変化したかどうかをテストする方法


7

問題

マシンによって生成された時系列データが2つのばらばらの期間にわたってあります-およそ2016年に1か月、2018年にもう1か月です。

各タイムステップで、観測された変数は観測された変数の別のセットで説明できるとドメインの専門家は仮定しています。tYtバツ1tバツdt

このプロセスが時間とともに変化したかどうかをどのようにテストできますか?変数分布が時間の経過とともに変化したかどうかをテストしようとしていないことに注意してください。関係が時間とともに変化したかどうかをテストしたいと思います。YバツY

現在のアプローチ

を生成した基礎となるプロセスをモデル化する方法として、を指定してを予測するために、2016年のデータに時系列モデル(たとえば、ガウスプロセス)をたとします。Ytバツ1tバツdtYt

ドメインの専門家は、おそらくこのモデルを使用して、2018年の与えられた場合の変数を予測し、残差を使用してモデル(2016年のプロセスを表す)がそうであることを推測できると示唆しました2018年も同じではありません。この時点以降の継続方法は不明です。Ytバツt

私が考えていること

  1. 2016年と2018年の残差が同じ分布から生成されているかどうかをテストする必要がありますか、それともKolmogorov-Smirnovテストなどを使用して適合度テストを実行する必要がありますか?このアプローチに関する私の懸念は、2018年のサンプル外のデータは2016年のサンプル内のトレーニングデータよりもエラーが大きくなる可能性が高いため、このテストでは誤検知が発生する可能性が高いということです。この影響を調整/説明する方法はありますか?

  2. 2016年と2018年の2つのモデルを適合させ、これらの2つのモデルが「同じ」または「異なる」ことをテストする方法を使用する必要がありますか?たとえば、1つの可能性は、2016年と2018年のデータにそれぞれ当てはめられた2つのガウスプロセス間のKL発散を計算することです。このアプローチの他の提案や問題はありますか?

  3. 共和分に関するいくつかの投稿を見ました。しかし、私はこの概念を完全に理解していません。これは関連していますか?

一般に、この種の問題にどのように取り組むことができますか?私はこれをオンラインで検索してみましたが、クエリの精度が不足しているため(この領域についてはよく知らないため)、関連する結果が多く得られません。検索するトピック/キーワードに関する簡単なヒント/コメント、または目を通すための本/論文にも感謝します。

親切に私は発見的手法に基づく方法ではなく、原則的な(できれば統計的)アプローチを探していることに注意してください。良い例は、以下のChowテストとその変形を示唆する回答です。


3
変化点の検出を確認することをお勧めします(この最近のレビューも参照してください)。
qeschaton 2018

@qeschatonありがとう。ドキュメントのクイックスキャンとGoogleでの用語の検索は、シーケンスが変更されたときに変更点検出アルゴリズムが検出することを示唆しています。出力を生成した入力と出力の関係がいつ変化したかを検出する方法を見つけたいと思っています。私はこの論文をより詳しく見ていきます。うまくいけば、私の現在の問題に合ったバリエーションがあるでしょう。ありがとうございました。
光錬金術師、

回答:


2

構造変化は、@ John Stax Jakobsenが述べたChowテストだけでなく、テストすることもできます。

他にもたくさんのテストがあり、特に変動テストのファミリーは通常うまくいきます。

ここでは、それらを計算するRパッケージのstrucchange概要を説明します。あなたがRユーザーでないなら、理論だけを読んでください、それはそこでよく説明されています。


ありがとうございました!リファレンスとキーワード「変動テスト」は非常に役立ちます。これで、文献調査を行うときに注意すべきより正確な名前がわかりました。
光錬金術師、


1

私が私のお気に入りの予測パッケージに組み込んだ機能の1つは、最も重要なパラメーターのブレークポイントを調査するためのCHOWテストでした。その前に、私は脈/季節の脈を治療/調整する必要がありました。

もちろん、特定のレベルのシフトまたは時間傾向がある場合、このテストはバイパスされます。

CHOWテストは、使用するFテストで必要とされるため、各グループでの独立したエラーを前提としています。

私の実装には、GLM内のユーザー指定の因果関係が現代的または遅れている可能性が含まれています。


0

最初に、時間変数を直接考慮するいくつかのブラックボックスモデル(GBMまたはランダムフォレストなど)を適合させます T、例えば Yt=Fバツt1バツdt;T。のさまざまな粒度をテストすると役立つ場合がありますT、暦年(2016、2018)、2016年から経過した月などで測定されます。次に、重要性を評価するために T変数の重要度プロット(たとえば、「統計的学習の要素」の「15.3.2変数の重要度」を参照)を見るか、単にT変数、モデルを再フィットし、モデルのパフォーマンスを比較します。

または、モデル(ガウス過程)に固執し、2016年と2018年の残差を比較することもできます。サンプル内(2016)とサンプル外(2018)の残差の分布を比較すると誤解を招く結果になるというあなたの直感に同意します。ただし、これは次のようにデータを分割することですばやく修正できます:2016データをトレーニングサブセット(モデルの適合に使用)と検証サブセット(モデルの品質の評価に使用)に分割し、次のサブセットを使用して2番目の検証データセットを定義します2018年のデータ。次に、トレーニングサブセットを使用してモデルを近似し、2つの検証サブセット(2016と2018)でパフォーマンスをテストします(残差、MSEなどを計算します)。チャンスを排除するために(不運のために結果が異なる場合があります)演習全体を繰り返すことができます(データの分割、モデルのフィッティング、

また、あなたが言及したように、2つの異なるモデル(1つは2016年のデータに基づくモデル、もう1つは2018年のデータのみに基づくモデル)を適合させることができます。この場合、毎年のデータをトレーニングと検証のサブセットに分割し、検証のサブセットに基づいてモデルのパフォーマンスを評価します。使用できる類似性の尺度として、RMSE、QQプロット、前述の統計的検定、または両方のモデルからの予測の信頼区間を計算し、信頼区間が重複しているかどうかを確認します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.