作为一种分析技术,acf/pacf/ccf 用于识别与时间相关的信号的周期性,因此相关图(acf 或 pacf 的图形显示)显示了信号中作为不同滞后函数的自相似性。(例如,如果您看到 y 轴上的值在滞后 12 处达到峰值,并且您的日期以月为单位,那么这就是年度周期性的证据。)
要计算和绘制“相似性”与滞后的关系,如果您不想自己动手,我不知道原生 Numpy/Scipy 选项;我也找不到“时间序列”scikit(Scipy“Scikits”中的库之一,标准 Scipy 发行版中不包含特定领域的模块),但值得再次检查。另一种选择是将 Python 绑定安装到 R(RPy2,SourceForge 上提供),这将允许您访问相关的 R 函数,包括“ acf ”,它只需传入您的时间序列并调用函数即可计算和绘制相关图.
另一方面,如果您想在信号中识别给定类型的连续(不间断)流,那么“运行长度编码”可能就是您想要的:
import numpy as NP
signal = NP.array([3,3,3,3,3,3,3,3,3,0,0,0,0,0,0,0,0,0,0,7,7,7,7,7,4,4,1,1,1,1,1,1,1])
px, = NP.where(NP.ediff1d(signal) != 0)
px = NP.r_[(0, px+1, [len(signal)])]
# collect the run-lengths for each unique item in the signal
rx = [ (m, n, signal[m]) for (m, n) in zip(px[:-1], px[1:]) ]
# returns [(0, 9, 3), (9, 19, 0), (19, 24, 7), (24, 26, 4), (26, 33, 1)]
# so w/r/t first 3-tuple: '3' occurs continuously in the half-open interval 0 and 9, and so forth