Statsmodelsは、ARIMAはシリーズが静止していないため適切ではないと述べていますが、それをどのようにテストしていますか?


12

Pythonのstatsmodels ARIMA APIでモデル化しようとしている時系列があります。以下を適用した場合:

from statsmodels.tsa.arima_model import ARIMA
model = ARIMA(data['Sales difference'].dropna(), order=(2, 1, 2))
results_AR = model.fit(disp=-1)

次のエラーが発生します。

ValueError: The computed initial AR coefficients are not stationary
You should induce stationarity, choose a different model order, or you can
pass your own start_params.

しかし、私はすでにデータを区別しています:

data['Sales'] = data['Sales'] - data['Sales'].shift() 

定常性を誘発するためにこれ以上何ができますか?

また、データが静止していないことを確認するためにARIMA APIを実行しているテストは何ですか?

私の元の時系列は次のようになります。 ここに画像の説明を入力してください

差分時系列は次のようになります。 ここに画像の説明を入力してください

そして、私のACFプロットは次のようになります。 ここに画像の説明を入力してください


前提が間違っています。ARIMAファミリーの差異化により、多項式トレンドを削除できるため、一部の非定常モデルを定常モデルに変換できます。ARMAファミリは差分を許容せず、非定常モデルを含みません。
マイケルR.チェニック2016

2
@MichaelChernickですが、ARMAのものではなく、ARIMA APIと呼んでいます。何か不足していますか?
Skander H.

回答:


4

「定常性を誘発するために、私はこれ以上何ができますか?」と尋ねました。シリーズがレベルシフト(症状)を示す場合、これは非定常性の例です。正しい対処法は、データを「意味のないものにする」ことであり、それによって差異が生じないようにします。さらに、シリーズは確定的傾向または季節的脈動の変化を示す可能性があり、介入検出スキームによって修正できます。シリーズのパラメーターが時間の経過とともに変化する場合(症状)、正しい対処法は、チャウテストを介してブレークポイントを見つけ、最新のセットまたは何らかの形のしきい値モデル(TAR)を使用することです。一連のエラーの変化が時間の経過とともに変化する場合(症状)、正しい解決策はWLSのGLSの形式または何らかの形式の電力変換です。 または、それらの比較的単純な救済がGARCHモデルの何らかの形で失敗する。

元のデータを投稿していただければ、さらにお役に立てるかもしれません。


2

注意深く読んでください。時系列が定常的ではないということではありません。これは、初期係数が定常的ではないことを示しています(これは、定常的なプロセスを記述していないことを意味します)。

それが示唆するように、開始値に独自の推測を入力してみることができます。しかし、モデルが誤って指定されているため、そもそも悪い開始値を選択しているのではないかと思います。時系列をすでに差異化している場合は、おそらく積分順序1も指定したくないでしょう。おそらく、order =(2、1、2)ではなく、order =(2、0、2)を意味します。


0

時系列信号では、ウィンドウ処理を使用して定常性を導入できます。オーバーラップを伴う適切なウィンドウ手法を使用して、単一の時系列信号をより小さな信号に分割できます。周波数領域でのスプリアスピークを回避するにはウィンドウ処理が必要であり、信号エネルギーを節約するにはオーバーラップが必要です。通常、音声信号(8KHzサンプリング周波数)には30ミリ秒のフレームがあり、フレームごとに240サンプルを提供します。これは、50%のオーバーラップがあるハミングウィンドウを使用して複雑です。


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