You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python实现CCC时负相关场景计算结果异常问题

CCC计算负相关场景结果异常的原因

核心结论

你写的CCC计算函数完全符合公式定义,返回值没有错误,你觉得结果不符合预期,本质是混淆了CCC和Pearson相关系数的设计用途。

两类相关系数的核心差异

  • Pearson相关系数的设计目标是衡量两个变量的线性关联强度:只要两个变量满足完美线性关系y = a*x + b(a≠0),系数的绝对值就为1,a为负时取值-1,不要求两个变量的数值尺度、均值完全匹配。
  • Concordance相关系数(CCC)的设计目标是衡量两个变量的一致性程度:它评估的是观测点与y=x(45度完全一致参考线)的偏离程度,取值同时受三个因素影响:
  1. 两个变量的线性相关程度(即Pearson r值)
  2. 两个变量的均值偏移程度
  3. 两个变量的方差尺度差异

只有当两个变量完全满足y=x时,CCC才能取到最大值1;只有当两个变量完全满足y=-x且均值均为0、方差完全相等时,CCC才能取到最小值-1。

测试用例结果解释

你使用的测试数据中:

  • x是0到1的等距序列,均值为0.5,方差约为0.093
  • -y是-1到0的等距序列,均值为-0.5,方差约为0.093
    两者确实是完美负线性关系,Pearson r计算结果为-1,但两者均值差达到1,所有观测点完全落在y=-x-1线上,和y=x的一致参考线偏离极大,因此CCC计算结果为-0.169是完全正确的。

你可以用符合CCC=-1前提的数据做验证:

import numpy as np
def ccc(x,y):
    vx, cov_xy, cov_xy, vy = np.cov(x,y, bias=True).flat
    mx, my = x.mean(), y.mean()
    return 2*cov_xy / (vx + vy + (mx-my)**2)

x = np.linspace(-1,1,10)
y = -x
print(ccc(x,y))  # 输出结果为-1.0,符合预期

内容的提问来源于stack exchange,提问作者John Titor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:31:10