我在python中实现了一个函数来计算特定滞后k下时间序列的自相关,它是在假设某些时间序列可能不是平稳的情况下实现的。
然而,我发现对于其中一些,我得到的值大于1,特别是在最后的滞后。所以我想我一定是算错了。
我正在实施以下措施:
其中,对于与滞后序列相对应的项,我计算的是从滞后k开始的平均值和标准偏差。
def custom_autocorrelation(x, lag = 12):
n = len(x)
std = x.std()
mu = x.mean()
autocov = 0
mu_lag = x[lag:].mean()
std_lag = x[lag:].std()
for j in range(n-lag):
autocov += (x[j] - mu)*(x[j+lag] - mu_lag)
autocorr = autocov/(std*std_lag*(n-lag))
return autocorr
作为一个例子,我试着用下面的序列,对于k=12,系数为1.03:
np.array([20623., 11041., 5686., 2167., 2375., 2057., 3141., 504.,
152., 6562., 8199., 15103., 16632., 7190., 6987., 2652.,
1949., 2223., 1703., 2163., 1850., 6932., 5932., 13124.,
14846., 7850., 4526., 1277., 1036., 1500., 1648., 1384.,
1446., 3477., 6818., 12446., 9734.])