c语言divide error,Python numpy.corrcoef()RuntimeWarning:在true_divide中遇到无效值c / = stddev [:,None]...

本文探讨了在计算Pearson相关系数时遇到的零方差问题,解释了为什么Y的零标准偏差会导致除以零的错误,并通过实例展示了不同解决方案的影响。警告读者在工程实践中避免简单地规避零问题,强调统计上的严谨性。
摘要由CSDN通过智能技术生成

相关性衡量两个向量在变化时彼此跟踪的程度.当一个向量不变时,您无法跟踪相互更改.

如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

这对统计学家来说可能是显而易见的,但考虑到问题的性质,这似乎是一个相关的警告.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值