我有一大组时间序列(> 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的数字吗?