Предсказания Python-ARIMA, возвращающие все NaN - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь следовать здесь руководству по временным рядам (используя свой собственный набор данных):

https://www.analyticsvidhya.com/blog/2018/02/time-series-forecasting-methods/

Удивительно, но я могу успешно достичь части 7: ARIMA.В этом разделе я немного спотыкаюсь.Все значения в столбце Prediction для него - NaN.

В терминале я вижу a date index has been provided but it has no associated frequency information and so will be ignored when forecasting

В моем наборе тестовых данных есть несколько пробелов в датах, когда транзакции не проводились, поэтому язаполните его test=test.set_index('DATE').asfreq('D', fill_value=0).Я также делаю то же самое с моим набором данных ARIMA, поэтому индекс соответствует тестовому набору.

Остальная часть соответствующего кода выглядит следующим образом:

train=df[0:180]
test=df[180:]
SARIMA=test.copy()

fit=sm.tsa.statespace.SARIMAX(train['COUNT'], order=(1,1,1), seasonal_order=(0,0,0,5)).fit()
SARIMA['SARIMA']=fit3.predict(start=0, 
    end=93,dynamic=True)

print(SARIMA) 
print(test)

В выводе на печатьИндекс для тестового набора и набора ARIMA совпадают.ARIMA содержит столбец SARIMA, который содержит прогнозы, за исключением того, что все они NaN.Чего мне не хватает?

test
DATE        COUNT
2018-06-21    1
2018-06-22    3
..
2018-11-21    3
2018-11-22    4

SARIMA
DATE        COUNT    SARIMA
2018-06-21    1       NaN
2018-06-22    3       NaN
..
2018-11-21    3       NaN
2018-11-22    4        NaN

edit: по какой-то причине statsmodels просто не может определить частоту индекса.Я пробовал SARIMA=SARIMA.set_index('DATE').asfreq('D',fill_value=0) SARIMA.index=pd.to_datetime(SARIMA.index) SARIM.index=pd.DatetimeIndex(SARIMA.index.values, freq='D') Но всегда появляется предупреждение

Редактировать: Я прямо пытался создать новый набор данных в Excel:

DATE       COUNT
2018/01/01   1
2018/01/02   2
..
2018/01/10   3
2018/01/11   4

создал модельс такими же строками выше, за исключением установки enforce_stationarity и enforce invertibility на False.Все прогнозы все еще NaN

edit3: используя поддельный набор данных excel, я подошел на 1 шаг ближе.Прохождение start='2018-01-01' и end='2018-01-21' дало предсказания всех 0, что лучше, чем NaN.Кто-нибудь может понять эти результаты?

edit4: установка dynamic=False вернула разумные прогнозы.Я явно не статистик

1 Ответ

0 голосов
/ 04 декабря 2018

В наборе данных отсутствуют некоторые даты. SARIMA.index=pd.DatetimeIndex(SARIMA.index.values, freq='D') исправил это.

...