COVAR_SAMP 函数

covar_samp(y, x)

功能描述

COVAR_SAMP 函数用于计算两个数值列之间的样本协方差(Sample Covariance)。协方差衡量两个变量共同变化的程度。样本协方差使用 (n-1) 作为分母,是总体协方差的无偏估计。

参数说明

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

返回类型

  • 返回 DOUBLE 类型的样本协方差值。
    • 正值:x 和 y 倾向于同向变化(正相关)
    • 负值:x 和 y 倾向于反向变化(负相关)
    • 接近 0:变量之间相关性较弱

注意事项

  • 函数计算过程中,NULL 值会被忽略。
  • 如果有效数据点少于 1 个,返回 NULL
  • 样本协方差使用除以 (n-1) 的公式计算,是总体协方差的无偏估计。在样本量较小时,样本协方差的波动性(方差)通常较大。
  • 当 n 很大时,样本协方差和总体协方差的差异很小。

使用示例

  1. 基本用法:计算样本协方差
SELECT covar_samp(c1, c2)
FROM VALUES (1, 1), (2, 2), (2, 2), (3, 3) AS tab(c1, c2);
+--------------------+
| covar_samp(c1, c2) |
+--------------------+
| 0.6666666666666666 |
+--------------------+
  1. 与总体协方差对比
SELECT covar_pop(c1, c2), covar_samp(c1, c2)
FROM VALUES (1, 1), (2, 2), (2, 2), (3, 3) AS tab(c1, c2);
+-------------------+--------------------+
| covar_pop(c1, c2) | covar_samp(c1, c2) |
+-------------------+--------------------+
| 0.5               | 0.6666666666666666 |
+-------------------+--------------------+
  1. 完全正相关的数据
SELECT covar_samp(x, y)
FROM VALUES (1, 2), (2, 4), (3, 6), (4, 8) AS t(x, y);
+--------------------+
| covar_samp(x, y)   |
+--------------------+
| 3.3333333333333335 |
+--------------------+
  1. 完全负相关的数据
SELECT covar_samp(x, y)
FROM VALUES (1, 8), (2, 6), (3, 4), (4, 2) AS t(x, y);
+---------------------+
| covar_samp(x, y)    |
+---------------------+
| -3.3333333333333335 |
+---------------------+
  1. NULL 值会被忽略
SELECT covar_samp(x, y)
FROM VALUES (1, 1), (2, NULL), (3, 3), (NULL, 4), (5, 5) AS t(x, y);
+-------------------+
| covar_samp(x, y)  |
+-------------------+
| 4.0               |
+-------------------+
  1. 按分组计算样本协方差
SELECT
  product,
  covar_samp(price, sales_volume) as price_sales_covar
FROM VALUES
  ('A', 10, 100),
  ('A', 20, 80),
  ('A', 30, 60),
  ('B', 15, 50),
  ('B', 25, 40),
  ('B', 35, 30)
AS sales(product, price, sales_volume)
GROUP BY product;
+---------+--------------------+
| product | price_sales_covar  |
+---------+--------------------+
| A       | -200.0             |
| B       | -100.0             |
+---------+--------------------+

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