statsmodels.tsa.arima_Model予測時報エラーTypeError:int()argument must be a string,a bytes-like object or a number,not'Timestamp'

1685 ワード

pythonでstatsmodelsを使用してARIMAモデルを作成し、時間系列を予測します.
import pandas as pd
import statsmodels.api as sm

df = pd.read_csv("data.csv", index_col=0, parse_dates=True)

mod = sm.tsa.statespace.SARIMAX(df['price'], enforce_stationarity=False, enforce_invertibility=False)

res = mod.fit()
res.get_prediction(start=pd.to_datetime('2018-1-1'))

実行後のエラー:
TypeError: int() argument must be a string, a bytes-like object or a number, not 'Timestamp'

この場合、読み込まれた時系列データの時間が一定の間隔をあけていないため、例えばmod._indexを印刷した結果、
DatetimeIndex(['2016-01-01', '2016-01-08', '2016-01-15', '2016-01-22',
               '2016-01-30'],
              dtype='datetime64[ns]', name='date', freq=None)

このうち2016−01−30は、前時間から8日間、その他の間隔は7日間である.このDatetimeIndexのfreqはNoneタイプであることがわかる.最終日を2016-01-29に変更すると、mod._indexの結果は次のとおりです.
DatetimeIndex(['2016-01-01', '2016-01-08', '2016-01-15', '2016-01-22',
               '2016-01-29'],
              dtype='datetime64[ns]', freq='W-FRI')

しかし、この時は間違いを報告します.
KeyError: 'The `start` argument could not be matched to a location related to the index of the data.'

これはget_predictionのstartパラメータは、時間シーケンスに現れた時間でなければなりません.
debug経験++:ライブラリを使用する場合、階層呼び出しのため、問題が発生して情報を読み間違えただけでは解決できない場合がありますが、呼び出したコードが間違っていない場合は、データの問題になる可能性があります.検索エンジンは使いやすいが、小さな問題では盲目的にインターネットで針をすくうことになるかもしれない.オープンソースのライブラリについては、似たようなissueがあるかどうか、ライブラリのバグである場合があります.自分で問題を特定するには、正確で完全な例を比較して、異なる点を探す方法があります.