一、前言
时间序列数据,即按时间顺序排列的数据点集合,是众多领域中至关重要的一种数据形式。这类数据源自于各种应用,如金融市场的股价、经济指标的日常观测、气象数据的采集,乃至生物医学领域中的生理信号。处理和建模时间序列数据旨在揭示其内在规律、趋势和潜在的关联,从而提供对未来发展的洞察。在这个信息爆炸的时代,善于利用时间序列数据的技能变得愈加关键。
时间序列数据建模有多种方法,其中基础模型有TensorFlow,Statsmodel,Scikit-Learn,本系列采用ARIMA模型,旨在介绍时间序列数据处理和建模的基本概念、方法和实践,将探讨从数据清理和预处理到建立预测模型的全过程,涵盖了常见的统计方法及背后的统计逻辑。
本系列旨在理清以下有关时间序列的问题:
1.时间序列是什么?有哪些组成部分?怎么做时间序列数据的分解?
2.什么是“平稳的”数据?平稳数据有什么特征?为什么时间序列数据建模需要平稳数据?如何将非平稳的数据变为平稳数据?
3.什么是ACF、PACF、ARIMA?
4.建模步骤有哪些?
5.实操模型
在本篇中,只讨论前4个问题,而将实操建模留给(下)篇。
二、时间序列组成部分和分解
时间序列数据由以下部分组成:
其中,Y表示时间序列数据;T表示趋势(Trend),指现象在较长时期内持续发展变化的一种趋向或状态;S表示季节波动(Season),是由于季节的变化引起的现象发展水平的规则变动;C表示行为的改变(change in behavior),广义来看,C也可以看做趋势的一部分;I表示极端偏离(outlying observations)。在本文中由于并不存在处理组(Treatment),也没有显著的事件冲击,因此认为C=0。
实际上,换个角度,从构成上可以认为,时间序列数据为:在一个平稳的随机残差项上添加季节波动S,再加上趋势T,然后再加上事件C。
2.1分解趋势
对于时间序列的分解,首先分解趋势T(de-trend),主要有线性回归法、polynomial regression,spine regression等多种方法。最常用的方法为差分法和移动平均法。
移动平均法可以单独提取出T。这是因为残差平稳,围绕中间值波动,用平均刚好可以在一定程度上抵消随机性,也可以把循环波动的季节性因素抵消,因此移动平均之后,可以认为只包含T和C两部分,即总趋势部分。
差分法可以将T分解出去。实际上,在T、S、C、I中,只有T是与时间t相关的(S只与周期的时间间隔有关,而与具体时间是哪年、哪月无关),分解趋势即将与时间t有关的项分解出去。在假定趋势和时间t是线性关系的情况有: