小时级时序数据周自相关计算的lag选择与结果解读
小时级数据周对周自相关的lag参数验证与结果解读
lag参数选择合理性说明
你选择24*7作为偏移量数值的核心逻辑是正确的,但对plot_acf的参数作用理解存在偏差:
- 对于固定1小时间隔的等采样时间序列,自相关的lag计数单位为单个采样间隔(即1lag=1小时)。你需要匹配的「前一周同星期、同小时」数据点,与当前点的时间差恰好为7天×24小时/天=168小时,对应lag值确实为168,偏移量数值选择无误。
plot_acf函数的lags入参作用是指定绘图时展示的最大lag值,而非仅计算单个lag的自相关系数。你当前运行plot_acf(df['value'], lags=24*7),实际绘制的是lag从0到168所有偏移量下的自相关系数,并非单独输出周对周同期的自相关结果。
正确计算周对周自相关的方法
如果仅需要获取固定lag=168的周对周自相关系数,可使用如下代码实现:
import pandas as pd from statsmodels.tsa.stattools import acf # 先校验时间序列连续性:按时间排序、转为时间索引、补全缺失小时 df['date time'] = pd.to_datetime(df['date time']) df = df.set_index('date time').sort_index() # 补全所有缺失的小时时间点,避免lag错位 df = df.reindex(pd.date_range(start=df.index.min(), end=df.index.max(), freq='H')) # 计算到lag=168的所有自相关值,提取lag=168的结果 acf_res = acf(df['value'].dropna(), nlags=168) wow_autocorrelation = acf_res[168]
ACF图解读方法
你当前生成的ACF图可以按以下规则解读:
- 横轴为lag值(单位:小时),纵轴为对应偏移量下的自相关系数,取值范围为[-1,1],越接近1代表正相关性越强,越接近-1代表负相关性越强,接近0代表无显著线性相关。
- lag=0的位置系数恒为1,代表序列和自身的完全相关。
- lag=24、48、72…等24整数倍的位置,对应间隔N天的同一小时自相关,若这些位置出现明显峰值,说明数据存在强日度周期规律。
- lag=168的位置即为你需要的周对周同期自相关系数,若该位置系数超出图中的蓝色95%置信区间范围,说明周度同期相关性是统计显著的,并非随机波动导致。
注意:计算前必须保证时间序列是严格连续的1小时间隔数据,若存在缺失的小时记录未补全,lag对应的实际时间偏移会错位,导致结果完全失效。
内容的提问来源于stack exchange,提问作者Sarah john
相关产品推荐
相关产品推荐

