相关性分析与常用相关系数

Coldrain 在做 2012 年全国大学生数学建模竞赛 A 题时遇到了相关性分析,遂作此篇,以为学习。

1. 相关性的定义

相关性是两个变量线性相关的程度。从广义上讲,相关性实际上是双变量数据中两个随机变量之间的任何统计关系,无论是否因果关系。

相关性并不意味着因果关系!

例如:

  1. 夏季,冰淇淋的消费量会增加。冰淇淋销售额与夏天之间存在很强的相关性。在这个特殊的例子中,存在因果关系,因为极热的夏季确实推动了冰淇淋的销售。
  2. 冰淇淋的销售也与鲨鱼袭击有很强的相关性。我们非常清楚,鲨鱼袭击绝对不是因为冰淇淋造成的。所以,这里没有因果关系,但是他们仍然相关。

2. 相关系数

在统计学中,相关的意义是:用来衡量两个变量相对于其相互独立的距离。

在这个广义的定义下,有许多根据数据特点来衡量数据相关性而定义的系数,称作相关系数

相关系数是对两个变量的相对运动之间关系强度的统计量度。

相关系数的值范围在 -1.0 和 1.0 之间 。-1.0 的相关性表示完全的负相关 ,而 1.0 的相关性表示完全的正相关。0.0 的相关性表明两个变量的移动之间没有线性关系。

对于不同测量尺度的变量,有不同的相关系数可用:

  • Pearson 相关系数
  • Spearman 相关系数
  • Kendall 相关系数
  • ...

上面提到的这三种相关系数各有优势和适用范围:

  • Pearson 系数 适用于线性关系的测量,对数据要求较高。
  • Spearman 秩相关系数 适用于单调关系的测量,对数据分布没有假设要求,并且对异常值较为稳定(即鲁棒性更高)。
  • Kendall 秩相关系数 适用于顺序关系的测量,同样对数据分布没有假设要求,并且对异常值较为稳定。

3. Pearson 相关系数

也就是概率论课本 [1] 上讲述的相关系数 ρ \rho ρ

Pearson相关系数是用于衡量两个变量之间线性关系强度的指标。

它计算的是两个变量的协方差与各自标准差的比值,取值范围在-1到1之间

  • 当 ρ X , Y > 0 \rho_{X,Y}>0 ρX,Y>0 时,表示两个变量呈正相关
  • 当 ρ X , Y < 0 \rho_{X,Y}<0 ρX,Y<0 时,表示两个变量呈负相关
  • 当 ρ X , Y \rho_{X,Y} ρX,Y 接近 0 时,表示两个变量没有线性关系。

Pearson 相关系数公式如下:

ρ X , Y = c o v ( X , Y ) σ X σ Y = E ( ( X − μ X ) ( Y − μ Y ) ) σ X σ Y \rho_{X,Y} = \frac{cov(X, Y)}{\sigma_X \sigma_Y} = \frac{E((X-\mu_X)(Y-\mu_Y))}{\sigma_X \sigma_Y} ρX,Y=σXσYcov(X,Y)=σXσYE((X−μX)(Y−μY))

其中, E E E 是数学期望,cov 表示协方差, σ X \sigma_X σX 和 σ Y \sigma_Y σY 是标准差。

因为 μ X = E ( X ) \mu_X = E(X) μX=E(X), σ X 2 = E ( X 2 ) − E 2 ( X ) \sigma^2_X = E(X^2)-E^2(X) σX2=E(X2)−E2(X),同样之与 Y Y Y,那么上式也可以写成:

ρ X , Y = E ( X Y ) − E ( X ) E ( Y ) E ( X 2 ) − E 2 ( X ) E ( Y 2 ) − E 2 Y \rho_{X, Y} = \frac{E(XY)-E(X)E(Y)}{\sqrt{E(X^2)-E^2(X)} \sqrt{E(Y^2)-E^2{Y}}} ρX,Y=E(X2)−E2(X) E(Y2)−E2Y E(XY)−E(X)E(Y)

∣ ρ X , Y ∣ ( ≤ 1 ) |\rho_{X,Y}|(\le1) ∣ρX,Y∣(≤1) 越大,表示两个变量的线性相关程度越高。

需要注意的是,Pearson 相关系数只能测量线性关系,对于非线性关系无法准确捕捉

