一、基于周期因子的时间序列预测
1、场景
很多数据都具有周期性,比如客流量、支付
需要确定周期长短, 比如一周,一个月,结合STL分解 观察周期变化
2、缺点
没有考虑到节假日、突发事件情况
3、STL分解介绍
将时序图拆解为Trend+Sensoinnal+Residual
4、时间序列规则
选择特征,可以用简单统计量来作为特征,从中提取出有用的信息
a、中位数、均值
b、临近数据,距离待测数据越近的数据对齐影响越大
二、预测步骤
假设给任务是根据前三周的数据预测第四周每天的客流量
Step1,获得周期因子
获得星期几的均值,再除以整体均值
Step2,计算base
Step3,使用base*周期因子进行预测
假如base=100,可以得到第四周的客流量
如果预测下个月每天的情况
如果想预测下个月每天的流量情况,可以基于每个月的规则
(1-30号平均流量)* 周期因子
Step1,计算周期因子(weekday)
Step2,计算每日(1-30号)均值,
Step3,统计星期几(weekday)在每日(day)出现频次
Step4,基于周期因子获得加权值,得到每日的base(去掉周期因子的影响)
Step5,根据每日base和周期因子进行预测
三、特殊日期处理
清明节,2014年4月5-7日 五一,2014年5月1-3日 六一,2014年5月31-6月2日 中秋节:2014年9月6-8日 国庆节:2014年10月1-7日
节假日工具包chinese_calendar
pip install chinesecalendar
import datetime
from chinese_calendar import is_workday, is_holiday
temp = datetime.date(2021,1,10)
print(is_workday(temp))
print(is_holiday(temp))
异常情况修正
1)不是真的工作日 => 假日
2)不是真的假日 => 工作日True