2017-02-23 28 views
0

私はPythonで分解したい時系列信号があるので、statsmodels.seasonal_decompose()を参照してください。データの頻度は48(半時間ごと)です。 this questionerと同じエラーが発生しました。解決策はIntインデックスからDatetimeIndexに変更されました。しかし、私のデータが実際の日付/時刻を知らない。 this github threadDatetimeIndexを使わずに、既知の頻度でstatsmodels.seasonal_decompose()を使用する

、statsmodelsの貢献の一つは

こと「0.8では、あなたが インデックスを上書きするキーワード引数としてFREQを指定することができるはずです。」と言います

しかし、これは私の場合ではないようです。ここに私の問題を説明するための最小限のコードの例です:

import statsmodels.api as sm 
dta = pd.Series([x%3 for x in range(100)]) 
decomposed = sm.tsa.seasonal_decompose(dta, freq=3) 

AttributeError: 'RangeIndex' object has no attribute 'inferred_freq' 

バージョン情報:

import statsmodels 
print(statsmodels.__version__) 
0.8.0 

指定された頻度ではなくDatetimeIndexなしstatsmodelsの時系列を分解する方法はありますか?

もしそうでない場合は、これをPythonで行うための代替手段がありますか?私は季節パッケージをチェックアウトしましたが、its githubは0ダウンロード/月、1人の貢献者、9ヶ月前の最後のコミットをリストしていますので、私は自分のプロジェクトに頼りにしたいとは思っていません。

+0

https://github.com/statsmodels/statsmodels/issues/3503これは、現在0.8のバグです。回避策:時間インデックスがない場合、関数呼び出しでnumpy配列を使用します。 – user333700

+0

こんにちはJosef、私はその問題を提出しました。githubに関する詳細な回答に感謝します。これを続けていくのが楽しいです。 –

答えて

0

githubでこれに答えるjosef-pktに感謝します。 statsmodels 0.8.0にバグがあります.Pandasオブジェクトを渡すと、DatetimeIndexに基づいて推定頻度を計算しようとします。

パンダシリーズを使用する場合の回避策は、numpy配列の値をseasonal_decompose()に渡すことです。たとえば、次のように

import statsmodels.api as sm 

my_pandas_series = pd.Series([x%3 for x in range(100)]) 
decomposed = sm.tsa.seasonal_decompose(my_pandas_series.values, freq=3) 

(エラーなし)

関連する問題