Я пытаюсь обучить модель Sarimax на моих данных ниже.Мои данные в формате, в котором у меня есть повторяющиеся индексы даты.Я хочу тренироваться на первое и второе свидания для каждого идентификатора и тестировать на третьем свидании для каждого идентификатора.
Моя экзогенная переменная id
и count
.Целевая переменная - y
.
. Я подумал, что могу просто нарезать формат индекса даты, чтобы сегментировать его на тренировку и тестирование, но я получаю ошибки в части get_predict
.
данные
a = pd.DataFrame({'date':['2017-06-01','2017-06-02','2017-06-03',
'2017-06-01','2017-06-02','2017-06-03'],
'id' :[123,123,123,456,456,456],
'count':[10,10,10,12,12,12],
'y' :[10,15,17,5,3,7] })
a.index = pd.to_datetime(a['date'])
Создать модель
mod = sm.tsa.statespace.SARIMAX(a.loc['2017-06-01':'2017-06-02']['y'],
exog=data.loc['2017-06-01':'2017-06-02'].loc[:,a.columns!= 'y'],
order=(1, 1, 1),
seasonal_order=(0, 0, 0, 52),
enforce_stationarity=False,
enforce_invertibility=False)
results = mod.fit()
print(results.summary())
прогноз
p = results.get_prediction(start=pd.to_datetime('2017-06-03'),
exog = a.loc['2017-06-03'].loc[:,a.columns!='y'])
Ошибка TypeError: аргумент int () должен быть строкой, байтовым объектом или числом, а не 'меткой времени'
Теперь эта ошибка, на мой взгляд, не имеет смыслапотому что, когда у меня только 1 id
вместо 2 в моих данных поезда, весь этот код работает отлично.Поэтому мне интересно, правильный ли у меня формат данных или что в моем случае мне просто нужно иметь несколько моделей саримакса для каждого идентификатора?