Заказ временных меток для прогнозирования модели ARIMA - PullRequest
0 голосов
/ 30 мая 2020

Информация:

Я пытаюсь спрогнозировать цену Bitcoin в качестве теста и, чтобы упростить задачу, через 1 день после моей последней даты и времени в моих данных. Итак, t = 27.05.2020, t + 1 = 28.05.2020.

Итак, я загрузил свои данные:

x = pd.read_csv('btcdata.csv', header=0, parse_dates=['Date'], index_col=0)
close = x.Close

И вот как это выглядит .head() :

Date
2020-05-27    8854.32
2020-05-26    8844.42
2020-05-25    8899.31
2020-05-24    8715.73
2020-05-23    9181.76

Есть небольшая проблема с тем, что самая последняя дата расположена вверху, а самая старая дата расположена внизу. Большинство дат организовано противоположным образом, по крайней мере, так это видит модель ARIMA.

Что на самом деле больше соответствует .tail() моих данных:

Date
2014-12-05    377.1
2014-12-04    377.1
2014-12-03    378.0
2014-12-02    378.0
2014-12-01    370.0

Вопрос / проблема:

Как мне обойти это и заказать это так, чтобы модель ARIMA знала, какая у меня самая последняя дата t, и знала, что нужно предсказывать t + 1

Также каждый раз, когда я подбираю свою модель, появлялись эти два предупреждения. Может иметь отношение к проблеме:

ValueWarning: A date index has been provided, but it has no associated frequency information and so will be ignored when e.g. forecasting.
ValueWarning: A date index has been provided, but it is not monotonic and so will be ignored when e.g. forecasting.

Ответы [ 2 ]

2 голосов
/ 30 мая 2020

ValueWarning: A date index has been provided, but it has no associated frequency information and so will be ignored when e.g. forecasting. означает, что ARIMA не понимает формат ваших данных.

Это должно преобразовать все в DatetimeIndex с периодичностью в днях.

x.index = pd.DatetimeIndex(x.index).to_period('D')

ValueWarning: A date index has been provided, but it is not monotonic and so will be ignored when e.g. forecasting. означает, что данные не отсортированы, поэтому введите эту строку:

x = x.sort_index()
1 голос
/ 30 мая 2020

Если проблема просто в том, что ваши данные не отсортированы правильно, то это должно работать.

Данные отсортированы по дате:

prices = x.sort_index()

Или, если вам нужны только 5 самых последних точки данных:

latest_prices = x.sort_index().iloc[-5:]
...