Как использовать Arima для данных с 2 индексами - PullRequest
0 голосов
/ 29 января 2019

У меня проблема с временными рядами, которая немного изменена.У меня есть 2 проиндексированные переменные, дата и идентификатор пользователя.для каждого идентификатора пользователя, даты я хочу прогнозировать значение.

Интересная часть - это дата, сбрасываемая для каждого нового идентификатора пользователя.

Стандартные задачи временного ряда имеют для этого периода времени прогноз на следующие n дней.

В моих данных поезда, у меня есть для каждого идентификатора пользователя, для 1-3 января, у меня есть их целевое значение.

В моих данных теста, для каждого идентификатора пользователя, дата теста - jan4-6.

Как для данных поезда, так и для испытаний, индексом данных является дата.

Мои данные

id,date,week_day,target
1,2019-01-01,1,10
1,2019-01-02,2,6
1,2019-01-03,3,7
2,2019-01-01,1,8
2,2019-01-02,1,5
2,2019-01-03,1,4

Как видно, для нового идентификатора дата сбрасывается.Поэтому я не могу создать набор данных поезда, в котором я говорю, что первые N строк - это данные о поездах, а следующие N строк - это данные испытаний.

Я сохранил дату и цель только в данных поезда с указателем даты.

мой тестовый набор данных

id,date,week_day,target
1,2019-01-4,1,15
1,2019-01-5,2,13
1,2019-01-6,3,8
2,2019-01-4,1,7
2,2019-01-5,1,7
2,2019-01-6,1,4

Как и набор данных поезда, дата сбрасывается для каждого нового идентификатора пользователя.

я сохранил только дату и user_id с датой в качестве индекса для теста.

Мой код

(Так вот, что я пробовал, но я не уверен, правильно ли я делаю)

stepwise_model = auto_arima(df[['target']],exogenous=df[['id']], 
                           start_p=1, start_q=1,
                           max_p=3, max_q=3, m=12,
                           start_P=0, seasonal=True,
                           d=1, D=0, trace=True,
                           error_action='ignore',  
                           suppress_warnings=True, 
                           stepwise=True)

предсказано = stepwise_model.predict (n_periods = len (test), exogenous = test)

Итак, это работает, но я подумал, что n_periods должно быть на сколько дней в будущем мы хотим прогнозировать? (в моем случае это должно быть 3) Но я использовал n_periods = длину тестовых данных, потому что это дало мне ошибку, что длина периодов не совпадает с длиной тестовых данных.

Я правильно делаю?

...