1

30 秒間隔のレコードを含むデータ セットを取得しました。時系列モジュールの ARMA 関数を使用して予測予測を実行しようとしています。データのプライバシーのため、ランダム データを使用してエラーを再現しました

import numpy as np
from pandas import *
import statsmodels.api as sm
data = np.random.rand(100000)
data_index = date_range('2013-5-26', periods = len(data), freq='30s')
data = np.array(data)
data_series = Series(data, index = data_index)
model = sm.tsa.ARMA(data_series,(1,0)).fit()

私のパッケージのバージョン:
Python バージョン 2.7.3 pandas バージョン
0.11.0
statsmodels バージョン 0.5.0

主なエラーメッセージは次のとおりです(一部省略)。

ValueError        Traceback (most recent call last)
<ipython-input-24-0f57c74f0fc9> in <module>()

6 data = np.array(data)
7 data_series = Series(data, index = data_index)
----> 8 model = sm.tsa.ARMA(data_series,(1,0)).fit()

...........

...........

ValueError: freq 30S not understood

ARMA は pandas によって生成された日付形式をサポートしていないようです。date_range の freq オプションを削除すると、年が pandas の制限をはるかに超えるため、このコマンドは大きなシリーズでは機能しません。

とにかく移動するには?ありがとう

更新: data_series.values を使用しても問題ありませんが、次は予測を行う方法を教えてください。私のdata_indexは[2013-05-26 00:00:00、...、2013-06-29 17:19:30]からのものです

prediction = model.predict('2013-05-26 00:00:00', '2013-06-29 17:19:30', dynamic=False)

それでもエラーが発生する

predict = model.predict() を通過してシーケンス全体の予測を生成できることはわかっていますが、一致させることはできますが、全体的にはそれほど便利ではありません。

4

1 に答える 1

1

問題は、この freq が何らかの理由で pandas からのオフセットを返さないことです。日付を何かに使用するにはオフセットが必要です。パンダのバグのように見えます/私には実装されていません。

from pandas.tseries.frequencies import get_offset
get_offset('30s')

ただし、エラー メッセージを改善できる可能性があります。

[編集予測の便宜のために日付を追加する以外は、実際には日付は必要ないため、data_series.values を使用してモデルを推定できます。]

于 2013-07-10T21:24:46.087 に答える