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

relj7zay  于 2022-11-10  发布在  其他
关注(0)|答案(4)|浏览(138)

NumPy/SciPy中有没有常用的工具来计算相关性度量,即使在输入变量大小不同的情况下也可以使用?在协方差和相关性的标准公式中,要求对测试中的每个不同变量具有相同数量的观测值。通常,您必须传递一个矩阵,其中每行都是一个不同的变量,而每列代表一个不同的观察。
在我的例子中,我有9个不同的变量,但每个变量的观察次数并不是恒定的。有些变量比其他变量有更多的观察值。我知道有像传感器融合这样的领域来研究这样的问题,那么有哪些标准工具可以计算不同长度的数据序列的关系统计(最好是在Python语言中)?

hujrc8aj

hujrc8aj1#

我会看看这一页:
http://docs.scipy.org/doc/numpy/reference/generated/numpy.ma.cov.html
最新情况:
假设数据矩阵的每一行都对应于一个特定的随机变量,该行中的条目是观测值。只要你在观察之间有对应关系,你就会遇到一个简单的数据缺失问题。也就是说,如果其中一行只有10个条目,那么这10个条目(即试验)是否对应于第一行随机变量的10个样本?例如,假设你有两个温度传感器,它们同时采集样本,但其中一个出现故障,有时会遗漏样本。然后,您应该将有故障的传感器错过生成读数的试验视为“丢失数据”。在您的例子中,只需在NumPy中创建两个长度相同的向量,在对应于丢失试验的两个向量中较小的一个中放置零(或者实际上是任何值),然后创建一个掩码矩阵来指示您的数据矩阵中缺少的值存在于哪里。
向上面链接的函数提供这样的矩阵应该允许您准确地执行您想要的计算。

cuxqih21

cuxqih212#

问题是,每个变量都对应于对一项调查的回答,并不是每个受访者都回答了每个问题。因此,我想要一些衡量问题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]

重要的是问题的数量,而不是回答的问题的数量。没有问题对问题的对应,就不可能计算出像协方差矩阵这样的东西。
无论如何,numpy.ma.cov函数ddodev mentioned通过利用被求和元素仅取决于两个值这一事实来计算协方差。
所以它会计算出它能做的事。然后,在除以n的步骤中,它除以(针对该特定协方差矩阵元素)计算的值的数目,而不是样本的总数目。

cwxwcias

cwxwcias3#

从纯粹的数学Angular 来看,我认为它们必须是相同的。要使它们相同,可以应用一些与missing data problem相关的概念。我想我是说,如果向量的大小不同,它就不再是严格意义上的协方差了。无论你用什么工具,你都会巧妙地拼凑出一些点,从而使矢量的长度相等。

h79rfbju

h79rfbju4#

以下是我对这个问题的看法。严格地说,计算两个随机变量Cov(X,Y) = E[XY] - E[X]E[Y]的协方差的公式不会告诉你任何关于样本大小或X和Y应该如何形成随机向量的信息(即x_iy_i不是显式成对出现的)。
无论X和Y的观测值数量不匹配,E[X]E[Y]都以通常的方式计算。至于E[XY],在单独采样X和Y的情况下,可以将其视为“x_i * y_j的所有可能组合的平均值”,换句话说:


# NumPy code :

import numpy as np

X = ... # your first data sample
Y = ... # your second data sample

E_XY = np.outer(X, Y).ravel().mean()

相关问题