Тренинг ARIMA для прогнозирования тренда - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь предсказать тренд, используя ARIMA. К сожалению, вывод, который я получаю, сильно отличается от ожидаемого (поведение для данных обучения и тестирования очень похоже) и указывает на то, что весь набор данных тренировки был ... бесполезным?

df = pd.read_csv('data.csv')
df.index = pd.DatetimeIndex(df.index).to_period('D')

#data from 1/1/2016 to 31/12/2018
train = df.loc[:'2018-12-31']
test = df.loc['2019-01-01':]

model = auto_arima(train, start_p=1, start_q=1,
                   max_p=3, max_q=3, m=7,
                   start_P=0, seasonal=True,
                   d=1, D=1, trace=True,
                   error_action='ignore',
                   suppress_warnings=True,
                   stepwise=True)

model.aic()
model.fit(train)
ffforecast = model.predict(n_periods=len(test))
ffforecast = pd.DataFrame(fforecast,
                               index=test.index,
                               columns=['prediction'])
pd.concat([test, fforecast], axis=1).plot()
pyplot.show()

enter image description here

полный код: https://pastebin.com/huer62cM

csv: https://filebin.net/rlvm3hrjetlovd64/newbikes6years.csv?t=nt3slw3y

1 Ответ

1 голос
/ 09 января 2020

Вы используете неверный набор параметров для вашей модели. Похоже, вы скопировали / вставили пример из другого набора данных, и он не работает для вас.

Я бы предложил что-то вроде:

model = auto_arima(train, error_action='ignore', trace=True, suppress_warnings=True,seasonal=True, maxiter=10, m=7)

Исходя из этого, вы может go вернуть и уточнить параметры, как только вы прочитаете их и узнаете, что они делают.

...