- 积分
- 6792
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-3-31
- 最后登录
- 1970-1-1
|
发表于 2022-1-28 14:23:14
|
显示全部楼层
本帖最后由 学生党少华 于 2022-1-28 14:47 编辑
def leadlagcor_r(data1,data2,n):
#data1和data2为两个时间序列,n设置做多少个时间步长的超前滞后
a=-n
b=-a
c=b*2+1
x=np.arange(-n,n+1,1)
r=np.zeros((c,1))
p=np.zeros((c,1))
for i in range(c):
if i<(b):
r[n-i],p[n-i]=pearsonr(data1[:(len(data1)-i)], data2[i:])
else:
r,p=pearsonr(data1[x:], data2[:len(data1)-x])
#result = np.concatenate((r,p),axis = 1)
#correl_value = np.max(result[:,1:2])
#index_correl_value = np.where(r == correl_value)
#p_index = p[index_correl_value]
#r = np.squeeze(r)
p = np.squeeze(p)
#return max(abs(r)) , p[index_correl_value]
max_value = max(abs(r))
index_correl_value = np.where((r == max_value) | (r == max_value * -1))
index_correl_value = index_correl_value[0]
p_value = p[index_correl_value]
r_value = r[index_correl_value]
return r_value,P_value
我自己前一阵算东西写的。输出最大R时的和相对应P值。 如果不需要,直接最后一句改成return r,p |
|