Модель AR в statsmodels - PullRequest
       9

Модель AR в statsmodels

0 голосов
/ 30 октября 2018

Я пытаюсь приспособить модель авторегрессии временного ряда в Python

Вход DF:

code                                test_col  

2018-09-20 18:00:00                      10                      
2018-09-20 19:00:00                      20                     
2018-09-20 20:00:00                      21                       
2018-09-20 21:00:00                      17                      
2018-09-20 22:00:00                      7 

Индекс DF:

DatetimeIndex(['2018-09-20 18:00:00'.......]

Модель:

 mod = AR(DF[test_col])
 res = mod.fit(maxlag= 20, ic= 'aic')
 last_hour = df.index[[len(df)-1]]
 pred = res.predict(start=last_hour[0],end = last_hour[0] )

last_hour => выбирает последнюю метку времени из индекса, для которого я хочу предсказать

Ошибка:

File "pandas/tslib.pyx", line 1280, in pandas.tslib._Timestamp.__sub__ (pandas/tslib.c:23914)
TypeError: descriptor '__sub__' requires a 'datetime.datetime' object but received a 'int'

Я проверил тип "last_hour"

print (type(last_hour))
<class 'pandas.tseries.index.DatetimeIndex'>

Любые предложения о том, как исправить это.

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Обновление панд с V - 19. до 23. Решил проблему.

0 голосов
/ 30 октября 2018

Я думаю, что есть проблема с тем, как индекс даты / времени приводится в вашем фрейме данных, потому что следующие строки кода работают для меня:

import pandas as pd
from statsmodels.tsa.ar_model import AR
DF = pd.DataFrame({'code': ['2018-09-20 18:00:00', '2018-09-20 19:00:00', '2018-09-20 20:00:00', '2018-09-20 21:00:00', '2018-09-20 22:00:00'],
                   'test_col': [10, 20, 21, 17, 7]})
DF['code'] = pd.to_datetime(DF['code'])
DF = DF.set_index('code')
mod = AR(DF['test_col'])
res = mod.fit(maxlag= 2, ic= 'aic')
last_hour = DF.index[[len(DF)-1]]
pred = res.predict(start=last_hour[0],end = last_hour[0])

Проверка объекта last_hour дает

print(last_hour)
DatetimeIndex(['2018-09-20 22:00:00'], dtype='datetime64[ns]', name='code', freq=None)

Одна вещь, которую можно попробовать, это сбросить_индекс, затем преобразовать столбец в дату и время, а затем снова установить его в индекс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...