具有多个2D流图,即矢量场,如何找到这些对之间的统计相关性?
问题:
一个人不应该(?)调整2个形状为(x,y,2)的流图的大小:flow1, flow2
到一维矢量并运行
np.correlation_coeff(flow1.reshape(1,-1),flow2.reshape(1,-1))
因为x,y条目已连接。
绘制收益,仅用于可视化目的
我正在考虑比较幅度和方向。
理想情况下,如何比较这些值(cosinus距离,...)?
一个如何比较矢量场之间的协方差?
编辑:
我知道np.corrcoef(flow1.reshape(2,-1), flow2.reshape(2,-1))
会返回一个4,4相关系数矩阵,但难以理解。
答案 0 :(得分:2)
对于某些相似性度量,确实可能需要考虑域的空间结构。但是相关系数不能做到这一点:在域的任何排列下它都是不变的。例如,(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)
附近的数字,容易受到随机噪声的影响。
如果这不是您想要的,那么您就不需要相关系数,而需要其他一些相似性度量。