如何将Arima用于具有2个索引的数据

时间:2019-01-28 23:49:45

标签: python time-series forecasting arima pyramid-arima

我有一个经过修改的时间序列问题。我有2个索引变量,日期和用户ID。对于每个用户ID,日期,我想预测一个值。

有趣的部分是每个新用户ID的重置日期。

此时间段内存在标准时间序列问题,预计未来n天。

在火车数据中,我具有每个用户ID,对于1月1-3日,我具有其目标值。

在我的测试数据中,对于每个用户ID,测试日期为1月4日至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

如您所见,对于新ID,日期将重置。所以我无法创建火车数据集,我说前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

就像火车数据集一样,每个新用户ID的日期都会重置。

我只保留日期和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)

predicted = stepwise_model.predict(n_periods = len(test),exogenous = test)

所以这可行,但是我认为n_periods需要是我们要预测的未来几天? (在我的情况下应该是3),但是我使用了n_periods =测试数据的长度,因为它给我一个错误,即周期的长度与测试数据的长度不同。

我这样做正确吗?

0 个答案:

没有答案