什么是自相关分析(ACF)?
一、自相关分析(ACF)的核心定义
自相关分析(Autocorrelation Analysis)通过自相关函数(Autocorrelation Function, ACF) 量化同一时间序列在不同滞后期的相关性——简单说,就是衡量“当前时刻的数据”与“过去某一时刻(滞后k期)的数据”之间的线性关联程度。
关键特征:
- 分析对象:仅针对单一时间序列(如每日销量、每月气温),区别于“互相关(CCF)”(分析两个不同序列的相关性)。
- 取值范围:ACF值 ∈ [-1, 1],含义如下:
- ACF = 1:完全正相关(滞后k期的数据与当前数据变化趋势完全一致,如“今天销量高,去年同期销量也高”);
- ACF = -1:完全负相关(变化趋势完全相反,如“今天销量高,半年前同期销量低”);
- ACF ≈ 0:几乎无相关(滞后k期的数据与当前数据无关,如“今天股价与一周前股价无关联”)。
- 核心作用:识别时间序列的周期性(如年度季节性)、判断序列是否为随机序列(随机序列的ACF快速趋近于0)、为时序建模(如ARIMA)提供参数依据。
二、自相关系数(ACF)的计算方法
自相关系数是“标准化的自协方差”——通过除以序列的方差,将结果约束在[-1, 1]范围内。计算步骤分为3步,以下以时间序列 X={x1,x2,...,xn}X = \{x_1, x_2, ..., x_n\}X={x1,x2,...,xn}(n为数据量)、滞后期为k为例:
步骤1:计算序列的均值(μ)
均值是序列的平均水平,用于消除数据整体偏移的影响:
μ=1n∑t=1nxt \mu = \frac{1}{n} \sum_{t=1}^n x_t μ=n1t=1∑nxt
其中, xtx_txt 是第t时刻的序列值,n是数据总个数。
步骤2:计算滞后k期的自协方差(γₖ)
自协方差衡量“当前数据 xtx_txt ”与“滞后k期数据 xt−kx_{t-k}xt−k ”的“共同变化程度”,公式为:
γk=1n∑t=k+1n(xt−μ)(xt−k−μ) \gamma_k = \frac{1}{n} \sum_{t=k+1}^n (x_t - \mu)(x_{t-k} - \mu) γk=n1t=k+1∑n(xt−μ)(xt−k−μ)
- 当k=0时,自协方差就是序列的方差( γ0=Var(X)\gamma_0 = \text{Var}(X)γ0=Var(X) ),因为滞后0期即序列自身。
- 分母用n还是n-k?实际计算中,小样本常用n(简化计算),大样本常用n-k(减少偏差),工具库(如statsmodels)会自动处理。
步骤3:计算滞后k期的自相关系数(ρₖ)
通过“自协方差除以方差”标准化,得到ACF值:
ρk=γkγ0=∑t=k+1n(xt−μ)(xt−k−μ)∑t=1n(xt−μ)2 \rho_k = \frac{\gamma_k}{\gamma_0} = \frac{\sum_{t=k+1}^n (x_t - \mu)(x_{t-k} - \mu)}{\sum_{t=1}^n (x_t - \mu)^2} ρk=γ0γk=∑t=1n(xt−μ)2∑t=k+1n(xt−μ)(xt−k−μ)
示例:手动计算小数据的ACF
假设序列 X=[1,3,5,7,9]X = [1, 3, 5, 7, 9]X=[1,3,5,7,9] (n=5),计算滞后1期(k=1)的ACF:
- 算均值: μ=(1+3+5+7+9)/5=5\mu = (1+3+5+7+9)/5 = 5μ=(1+3+5+7+9)/5=5 ;
- 算自协方差(γ₁):
(1−5)(3−5)+(3−5)(5−5)+(5−5)(7−5)+(7−5)(9−5)=(−4)(−2)+(−2)(0)+0(2)+2(4)=8+0+0+8=16, (1-5)(3-5) + (3-5)(5-5) + (5-5)(7-5) + (7-5)(9-5) = (-4)(-2) + (-2)(0) + 0(2) + 2(4) = 8 + 0 + 0 + 8 = 16, (1−5)(3−5)+(3−5)(5−5)+(5−5)(7−5)+(7−5)(9−5)=(−4)(−2)+(−2)(0)+0(2)+2(4)=8+0+0+8=16,
γ1=16/5=3.2; \gamma_1 = 16/5 = 3.2; γ1=16/5=3.2; - 算方差(γ₀):
(1−5)2+(3−5)2+(5−5)2+(7−5)2+(9−5)2=16+4+0+4+16=40, (1-5)^2 + (3-5)^2 + (5-5)^2 + (7-5)^2 + (9-5)^2 = 16 + 4 + 0 + 4 + 16 = 40, (1−5)2+(3−5)2+(5−5)2+(7−5)2+(9−5)2=16+4+0+4+16=40,
γ0=40/5=8; \gamma_0 = 40/5 = 8; γ0=40/5=8; - 算ACF(ρ₁): ρ1=3.2/8=0.4\rho_1 = 3.2 / 8 = 0.4ρ1=3.2/8=0.4 (弱正相关,符合“序列递增,滞后1期数据与当前数据同向变化”)。
实际工具
手动计算仅适用于小数据,实际中常用Python的statsmodels.tsa.stattools.acf
或R的acf()
函数,自动处理滞后期、置信区间等,避免计算误差。
三、3个自相关分析(ACF)的实例
ACF的核心价值是“从时间关联性中挖掘业务规律”,以下通过零售、气象、金融3个领域的实例,展示其具体应用。
实例1:零售行业——奶茶店销量的季节性识别
背景
某奶茶店2023年1-12月销量(单位:杯):[5800, 5200, 6300, 7100, 7800, 9500, 10200, 9800, 8500, 8200, 7500, 6800],需判断是否存在季节性。
ACF分析步骤
- 选择滞后期k:0-12(覆盖1年周期);
- 计算各滞后期ACF值(关键结果如下):
滞后期k 0 1 6 12 ACF值 1.0 0.35 -0.72 0.85 - 置信区间:n=12,95%置信区间为±1.96/√12 ≈ ±0.566。
结果解读
- k=12:ACF=0.85(远超置信区间),说明“2023年1月销量”与“2022年1月销量”(假设数据存在)高度正相关——存在12个月的年度季节性(夏季销量高,冬季低);
- k=6:ACF=-0.72(负相关且显著),说明“6月(夏季)销量”与“12月(冬季)销量”反向波动,进一步验证季节性;
- 业务价值:基于ACF结果,可建立SARIMA模型预测2024年销量,夏季提前备货,冬季减少库存,降低浪费。
实例2:气象领域——城市日降雨量的“连雨天”判断
背景
某城市2024年1-30日的日降雨量(单位:mm),需分析“是否存在连雨天”(即今天下雨,明天是否更可能下雨)。
ACF分析步骤
- 选择滞后期k:0-7(覆盖1周,符合短期天气关联性);
- 计算各滞后期ACF值(关键结果如下):
滞后期k 0 1 2 7 ACF值 1.0 0.62 0.28 0.05 - 置信区间:n=30,95%置信区间为±1.96/√30 ≈ ±0.358。
结果解读
- k=1:ACF=0.62(显著正相关),说明“当天降雨量”与“前1天降雨量”高度相关——存在连雨天规律(今天下雨,明天大概率也下雨);
- k=2:ACF=0.28(落入置信区间),相关性减弱,说明“连雨天通常持续1-2天”;
- k=7:ACF=0.05(接近0),说明“本周一降雨量”与“上周一降雨量”无关联,无周度降雨周期;
- 业务价值:气象部门可基于ACF结果,短期降雨预报时参考前1天数据,提升准确率,帮助防汛部门提前准备。
实例3:金融领域——股票日收益的“随机游走”验证
背景
某股票2024年1-20个交易日的日收益(收益率=(当日收盘价-前一日收盘价)/前一日收盘价),需判断收益是否为“随机游走”(即无法通过历史收益预测未来)。
ACF分析步骤
- 选择滞后期k:0-5(短期收益关联性通常不超过5天);
- 计算各滞后期ACF值(关键结果如下):
滞后期k 0 1 2 5 ACF值 1.0 0.08 -0.12 0.03 - 置信区间:n=20,95%置信区间为±1.96/√20 ≈ ±0.438。
结果解读
- k=1,2,5:ACF值均在置信区间内(接近0),说明“当日收益”与“过去1-5日收益”几乎无关联——收益符合随机游走特性;
- 业务价值:对投资者而言,该股票短期收益无法通过历史数据预测,需避免“根据前几日收益买卖”的策略,应关注公司基本面(如营收、利润)而非短期价格波动。
四、总结:ACF的核心应用场景
- 识别周期性:如零售的年度/周度季节性、工业设备的运行周期;
- 判断序列随机性:如金融收益是否随机、生产数据是否存在异常波动;
- 时序建模依据:如ARIMA模型的阶数选择(通过ACF图判断q值)、是否需要差分处理。
通过ACF分析,可将“时间序列的隐性关联性”转化为可量化的指标,为业务决策提供数据支撑,避免仅凭经验判断的偏差。