CORR

corr(y, x)

功能描述

CORR
CORR
函数用于计算两个数值列之间的皮尔逊相关系数(Pearson correlation coefficient)。相关系数衡量两个变量之间的线性相关程度,取值范围为 -1 到 1。

参数说明

  • y
    y
    :数值类型的表达式,作为因变量。必须是可以转换为
    DOUBLE
    DOUBLE
    的数值类型。
  • x
    x
    :数值类型的表达式,作为自变量。必须是可以转换为
    DOUBLE
    DOUBLE
    的数值类型。

返回类型

  • 返回
    DOUBLE
    DOUBLE
    类型的皮尔逊相关系数,取值范围为 [-1, 1]。
    • 1
      1
      :完全正相关(x 增大,y 也增大)
    • -1
      -1
      :完全负相关(x 增大,y 减小)
    • 0
      0
      :无线性相关
    • 接近
      1
      1
      -1
      -1
      :强相关
    • 接近
      0
      0
      :弱相关或无相关

注意事项

  • 函数计算过程中,
    NULL
    NULL
    值将被忽略,不参与计算。
  • 如果所有 x 值相同或所有 y 值相同(标准差为 0),返回
    NULL
    NULL
  • 如果有效数据点少于 2 个,返回
    NULL
    NULL
  • 计算公式:
    corr(y, x) = covar_pop(y, x) / (stddev_pop(y) * stddev_pop(x))
    corr(y, x) = covar_pop(y, x) / (stddev_pop(y) * stddev_pop(x))
    ,即协方差除以两个变量标准差的乘积。

使用示例

  1. 基本用法:计算相关系数

SELECT corr(c1, c2) FROM VALUES (3, 2), (3, 3), (3, 3), (6, 4) AS tab(c1, c2); +--------------------+ | corr(c1, c2) | +--------------------+ | 0.816496580927726 | +--------------------+

  1. 完全正相关(y = x)

SELECT corr(x, y) FROM VALUES (1, 1), (2, 2), (3, 3), (4, 4) AS t(x, y); +-------------+ | corr(x, y) | +-------------+ | 1 | +-------------+

  1. 完全负相关(y = -x)

SELECT corr(x, y) FROM VALUES (1, -1), (2, -2), (3, -3), (4, -4) AS t(x, y); +-------------+ | corr(x, y) | +-------------+ | -1 | +-------------+

  1. 无相关(x 和 y 独立)

SELECT corr(x, y) FROM VALUES (1, 1), (2, 1), (3, 1), (4, 1) AS t(x, y); +-------------+ | corr(x, y) | +-------------+ | NULL | +-------------+

  1. 按分组计算相关系数

SELECT category, corr(price, quantity) as price_quantity_corr FROM VALUES ('A', 10, 100), ('A', 20, 80), ('A', 30, 60), ('B', 15, 50), ('B', 25, 40), ('B', 35, 30) AS sales(category, price, quantity) GROUP BY category; +----------+----------------------+ | category | price_quantity_corr | +----------+----------------------+ | A | -1 | | B | -1 | +----------+----------------------+

联系我们
预约咨询
微信咨询
电话咨询
邮件咨询