本期在之前三期关于时间序列结构变化讨论的基础上,再对建模方法稍做变化,以适应不同场景。需要注意的是,包括本期在内关于使用Python处理时间序列结构变化的方法,都源于自动化批量识别时间序列结构变化的需求。
场景描述
(1)时间序列具有季节周期,且季节项估计误差使得趋势项估计存在明显的异方差
(2)时间序列的随机项波幅较大,时间序列的趋势容易被剧烈的非周期波动掩盖
(3)需要识别时间序列当前趋势状态,即识别时间序列当前n阶差分正负偏向
(4)避免短期异常造成识别过敏
(5)对时间序列当前趋势状态的判定需要足够的时间步数据进行验证
(6)对时间序列的未来估计只考虑符合当前趋势的最新信息
(7)环境多变,单序列数据稀疏量少,暴力型大数据算法不适用
建模方法
第一步,针对第(1)(2)点需求,按移动平均窗口MW对时间序列进行移动平均预处理,获得移动平均序列。为消除季节项估计误差导致的异方差问题,可将移动平均窗口MW设置为季节周期的倍数。
第二步,针对第(3)点需求,计算时间序列的n阶差分序列。因为实际应用过程中,时间序列趋势变化一般以线性变化为主(例如往期上市公司利润表历史数据研究案例),除随机变化情况外,差分序列偏向大多出现在1阶和2阶,极少出现3阶以上的差分偏向。所以,本期的建模方法根据时间序列的1阶和2阶差分序列的正负偏向分析时间序列当前趋势状态,即计算1阶差分和2阶差分。
第三步,针对第(4)(5)点需求,本期模型将移动平均处理后的时间序列数据按概率状态更新模型进行处理,按分析者设置的粒子时间步MS将时间序列划分为多个粒子波段。
第四步,从1阶差分最新粒子波段开始向前回溯,逐个粒子波段按显著性水平分别进行偏向正和偏向负的单尾假设检验,判定1阶粒子波段趋势状态1阶为正(+)、负(-)或无(n):
(a)若粒子波段