利用 Python 计算 Pearson 相关系数:

python 复制代码
from scipy.stats import pearsonr
import numpy as np

X = np.array([1, 2, 3, 4, 5, 6, 7])
Y = np.array([9, 8, 7, 6, 5, 4, 3])

# 计算 Pearson 系数
r, p = pearsonr(X, Y)    # r 为系数

4. Spearman 秩相关系数

当 X X X 和 Y Y Y 具有某种单调关系时, X X X 和 Y Y Y 是完全相关的(-1 或 1)

对 Pearson 系数来说,只有当 X X X 和 Y Y Y 有完全的线性关系时,才是完全相关的(-1 或 1)

也就是说,当我们需要刻画变量之间是否具有单调关系时,我们就需要用到 Spearman 秩相关系数了。

  • 单调关系
    • 随着一个变量的值增加,另一个变量的值增加 or 减小。
    • 不限制恒定的速率
  • 线性关系
    • 梯度为常数
    • 增加/减少的速率是恒定的

Spearman秩相关系数的计算步骤如下:

  1. 对每个变量的观测值进行排序,得到每个观测值的秩次(从小到大排列)。如果有相同的观测值,则取它们的平均秩次。
  2. 计算每个观测值的秩次差,即第一个变量的秩次减去第二个变量的秩次。
  3. 计算秩次差的平方和,并除以样本大小减一(n-1)得到Spearman秩相关系数。

Spearman秩相关系数的取值范围在-1到1之间,其中1表示完全的正相关,-1表示完全的负相关,0表示无相关性。

Python 计算 Spearman 秩相关系数:

python 复制代码
from scipy.stats import spearmanr
import numpy as np

X = np.array([1, 2, 3, 4, 5, 6, 7])
Y = np.array([9, 8, 7, 6, 5, 4, 3])

# 计算 Spearman 系数
r, p = spearmanr(X, Y)    # r 为系数

5. 差异与选择

  • Pearson 适用于两个变量之间的线性关系,而Spearman适用于单调关系。
  • Pearson 处理变量的数据原始值,而 Spearman 处理数据排序值(需要先做变换,transform)

Pearson 相关系数只适用于线性关系且正态分布。

此外,如果散点图表明"可能是单调的,可能是线性的"关系,最好的选择是 Spearman 而不是 Pearson。即使数据证明是完全线性的,用 Spearman 也不会造成信息丢失。但是,如果不是完全线性但使用 Pearson 系数,会丢失 Spearman 可以捕获的信息,是否单调。


6. 参考资料

  • 1\] 石爱菊,丁秀梅,孔告化. 概率统计与随机过程. 3版. 北京:人民邮电出版社, 2024.2

  • 3\] https://zhuanlan.zhihu.com/p/664287775

相关推荐
热心网友俣先生2 小时前
2025年数学建模国赛C题超详细解题思路
c语言·开发语言·数学建模
DS数模3 小时前
2025高教社杯国赛数学建模选题建议+初步分析
数学建模·数学建模国赛·2025数学建模国赛·2025国赛·2025高教社杯·国赛选题建议
DS数模3 小时前
2025国赛B题保姆级教程思路分析 碳化硅外延层厚度的确定
开发语言·数学建模·2025数学建模·2025数学建模国赛·2025国赛·2025高教社杯数学建模·2025国赛b题
CC数学建模7 小时前
2025 年高教社杯全国大学生数学建模竞赛C 题 NIPT 的时点选择与胎儿的异常判定 完整成品思路模型代码分享,全网首发高质量!!!
数学建模
骑驴看星星a7 小时前
皮尔逊相关(Pearson)和斯皮尔曼相关(Spearman)显著性检验
算法·数学建模·回归·线性回归
悠哉悠哉愿意17 小时前
【数学建模学习笔记】异常值处理
笔记·学习·数学建模
嵌入式冰箱21 小时前
如何评价2025年数学建模国赛?
数学建模
Cold_Rain021 天前
利用 Python 绘制环形热力图
python·数学建模·数据可视化
Virgil1391 天前
如何正确使用ChatGPT做数学建模比赛——数学建模AI使用技巧
人工智能·数学建模·chatgpt
wheeldown1 天前
【数学建模】非线性规划:线性规划的 “升级版“ 解法
数学建模