不同大小阵列的协方差逼近

时间:2012-01-09 21:52:42

标签: python numpy covariance

NumPy / SciPy中是否有任何常用工具可用于计算即使输入变量大小不同也能正常工作的相关度量?在协方差和相关的标准公式中,要求每个不同的待测变量具有相同数量的观察结果。通常,您必须传递一个矩阵,其中每一行都是一个不同的变量,每列代表一个不同的观察。

在我的情况下,我有9个不同的变量,但是对于每个变量,观察的数量不是恒定的。一些变量比其他变量有更多的观察。我知道像传感器融合这样的领域会研究这样的问题,那么有哪些标准工具用于计算不同长度数据系列的关系统计(最好用Python)?

3 个答案:

答案 0 :(得分:3)

  

“问题在于每个变量都对应于调查的响应,而不是每个调查对象都回答了每个问题。因此,我想要一些衡量问题2的答案,例如,如何影响问题8答案的可能性例如。“

这是缺少数据的问题。我认为令人困惑的是你一直把你的样品称为不同长度。我想你可能会像这样想象他们:

样本1:

question number: [1,2,3,4,5]
response       : [1,0,1,1,0]

样本2:

question number: [2,4,5]
response       : [1,1,0]

当样本2应该更像这样:

question number: [  1,2,  3,4,5]
response       : [NaN,1,NaN,1,0]

这是问题编号,而不是回答的重要问题。没有问题与对应的对应关系,就不可能像协方差矩阵那样计算任何东西。

无论如何,ddodev mentioned计算协方差的numpy.ma.cov函数,通过利用元素求和的事实,每个函数只依赖于两个值。

所以它计算它可以。然后,当涉及除以n的步骤时,它除以计算的值的数量(对于特定的协方差矩阵元素),而不是样本的总数。

答案 1 :(得分:2)

我会检查这个页面:

http://docs.scipy.org/doc/numpy/reference/generated/numpy.ma.cov.html

更新:

假设数据矩阵的每一行对应一个特定的随机变量,并且该行中的条目是观察值。你所拥有的是一个简单的缺失数据问题,只要你有观察结果之间的对应关系。也就是说,如果你的一行只有10个条目,那么这10个条目(即试验)是否对应于第一行中随机变量的10个样本?例如,假设您有两个温度传感器并且他们同时采集样品,但一个是有缺陷的,有时会错过样品。那么你应该将错误传感器错过的试验视为“缺失数据”。在你的情况下,它就像在NumPy中创建两个长度相同的向量一样简单,将零(或任何值,实际)放在对应于缺失试验的两个向量中较小的一个中,并创建一个掩码矩阵,表示其中您的缺失值存在于数据矩阵中。

将这样的矩阵提供给上面链接的函数应该允许您完全执行所需的计算。

答案 2 :(得分:2)

从纯粹的数学观点来看,我认为它们必须是一样的。为了使它们相同,您可以应用与missing data problem相关的一些概念。我想我说如果矢量大小不同,它不再是一个严格的协方差。无论你使用什么工具,都会以一种聪明的方式组成一些点来制作相等长度的矢量。