相关性衡量两个向量在变化时彼此跟踪的程度.当一个向量不变时,您无法跟踪相互更改.
如OP评论中所述,Pearson的产品矩相关系数formula将X和Y的协方差除以其标准偏差的乘积.由于Y在您的示例中具有零方差,因此其标准偏差也为零.这就是你得到true_divide错误的原因 – 你试图除以零.
注意:从工程角度来看,简单地在Y中的一个条目上添加一个非常小的数量(例如,在机器epsilon之上的值)可能看起来很诱人,以便绕过零分割问题.但这在统计上并不可行.即使添加1e-15也会严重扰乱相关系数,具体取决于您将其添加到的值.
考虑这两种情况之间的区别:
X = [1.0, 2.0, 3.0, 4.0]
tiny = 1e-15
# add tiny amount to second element
Y1 = [2., 2.+tiny, 2., 2.]
np.corrcoef(X, Y1)[0, 1]
-0.22360679775
# add tiny amount to fourth element
Y2 = [2., 2., 2., 2.+tiny]
np.corrcoef(X, Y2)[0, 1]
0.67082039325
这对统计学家来说可能是显而易见的,但考虑到问题的性质,这似乎是一个相关的警告.