1 时间序列规则
1.1 为什么要重视规则
很多比赛都可基于对背景的理解和数据分析获得有用规则,通过“ if A then B等方式设计基准方案。
在企业、公司里也常采用基于规则的方案。
对于本次赛题,我们需要从过去的数据预测未来的数据,从预测的角度说,周期性是核心。
1.2 基于周期因子的时间序列预测
假设给定下面的数据,任务是预测第四周每天的客流量。
. | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 | 周均值 |
---|---|---|---|---|---|---|---|---|
第一周 | 20 | 10 | 70 | 50 | 250 | 200 | 100 | 100 |
第二周 | 26 | 18 | 66 | 50 | 180 | 140 | 80 | 80 |
第三周 | 15 | 8 | 67 | 60 | 270 | 160 | 120 | 100 |
明显能看到周一到周日的周期波动。预测的核心任务就是尽可能准确的提取这种周期。
1.2.1 step1 获得周期因子
方式(1)除以周均值,按列取中位数
. | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 |
---|---|---|---|---|---|---|---|
第一周 | 0.2 | 0.1 | 0.7 | 0.5 | 2.5 | 2 | 1 |
第二周 | 0.325 | 0.225 | 0.825 | 0.625 | 2.25 | 1.75 | 1 |
第三周 | 0.15 | 0.08 | 0.67 | 0.6 | 2.7 | 1.6 | 1.2 |
中位数 | 0.2 | 0.1 | 0.7 | 0.6 | 2.5 | 1.75 | 1 |
方式(2)季节指数的计算方式;获得每日均值 ,再除以整体均值
. | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 |
---|---|---|---|---|---|---|---|
第一周 | 20 | 10 | 70 | 50 | 250 | 200 | 100 |
第二周 | 26 | 18 | 66 | 50 | 180 | 140 | 80 |
第三周 | 15 | 8 | 67 | 60 | 270 | 160 | 120 |
均值 | 20.33 | 12 | 67.67 | 53.33 | 233.33 | 166.67 | 100 |
因子 | 0.22 | 0.13 | 0.73 | 0.57 | 2.50 | 1.79 | 1.07 |
1.2.2 预测
做预测时,只要将周期因子,乘以一个base,就可以做下一周的预测。
比如取最后一周的平均客流量100作为base,那么我们直接乘上周期因子,就得到下一周的预测:
. | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 |
---|---|---|---|---|---|---|---|
中位数 | 0.2 | 0.1 | 0.7 | 0.6 | 2.5 | 1.75 | 1 |
预测 (base=100) | 20 | 10 | 70 | 60 | 250 | 175 | 100 |
从周期性看来,最后三天的值都偏大,这样会导致我们平均出来的base也是偏大的。需要去掉周期性因素后,再取平均,也就是去除趋势的影响,让结果更具说服力。具体做法,就是用客流量除以周期因子。
. | 周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 |
---|---|---|---|---|---|---|---|
第三周 | 15 | 8 | 67 | 60 | 270 | 160 | 120 |
中位数 | 0.2 | 0.1 | 0.7 | 0.6 | 2.5 | 1.75 | 1 |
去周期以后的客流量 | 75 | 80 | 95.7 | 100 | 108 | 91.4 | 120 |
此外,直接用最后一周的平均客流量作为base并不一定是最好的方法。也许最后三天或最后五天的均值能更好的反映最新的情况。具体取多少天,可以通过测试集的表现来确定。
1.3 如何预测下个月每一天的情况
资金流入出预测比赛的任务是预测下个月每一天的情况,因此需要提取以月为周期的因子,做法可以分为以下几个步骤:
(1)获得每日(1-31号)均值
(2)统计每日为周一到周日的频次
(3)基于星期后期因子获得加权均值
(4)根据因子和每日均值预测
2 基于时间序列规则的资金流入流出预测
2.1 以星期为周期的中位数预测
使用了一个简单的实例讲解如何预测。
(1)设置训练集和测试集
训练集时段设为2014-03-31(周一)到2014-08-03(周日)
测试集时段为2014-08-04到2014-08-31
(2)按星期重新组织申购总额与赎回总额
格式如下:
(3)提取中位数,并做预测
提取中位数使用median()方法
df_pruchase.median()
然后按照上述两种方式(1.2.1)提取周期因子
2.2 效果对比
应用Task01中的评价指标,如MAPE
平均绝对百分比误差(Mean Absolute Percentage Error)。
关于节假日,交易量可能偏高或偏低,时间序列规则没有考虑节假日,需要对节日以及节日前后的预测结果修正。