时间序列:两条走势的对比观察
拿到一份按时间排列的数据,第一步往往不是画图,而是问一句:它和上一期比,变化的是水平还是形状。举个例子,某城市2023年1月共享单车日均骑行量为12.4万次,7月涨到18.9万次;另一座城市同期从9.1万次降到8.7万次。两条走势放在同一张图上,前者像爬坡,后者像走平。单看数字大小会误判,只有把时间轴拉出来,才能看出一个在积累、一个在原地摆动。这就是时间序列最基本的对比视角。
平稳和非平稳,是绕不开的一对概念。平稳序列的均值和方差大致不随时间移动,比如某条地铁线工作日的早高峰进站量,连续20周都在3.2万到3.6万人次之间波动,没有明显向上或向下的惯性。非平稳序列则相反,趋势会拖着均值走。用统计语言说,前者的自相关函数衰减快,后者衰减慢。实际观察中,很多经济数据、流量数据都属于后者,直接套用假设平稳的模型,残差会呈现出明显的结构,预测也就跟着偏。
趋势之外,季节项常被误当成趋势。某生鲜平台连续三年的月度订单量显示,每年6月环比增幅都在15%上下,但把三年同月数据并排看,6月对6月、12月对12月,同比增幅其实稳定在4%左右。如果只看一条折线,很容易把每年重复的起伏读成增长或衰退。分离季节项的常见做法是计算同月均值,再与原值相减,剩下的才是趋势与随机成分。这一步不做,走势对比就会失真。
噪声则是另一层干扰。同一组日度数据,取7日移动平均和取30日移动平均,画出来的走势可能给出相反的短期判断。7日均线灵敏,能及时反映波动,但容易被单日异常值带偏;30日均线平滑,方向感更强,却滞后。某电商大促结束后的退货数据,单日峰值出现在第3天,7日均线在第5天才见顶,30日均线则到第9天才转向。选择哪个窗口,取决于你关心的是及时性还是稳定性,而不是哪个更“准”。
把上面几层拆开之后,预测才有一个可讨论的起点。一个常见的对比是:对平稳序列用简单指数平滑,对带趋势的序列用Holt线性趋势法,对既有趋势又有季节的序列用Holt-Winters。三种方法在同一份月度用电量数据上的表现差异明显——简单指数平滑在夏季高峰月系统性低估约6%,Holt-Winters把误差压到2%以内。方法的选择不是越复杂越好,而是要和数据里实际存在的结构匹配。
还有几个容易被忽略的常识。一是时间间隔要一致,把周数据和月数据混在一起对比,走势会被人为扭曲。二是缺失值处理方式会影响结论,线性插值和前值填充在趋势陡峭时差异不小。三是样本长度,用12个点估计季节项,参数估计本身就不稳。四是外推边界,任何模型在训练区间外的预测都伴随更大的不确定性,给出一个点估计而不给区间,容易让人误读。
回到对比分析本身,它的价值不在于证明哪条走势更好,而在于把差异拆成可解释的部分:多少来自趋势,多少来自季节,多少来自随机波动。一份数据摆在那里,先看轴、再看形状、最后看残差,这个顺序比急着下结论有用。观察得越细,预测时越清楚自己站在哪里,也越知道哪些判断只是暂时的。