趋势对(假定)相关时间序列的影响

数据挖掘 时间序列 熊猫 相关性 scipy
2021-10-09 06:56:07

TL;DR:线性趋势对(最有可能)非虚假相关的时间序列之间的相关性有何影响?


我目前正在尝试重建/交叉验证我公司的一位承包商提供的分析。

数据基于传感器数据的时间序列(大约 350 万个时间戳)。目标是找到与一个特定信号具有最高相关性的信号。

尽管我不是数据科学专家,但我能够重现他们的数据清理(删除零方差的列,在较小的间隙上线性插值,删除包含 NaN 值的剩余列)。但在那之后,我不确定我是否可以证实他们的发现。

似乎他们做了一个简单的皮尔逊相关性

corr = df.corrwith(df['DesiredSignal'])

然而,从数据来看,信号似乎肯定是趋势性的。

然后当我应用一个去趋势函数时

from scipy import signal

df_d = signal.detrend(df[column])
df_n = pd.DataFrame(data=df_d)

并将 corrwith-function 应用于这个新的数据框,我得到了完全不同的结果(例如,大量的高度负相关)。

我现在的问题是:我可以相信承包商的调查结果,还是因为不考虑趋势对相关性的影响而使它们无效,还是我完全错了?

1个回答

Q1:线性趋势对非虚假时间序列之间的相关性有什么影响?

相关性的 4 个主要度量是 Pearson、Kendall 秩、Spearman 和 Point-biserial(后者不适用于此类问题)。为简单起见,我将仅解释它如何影响测量 Pearson 相关性。

让我们假设X表示没有趋势的正弦时间序列:X=s一世n(),代表X呈线性上升趋势:是的=+s一世n()Z代表X呈线性下降趋势:z=-(+s一世n()). 所有系列都有相同的时间戳和相同的测量单位(为了便于绘图):

时间序列信号的线图

测量两个时间序列之间的 Pearson 相关性的假设之一称为linearity,当两个序列在​​散点图上相互绘制时,存在线性关系:

Y 与 X 和 Z 与 Y 的散点图

如你看到的, X 不满足此条件,因此 Pearson 相关性是不正确的统计度量,而对于 Z它是。为什么呢?

Pearson 相关性测量值偏离所提供的两个系列之间的最佳拟合线性线的程度。如果关系不是线性的,则无法准确测量该关系。这可以通过将 Pearson 相关系数绘制为 增加:

XY 和 YZ 的系数与时间

尤其, X 还将违反 Spearman 和 Kendall 等级的单调关系假设,因此您无法使用这些方法中的任何一种测量相关性 X 除非执行数据转换以满足基本假设 - 正如您在问题帖子中所做的那样。

因此,线性趋势不会对测量相关性产生严格的正面或负面影响。您只需对需要使用的相关性度量的基本假设做出相应的反应。

Q2:我可以相信不考虑这些趋势的承包商的调查结果吗?

套用汉隆的剃刀:

假设无知比恶意意图更好。

如果您提供反馈,分析师将有机会讨论他们为什么选择采用某条路线,让他们有机会意识到他们所做的事情是不正确的,或者他们误解了项目的要求和/或限制。

希望这会带来更积极的结果,因为您想要最好的结果并且分析师想要提供最好的服务。