【问题标题】:Trying to calculate autocorrelation coefficient with function试图用函数计算自相关系数
【发布时间】:2019-09-19 03:46:59
【问题描述】:

我正在尝试复制这个自相关公式,其中T 是样本数,k 是滞后数。

【问题讨论】:

  • 你得到了什么?
  • 这里有很多错误,1) 你对np.sum 的使用没有按照你的想法做,2) 每当i == 2 你的'demoninator == 0` 会抛出一个@ 987654327@除以0

标签: python function numpy time-series autocorrelation


【解决方案1】:

每个定义的第一个元素的自相关为 1.0。对于其余元素,我们使用列表推导(请注意,问题中的公式假定索引从 1 到 T,而 python 数组是基于 0 的):

mean = np.mean(x)    
denominator = np.sum((x-mean)**2)
[1.0] + [np.sum((x[j:]-mean) * (x[:-j]-mean)) / denominator for j in range(1, len(x))]

【讨论】:

  • 感谢您的回答,史蒂夫!请问[1.0] 代表什么?它的目的是什么?
  • 1.0 是列表中的第一个元素,即与lag = 0 的自相关。当您解决问题中给出的 k = 0 公式时,您会看到得到 1.0。
  • 我明白了...但是为什么要将它包含在循环之外?
  • 这只是一个技术难题:对于 j = 0,第二个切片 (x[:-j]) 变为 x[:-0],这是一个空数组,因为 python 在 x[:0] 之间没有区别(最多不包括第 0 个)元素)和x[:-0],我们需要将其解释为从末尾开始的第0个元素(=整个数组),但python将其视为x[:0]。因此,我们将第一个元素设置为先验已知值 1.0,而不是计算它。
猜你喜欢
  • 1970-01-01
  • 2011-12-20
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 2011-10-22
  • 2020-03-11
  • 1970-01-01
  • 2012-06-25
相关资源
最近更新 更多