如何确定哪些测量导致了哪些?

信息处理 Python 因果关系
2022-02-02 00:44:10

假设我有两个测量序列,x1[n]x2[n]用于0nN1

如何判断两者之间是否存在因果关系?

我的第一个想法是,嗯......我可以找到x1x2之间的相关性。但几乎立刻我就被相关性不是因果性所震撼。

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

噪声信号 x1。

x2

x1、x2 的过滤版本。

不幸的是,两者的相关性并不能告诉我们太多:

x1 和 x2 的相关性。

接下来,我考虑使用coherence

Cx1x2(ω)=|Gx1x2(ω)|2Gx1x1(ω)Gx2x2(ω)

其中Gabab之间的交叉谱密度

但是,这似乎只是告诉我两者是因果关系……它并没有告诉我因果关系的方向。

两个方向的连贯性。

上图显示了应该显而易见的内容:Cx1x2(ω)=Cx2x1(ω)

那么......我如何确定因果关系的方向?


例如,假设我想知道是否导致,反之亦然。x1x2

所以 其中是卷积,是 LTI 系统的脉冲响应。据推测,的倒数,因此

x1=hx2
x2=gx1
hgghgh=1

是否可能都是稳定的和因果的?gh

0个回答
没有发现任何回复~