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

【时间序列分析】皮尔森相关系数理论基础及python代码实现

文章目录

  • 1. 定义
  • 2. 物理意义
  • 3. 局限性
  • 4. 皮尔森相关系数的实际应用
  • 5. python代码实现
    • 5.1 numpy.corrcoef() 计算皮尔森相关系数
    • 5.2 自己实现皮尔森相关系数

皮尔森相关系数(Pearson Correlation Coefficient),又称 皮尔逊相关系数,是衡量两个变量之间线性相关程度的一种统计量。它的值介于 -1 和 1 之间,表示两个变量之间的线性关系强度和方向。

1. 定义

皮尔森相关系数 r r r 的数学定义如下:
r = ∑ ( X i − X ˉ ) ( Y i − Y ˉ ) ∑ ( X i − X ˉ ) 2 ∑ ( Y i − Y ˉ ) 2 r = \frac{\sum (X_i - \bar{X})(Y_i - \bar{Y})}{\sqrt{\sum (X_i - \bar{X})^2 \sum (Y_i - \bar{Y})^2}} r=(XiXˉ)2(YiYˉ)2 (XiXˉ)(YiYˉ)
其中:

  • X i X_i Xi Y i Y_i Yi 是数据集中的第 i i i 个数据点
  • X ˉ \bar{X} Xˉ Y ˉ \bar{Y} Yˉ 分别是变量 X X X Y Y Y 的样本均值
  • 分子部分是 X X X Y Y Y 之间的协方差
  • 分母部分是 X X X Y Y Y 的标准差的乘积

对于协方差理解可以参考:https://blog.csdn.net/qq_42761751/article/details/144507606?sharetype=blogdetail&sharerId=144507606&sharerefer=PC&sharesource=qq_42761751&spm=1011.2480.3001.8118

2. 物理意义

皮尔森相关系数的物理意义是衡量两个变量之间的线性关系强度。它的取值范围为 [ − 1 , 1 ] [−1,1] [1,1],具体含义如下:

  • r = 1 r=1 r=1 : 完全正线性相关,表示两个变量之间存在完美的正相关关系,即当一个变量增加时,另一个变量也按固定比例增加
  • r = − 1 r=-1 r=1 :完全负线性相关,表示两个变量之间存在完美的负相关关系,即当一个变量增加时,另一个变量按固定比例减少
  • r = 0 r=0 r=0 : 没有线性关系,两个变量之间没有线性依赖关系,但这不意味着它们完全没有关系,可能存在非线性关系
  • 0 < r < 1 0<r<1 0<r<1 : 正相关关系,随着一个变量的增加,另一个变量也倾向于增加, r r r 越接近 1,线性关系越强
  • − 1 < r < 0 -1<r<0 1<r<0 : 负相关关系,随着一个变量的增加,另一个变量倾向于减少, r r r 越接近 -1,负线性关系越强

3. 局限性

尽管皮尔森相关系数非常有用,但它也存在一些局限性:

  • 只考虑线性关系: 皮尔森相关系数只能捕捉变量之间的线性关系,无法有效处理非线性关系。若两个变量之间存在非线性关系,皮尔森相关系数可能会低估它们之间的关联程度,甚至得出接近于 0 的值,这时需要使用其他方法。
    例如: 考虑一个二次关系 y = x 2 y=x^2 y=x2 即使数据点之间的关系是非常紧密的,但皮尔森相关系数可能接近 0,因为该关系不是线性的。

  • 对异常值敏感: 皮尔森相关系数对异常值非常敏感。如果数据集中的某个或某些点与其他数据点相差过大,它们可能会显著影响相关系数,导致误导性的结论。因此,在使用皮尔森相关系数时,需要特别注意数据中的异常值,最好先进行数据清洗和异常值检测。

  • 假设正态分布: 皮尔森相关系数假设数据呈正态分布。如果数据严重偏离正态分布,相关系数的计算和解释可能不可靠。

4. 皮尔森相关系数的实际应用

皮尔森相关系数广泛应用于统计分析和数据科学中,常见的应用场景包括:

  • 金融分析: 评估股票、债券或其他资产之间的相关性。例如,通过计算不同股票之间的皮尔森相关系数,可以帮助投资者构建多样化的投资组合,以降低风险。

  • 健康研究: 分析不同生理指标之间的关系。例如,研究体重和血压之间的相关性,或者分析不同药物治疗效果的相关性。

  • 社会科学: 研究教育水平和收入之间的关系,或者考察人们的生活满意度与其他社会因素之间的关联。

  • 机器学习与数据挖掘: 皮尔森相关系数可用于特征选择,评估各个特征与目标变量之间的线性相关性,从而筛选出最相关的特征,提高模型性能。

5. python代码实现

5.1 numpy.corrcoef() 计算皮尔森相关系数

import numpy as npX = np.array([1,2,3,4,5])
Y = np.array([5,4,3,2,1])# 皮尔森相关系数在[0,1]位置
r = np.corrcoef(X,Y)[0,1]
print(r)

5.2 自己实现皮尔森相关系数

import numpy as npX = np.array([0,1,0,3])
Y = np.array([0,1,1,1])# 计算均值
mean_X = np.mean(X)
mean_Y = np.mean(Y)# 计算协方差的分子
covariance = np.sum((X-mean_X)*(Y-mean_Y)) / len(X)# 计算标准差
std_X = np.std(X)
std_Y = np.std(Y)# 计算皮尔森相关系数
r = covariance / (std_X*std_Y)
print(r)

http://www.mrgr.cn/news/80372.html

相关文章:

  • 【操作系统】文件管理
  • 网络安全概论——网络安全基础
  • vs 调试
  • 解决 Git 默认不区分文件名大小写的问题
  • css的选择器有哪些?权重由大到小是怎么排序的?
  • 【TS语法学习】ts中的断言运算符
  • Spring Framework 路径遍历漏洞复现(CVE-2024-38819)
  • Redis篇-21--运维篇3-集群(分片,水平扩展,高可用,集群配置案例,扩展哨兵案例)
  • .Net WebAPI(一)
  • 【网络安全】Web Timing 和竞争条件攻击:揭开隐藏的攻击面
  • Vulhub:Redis[漏洞复现]
  • 交通道路上的车辆,人,自行车摩托车自动识别数据集,使用YOLO,COCO,VOC格式对2998张原始图片标注
  • 51c视觉~YOLO~合集6~
  • C/C++包含头文件的两种方式:尖括号方式 (<>)和双引号方式 (““)的区别
  • ubuntu服务器木马类挖矿程序排查、及安全管理总结
  • 【CSS in Depth 2 精译_079】第 13 章:渐变、阴影与混合模式概述 + 13.1:CSS 渐变效果(上)——使用多个颜色节点
  • 深度学习——激活函数、损失函数、优化器
  • 简单了解一下 Go 语言的构建约束?
  • F-Cooper论文精读
  • Apache Kylin最简单的解析、了解
  • 基于区块链技术的新能源管理平台
  • 【Linux】结构化命令
  • 前端项目初始化搭建(二)
  • 从 Router 到 Navigation:HarmonyOS 路由框架的全面升级与迁移指南
  • 流程引擎Activiti性能优化方案
  • Y3编辑器教程5:触发器进阶使用(镜头、UI、表格、函数库、排行榜、游戏不同步)