假设我有两个测量序列,和用于。
如何判断两者之间是否存在因果关系?
我的第一个想法是,嗯......我可以找到和之间的相关性。但几乎立刻我就被相关性不是因果性所震撼。
OK,所以在 Python 中,我们可以生成一个统一的噪声信号x1
,然后对其进行滤波得到x2
. 显然,在这种情况下,x2
与 有因果关系x1
。
import numpy as np
import scipy.signal as signal
Q = 50
N =1000
x1 = np.random.uniform(-1,1,N)
b,a = signal.iirfilter(1,[2*500*(1-1/(2*Q))/44100,2*500*(1+1/(2*Q))/44100])
x2 = signal.lfilter(b,a,noise1)
x1
x2
不幸的是,两者的相关性并不能告诉我们太多:
接下来,我考虑使用coherence:
其中和之间的交叉谱密度。
但是,这似乎只是告诉我两者是因果关系……它并没有告诉我因果关系的方向。
上图显示了应该显而易见的内容:。
那么......我如何确定因果关系的方向?
例如,假设我想知道是否导致,反之亦然。
所以
或
其中是卷积,和是 LTI 系统的脉冲响应。据推测,是的倒数,因此。
和是否可能都是稳定的和因果的?