1
4

4 回答 4

2

尝试阅读《科学》杂志最近的论文

在大型数据集中检测新的关联 D. Reshef, Y. Reshef, H. Finucane, S. Grossman, G. McVean, P. Turnbaugh, E. Lander, M. Mitzenmacher, P. Sabeti Science 334, 6062 (2011) http: //www.uvm.edu/~cmplxsys/newsevents/pdfs/2012/reshef-correlation-science-2011.pdf

可从http://www.exploredata.net/Usage-instructions获得可使用 JAVA(在 MATLAB 中)或 R(R-project)的代码

于 2012-07-26T02:18:01.783 回答
1

一种简单的“贪婪”方法,避免组合爆炸

对于重构信号q_i和地面实况s_j,令 NxN 矩阵

M[i,j] = abs(corr(q_i,s_j))

使用“corr()”,一些相关函数在 [-1,1] 中给出结果,例如 pearson 矩积 (MATLAB: corrcoef() ) 或 spearman rank-corrrelation。

步骤 1) 查找(i,j) = argmax(l,m) M[l,m]。这是一对重建的索引 i,j。把它推到一个清单上。这是目前符合条件的最佳配对。

步骤 2) 用 NaN 或其他内容删除第 i 行和第 j 列。

第 3 步)如果您还没有完成其中的 N 个,(矩阵不是所有的 NaN)转到第 1 步。

(等效地,您可以删除行和列,记住原始索引)。

对于列表中的所有对,平均原始 M[i,j]。这是您使用贪心算法找到的对的平均相关性(绝对值)。

于 2009-12-09T09:09:37.080 回答
0

你正在遭受组合爆炸的痛苦。撇开订购问题不谈:我建议删除基线,然后使用互相关来找到最佳 (s) 和最小 (-s) 相关信号。从而解决了信号的“翻转”。

许多图像处理库中都提供了二维互相关,可用于快速确定正确排序的列 - 具有高 (s) 和低 (-s) 相关的列。中间的列需要重新排序。

如果您将矩阵视为图像,则有许多图像处理算法可以测量两个图像的相似性,这些图像在各种变换(剪切、比例、...)中是不变的。但是,您的列混合是一种奇怪的非线性变换,它不太适合图像处理范例。

于 2009-12-09T07:05:26.457 回答
0

如果您不知道哪些通道是相关的,我假设您想将它们分开并单独比较它们,这就是问题所在。(我不知道有一种算法可以以某种非常有效的方式完成这一切——我将只解决比例因子的问题)

如果涉及任意(非零?)比例因子,您可以取两个向量的点积,然后除以它们的范数的乘积。结果将在 [-1,1] 范围内,您可以选择绝对值最大的匹配。

于 2009-12-09T12:08:06.070 回答