我正在尝试在下面的数据上训练Sarimax模型。我的数据是在我已经重复日期索引的格式。 我想在每个ID的第一个和第二个日期进行训练,并在每个ID的第三个日期进行测试。
我的外源变量为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'])
错误 类型错误:INT()参数必须是一个字符串,一个字节状物体或数字,而不是“时间戳”
现在我相信这个错误没有道理,因为当我的火车数据中只有1个id
而不是2个时,整个代码都可以正常工作。所以我想如果我的数据格式是正确的,或者在我的情况下,我只需要为每个ID的多个sarimax模式?