Как правильно установить начальный / конечный параметры функции statsmodels.predict - PullRequest
0 голосов
/ 15 октября 2018

Я делаю прогноз:

# Import the ARIMA module from statsmodels
from statsmodels.tsa.arima_model import ARIMA

# Forecast interest rates using an AR(1) model
mod = ARIMA(data, order=(1,1,1))
res = mod.fit()

# Plot the original series and the forecasted series
res.plot_predict(start='2014-07-02', end='2018-09-28')
plt.show()

Я получил ошибку:

KeyError: "invalid literal for int() with base 10: '2014-07-02'"

после прочтения документа statsmodels: https://www.statsmodels.org/dev/generated/statsmodels.tsa.arima_model.ARIMAResults.plot_predict.html
Затем интуитивный способ заключается впроверьте тип '2014-07-02', это pandas.core.indexes.datetimes.DatetimeIndex.
Таким образом, согласно документу, datetime должно быть разрешено.вот почему я сбиваю с толку.

Я последовал за комментарием Мартина Питерса о том, что существенным вопросом здесь является индекс, модель не имеет полных дат в качестве ключа, так как это австралийский фондовый индекс:

            All Ordinaries closing price
Date    
2014-06-30  5382.0
2014-07-01  5366.5
2014-07-02  5441.7
2014-07-03  5479.5
2014-07-04  5511.8
2014-07-07  5506.3
2014-07-08  5498.5
2014-07-09  5442.2
2014-07-10  5454.3
2014-07-11  5474.6

Таким образом, некоторые даты отличаются на один день, некоторые даты различаются на три дня.Тем не менее, я до сих пор не понимаю, почему я не могу использовать res.plot_predict напрямую.Некоторые другие могут иметь такую ​​же проблему, как если я использую непрерывный временной ряд, то это работает.

Kriss предоставляет ссылку под комментарием, затем я прочитал ее полностью, но мне не удалось использовать ее для решения моей проблемы: в моих данных каждая дата уникальна, но чтобы убедиться в этом, я следовалответ:

data = data.groupby(pd.TimeGrouper(freq='D')).sum()


# Import the ARIMA module from statsmodels
from statsmodels.tsa.arima_model import ARIMA
from datetime import datetime


# Forecast interest rates using an AR(1) model
mod = ARIMA(data, order=(1,1,1))
res = mod.fit()

# Plot the original series and the forecasted series
res.plot_predict(start=min(data.index), end=datetime(2018,9,28))
plt.show()

Тогда у меня такое же чувство, что я хочу ударить стену, я получил ошибку:

KeyError: Timestamp('2014-06-30 00:00:00')

Ответы [ 2 ]

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

Проблема может быть решена с помощью:

# Plot the original series and the forecasted series
res.plot_predict(start=datetime(2014,7,1), end=datetime(2018,9,28))
plt.show()

Я не могу использовать первую дату, так как я использовал первое различие

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

Вы пытаетесь преобразовать дефис (-) в целое число, что невозможно с помощью int ()

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