当一个常量列表传递给corrcoef()
函数时,似乎corrcoef
fromnumpy
抛出一个运行时警告,例如下面的代码抛出一个警告:
import numpy as np
X = [1.0, 2.0, 3.0, 4.0]
Y = [2, 2, 2, 2]
print(np.corrcoef(X, Y)[0, 1])
警告:
/usr/local/lib/python3.6/site-packages/numpy/lib/function_base.py:3003: RuntimeWarning: invalid value encountered in true_divide
c /= stddev[:, None]
有谁能解释一下当一个列表是常量时为什么会抛出这个错误,以及当一个常量列表被传递给函数时如何防止这个错误。
相关性是衡量两个向量在变化时相互跟踪的程度。当一个向量不变时,就不能跟踪相互的变化。
如OP注释中所述,Pearson积矩相关系数的formula将
X
和Y
的协方差除以它们的标准差的乘积。因为在您的示例中Y
的方差为零,所以它的标准偏差也是零。这就是为什么你会得到true_divide
错误-你试图除以零。注意:从工程的角度来看,简单地在
Y
中的一个条目上添加一个非常小的数量(比如,一个刚好高于机器epsilon的值)以绕过零除问题似乎很有诱惑力。但这在统计学上是不可行的。即使添加1e-15
也会严重扰乱相关系数,具体取决于将其添加到哪个值。考虑一下这两种情况之间的区别:
这对统计学家来说可能是显而易见的,但考虑到问题的性质,这似乎是一个相关的警告。
相关问题 更多 >
编程相关推荐