当前位置: 首页 > news >正文

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

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=cov(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))

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

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

ρX,Y=E(XY)−E(X)E(Y)E(X2)−E2(X)E(Y2)−E2Y\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)E2YE(XY)E(X)E(Y)

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

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

利用 Python 计算 Pearson 相关系数:

from scipy.stats import pearsonr
import numpy as npX = 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 秩相关系数

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

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

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

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

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

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

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

Python 计算 Spearman 秩相关系数:

from scipy.stats import spearmanr
import numpy as npX = 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
  • [2] https://zhuanlan.zhihu.com/p/465213120
  • [3] https://zhuanlan.zhihu.com/p/664287775
  • [4] 维基百科
http://www.xdnf.cn/news/1447759.html

相关文章:

  • react的 hooks 是如何存储的
  • HTML第七课:发展史
  • Streamlit 数据看板模板:非前端选手快速搭建 Python 数据可视化交互看板的实用工具
  • 如何画时序图、流程图
  • android集成unity后动态导入 assetsBundle
  • Android创建demo脚本
  • CSS中使用 HSL(Hue, Saturation, Lightness) 动态生成色值
  • Linux 对目录授予用户读写权限的方法
  • 信创MySQL到达梦数据库的SQL语法转换技术解析
  • AWK命令完全指南:从理论到实战的文本处理利器
  • Spring Boot + Nacos 配置中心示例工程
  • tcpdump用法
  • Best Video网页官网入口 – 免费在线网页视频解析下载器
  • 认识HTML
  • 用资产驱动方法构建汽车网络安全档案
  • VPS云服务器安全加固指南:从入门到精通的全面防护策略
  • TypeScript 内置工具类型大全(ReturnType、Omit、Pick 等)
  • 【Unity项目经验分享】实现左右分屏裸眼3D程序
  • 数据结构之加餐篇 -顺序表和链表加餐
  • 从 0 到 1 实现 PyTorch 食物图像分类:核心知识点与完整实
  • 基础看门狗--idf开发esp32s3
  • PNP具身解读——RSS2025论文加州伯克利RLDG: 通过强化学习实现机器人通才策略提炼。
  • 基于物联网的智慧用电云平台构建与火灾防控应用研究
  • 复杂网络环境不用愁,声网IoT多通道传输实战经验丰富
  • Coze使用教程-插件
  • 袋鼠云产品功能更新报告14期|实时开发,效率再升级!
  • Kafka面试精讲 Day 6:Kafka日志存储结构与索引机制
  • 浏览器插件开发--通过调用本地nmap实现nmap插件扫描
  • python如何解决html格式不规范问题
  • Android使用内存压力测试工具 StressAppTest