【发布时间】:2018-05-01 06:42:51
【问题描述】:
我有大量的时间序列 (> 500),我想只选择那些周期性的。我做了一些文献研究,发现我应该寻找自相关。使用numpy,我将自相关计算为:
def autocorr(x):
norm = x - np.mean(x)
result = np.correlate(norm, norm, mode='full')
acorr = result[result.size/2:]
acorr /= ( x.var() * np.arange(x.size, 0, -1) )
return acorr
这会返回一组系数 (r?),当绘图时应该告诉我时间序列是否是周期性的。
我生成了两个玩具示例:
#random signal
s1 = np.random.randint(5, size=80)
#periodic signal
s2 = np.array([5,2,3,1] * 20)
当我生成我获得的自相关图时:
第二个自相关向量清楚地表明了一些周期性:
Autocorr1 = [1, 0.28, -0.06, 0.19, -0.22, -0.13, 0.07 ..]
Autocorr2 = [1, -0.50, -0.49, 1, -0.50, -0.49, 1 ..]
我的问题是,如何根据自相关向量自动确定时间序列是否是周期性的?有没有办法将这些值总结为一个系数,例如if = 1 完美周期性,if = 0 完全没有周期性。我试图计算平均值,但它没有意义。我应该看数字1吗?
【问题讨论】:
-
@user2699 我确实读过它,但是它不能解决自动识别时间序列是否是周期性的问题。我无法手动查看 500 个自相关图。
-
@BradSolomon Durbin-Watson 应该用于测试回归模型的残差。就我而言,回归模型是什么?
-
回归是基于其自身滞后值的时间序列。 DW 测试自相关的强度/存在。
标签: python numpy time-series correlation