【问题标题】:How to find correlation between two trends that have different time values如何找到具有不同时间值的两个趋势之间的相关性
【发布时间】:2019-10-30 22:52:04
【问题描述】:

我有一个表格,其中包含时间和两种风速趋势。我有兴趣找到两种风速趋势之间的相关性。这是下面的图表。

但是,问题在于记录风速的时间略有不同。例如,可以在 2018 年 1 月 15 日上午 10:30 记录来自 1 号风速的数据,而可以在 2018 年 1 月 15 日上午 10:31 记录来自 2 号风速的最接近的数据。当我尝试使用来自 Jupyter Labs (python) 的 Pandas 运行 pearson/spearman 相关时,我收到一个错误,因为它们没有任何共同时间。有没有办法让我仍然可以计算这两个趋势之间的相关性,尽管它们有不同的时间?如果没有,你会建议什么来解决这个问题?

【问题讨论】:

  • 您可以根据数据的频率修改时间范围,假设您每秒记录一次数据,因此对两种速度的 10:30 到 10:31 之间的所有时间取平均值然后做相关。现在你将有共同的专栏。如果你每分钟记录一次数据,你可以取 5 分钟的平均值,然后做同样的事情

标签: python pandas statistics jupyter-notebook


【解决方案1】:

如果您认为两次读数之间存在滞后,您可以使用 argmax 来获得此滞后,下面的简单示例可能会对您有所帮助

import numpy, scipy
from scipy.signal import correlate

x = numpy.array([1.0,2.0,3.0,4.0,5.0,6.0,7.0])
y = numpy.array([6.0,7.0,1.0,2.0,3.0,4.0,5.0])

sample_size = x.size

x -= x.mean(); x /= x.std()
y -= y.mean(); y /= y.std()

xcorr = correlate(x, y)

dt = numpy.arange(1-sample_size, sample_size)

time_different = dt[xcorr.argmax()]

print(time_different)

>> -2 # this indicates we have shifting two samples

它可能看起来是完美的解决方案,至少发现移位量会帮助您继续。

【讨论】:

    猜你喜欢
    • 2020-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多