具有多个2D流图,即 vector 场,人们将如何找到这些对之间的统计相关性?
问题:
一个不应该(?)调整2个形状为(x,y,2)的流程图的大小:将flow1, flow2
转换为1D vector 并运行np.correlation_coeff(flow1.reshape(1,-1),flow2.reshape(1,-1))
由于x,y条目已连接。
绘制收益,仅用于可视化目的:
flow1:
flow2:
我正在考虑比较幅度和方向。
编辑:
我知道
np.corrcoef(flow1.reshape(2,-1), flow2.reshape(2,-1))
会返回4,4相关系数矩阵,但难以理解。 最佳答案
对于某些相似性度量,确实可能需要考虑域的空间结构。但是相关系数不能做到这一点:在域的任何排列下它都是不变的。例如,(0、1、2、3、4)和(1、2、4、8、16)之间的相关性与(1、4、2、0、3)和(2、16之间的相关性相同,4、1、8),以相同的方式重新排列两个数组。
因此,相关系数将通过以下方式获得:
例:
flow1 = np.random.uniform(size=(10, 10, 2)) # the 3rd dimension is for the components
flow2 = flow1 + np.random.uniform(size=(10, 10, 2))
flow1_centered = flow1 - np.mean(flow1, axis=(0, 1))
flow2_centered = flow2 - np.mean(flow2, axis=(0, 1))
inner_product = np.sum(flow1_centered*flow2_centered)
r = inner_product/np.sqrt(np.sum(flow1_centered**2) * np.sum(flow2_centered**2))
由于我将flow2包括在flow1中,因此流具有一些正相关。具体来说,它是
1/sqrt(2)
附近的数字,容易受到随机噪声的影响。如果这不是您想要的,那么您就不需要相关系数,而需要其他一些相似性度量。