当前位置: 首页 > 面试题库 >

为什么NUMPY相关和corrcoef返回不同的值,以及如何在“完全”模式下“标准化”相关?

胥诚
2023-03-14
问题内容

我正在尝试使用Numpy在Python中使用一些时间序列分析。

我有两个中等大小的序列,每个序列具有20k的值,我想检查滑动相关性。

corrcoef为我提供了一个自相关/相关系数矩阵作为输出。就我而言,这本身没有什么用,因为其中一个系列包含滞后。

相关函数(在mode =“ full”中)返回一个40k元素列表,看上去确实像我想要的结果类型(峰值与Lag所指示的距离列表中心远),但是这些值都很奇怪-
最多500,而我期望的值是-1至1。

我不能只将其除以最大值;我知道最大相关不是1。

我如何标准化“互相关”(“全”模式下的相关),以便html" target="_blank">返回值将是每个滞后步长上的相关值,而不是那些非常大的奇怪值?


问题答案:

您正在寻找归一化互相关。该选项在Numpy中尚不可用,但是正在等待符合您所需的补丁程序正在等待审核。我认为应该很容易应用它。大多数补丁只是文档字符串。它添加的唯一代码行是

if normalize:
    a = (a - mean(a)) / (std(a) * len(a))
    v = (v - mean(v)) /  std(v)

其中a和v是要查找互相关的输入numpy数组。不难将它们添加到您自己的Numpy发行版中,或者只是复制相关函数并在其中添加行。如果我选择走这条路线,我会亲自去做。

另一种可能更好的替代方法是,在将输入向量发送给相关函数之前,先对其进行归一化处理。由您决定要采用哪种方式。

顺便说一句,按照Wikipedia关于互相关的页面,这似乎是正确的规范化,除了用除len(a)而不是(len(a)-1)。我觉得差异类似于样品的标准偏差与样品的标准偏差,在我看来并没有太大的区别。



 类似资料:
  • 问题内容: 我正在阅读Head First Java的书中的一句话: 关键是哈希码可以相同,而不必保证对象相等,因为该方法中使用的“哈希算法” 可能会为多个对象返回相同的值。 为什么该方法可能为不同的对象返回相同的值?这不会引起问题吗? 问题答案: *对对象进行 *散列 意味着“ 找到可以由相同实例一次又一次地再现的良好的描述性值(数字) ”。由于Java的哈希码类型为,因此只能具有不同的值。这就

  • } 我得到了下面的结果。但是在这个结果中,高亮显示的行具有相同的列名,但是别名不同。为什么hibernate会得到相同的Cloumn? 冬眠:删除表,如果存在hibernate_sequence hibernate:删除表(如果存在)UserDetails Hibernate:如果存在,则删除表车辆Hibernate:创建表hibernate_sequence(next_val bigint)En

  • 有一个InfiniteScrollListener,在该侦听器中,在方法中,我计算可见项计数和总计项计数,以检查是否应该加载新项。当totalItemCount和visibleItemCount相同时,会导致无限循环的加载。侦听器与我的另一个或作为父级的侦听器一起工作得很好。我想保持这种结构,因为客户不会接受改变。 我在一个活动中有一个片段,它的布局如下所示

  • 问题内容: 今天,我了解并决定将其使用和测试。我知道整数是不可变的,因此id应该是(?)相同。但是,当我在提示中进行测试时,我注意到了一些细微的差异,并想找出其背后的原因。 凉!到目前为止,所有签出。但是之后… 好的,所以测试一下,我注意到此行为一直持续到256年。id最多可以是8位数字,然后257将返回更大的id,可以是15位数字。因此类型必须是8个字节。 所以我发现它与8个字节长有关,但是任何

  • 本页列出了所有Apache遵守的相关标准,并伴有简要描述。 除了下面列出的参考信息,下列资源也值得看看: http://purl.org/NET/http-errata - HTTP/1.1 勘误表 http://www.rfc-editor.org/errata"http://ftp.ics.uci.edu/pub/ietf/http/"> http://ftp.ics.uci.edu/pub/

  • 我在单元格A1和B1中放置了两个日期时间值。约会时间精确41703.0416666667。一个是从SQL数据库输出,另一个是手工编写的。 =if(A1=B1,1,0)的结果为1。=匹配(B1,A1,0)的结果为#N/A。 有人对为什么会发生这种情况有什么理论吗?