相关疑难解决方法(0)

计算互相关函数?

R,我正在使用ccfacf计算成对的互相关函数,以便我可以找出哪个班次给了我最大值.从它的外观,R给我一个标准化的值序列.在Python的scipy中是否有类似的东西,或者我应该使用该fft模块来做它?目前,我的工作如下:

xcorr = lambda x,y : irfft(rfft(x)*rfft(y[::-1]))
x = numpy.array([0,0,1,1])
y = numpy.array([1,1,0,0])
print xcorr(x,y)
Run Code Online (Sandbox Code Playgroud)

python statistics numpy r scipy

30
推荐指数
3
解决办法
8万
查看次数

与熊猫的互相关(时滞相关)?

我有各种各样的时间序列,我想要相互关联 - 或者更确切地说,相互关联 - 以找出相关因子最大的时滞.

我找到了各种 问题和答案/链接,讨论如何用numpy来做,但那些意味着我必须把我的数据帧变成numpy数组.由于我的时间序列经常涵盖不同的时期,我担心我会陷入混乱.

编辑

我遇到的所有numpy/scipy方法的问题是,他们似乎缺乏对数据时间序列性质的认识.当我将1940年开始的时间序列与1970年开始的时间序列相关联时,熊猫corr知道这一点,而np.correlate只产生1020个条目(长序列的长度),这个数组充满了nan.

关于这个主题的各种Q表明应该有一种方法来解决不同长度的问题,但到目前为止,我没有看到如何在特定时间段内使用它的迹象.我只需要以1为增量移动12个月,以便在一年内查看最大相关时间.

EDIT2

一些最小样本数据:

import pandas as pd
import numpy as np
dfdates1 = pd.date_range('01/01/1980', '01/01/2000', freq = 'MS')
dfdata1 = (np.random.random_integers(-30,30,(len(dfdates1)))/10.0) #My real data is from measurements, but random between -3 and 3 is fitting
df1 = pd.DataFrame(dfdata1, index = dfdates1)
dfdates2 = pd.date_range('03/01/1990', '02/01/2013', freq = 'MS')
dfdata2 = (np.random.random_integers(-30,30,(len(dfdates2)))/10.0)
df2 = pd.DataFrame(dfdata2, index = dfdates2)
Run Code Online (Sandbox Code Playgroud)

由于各种处理步骤,这些dfs最终变为df,从1940年到2015年被索引.这应该重现:

bigdates = pd.date_range('01/01/1940', '01/01/2015', freq = 'MS') …
Run Code Online (Sandbox Code Playgroud)

python numpy correlation pandas cross-correlation

30
推荐指数
3
解决办法
3万
查看次数

如何使用互相关找到两个时间序列之间的滞后

假设这两个系列是:

x = [4,4,4,4,6,8,10,8,6,4,4,4,4,4,4,4,4,4,4,4,4,4,4]
y = [4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,6,8,10,8,6,4,4]
Run Code Online (Sandbox Code Playgroud)

系列 x 明显滞后 y 12 个时间段。但是,按照Python 互相关中的建议使用以下代码:

import numpy as np
c = np.correlate(x, y, "full")
lag = np.argmax(c) - c.size/2
Run Code Online (Sandbox Code Playgroud)

导致错误的滞后 -0.5。
这是怎么回事?

python numpy cross-correlation

6
推荐指数
1
解决办法
7348
查看次数

标签 统计

numpy ×3

python ×3

cross-correlation ×2

correlation ×1

pandas ×1

r ×1

scipy ×1

statistics ×1