为何数值不同时corrwith()计算的相关系数仍为1.0?
为什么两组数值不全相同,相关系数却为1.0?
你混淆了「数值完全一致」和「完美线性相关」的概念——pandas的corrwith()默认使用的皮尔逊相关系数,衡量的是变量间的线性相关性,而非数值的一致性。当相关系数为1.0时,只要求两组数据存在完美的正向线性关系(即一组值可以精确表示为另一组的线性函数:( y = ax + b ),其中 ( a > 0 )),不需要两组数值完全相同。
拿你给出的样本来说:《指环王》的非空评分是 [10, 3],《精灵宝钻》的是 [10, 9]。我们可以验证这两组数据的线性关系:
假设 ( y )(《精灵宝钻》评分)和 ( x )(《指环王》评分)满足 ( y = ax + b ),代入两组值:
- ( 10 = 10a + b )
- ( 9 = 3a + b )
解方程组可得 ( a = \frac{1}{7} ),( b = \frac{60}{7} )。代入验证:当 ( x=3 ) 时,( y = \frac{1}{7}*3 + \frac{60}{7} = 9 ),完全匹配。这说明两组数据是完美线性相关的,因此皮尔逊相关系数为1.0。
另外要注意,corrwith()计算时会自动排除存在缺失值的样本,只保留两组都有非空值的观测。你的场景里恰好只有这两个符合条件的样本,且它们满足完美线性关系,所以得到了1.0的结果。
内容的提问来源于stack exchange,提问作者Slazer
相关产品推荐
相关产品推荐

