在Python中处理滞后时间序列的自相关问题
我正在尝试对一些数据进行滞后自相关分析。数据中充满了随机的空值(nans)。这些数据是一个NxN的数组,其中eke_array[i,i]表示滞后为零的情况,...eke_array[i,i+n]表示滞后为n。在某个时刻,这个分析开始返回大于1的自相关值,尤其是在滞后为40之后,但前面几个滞后的自相关值是合理的。
这是我实现的函数:
def auto_corr(eke_array):
nlag = np.shape(eke_array)[0]
eke_lag_0 = []
auto_store = []
std_store = []
for mylag in range(0,80):
autocorr = 0
numvalid = 0
norm = 0
std = 0
for i in range(0, 105):
if i+mylag > 104:
break
lag0 = eke_array[i,i]
lag_itt = eke_array[i,i+mylag]
if not np.isnan(lag_itt):
if not np.isnan(lag0):
numvalid += 1
diff = lag0 - lag_itt
std = std + diff**2
autocorr = autocorr + lag0*lag_itt
print(numvalid, mylag,i )
auto_store.append((autocorr/numvalid))
std_store.append(std / numvalid)
for k in range(105):
eke_lag_0.append(eke_array[k,k])
eke_lag_0 = np.asarray(eke_lag_0)
eke_lag_0 = eke_lag_0[~np.isnan(eke_lag_0)]
norm = np.sum(eke_lag_0 ** 2) / np.size(eke_lag_0)
std_store = np.sqrt(np.asarray(std_store))
auto_store = auto_store/norm
return std_store, auto_store, norm
1 个回答
0
我之前的归一化方法不对。这里说的是交叉相关,所以归一化应该是两个滞后时间序列的标准差。